Đồ án: Thiết Kế Neural Network trên FPGA Nhận Dạng Chữ Số Viết Tay (ĐH Bách Khoa HN)

Khám phá cách thiết kế Neural Network trên FPGA để nhận dạng chữ viết tay. Giải pháp tăng tốc phần cứng cho độ chính xác và hiệu năng cao.

Người đăng

Ẩn danh

Thể loại

Đồ Án Tốt Nghiệp

2019

76
1
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI NÓI ĐẦU

LỜI CAM ĐOAN

MỤC LỤC

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

PHẦN MỞ ĐẦU

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

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

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

1.4. Thuật toán Gradient Descent

1.5. Giới thiệu về FPGA

1.6. Khái niệm FPGA

1.7. Schematic-based flow

1.8. HDL-based flow

1.9. Giới thiệu về SystemVerilog

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

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

1.12. Kết luận 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.3. Chuẩn bị cơ sở dữ liệu

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

2.5. Huấn luyện Neural Network

2.6. Kiểm tra trên Matlab

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

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

2.9. Kiểm tra Neural Network

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

3. THIẾT KẾ NEURAL NETWORK TRÊN FPGA

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

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

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

3.4. Thiết kế RTL

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

3.6. Thiết kế testbench

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

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

3.9. 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 ĐỒ ÁN

1. CHƯƠNG 1: GIỚI THIỆU

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

1.2. Lịch sử hình thành và phát triển Artificial Neural Network

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

Tóm tắt

I. Tổng Quan Về Thiết Kế Neural Network FPGA Chữ Viết Tay

Bài viết này tập trung vào việc thiết kế Neural Network trên FPGA để nhận dạng chữ viết tay, một lĩnh vực quan trọng trong xử lý ảnhtrí tuệ nhân tạo. FPGA (Field-Programmable Gate Array) cung cấp một nền tảng phần cứng linh hoạt, cho phép triển khai các thuật toán phức tạp như mạng neural với hiệu suất cao. Bài viết sẽ đi sâu vào các khía cạnh khác nhau của quá trình thiết kế, từ việc lựa chọn kiến trúc mạng phù hợp, tối ưu hóa Neural Network trên FPGA để giảm thiểu tài nguyên phần cứng và năng lượng tiêu thụ, đến việc mô phỏng Neural Network FPGA và kiểm chứng thiết kế. Việc triển khai hệ thống nhận dạng chữ viết tay trên FPGA mở ra nhiều ứng dụng tiềm năng trong các lĩnh vực như xử lý văn bản tự động, nhận dạng ký tự quang học (OCR), và giao diện người-máy. Theo tài liệu gốc, sinh viên Đặng Tùng Long đã thực hiện một đồ án tốt nghiệp về đề tài này tại Trường Đại học Bách Khoa Hà Nội vào năm 2019, dưới sự hướng dẫn của ThS. Nguyễn Thị Kim Thoa. Đồ án này là một ví dụ cụ thể về việc thiết kế Neural Network FPGA để giải quyết bài toán nhận dạng chữ số viết tay. Neural Network FPGA mang lại sự kết hợp mạnh mẽ giữa tính linh hoạt của phần mềm và hiệu suất của phần cứng, làm cho nó trở thành một lựa chọn hấp dẫn cho nhiều ứng dụng thực tế. Trong bối cảnh này, việc tối ưu hóa Neural Network trên FPGA để đạt được hiệu quả cao về tốc độ và năng lượng là một thách thức lớn, đòi hỏi sự hiểu biết sâu sắc về cả thuật toán và kiến trúc phần cứng.

1.1. Giới Thiệu Lịch Sử Phát Triển Neural Network

Lịch sử phát triển của Neural Network trải qua nhiều giai đoạn, từ những ý tưởng ban đầu vào những năm 1940 đến sự phục hưng vào những năm 1980 và sự bùng nổ trong thời đại hiện nay. Các công trình tiên phong của Warren McCulloch, Walter Pitts và Frank Rosenblatt đã đặt nền móng cho lĩnh vực này. Theo tài liệu, 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 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ă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. Sự phát triển của thuật toán lan truyền ngược (backpropagation) đã mở ra một kỷ nguyên mới cho Neural Network, cho phép huấn luyện các mạng sâu và phức tạp hơn. Ngày nay, Neural Network được ứng dụng rộng rãi trong nhiều lĩnh vực, từ nhận dạng ảnhxử lý ngôn ngữ tự nhiên đến dự báo tài chínhrobotics. Việc triển khai Neural Network trên các nền tảng phần cứng khác nhau, bao gồm FPGA, đã trở thành một lĩnh vực nghiên cứu quan trọng, nhằm khai thác tối đa tiềm năng của các thuật toán này.

