Đồ án: Thiết kế Neural Network trên FPGA để nhận dạng chữ số viết tay - ĐH Bách Khoa HN

Thiết kế Neural Network trên FPGA để nhận dạng chữ số viết tay. Tìm hiểu quy trình, công cụ và kỹ thuật tối ưu hóa mạng nơ-ron cho phần cứng FPGA.

Người đăng

Ẩn danh

Thể loại

Đồ Án Tốt Nghiệp Đại Học

2019

75
2
0

Phí lưu trữ

30 Point

Mục lục chi tiết

DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT

DANH MỤC HÌNH VẼ

DANH MỤC BẢNG BIỂU

1. CHƯƠNG 1: PHẦN MỞ ĐẦU

1.1. Giới thiệu về Artificial Neural Network

1.1.1. Lịch sử hình thành và phát triển

1.1.2. Nguyên lý hoạt động

1.1.3. Thuật toán Gradient Descent

1.2. Giới thiệu về FPGA

1.2.1. Khái niệm FPGA

1.2.2. Schematic-based flow

1.2.3. HDL-based flow

1.3. Giới thiệu về SystemVerilog

1.4. Giới thiệu về mô hình FSMD

1.5. Giới thiệu về kiểm chứng thiết kế

1.6. Kết luận chương

2. CHƯƠNG 2: THIẾT KẾ NEURAL NETWORK VỚI MATLAB

2.1. Thuật toán thiết kế

2.2. Huấn luyện trên Matlab

2.2.1. Chuẩn bị cơ sở dữ liệu

2.2.2. Tiền xử lý huấn luyện

2.2.3. Huấn luyện Neural Network

2.3. Kiểm tra trên Matlab

2.3.1. Chuẩn bị cơ sở dữ liệu

2.3.2. Tiền xử lý kiểm tra

2.3.3. Kiểm tra Neural Network

2.4. Kết luận chương

3. CHƯƠNG 3: THIẾT KẾ NEURAL NETWORK TRÊN FPGA

3.1. Yêu cầu kỹ thuật

3.1.1. Đầu vào và đầu ra

3.2. Kế hoạch kiểm chứng

3.3. Thiết kế RTL

3.3.1. Biểu diễn tham số của Neural Network trên FPGA

3.4. Thiết kế testbench

3.4.1. Kiến trúc của testbench

3.5. Kết quả kiểm chứng thiết kế

3.6. Kết luận chương

TÀI LIỆU THAM KHẢO

BẢNG ĐỐI CHIẾU THUẬT NGỮ ANH VIỆT

Tóm tắt

I. Tổng Quan Thiết Kế Neural Network trên FPGA Nhận Dạng Chữ Số

Trong kỷ nguyên số hiện nay, việc ứng dụng trí tuệ nhân tạo (AI) vào các hệ thống nhúng ngày càng trở nên phổ biến. FPGA (Field Programmable Gate Array), với khả năng tái cấu trúc phần cứng, là một nền tảng lý tưởng để triển khai các mạng Neural (Neural Network), đặc biệt trong các bài toán nhận dạng chữ số (Digit Recognition). Bài viết này sẽ cung cấp một cái nhìn tổng quan về quá trình thiết kế Neural Network trên FPGA cho mục đích này. Thiết kế FPGA ngày càng được sử dụng rộng rãi trong các ứng dụng yêu cầu hiệu năng cao (High Performance Computing), xử lý thời gian thực (Real-time Processing)tiêu thụ điện năng thấp (Low Power Design). Bài toán nhận dạng chữ số là một ví dụ điển hình thể hiện được những ưu điểm vượt trội của việc sử dụng FPGA cho AI.Việc triển khai mạng Neural trên FPGA mang lại nhiều lợi ích so với việc sử dụng các nền tảng truyền thống như CPU hoặc GPU. FPGA cho phép tối ưu hóa hiệu năng FPGA bằng cách tùy chỉnh kiến trúc phần cứng để phù hợp với thuật toán mạng Neural cụ thể. Điều này giúp giảm đáng kể độ trễ (Latency) và tăng thông lượng (Throughput) của hệ thống. Ngoài ra, FPGA cũng có thể được sử dụng để triển khai các hệ thống nhúng (Embedded System), cho phép xử lý (Processing) dữ liệu ngay tại biên (Edge Computing), giảm thiểu sự phụ thuộc vào kết nối mạng. Theo một nghiên cứu của Xilinx, việc sử dụng FPGA có thể cải thiện hiệu năng lên đến 10 lần so với GPU trong một số ứng dụng nhận dạng hình ảnh (Image Processing).Tuy nhiên, việc thiết kế Neural Network trên FPGA cũng đặt ra nhiều thách thức. Các kỹ sư cần có kiến thức sâu rộng về cả mạng Neuralthiết kế phần cứng (Hardware Acceleration). Quá trình triển khai (Implement) đòi hỏi sự hiểu biết về các ngôn ngữ mô tả phần cứng như VHDL hoặc Verilog, cũng như các công cụ tổng hợp cấp cao (HLS - High-Level Synthesis) như Vivado hoặc Intel Quartus. Bên cạnh đó, việc tối ưu hóa tài nguyên FPGA cũng là một yếu tố quan trọng để đảm bảo hệ thống hoạt động hiệu quả trong các điều kiện giới hạn về diện tích và tiêu thụ điện (Power consumption).