1.2. Tổng Quan Về Ứng Dụng FPGA Nhận Dạng Chữ Viết Tay

Ứng dụng FPGA trong nhận dạng chữ viết tay mang lại nhiều lợi ích, bao gồm hiệu suất cao, độ trễ thấp, và khả năng tùy biến linh hoạt. FPGA cho phép thực hiện song song nhiều phép tính, giúp tăng tốc quá trình xử lý và đáp ứng yêu cầu thời gian thực của nhiều ứng dụng. FPGA Nhận Dạng Chữ Viết Tay có thể được sử dụng trong các thiết bị di động, hệ thống kiểm soát truy cập, và các ứng dụng công nghiệp khác. Một trong những ưu điểm lớn nhất của FPGA là khả năng tái cấu hình (reconfiguration), cho phép thay đổi kiến trúc phần cứng để phù hợp với các thuật toán và yêu cầu khác nhau. Điều này đặc biệt quan trọng trong lĩnh vực nhận dạng chữ viết tay, nơi các thuật toán liên tục được cải tiến và cập nhật. Theo tài liệu, FPGA và các ngôn ngữ mô tả phần cứng là lĩnh vực mà em yêu thích và giành khá nhiều thời gian để nghiên cứu và thực hành. Việc thiết kế Neural Network FPGA đòi hỏi sự hiểu biết sâu sắc về cả phần cứng và phần mềm, cũng như khả năng tối ưu hóa các thuật toán cho kiến trúc FPGA cụ thể.

II. Thách Thức Khi Triển Khai Neural Network Trên FPGA

Việc triển khai Neural Network trên FPGA đặt ra nhiều thách thức, bao gồm hạn chế về tài nguyên phần cứng, độ phức tạp của thuật toán, và khó khăn trong việc gỡ lỗi. FPGA có số lượng tài nguyên logic, bộ nhớ và các khối DSP (Digital Signal Processing) hữu hạn, do đó cần phải tối ưu hóa Neural Network trên FPGA để giảm thiểu tài nguyên sử dụng. Theo đồ án của Đặng Tùng Long, sau khi triển khai thành công trên Matlab, em đã tìm cách tối ưu hóa về kích thước và độ chính xác để có thể triển khai trên thiết bị FPGA đó. Các thuật toán Neural Network thường đòi hỏi nhiều phép tính phức tạp, chẳng hạn như phép nhân ma trận và hàm kích hoạt, điều này có thể gây khó khăn cho việc triển khai hiệu quả trên FPGA. Ngoài ra, việc gỡ lỗi các thiết kế FPGA phức tạp có thể tốn nhiều thời gian và công sức. Việc biểu diễn số thực dấu phẩy động trên FPGA tốn nhiều tài nguyên hơn so với số nguyên, do đó cần phải sử dụng các kỹ thuật lượng tử hóa (quantization) để giảm độ chính xác của các phép tính và giảm thiểu tài nguyên sử dụng. Việc tối ưu hóa kiến trúc Neural Network cho FPGA cũng là một thách thức quan trọng.

2.1. Giới Hạn Về Tài Nguyên Phần Cứng FPGA

FPGA có số lượng tài nguyên logic (LUTs, flip-flops), bộ nhớ (BRAMs), và các khối DSP (Digital Signal Processing) hữu hạn. Khi thiết kế Neural Network trên FPGA, cần phải cân nhắc kỹ lưỡng việc sử dụng các tài nguyên này để đảm bảo thiết kế có thể vừa vặn trên thiết bị mục tiêu. Theo tài liệu, cần tìm cách tối ưu hóa về kích thước và độ chính xác để có thể triển khai trên thiết bị FPGA đó. Việc lượng tử hóa các tham số và phép tính trong Neural Network là một kỹ thuật phổ biến để giảm thiểu tài nguyên sử dụng. Lượng tử hóa làm giảm độ chính xác của các phép tính, nhưng nếu được thực hiện một cách cẩn thận, có thể giảm đáng kể kích thước của mô hình mà không ảnh hưởng nhiều đến độ chính xác. Các kỹ thuật khác để giảm thiểu tài nguyên sử dụng bao gồm cắt tỉa (pruning) các kết nối không quan trọng trong mạng và chia sẻ tài nguyên (resource sharing) giữa các phép tính.

2.2. Độ Phức Tạp Của Thuật Toán Nhận Dạng Chữ Viết Tay

Các thuật toán nhận dạng chữ viết tay thường đòi hỏi nhiều phép tính phức tạp, chẳng hạn như phép nhân ma trận, hàm kích hoạt (sigmoid, ReLU), và các phép biến đổi ảnh. Việc triển khai hiệu quả các phép tính này trên FPGA đòi hỏi sự hiểu biết sâu sắc về kiến trúc phần cứng và các kỹ thuật tối ưu hóa. Theo tài liệu, việc nhận dạng chữ số viết tay trên FPGA có thể là bài toán lớn. Các phép nhân ma trận có thể được thực hiện song song trên FPGA để tăng tốc độ xử lý. Việc sử dụng các khối DSP tích hợp trong FPGA cũng có thể cải thiện hiệu suất của các phép tính số học. Việc lựa chọn hàm kích hoạt phù hợp cũng rất quan trọng. Các hàm kích hoạt đơn giản hơn, chẳng hạn như ReLU, thường dễ triển khai hơn trên FPGA so với các hàm kích hoạt phức tạp hơn, chẳng hạn như sigmoid.

III. Phương Pháp Thiết Kế Mạng Neural Tối Ưu Trên FPGA

Để vượt qua những thách thức trên, cần áp dụng các phương pháp thiết kế Neural Network tối ưu cho FPGA. Các phương pháp này bao gồm lựa chọn kiến trúc mạng phù hợp, lượng tử hóa các tham số và phép tính, tối ưu hóa luồng dữ liệu, và sử dụng các công cụ thiết kế FPGA hiệu quả. Việc lựa chọn kiến trúc mạng phù hợp là rất quan trọng. Các kiến trúc mạng đơn giản hơn thường dễ triển khai hơn trên FPGA so với các kiến trúc mạng phức tạp. Việc lượng tử hóa các tham số và phép tính là một kỹ thuật quan trọng để giảm thiểu tài nguyên sử dụng. Theo tài liệu, sau khi huấn luyện thành công trên Matlab thì Neural Network đó được triển khai trên FPGA với những yêu cầu kỹ thuật cho phần cứng. Việc tối ưu hóa luồng dữ liệu giúp giảm thiểu độ trễ và tăng hiệu suất của thiết kế. Việc sử dụng các công cụ thiết kế FPGA hiệu quả, chẳng hạn như các trình biên dịch và trình mô phỏng, giúp đơn giản hóa quá trình thiết kế và kiểm chứng.

3.1. Lựa Chọn Kiến Trúc Convolutional Neural Network FPGA

Convolutional Neural Network (CNN) là một kiến trúc mạng phù hợp cho nhận dạng ảnh, bao gồm cả nhận dạng chữ viết tay. CNN có khả năng tự động trích xuất các đặc trưng quan trọng từ ảnh, giảm thiểu sự cần thiết phải thiết kế các đặc trưng thủ công. Các lớp convolutional trong CNN thực hiện phép tích chập giữa các bộ lọc (filters) và ảnh đầu vào, tạo ra các bản đồ đặc trưng (feature maps). Các lớp pooling giảm kích thước của các bản đồ đặc trưng, giúp giảm thiểu số lượng tham số và tăng tính tổng quát của mô hình. Theo tài liệu, Neural Network trên Matlab đã có độ chính xác trên 90%. Lựa chọn các tham số weight và bias cho việc nhận dạng. Để triển khai CNN hiệu quả trên FPGA, cần phải tối ưu hóa kiến trúc mạng để giảm thiểu số lượng phép tính và tài nguyên sử dụng.

3.2. Kỹ Thuật Lượng Tử Hóa Để Tối Ưu Neural Network trên FPGA

Lượng tử hóa là một kỹ thuật quan trọng để giảm thiểu tài nguyên sử dụng khi triển khai Neural Network trên FPGA. Lượng tử hóa làm giảm độ chính xác của các tham số và phép tính trong mạng, nhưng nếu được thực hiện một cách cẩn thận, có thể giảm đáng kể kích thước của mô hình mà không ảnh hưởng nhiều đến độ chính xác. Các kỹ thuật lượng tử hóa phổ biến bao gồm lượng tử hóa tuyến tính (linear quantization)lượng tử hóa phi tuyến tính (non-linear quantization). Theo đồ án, sau khi huấn luyện, ta có hiệu suất huấn luyện thể hiện trên Hình 2.4. Khi thực hiện lượng tử hóa, cần phải cân bằng giữa việc giảm thiểu tài nguyên sử dụng và duy trì độ chính xác của mô hình. Việc sử dụng các kỹ thuật huấn luyện nhận biết lượng tử (quantization-aware training) có thể giúp cải thiện độ chính xác của các mô hình đã được lượng tử hóa.