1.1. Lịch Sử Phát Triển Ứng Dụng FPGA trong Mạng Neural

Lịch sử phát triển của Artificial Neural Network (ANN) gắn liền với sự ra đời của máy tính điện tử. Từ những năm 1940, các nhà khoa học đã bắt đầu nghiên cứu về khả năng mô phỏng hoạt động của bộ não người bằng các mạch điện tử. Warren McCullochWalter Pitts (1943) giới thiệu mô hình mạng neuron đầu tiên, đặt nền móng cho lĩnh vực này. Tiếp theo đó, Frank Rosenblatt (1957) chế tạo Mark I perceptron, một máy tính có khả năng nhận dạng các số đơn giản bằng cảm biến hình ảnh.Tuy nhiên, giai đoạn đầu phát triển gặp nhiều khó khăn do hạn chế về phần cứng và thiếu các thuật toán hiệu quả. Đến những năm 1980, sự ra đời của thuật toán lan truyền ngược (backpropagation) và các nghiên cứu của John Hopfield đã đánh dấu sự phục hưng của mạng Neural.FPGA bắt đầu được sử dụng rộng rãi trong lĩnh vực AI vào cuối những năm 1990 và đầu những năm 2000. Với khả năng tái cấu trúc linh hoạt, FPGA cho phép các nhà nghiên cứu và kỹ sư tùy chỉnh phần cứng để phù hợp với các thuật toán mạng Neural khác nhau. Các ứng dụng đầu tiên của FPGA trong AI tập trung vào các bài toán xử lý tín hiệu (Signal Processing)nhận dạng mẫu (Pattern Recognition).

1.2. Tổng Quan về Mạng Neural và Các Kiến Trúc Phổ Biến

Mạng Neural (Neural Network), hay còn gọi là mạng Neuron nhân tạo, là một mô hình tính toán được lấy cảm hứng từ cấu trúc và chức năng của bộ não người. Mạng Neural bao gồm các đơn vị xử lý cơ bản gọi là neuron, được kết nối với nhau thông qua các liên kết có trọng số.Có nhiều loại kiến trúc Neural Network khác nhau, mỗi loại phù hợp với một loại bài toán cụ thể. Một số kiến trúc phổ biến bao gồm: * Mạng Neural truyền thẳng (Feedforward Neural Network): Đây là kiến trúc đơn giản nhất, trong đó thông tin chỉ truyền theo một chiều từ lớp đầu vào đến lớp đầu ra. * Mạng Neural tích chập (Convolutional Neural Network - CNN): CNN được sử dụng rộng rãi trong các bài toán nhận dạng hình ảnhxử lý video (Video Processing). CNN sử dụng các lớp tích chập để trích xuất các đặc trưng từ hình ảnh. * Mạng Neural hồi quy (Recurrent Neural Network - RNN): RNN được sử dụng trong các bài toán xử lý ngôn ngữ tự nhiên (Natural Language Processing)nhận dạng giọng nói (Speech Recognition). RNN có khả năng xử lý các chuỗi dữ liệu có độ dài thay đổi.Việc lựa chọn kiến trúc phù hợp là một yếu tố quan trọng trong việc thiết kế Neural Network hiệu quả.

II. Thách Thức Khi Triển Khai Neural Network trên FPGA Nhận Dạng Chữ Số

Việc triển khai Neural Network trên FPGA cho bài toán nhận dạng chữ số mang lại nhiều lợi ích, nhưng cũng đi kèm với những thách thức đáng kể. Một trong những thách thức lớn nhất là sự phức tạp của quá trình thiết kế FPGA. Các kỹ sư cần có kiến thức sâu rộng về cả mạng Neuralthiết kế phần cứng, cũng như các công cụ và ngôn ngữ liên quan.Một thách thức khác là tối ưu hóa tài nguyên FPGA. FPGA có một số lượng giới hạn các tài nguyên logic và bộ nhớ, do đó, việc triển khai mạng Neural cần được thực hiện một cách hiệu quả để tận dụng tối đa các tài nguyên này. Các kỹ sư cần phải cân nhắc giữa độ chính xác của mạng Neural, hiệu năngtiêu thụ điện. Theo một báo cáo của Intel, việc tối ưu hóa tài nguyên có thể giảm đến 50% tiêu thụ điện của một mạng Neural trên FPGA.Ngoài ra, việc gỡ lỗi (Debug)kiểm tra (Verification) các thiết kế FPGA cũng là một thách thức. Các công cụ mô phỏng (Simulation) có thể giúp phát hiện các lỗi trong thiết kế, nhưng việc kiểm tra toàn diện đòi hỏi sự kết hợp giữa mô phỏngthử nghiệm thực tế (Real-time Processing) trên phần cứng.

2.1. Giới Hạn Tài Nguyên FPGA và Bài Toán Tối Ưu Hóa

FPGA có một số lượng giới hạn các tài nguyên logic (LUT, flip-flop), bộ nhớ (block RAM) và tài nguyên DSP. Việc triển khai mạng Neural đòi hỏi sử dụng một lượng lớn các tài nguyên này, đặc biệt là đối với các mạng lớn và phức tạp.Do đó, việc tối ưu hóa tài nguyên là một yếu tố quan trọng trong quá trình thiết kế Neural Network trên FPGA. Các kỹ sư cần phải cân nhắc giữa các yếu tố sau: * Độ chính xác của mạng Neural: Mạng càng chính xác thì càng đòi hỏi nhiều tài nguyên hơn. * Hiệu năng của mạng Neural: Mạng càng nhanh thì càng đòi hỏi nhiều tài nguyên hơn. * Tiêu thụ điện của mạng Neural: Mạng càng ít tiêu thụ điện thì càng đòi hỏi nhiều kỹ thuật tối ưu hóa hơn.Các kỹ thuật tối ưu hóa tài nguyên bao gồm: * Lượng tử hóa (Quantization): Giảm số lượng bit được sử dụng để biểu diễn các trọng số và kích hoạt của mạng Neural. * Cắt tỉa (Pruning): Loại bỏ các kết nối ít quan trọng trong mạng Neural. * Chia sẻ trọng số (Weight sharing): Chia sẻ các trọng số giữa các neuron trong mạng Neural.

2.2. Các Vấn Đề Liên Quan Đến Độ Trễ và Thông Lượng

Độ trễ (Latency)thông lượng (Throughput) là hai chỉ số quan trọng đánh giá hiệu năng của một hệ thống nhận dạng chữ số trên FPGA. Độ trễ là thời gian cần thiết để hệ thống xử lý một đầu vào duy nhất, trong khi thông lượng là số lượng đầu vào mà hệ thống có thể xử lý trong một đơn vị thời gian.Trong nhiều ứng dụng, độ trễ là yếu tố quan trọng hơn thông lượng. Ví dụ, trong một hệ thống nhận dạng chữ số thời gian thực, độ trễ cần phải đủ nhỏ để đảm bảo phản hồi nhanh chóng.Các kỹ thuật tối ưu hóa độ trễ bao gồm: * Song song hóa (Parallel Processing): Thực hiện nhiều phép tính đồng thời. * Ống dẫn (Pipelining): Chia nhỏ quá trình xử lý thành nhiều giai đoạn và thực hiện các giai đoạn này song song. * Tối ưu hóa kiến trúc phần cứng: Tùy chỉnh kiến trúc phần cứng để phù hợp với thuật toán mạng Neural cụ thể.

III. Phương Pháp Thiết Kế Neural Network Hiệu Quả trên FPGA