3.3. Tối Ưu Hóa Luồng Dữ Liệu Để Tăng Tốc Độ

Tối ưu hóa luồng dữ liệu là một yếu tố quan trọng để tăng tốc độ xử lý khi triển khai Neural Network trên FPGA. Cần phải thiết kế luồng dữ liệu sao cho các phép tính có thể được thực hiện song song và hiệu quả. Việc sử dụng các kỹ thuật pipeliningdata reuse có thể giúp cải thiện hiệu suất của thiết kế. Theo tài liệu, việc tiền xử lý huấn luyện là biến đổi 60000 bức ảnh trong tập huấn luyện MNIST thành đầu vào phù hợp với Neural Network. Pipelining cho phép thực hiện nhiều phép tính đồng thời trên các giai đoạn khác nhau của mạng. Data reuse giúp giảm thiểu số lần truy cập bộ nhớ, giảm độ trễ và tiết kiệm năng lượng. Để tối ưu hóa luồng dữ liệu, cần phải hiểu rõ kiến trúc của FPGA và các ràng buộc về tài nguyên. Việc sử dụng các công cụ phân tích hiệu năng có thể giúp xác định các điểm nghẽn trong luồng dữ liệu và tìm ra các cơ hội để tối ưu hóa.

IV. Ứng Dụng Thực Tế Của FPGA Nhận Dạng Chữ Viết Tay

FPGA Nhận Dạng Chữ Viết Tay có nhiều ứng dụng thực tế trong các lĩnh vực khác nhau. Một số ứng dụng tiềm năng bao gồm xử lý văn bản tự động, nhận dạng ký tự quang học (OCR), giao diện người-máy, và kiểm soát truy cập. Trong xử lý văn bản tự động, FPGA Nhận Dạng Chữ Viết Tay có thể được sử dụng để chuyển đổi các tài liệu viết tay thành văn bản số, giúp đơn giản hóa quá trình số hóa và lưu trữ tài liệu. Trong nhận dạng ký tự quang học (OCR), FPGA Nhận Dạng Chữ Viết Tay có thể được sử dụng để nhận dạng các ký tự trong ảnh hoặc video, cho phép tự động hóa quá trình nhập liệu và xử lý dữ liệu. Trong giao diện người-máy, FPGA Nhận Dạng Chữ Viết Tay có thể được sử dụng để cho phép người dùng tương tác với các thiết bị điện tử bằng cách viết tay, mở ra nhiều khả năng mới cho các ứng dụng di động và thiết bị nhúng.

4.1. Ứng Dụng Trong Hệ Thống Nhận Dạng Ký Tự Quang Học

Hệ thống nhận dạng ký tự quang học (OCR) sử dụng FPGA Nhận Dạng Chữ Viết Tay để tự động nhận dạng các ký tự trong ảnh hoặc video. Các hệ thống này có thể được sử dụng để số hóa tài liệu, tự động hóa quá trình nhập liệu, và trích xuất thông tin từ hình ảnh. FPGA cung cấp một nền tảng hiệu quả để triển khai các thuật toán OCR, cho phép xử lý nhanh chóng và chính xác các hình ảnh phức tạp. Theo tài liệu, để xây dựng kế hoạch kiểm chứng. Các hệ thống OCR dựa trên FPGA có thể được sử dụng trong các ứng dụng như xử lý hóa đơn, nhận dạng biển số xe, và kiểm tra chất lượng sản phẩm.

4.2. FPGA Trong Giao Diện Người Máy

FPGA Nhận Dạng Chữ Viết Tay có thể được sử dụng trong giao diện người-máy (HMI) để cho phép người dùng tương tác với các thiết bị điện tử bằng cách viết tay. Các hệ thống HMI dựa trên FPGA có thể được sử dụng trong các ứng dụng như máy tính bảng, điện thoại thông minh, và thiết bị đeo. FPGA cung cấp một nền tảng linh hoạt để triển khai các thuật toán nhận dạng chữ viết tay, cho phép tùy chỉnh giao diện theo nhu cầu cụ thể của người dùng. Các hệ thống HMI dựa trên FPGA có thể cải thiện trải nghiệm người dùng và mở ra nhiều khả năng mới cho các ứng dụng di động và thiết bị nhúng.

V. Kết Luận và Hướng Phát Triển Của Neural Network FPGA