Để vượt qua những thách thức trong việc thiết kế Neural Network trên FPGA cho bài toán nhận dạng chữ số, các kỹ sư cần áp dụng một phương pháp tiếp cận có hệ thống. Phương pháp này bao gồm các bước sau: 1. Lựa chọn kiến trúc mạng Neural phù hợp: Dựa trên yêu cầu về độ chính xác, hiệu năngtài nguyên, chọn một kiến trúc mạng Neural phù hợp. CNN thường là một lựa chọn tốt cho bài toán nhận dạng chữ số. 2. Huấn luyện mạng Neural trên phần mềm: Sử dụng các công cụ phần mềm như Matlab hoặc Python để huấn luyện mạng Neural với một tập dữ liệu lớn. 3. Chuyển đổi mạng Neural sang FPGA: Sử dụng các công cụ HLS để chuyển đổi mạng Neural đã huấn luyện sang mã VHDL hoặc Verilog. 4. Tối ưu hóa thiết kế FPGA: Sử dụng các kỹ thuật tối ưu hóa tài nguyênhiệu năng để đảm bảo hệ thống hoạt động hiệu quả trên FPGA. 5. Kiểm tra và gỡ lỗi: Sử dụng các công cụ mô phỏngthử nghiệm thực tế để kiểm tra và gỡ lỗi thiết kế FPGA.

3.1. Sử Dụng HLS High Level Synthesis cho Thiết Kế Mạch

HLS (High-Level Synthesis) là một phương pháp thiết kế phần cứng cho phép các kỹ sư mô tả hệ thống ở mức độ trừu tượng cao hơn so với các ngôn ngữ mô tả phần cứng truyền thống như VHDL hoặc Verilog. HLS sử dụng các ngôn ngữ như C, C++ hoặc SystemC để mô tả hành vi của hệ thống, sau đó tự động chuyển đổi mã nguồn này sang mã VHDL hoặc Verilog có thể tổng hợp được.Sử dụng HLS mang lại nhiều lợi ích: * Giảm thời gian thiết kế: HLS cho phép các kỹ sư tập trung vào thiết kế thuật toán thay vì phải lo lắng về các chi tiết triển khai phần cứng. * Tăng khả năng tái sử dụng: Mã nguồn HLS có thể dễ dàng tái sử dụng cho các nền tảng phần cứng khác nhau. * Tối ưu hóa thiết kế: Các công cụ HLS có thể tự động tối ưu hóa thiết kế để đạt được hiệu năngtài nguyên tốt nhất.Các công cụ HLS phổ biến bao gồm Vivado HLS của Xilinx và Intel HLS Compiler của Intel.

3.2. Triển Khai Mạng CNN với VHDL Verilog trên FPGA

Sau khi có được mô tả phần cứng từ công cụ HLS hoặc thiết kế trực tiếp, việc triển khai mạng CNN (Convolutional Neural Network) với VHDL/Verilog trên FPGA đòi hỏi sự hiểu biết sâu sắc về cả CNNthiết kế phần cứng. Quá trình này bao gồm các bước sau: 1. Ánh xạ các lớp CNN vào phần cứng: Xác định cách triển khai các lớp tích chập, lớp gộp và lớp kết nối đầy đủ trên FPGA. 2. Tối ưu hóa các phép tính toán: Sử dụng các kỹ thuật song song hóaống dẫn để tối ưu hóa các phép tính toán trong CNN. 3. Quản lý bộ nhớ: Triển khai bộ nhớ hiệu quả để lưu trữ các trọng số và kích hoạt của CNN.Các thư viện và khối IP có sẵn có thể giúp đơn giản hóa quá trình triển khai CNN trên FPGA.

IV. Ứng Dụng Kết Quả Nghiên Cứu Thiết Kế Neural Network trên FPGA

Việc thiết kế Neural Network trên FPGA cho bài toán nhận dạng chữ số có nhiều ứng dụng thực tiễn trong các lĩnh vực khác nhau. Một số ví dụ bao gồm: * Hệ thống nhận dạng biển số xe (License Plate Recognition): Sử dụng FPGA để nhận dạng chữ số và chữ cái trên biển số xe. * Hệ thống kiểm tra chất lượng sản phẩm (Quality Control): Sử dụng FPGA để kiểm tra các sản phẩm trên dây chuyền sản xuất. * Hệ thống điều khiển robot (Robot Control): Sử dụng FPGA để điều khiển robot dựa trên hình ảnh hoặc video.

4.1. Đánh Giá Hiệu Năng và Độ Chính Xác Hệ Thống

Để đánh giá hiệu năng và độ chính xác của một hệ thống nhận dạng chữ số trên FPGA, cần thực hiện các thử nghiệm với một tập dữ liệu kiểm tra lớn. Các chỉ số quan trọng cần đo đạc bao gồm: * Độ chính xác (Accuracy): Tỷ lệ các chữ số được nhận dạng đúng. * Độ trễ (Latency): Thời gian cần thiết để hệ thống xử lý một đầu vào duy nhất. * Thông lượng (Throughput): Số lượng đầu vào mà hệ thống có thể xử lý trong một đơn vị thời gian. * Tiêu thụ điện (Power consumption): Lượng điện năng mà hệ thống tiêu thụ.Kết quả thử nghiệm cần được so sánh với các hệ thống nhận dạng chữ số khác để đánh giá ưu điểm và nhược điểm của hệ thống trên FPGA.

4.2. Triển Vọng Hướng Phát Triển Của Neural Network trên FPGA

Lĩnh vực thiết kế Neural Network trên FPGA đang phát triển nhanh chóng, với nhiều hướng nghiên cứu và phát triển tiềm năng. Một số xu hướng đáng chú ý bao gồm: * Phát triển các kiến trúc mạng Neural mới: Nghiên cứu các kiến trúc mạng Neural phù hợp với việc triển khai trên FPGA. * Tối ưu hóa các công cụ HLS: Phát triển các công cụ HLS có khả năng tự động tối ưu hóa thiết kế để đạt được hiệu năngtài nguyên tốt nhất. * Ứng dụng Neural Network trên FPGA vào các lĩnh vực mới: Khám phá các ứng dụng tiềm năng của Neural Network trên FPGA trong các lĩnh vực như xe tự lái (Autonomous Vehicles), Internet of Things (IoT)điện toán đám mây (Cloud Computing).

V. Kết Luận Triển Vọng và Tương Lai của Neural Network trên FPGA

Thiết kế Neural Network trên FPGA cho bài toán nhận dạng chữ số là một lĩnh vực đầy tiềm năng. Mặc dù có những thách thức, nhưng những lợi ích về hiệu năng, tiêu thụ điện và khả năng tùy chỉnh khiến FPGA trở thành một nền tảng hấp dẫn cho việc triển khai các ứng dụng trí tuệ nhân tạo. Với sự phát triển của các công cụ HLS và các thư viện phần cứng (Hardware), việc thiết kế Neural Network trên FPGA ngày càng trở nên dễ dàng hơn, mở ra cơ hội cho nhiều kỹ sư và nhà nghiên cứu tham gia vào lĩnh vực này.

5.1. Tổng Kết Các Ưu Điểm Của FPGA Trong Bài Toán AI

FPGA mang lại nhiều ưu điểm vượt trội so với các nền tảng khác (CPU, GPU) khi triển khai các ứng dụng AI, đặc biệt là trong các bài toán nhận dạng chữ sốxử lý hình ảnh. Các ưu điểm chính bao gồm: * Hiệu năng cao (High Performance): FPGA có thể được tùy chỉnh để phù hợp với các thuật toán mạng Neural cụ thể, giúp giảm độ trễ và tăng thông lượng. * Tiêu thụ điện năng thấp (Low Power Design): FPGA có thể được tối ưu hóa để giảm tiêu thụ điện, phù hợp với các ứng dụng di động và hệ thống nhúng. * Khả năng tái cấu trúc (Reconfigurability): FPGA có thể được lập trình lại để thay đổi chức năng, cho phép triển khai các thuật toán mạng Neural mới một cách dễ dàng. * Xử lý song song (Parallel Processing): FPGA hỗ trợ xử lý song song mạnh mẽ, giúp tăng tốc các phép tính toán phức tạp.

5.2. Hướng Nghiên Cứu Tiềm Năng và Ứng Dụng Thực Tế