Thiết kế Neural Network FPGA cho nhận dạng chữ viết tay là một lĩnh vực đầy tiềm năng, kết hợp giữa sức mạnh của thuật toán và hiệu suất của phần cứng. Mặc dù còn nhiều thách thức, nhưng các phương pháp thiết kế tối ưu và sự phát triển của công nghệ FPGA đang mở ra những cơ hội mới cho việc triển khai các hệ thống nhận dạng chữ viết tay hiệu quả và chính xác. Trong tương lai, có thể kỳ vọng sự phát triển của các kiến trúc mạng mới, các kỹ thuật tối ưu hóa tiên tiến, và các công cụ thiết kế FPGA mạnh mẽ hơn. Theo tài liệu, FPGA và các ngôn ngữ mô tả phần cứng là lĩnh vực mà em yêu thích. Điều này sẽ thúc đẩy sự phát triển của các ứng dụng FPGA Nhận Dạng Chữ Viết Tay trong nhiều lĩnh vực khác nhau.

5.1. Đánh Giá Tiềm Năng Phát Triển Trong Tương Lai

Tiềm năng phát triển của FPGA Nhận Dạng Chữ Viết Tay là rất lớn. Sự kết hợp giữa Neural NetworkFPGA cho phép tạo ra các hệ thống nhận dạng chữ viết tay có hiệu suất cao, độ trễ thấp, và khả năng tùy biến linh hoạt. Các ứng dụng tiềm năng bao gồm xử lý văn bản tự động, nhận dạng ký tự quang học (OCR), giao diện người-máy, và kiểm soát truy cập. Việc nghiên cứu và phát triển các kiến trúc mạng mới, các kỹ thuật tối ưu hóa tiên tiến, và các công cụ thiết kế FPGA mạnh mẽ hơn sẽ tiếp tục thúc đẩy sự phát triển của lĩnh vực này.

5.2. Các Hướng Nghiên Cứu và Phát Triển Mới

Có nhiều hướng nghiên cứu và phát triển mới trong lĩnh vực FPGA Nhận Dạng Chữ Viết Tay. Một số hướng tiềm năng bao gồm việc phát triển các kiến trúc mạng đặc biệt được thiết kế cho FPGA, việc nghiên cứu các kỹ thuật lượng tử hóa tiên tiến để giảm thiểu tài nguyên sử dụng, việc phát triển các công cụ tự động hóa quá trình thiết kế, và việc khám phá các ứng dụng mới của FPGA Nhận Dạng Chữ Viết Tay. Việc hợp tác giữa các nhà nghiên cứu trong lĩnh vực Neural NetworkFPGA sẽ đóng vai trò quan trọng trong việc thúc đẩy sự phát triển của lĩnh vực này.

22/09/2025

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

CHƯƠNG 1. 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 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat 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]. 3 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Hình 1.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].

4 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Hình 1.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: k i là tín hiệu vào tại lớp đầu vào. w 2ij là weight nối từ lớp đầu vào đến lớp ẩn. 2 b i là bias của lớp ẩn.

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

3 z i là đầu vào của lớp đầu ra. a 3i là đầu ra của lớp đầu ra. t i 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 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat 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 2ij, 2 3 3 3 b i , w ij, b i ) là các số đã biết, mục tiêu là tính đầu ra a i của lớp đầu 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) a i =tansig ( z i ) = 2 2 −2 zi 2 −1 với i=1,2,3 1+e Đặt: K= [] k1 k2 [ ] w211 w221 W 2= w212 w222 2 2 w13 w23 [] b 21 B 2= b 22 2 b3 6 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat [] 2 z1 Z 2= z 22 z32 [] a21 A 2= a22 2 a3 [ ] 3 3 3 w 11 w 21 w31 W 3= w 312 w 322 w332 [] 3 b1 B 3= b32 [] 3 z Z 3= 13 z2 [] 3 a A 3= 13 a2 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) C n= {( a1 [n]−t 1 [n] ) + ( a 2 [ n ]−t 2 [n] ) } 3 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 C n tính như công thức (1.11) 7 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat 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 2ij, b 2i , w 3ij, b 3i ). 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 211, áp dụng quy tắc đạo hàm của hàm hợp ta có: ∂C ∂C ∂C ∂C (1.17) 3 3 2 ∂ Cn ∂ a1 [n] 2 =( a [ n ]−t 1 [ n ] ) ( 3 1 3 w + 11 w ) 3 12 k 1 [n] ∂ z [n] 3 3 2 ∂w 11 1 ∂ z [n] 2 ∂ z [n] 1 ∂C Từ công thức (1.17) ta tính được 2 ∂ w11 Theo thuật toán gradient descent, ta cập nhật giá trị mới của w 211 để tối ưu C. 8 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ∂C (1.18) ( new ) w211=( old ) w 211−η ∂ w211 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 211 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].

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