Trong tương lai, lĩnh vực thiết kế Neural Network trên FPGA sẽ tiếp tục phát triển mạnh mẽ, với nhiều hướng nghiên cứu và ứng dụng tiềm năng. Một số hướng đi quan trọng bao gồm: * Nghiên cứu các kiến trúc mạng Neural mới: Phát triển các kiến trúc mạng Neural được thiết kế đặc biệt cho FPGA, tận dụng tối đa các ưu điểm của nền tảng này. * Tối ưu hóa các công cụ HLS: Cải thiện các công cụ HLS để tự động tối ưu hóa thiết kế và giảm thời gian phát triển. * Ứng dụng Neural Network trên FPGA vào các lĩnh vực mới: Khám phá các ứng dụng tiềm năng trong các lĩnh vực như xe tự lái, IoT, y tế (Healthcare)an ninh (Security).Việc kết hợp Neural Network với FPGA hứa hẹn sẽ mang lại những đột phá trong nhiều lĩnh vực, góp phần vào sự phát triển của trí tuệ nhân tạocông nghệ số.

02/10/2025

Trích đoạn nội dung tài liệu

Chương 1. Kết quả của thiết kế đạt yêu cầu kỹ thuật như thế nào đã được trình bày trong chương này. GIỚI THIỆU Trong chương này, các kiến thức tổng quan về Artificial Neural Network, FPGA, FSMD, và kiểm chứng thiết kế sẽ được trình bày. Giới thiệu về Artificial Neural Network 1.

Lịch sử hình thành và phát triển Artificial Neural Network (viết tắt là ANN), thường được gọi tắt Neural Network, là mạng neuron nhân tạo. Neural Network cũng giống như các lĩnh vực khác của khoa học, có lịch sử phát triển trải qua nhiều thăng trầm. Trong cuốn sách online A brief introduction to neural network [1] tác giả đã liệt kê ra một số mốc thời gian trong lịch sử hình thành và phát triển của nó. Neural Network ra đời từ khoảng đầu những năm 1940 và gần như cùng thời điểm với sự ra đời của việc lập trình máy tính điện tử.

Năm 1943, Warren McCulloch và Walter Pitts đã giới thiệu mô hình mạng neuron và cho thấy loại mạng đơn giản này có thể tính được gần chính xác các hàm logic và toán học. Hơn nữa, với sự giúp đỡ của Konrad Zuse, tiền thân của thiết bị điện tử sử dụng Neural Network cũng được bắt đầu phát triển [1]. Hebb xây dựng công thức luật Hebbian, là luật khái quát về quy tắc cơ bản cho quá trình học tập của mạng neuron. Quy tắc này ngụ ý rằng, liên kết giữa hai neuron được củng cố khi cả hai neuron được kích hoạt cùng một lúc.

Hebb đã tin là quy tắc này đúng, nhưng vì không có công trình nghiên cứu về mạng neuron nên ông không thể chứng minh nó [1]. Năm 1957 – 1958, tại MIT, Frank Rosenblatt, Charles Wightman và các đồng nghiệp đã chế tạo thành công máy tính sử dụng mạng neuron, gọi là Mark I perceptron, có khả năng nhận dạng các số đơn giản bằng cảm biến hình ảnh 20x20 điểm ảnh (pixel), với cơ chế là 512 chiết áp điều khiển động cơ, mỗi chiết áp đại diện cho một tham số thay đổi được của mạng [1]. Năm 1959, Frank Rosenblatt đã mô tả các phiên bản khác nhau của perceptron trong mạng neuron, xây dựng công thức và chứng minh được định lý gọi là perceptron convergence theorem. Ông đã mô phỏng các lớp neuron bắt chước võng mạc, các ngưỡng chuyển đổi và một nguyên tắc học tập để điều chỉnh các tham số của các kết nối trong mạng.

[1] Năm 1965, trong cuốn sách Machine Learning của mình, Nils Nilsson đã đưa ra cái nhìn tổng quát về sự tiến triển và thành quả của các công trình nghiên cứu về ANN 2 trong thời kì này. Nó được coi là lý thuyết cơ bản cho việc tự học của các trí thông minh nhân tạo [1]. Khoảng thời gian tiếp theo là khoảng thời gian trầm lặng đối với việc nghiên cứu về Neural Network, bởi tài trợ cho các công trình nghiên cứu này còn hạn chế. Các công bố và hội thảo về lĩnh vực này có ít, chỉ có các nhà nghiên cứu hoạt động riêng lẻ và không có sự trao đổi lẫn nhau [1].

Đến năm 1985, Neural Network bước vào thời kỳ phục hưng khi John Hopfield tìm được lời giải chấp nhận được cho bài toán Travelling Salesman Problem (TSP) sử dụng mạng Hopfield. Nội dung của TSP là: cho danh sách các thành phố và khoảng cách giữa mỗi cặp thành phố, từ thành phố gốc ta cần tìm con đường ngắn nhất có thể đến thăm từng thành phố và trở về thành phố gốc. Đây là một bài toán quan trọng trong lĩnh vực khoa học máy tính [1]. Năm 1986, quy tắc học lan truyền ngược của mạng neuron được phát triển và xuất bản rộng rãi.

Từ đó đến nay, nghiên cứu về Neural Network gần như là bùng nổ với nhiều nghiên cứu không thể liệt kê hết [1]. Nguyên lý hoạt động Artificial Neural Network là thuật ngữ chung chỉ các loại mạng neuron nhân tạo. Qua lịch sử phát triển, các nhà nghiên cứu đã công bố rất nhiều loại mạng neuron nhân tạo khác nhau. Trong phần này, nguyên lý hoạt động được trình bày là nguyên lý chung của Neural Network được giới thiệu bởi tổ chức LSI Design Contest [2].

Não người có rất nhiều neuron, nó nhận tín hiệu đầu vào và tạo tín hiệu đầu ra. Ví dụ như khi tay ta chạm vào một vật nóng, thì đầu vào là nóng được truyền tới tủy sống thông qua các tế bào thần kinh bên trong, và nó sẽ đưa ra đầu ra là phản xạ rụt tay khỏi vật nóng. Neural Network là một mô hình toán học bắt chước hệ thần kinh của con người. Về cơ bản thì Neural Network có 3 lớp, đó là (1) lớp đầu vào, (2) lớp ẩn và (3) lớp đầu ra được minh họa trên Hình 1.

Cấu trúc này được gọi là cấu trúc 3 lớp. Đối với những mạng phức tạp hơn thì có thể có nhiều hơn một lớp ẩn [2].1 Cấu trúc 3 lớp [2] Tín hiệu được đưa vào ở lớp (1) và đi ra ở lớp (3). Trước khi đưa tín hiệu vào (1) thì tại đầu ra chúng ta có một giám sát viên (supervisor). Giám sát viên chính là đầu ra kỳ vọng của mạng với mục tiêu là điều chỉnh các tham số trong mạng sao cho sai lệch giữa đầu ra thực tế (output) và giám sát viên là nhỏ nhất có thể [2].2 Cấu trúc 3 lớp với các tham số [2] Hình 1.2 minh họa một mạng neuron theo cấu trúc 3 lớp với các tham số ứng với từng lớp.

Định nghĩa của các tham số trong hình như sau: ki là tín hiệu vào tại lớp đầu vào. 2 w ij là weight nối từ lớp đầu vào đến lớp ẩn. b 2 i là bias của lớp ẩn. z 2 i là đầu vào của lớp ẩn.

2 a i là đầu ra của lớp ẩn. w 3 ij là weight nối từ lớp ẩn đến lớp đầu ra. bi 3 là bias của lớp ẩn. z 3 i là đầu vào của lớp đầu ra.

ai 3 là đầu ra của lớp đầu ra. ti là giám sát viên với t 1 =1 và t 2 =0. Mối liên hệ giữa các tham số trên được biểu diễn theo chiều thuận và chiều nghịch. 5 Theo chiều thuận, ta coi tín hiệu vào tại lớp đầu vào ( k i ), các weight và bias ( w , bi , w ij , bi ) là các số đã biết, mục tiêu là tính đầu ra ai của lớp đầu 2 2 3 3 3 ij ra theo các công thức (1.4) Trong công thức (1.4), chúng ta có thể sử dụng bất kỳ hàm nào có khả năng phân biệt và chuẩn hóa để làm hàm kích hoạt (activate function) [2], ví dụ như dùng hàm tansig thì công thức (1.5) 2 −2 zi với i=1,2,3 1+e Đặt: K= [] k1 k2 [ ] 2 2 w11 w21 2 2 W 2= w 12 w22 2 2 w 13 w23 [] 2 b1 B 2= b22 b23 6 z 12 [] Z 2= z 22 2 z3 [] 2 a1 A 2= a22 2 a3 [ ] 3 3 3 w11 w21 w 31 W 3= w312 w322 w 32 3 [] 3 b1 B 3= b 23 Z 3= [] z31 z32 A 3= [] a13 a23 Các công thức (1.9) Với mỗi vector K thứ n đưa vào lớp đầu vào ta sẽ tính được một hàm lỗi bình phương (square error function) như công thức (1.10) 2 Khi đưa n vector vào lớp đầu vào, ta có hàm giá (cost function) C là tổng của các hàm lỗi bình phương đã có, như công thức số (1.11), với Cn tính như công thức (1.11) 7 Từ bây giờ chúng ta bắt đầu xây dựng công thức theo chiều nghịch sử dụng thuật toán lan truyền ngược (backpropagation).

Từ các công thức (1.10), ta thấy C là một hàm của các weight và bias ( w ij2 , bi2 , w ij3 , b3i ). Bởi vậy ta có công thức đạo hàm của C theo các weight và bias đó. Để tính đạo hàm của C theo các weight và bias, ta cần áp dụng quy tắc tính đạo hàm của hàm hợp. Quy tắc đạo hàm của hàm hợp như sau.

Với f là hàm của u và v, tức là f = f(u,v); u và v là hàm của x, tức là u = u(x) và v = v(x); nếu f(u), f(v), u(x), v(x) tồn tại đạo hàm thì ta có: ∂f ∂f ∂u ∂f ∂v = + (1.12) ∂ x ∂u ∂ x ∂ v ∂ x Giả sử ta cần tính đạo hàm của C theo w 11 , áp dụng quy tắc đạo hàm của 2 hàm hợp ta có: ∂C ∂ C1 ∂ C2 ∂C n (1.17) =( a13 [ n ] −t 1[ n] ) ( w11 + 3 w 12 ) 2 k 1 [n] ∂ z31 [ n] 2 ∂w 11 ∂ z2 [n] ∂ z1 [n] ∂C Từ công thức (1.17) ta tính được ∂ w112 2 Theo thuật toán gradient descent, ta cập nhật giá trị mới của w 11 để tối ưu C.18) 2 ∂ w11 8 Trong công thức (1.18), η là một số dương gọi là tốc độ học (learning rate). Chi tiết về thuật toán gradient descent sẽ được trình bày trong phần sau, qua đó sẽ trả lời được câu hỏi rằng tại sao cập nhật w 11 2 theo công thức (1.18) sẽ tối ưu được C. Để tối ưu C thì các weight và bias khác cũng được cập nhật theo cách tương tự. Sau khi thay đổi, chúng ta lại bắt đầu lại bằng việc đưa K vào và tiếp tục tính toán, cho đến khi đầu ra đạt giá trị gần với giám sát viên nhất [2].

Mỗi lần duyệt qua tất cả các vector K trên toàn bộ dữ liệu được gọi là một epoch [3]. Thuật toán Gradient Descent Trong toán tối ưu, chúng ta thường xuyên phải tìm các giá trị nhỏ nhất của một hàm số. Việc tìm giá trị nhỏ nhất của hàm số phức tạp là không khả thi, nên ta thường tìm các điểm cực tiểu cục bộ (local minimum), và coi đó là một nghiệm cần tìm của bài toán. Các điểm cực tiểu cục bộ là nghiệm của phương trình đạo hàm bằng không.

Tuy nhiên, trong nhiều trường hợp, việc giải phương trình đạo hàm bằng không để tìm nghiệm chính xác cũng là không khả thi, nên cần có hướng giải quyết là tìm nghiệm gần đúng [3]. Hướng tiếp cận phổ biến nhất để giải quyết các bài toán tối ưu là xuất phát từ một điểm được coi là gần với nghiệm của bài toán, sau đó dùng một phép toán lặp để tiến dần đến điểm đạo hàm bằng không [3]. Xét hàm số một biến f : R → R 9 Hình 1.3 Khảo sát sự biến thiên của một đa thức bậc 2 một biến [3] Trên Hình 1.3 là sự biến thiên của một đa thức bậc 2 một biến. Điểm cực tiểu ¿ cục bộ thực sự của f (x) là x =− 2.

Ta dùng thuật toán gradient descent để tìm ¿ điểm gần với x nhất.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