1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu và thực hiện mạng nơ ron nhân tạo lan truyền thẳng nhiều lớp có kiến trúc tùy biến trên fpga

76 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 76
Dung lượng 2,27 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong những năm gần đây mạng nơ ron nhân tạo ANN được sử dụng nhiều trong các ứng dụng và triển khai thực tế trong lĩnh vực nhận dạng mẫu Luận văn nghiên cứu một kiến trúc phần cứng tùy biến được để thực thi mạng nơ ron nhân tạo trên FPGA Kiến trúc chỉ sử dụng một lớp phần cứng tính toán được đặt tên là SHL_ANN để thực hiện tính toán cho toàn bộ mạng nơ ron nhân tạo lan truyền thẳng nhiều lớp Bộ trọng số của mạng nơ ron sử dụng định dạng số thực dấu phẩy động bán chính xác 16 bits Tác giả phân tích hoạt động của kiến trúc SHL_ANN đồng thời khảo sát khả năng mở rộng cũng như độ chiếm dụng tài nguyên phần cứng của kiến trúc đối với các board mạch FPGA của hãng Xilinx là Virtex 5 XC5VLX 110T and ZynQ 7 7Z045 Để đánh giá hiệu năng của kiến trúc tác giả sử dụng bài toán nhận dạng chữ số viết tay dựa vào cơ sở dữ liệu MNIST kết quả cho tỉ lệ nhận dạng MNIST tốt nhất là 97 20 khi sử dụng mạng nơ ron nhân tạo có kích cỡ 784 40 40 10 có 2 lớp ẩn chiếm 91 8 tài nguyên phần cứng board mạch Virtex 5 XC5VLX 110T và tỉ lệ nhận dạng MNIST tốt nhất là 98 16 khi sử dụng mạng nơ ron nhân tạo có kích cỡ 784 126 126 10 có 2 lớp ẩn chiếm 98 1 tài nguyên phần cứng board mạch ZynQ 7 7Z045 Kết quả thực nghiệm cho thấy kiến trúc SHL_ANN là một lựa chọn rất hứa hẹn để triển khai các ứng dụng nhận dạng nhúng hiệu năng cao

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

ĐẠI HỌC ĐÀ NẴNG

HUỲNH MINH VŨ

NGHIÊN CỨU VÀ THỰC HIỆN MẠNG NƠ-RON NHÂN TẠO LAN TRUYỀN THẲNG NHIỀU LỚP

CÓ KIẾN TRÚC TÙY BIẾN TRÊN FPGA

Chuyên ngành: Kỹ thuật điện tử

Trang 2

LỜI CAM ĐOAN

Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi

Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công

bố trong bất kỳ công trình nào khác

Tác giả luận văn

Huỳnh Minh Vũ

Trang 3

NGHIÊN CỨU VÀ THỰC HIỆN MẠNG NƠ-RON NHÂN TẠO LAN TRUYỀN THẲNG NHIỀU LỚP CÓ KIẾN TRÚC TÙY BIẾN TRÊN FPGA

Học viên: Huỳnh Minh Vũ Chuyên ngành: Kỹ thuật Điện tử

Mã số: 60.52.02.03 Khóa: K31 Trường Đại học Bách khoa - ĐHĐN

Tóm tắt – Trong những năm gần đây, mạng nơ-ron nhân tạo (ANN) được sử dụng nhiều trong

các ứng dụng và triển khai thực tế trong lĩnh vực nhận dạng mẫu Luận văn nghiên cứu một kiến trúc phần cứng tùy biến được để thực thi mạng nơ-ron nhân tạo trên FPGA Kiến trúc chỉ sử dụng một lớp phần cứng tính toán (được đặt tên là SHL_ANN) để thực hiện tính toán cho toàn bộ mạng nơ-ron nhân tạo lan truyền thẳng nhiều lớp Bộ trọng số của mạng nơ-ron sử dụng định dạng số thực dấu phẩy động bán chính xác 16 bits Tác giả phân tích hoạt động của kiến trúc SHL_ANN, đồng thời khảo sát khả năng mở rộng cũng như độ chiếm dụng tài nguyên phần cứng của kiến trúc đối với các board mạch FPGA của hãng Xilinx là Virtex-5 XC5VLX-110T and ZynQ-7 7Z045 Để đánh giá hiệu năng của kiến trúc tác giả sử dụng bài toán nhận dạng chữ số viết tay dựa vào cơ sở dữ liệu MNIST, kết quả cho tỉ lệ nhận dạng MNIST tốt nhất là 97,20% khi sử dụng mạng nơ-ron nhân tạo có kích cỡ 784-40-40-10 có 2 lớp ẩn chiếm 91,8% tài nguyên phần cứng board mạch Virtex-5 XC5VLX-110T và tỉ lệ nhận dạng MNIST tốt nhất là 98,16% khi sử dụng mạng nơ-ron nhân tạo có kích cỡ 784-126-126-10 có 2 lớp ẩn chiếm 98,1% tài nguyên phần cứng board mạch ZynQ-7 7Z045 Kết quả thực nghiệm cho thấy kiến trúc SHL_ANN là một lựa chọn rất hứa hẹn để triển khai các ứng dụng nhận dạng nhúng hiệu năng cao

Từ khóa - mạng nơ-ron lan truyền thẳng nhiều lớp, kiến trúc tùy biến, FPGA, thực hiện, đánh giá

STUDY AND IMPLEMENT A CUSTOMIZABLE ARCHITECTURE OF LAYER FEED-FORWARD ARTIFICIAL NEURAL NETWORK ON FPGA

MULTI-Abstract – Artificial Neural Networks (ANNs) have attracted many applications and practical

implementations in pattern recognition areas in recent years In this thesis, we study a customized hardware architecture for realization of multilayer ANNs on reconfigurable computing platforms like FPGAs The architecture employs only one single hardware-computing layer (namely SHL_ANN) to perform the whole computing fabric of multi-layer feed-forward neural networks The 16-bit half-precision floating-point number format is used to represent the weights of the designed network We analyse the operation of proposed architecture and investigate the scalability and hardware resource utilization of the SHL_ANN architecture on the Xilinx Virtex-5 XC5VLX-110T FPGA and ZynQ-7 7Z045 FPGA The handwritten digit recognition application with MNIST database is performed for performance evaluation, which reported the best recognition rate of 97,20% when using a neural network architecture of size 784-40-40-10 with two hidden layers, occupying 91,8% Virtex-5 XC5VLX-110T FPGA hardware resource and the best recognition rate of 98,16% when using a neural network architecture of size 784-126-126-10 with two hidden layers, occupying 98,1% ZynQ-7 7Z045 FPGA hardware resource Experimental results show that the SHL_ANN architecture is a very promising design choice for high performance embedded recognition applications

Key words - multi-layer feed-forward neural network, customized architecture, FPGA,

implementation, evaluation

Trang 4

MỤC LỤC

MỞ ĐẦU 1

1 Tính cấp thiết của đề tài 1

2 Mục tiêu nghiên cứu 2

3 Đối tượng và phạm vi nghiên cứu 2

3.1 Đối tượng nghiên cứu 2

3.2 Phạm vi nghiên cứu 2

4 Phương pháp nghiên cứu và nội dung nghiên cứu 2

4.1 Phương pháp nghiên cứu 2

4.2 Nội dung nghiên cứu 3

5 Ý nghĩa khoa học và thực tiễn của đề tài 3

6 Kết cấu của luận văn 3

CHƯƠNG 1-TỔNG QUAN 5

1.1 Mạng nơ-ron sinh học 5

1.2 Mạng nơ-ron nhân tạo 6

1.3 Thực hiện mạng nơ-ron nhân tạo trên phần cứng 7

1.4 Phạm vi và nhiệm vụ của luận văn 9

CHƯƠNG 2 - CƠ SỞ HIỆN THỰC HÓA MẠNG NƠ-RON NHÂN TẠO TRÊN FPGA 10

2.1 Mở đầu chương 10

2.2 Hệ thống nhận dạng mẫu dựa trên mạng nơ-ron nhân tạo 10

2.3 Mô hình tính toán trong mạng nơ-ron nhân tạo lan truyền thẳng nhiều lớp 11

2.3.1 Nơ-ron nhân tạo 11

2.3.2 Mô hình tính toán mạng nơ-ron nhân tạo [10] 12

2.3.3 Hàm truyền 14

2.4 Huấn luyện mạng nơ-ron nhân tạo nhiều lớp [12, 16] 14

2.4.1 Mô hình một nơ-ron 15

2.4.2 Mô hình mạng nơ-ron 17

2.5 Công nghệ FPGA và ngôn ngữ mô tả phần cứng VHDL [1] 20

2.5.1 Công nghệ FPGA 20

2.5.2 Ngôn ngữ mô tả phần cứng VHDL 22

2.6 Thực hiện các phép toán số thực dấu phẩy động trên FPGA 24

2.6.1 Thư viện mã nguồn mở FloPoCo [13] 24

Trang 5

2.6.2 Các phép toán số thực dấu phẩy động trên FPGA 25

2.7 Thực hiện các phép toán cơ sở cho mạng nơ-ron [2, 6] 29

2.7.1 Bộ nhân cộng tích lũy MAC 29

2.7.2 Bộ thực hiện hàm truyền Logsigmoid 31

2.8 Kết luận chương 32

CHƯƠNG 3 - NGHIÊN CỨU KIẾN TRÚC MẠNG NƠ-RON NHÂN TẠO LAN TRUYỀN THẲNG NHIỀU LỚP TÙY BIẾN TRÊN FPGA 33

3.1 Mở đầu chương 33

3.2 Kiến trúc của một nơ-ron [6] 33

3.3 Kiến trúc mạng nơ-ron nhân tạo với nhiều lớp tính toán phần cứng 35

3.4 Kiến trúc mạng nơ-ron nhân tạo với một lớp tính toán phần cứng 36

3.4.1 Khối nơ-ron tính toán Hardware_Layer 36

3.4.2 Khối điều khiển Control Unit 40

3.4.3 Kết quả mô phỏng 42

3.5 Công cụ AutogenDNN cho tùy biến kiến trúc mạng nơ-ron lan truyền thẳng nhiều lớp trên FPGA 44

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

CHƯƠNG 4 - THỰC HIỆN VÀ ĐÁNH GIÁ 47

4.1 Mở đầu chương 47

4.2 Quy trình thiết kế và thực hiện mạng nơ-ron nhân tạo trên FPGA 47

4.2.1 Huấn luyện các mạng nơ-ron trên MatLab 48

4.2.2 Tạo mã chương trình mô tả phần cứng VHDL cho các mạng ANN 48

4.2.3 Tổng hợp và mô phỏng 49

4.2.4 Thực thi trên phần cứng 49

4.3 Các thông số (tiêu chí) đánh giá và các trường hợp đánh giá 49

4.4 Kết quả thực nghiệm 50

4.4.1 Kết quả huấn luyện các mạng nơ-ron nhân tạo trên MatLab 50

4.4.2 Kết quả tổng hợp và mô phỏng 52

4.4.3 Kết quả thực thi trên phần cứng 54

4.4.4 So sánh với một số kết quả nghiên cứu khác 59

4.5 Kết luận chương 60

KẾT LUẬN VÀ ĐỀ XUẤT 61

Trang 6

DANH MỤC CÁC TỪ VIẾT TẮT

Từ viết tắt Tiếng Anh Dịch nghĩa Tiếng Việt

ALUs Arithmetic Logic Units Các đơn vị logic số học ANN Artifical Neural Network Mạng nơ-ron nhân tạo ASIC Application Specific Intergrated Circuit Mạch tích hợp chuyên dụng BSB Base System Builder Bộ xây dựng hệ thống cơ sở

CLB Configurable Logic Blocks Các khối logic cấu hình

được

CNN Convolutional Neural Network Mạng nơ-ron nhân tạo tích

chập

DSP Digital Signal Processing Xử lý tín hiệu số

EPROM Erasable Programmable Read Only

Memory

Bộ nhớ chỉ đọc có thể lập trình và xóa được

FPGA Field Programmable Gate Array Mảng cổng lập trình được FSM Finite State Machine Máy trạng thái hữu hạn HDL Hardware Description Language Ngôn ngữ mô tả phần cứng

IEEE Institute of Electrical and Electronics

Engineers

Viện kỹ nghệ Điện – Điện

tử

LMS Least Means Square Trung bình bình phương tối

thiểu MAC Multiply Accumulator Bộ nhân cộng tích lũy

MHL_ANN Multi Hardware Layer Artifical Neural

Network

Mạng nơ-ron nhân tạo nhiều lớp tính toán phần cứng PCA Principal Component Analysis Phân tích thành phần chính

RAM Random Access Memory Bộ nhớ truy xuất ngẫu nhiên RTL Register Transfer Level Mức chuyển thanh ghi

Trang 7

SHL_ANN Single Hardware Layer Artifical Neural

VHDL VHSIC (very high speed integrated

circuit) Hardware Description Language

Ngôn ngữ mô tả phần cứng cho mạch tích hợp tốc độ cao

VLSI Very Large Scale Integration Tích hợp mật độ rất cao

Trang 8

DANH MỤC CÁC BẢNG

Số hiệu

4.1 Tài nguyên board mạch FPGA Virtex-5 XC5VLX-110T 49

4.3 Tỉ lệ sử dụng tài nguyên, tốc độ nhận dạng và tỉ lệ nhận dạng trên

4.4 Tỉ lệ sử dụng tài nguyên, tốc độ nhận dạng và tỉ lệ nhận dạng trên

4.5 Tỉ lệ sử dụng tài nguyên, tần số hoạt động và tỉ lệ nhận dạng của

4.6 So sánh kết quả đạt được với một số nghiên cứu khác 59

Trang 9

DANH MỤC CÁC HÌNH

Số hiệu

1.1 Cấu trúc minh họa của một nơ-ron sinh học [20] 5

1.3 Deep Neural Network Processor của KAIST (2017) và các

2.1 Sơ đồ khối chức năng hệ thống nhận dạng sử dụng ANN 10

2.2 Sơ đồ khối chức năng hệ thống nhận dạng sử dụng ANN

2.4 Mạng nơ-ron một lớp gồm N đầu vào và M nơ-ron [10] 12

2.17 Sơ đồ khối mức thanh ghi RTL bộ nhân cộng tích lũy MAC 30

2.20 Sơ đồ khối mức thanh ghi RTL hàm Logsigmoid 31 2.21 Dạng sóng bộ thực hiện hàm truyền Logsigmoid 32

3.2 Sơ đồ khối mức chuyển thanh ghi RTL một nơ-ron 34

3.4 Sơ đồ khối chức năng của kiến trúc MHL-ANN 35

Trang 10

3.5 Sơ đồ khối chức năng của kiến trúc SHL-ANN 36 3.6 Sơ đồ khối RTL của khối nơ-ron tính toán Hardware Layer 37 3.7 Sơ đồ khối RTL chi tiết của khối Hardware_Layer 39 3.8 Sơ đồ khối RTL của khối điều khiển Control Unit 40 3.9 Sơ đồ máy trạng thái FSM của khối điều khiển 41

4.1 Qui trình thiết kế và thực hiện mạng ANN trên FPGA 47 4.2 Sơ đồ khối quá trình huấn luyện trên Matlab 48 4.3 Kết quả huấn luyện trên Matlab các mạng có 12 nơ-ron

4.6 So sánh tỉ lệ sử dụng tài nguyên FPGA Virtex-5 và tỉ lệ

nhận dạng của các kiến trúc MHL_ANN và SHL_ANN 54

4.8 Hệ thống kiểm tra và đánh giá sự thực hiện của lõi IP trên

FPGA Virtex-5 trong bài toán nhận dạng chữ số viết tay 56 4.9 Mô hình thực thi kiến trúc SHL_ANN trên board FPGA 57 4.10 Kết quả nhận dạng của IP core 785-12-12-10 thu được trên

4.11 Kết quả nhận dạng của IP core 785-40-40-10 thu được trên

Trang 11

MỞ ĐẦU

1 Tính cấp thiết của đề tài

Mạng nơ-ron nhân tạo (Artificial Neural Network - ANN) được nghiên cứu từ rất sớm vào đầu thế kỷ 20 với sự đóng góp của rất nhiều nhà khoa học nhằm mô phỏng mạng nơ-ron sinh học của con người Từ những năm 1980s, cùng với những phát kiến mới quan trọng như thuật toán lan truyền ngược dùng để huấn luyện mạng nơ-ron đa lớp và sự phát triển mạng mẽ của khoa học máy tính, công cụ phần cứng để thực hiện tính toán, mạng nơ-ron nhân tạo đã phát triển bùng nổ và được ứng dụng trong nhiều lĩnh vực khác nhau trong cuộc sống Mạng nơ-ron nhân tạo không cung cấp tất cả giải pháp cho mọi vấn đề, nhưng trong những tình huống thích hợp nó là công cụ rất hữu hiệu để giải quyết vấn đề hiệu quả hơn so với khi sử dụng các phương pháp khác Mạng nơ-ron nhân tạo được sử dụng trong nhiều ứng dụng khoa học và công nghệ như: ngành hàng không (chế độ lái tự động, mô phỏng đường bay,…), y tế (phân tích điện não đồ và điện tâm đồ, phân tích tế bào ung thư,,…), tài chính (tư vấn cho vay, phân tích tài chính doanh nghiệp), nhận dạng mẫu (nhận dạng tiếng nói, nhận dạng khuôn mặt, nhận dạng chữ số viết tay,…)

Mạng nơ-ron nhân tạo được thực hiện chủ yếu trên phần mềm Điều này có lợi thế là người thiết kế không cần phải biết chi tiết các hoạt động bên trong các phần tử mạng nơ-ron mà chỉ tập trung vào các ứng dụng của mạng nơ-ron Tuy nhiên, các ứng dụng yêu cầu thời gian đáp ứng nhanh hoặc thời gian thực của ANNs dựa trên phần mềm thực hiện chậm hơn so với các ANNs dựa trên phần cứng Kiến trúc mạng ANN yêu cầu một khối lượng tính toán song song khổng lồ, vì vậy để đáp ứng những yêu cầu khắc khe về tốc độ trong ứng dụng thời gian thực và tính toán hiệu năng cao, kiến trúc ANN cần được thực thi trên phần cứng song song

Mạng nơ-ron nhân tạo có thể được thực hiện theo công nghệ ASIC/VLSI nhưng thường rất đắt đỏ và tiêu tốn thời gian thiết kế chip rất lớn Một nền tảng phần cứng khác hiện đang được khai thác là FPGA (Field Programmable Gate Array) FPGA là các vi mạch tích hợp chuyên dụng được thiết kế với tính năng cơ bản là khả năng cấu hình lại và khả năng thực hiện các phép tính toán số học và logic với tốc độ cao Ngoài khả năng tái cấu trúc vi mạch toàn cục, một số FPGA hiện đại còn hỗ trợ tái cấu trúc cục bộ, tức là khả năng tái cấu trúc một bộ phận riêng lẻ trong khi vẫn đảm bảo hoạt động bình thường cho các bộ phận khác Các vi mạch này được sử dụng một cách rộng rãi trong các thiết bị công nghiệp cũng như dân dụng hiện nay như các bộ vi điều khiển, các hệ thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mô hình phần cứng máy tính, máy đánh cờ, Do đó, khi thực thi mạng nơ-ron nhân tạo trên FPGA không những mang lại tính mềm dẻo mà còn tiết kiệm được thời gian thiết kế và chi phí sản xuất

Trang 12

Hiện nay, những mạng nơ-ron sâu (Deep Neural Network - DNN) với từ 2 lớp

ẩn trở lên cho phép mô hình hóa các bài toán và dữ liệu phức tạp hơn so với những

mạng ron nông (shallow neural network) truyền thống với chỉ 1 lớp ẩn Mạng

nơ-ron sâu - cùng với mạng nơ-nơ-ron tích chập (Convolutional Neural Network - CNN) do vậy hứa hẹn khả năng ứng dụng mạnh mẽ trong nhận dạng mẫu cũng như trong lĩnh vực thị giác máy tính (Computer Vision) và học sâu (Deep Learning) trong những năm gần đây Tuy nhiên, thách thức khi thực hiện các kiến trúc mạng nơ-ron sâu DNN là sự tăng vọt về số lượng lớp, số lượng nơ-ron trong từng lớp cũng như số lượng liên kết giữa các lớp (số lượng trọng số) dẫn đến kích cỡ mạng có thể có từ hàng trăm đến hàng nghìn nơ-ron với hàng triệu trọng số, khi đó việc triển khai mạng nơ-ron sâu trên phần cứng (chẳng hạn FPGA) đòi hỏi người kỹ sư thiết kế cần tính toán đến việc cân bằng giữa các yếu tố: tài nguyên phần cứng, thời gian tính toán của mạng, công suất tiêu thụ và tỉ lệ nhận dạng mong muốn

2 Mục tiêu nghiên cứu

Mục tiêu của đề tài là nghiên cứu kiến trúc mạng nơ-ron nhân tạo lan truyền thẳng nhiều lớp có kiến trúc tùy biến được và thử nghiệm trên FPGA, thực hiện và đánh giá các thông số về tài nguyên phần cứng và tốc độ tính toán, đồng thời ứng dụng kiến trúc mạng nơ-ron nhiều lớp trong nhận dạng mẫu

3 Đối tượng và phạm vi nghiên cứu

3.1 Đối tượng nghiên cứu

- Mô hình mạng nơ-ron nhân tạo lan truyền thẳng nhiều lớp và ứng dụng trong

- Các tập dữ liệu để phục vụ bài toán nhận dạng mẫu

- Tiêu chí và phương pháp đánh giá mạng nơ-ron nhân tạo khi thực hiện trên phần cứng FPGA

3.2 Phạm vi nghiên cứu

- Thực hiện và đánh giá khối nhận dạng sử dụng mạng nơ-ron nhân tạo nhiều lớp trong hệ thống nhận dạng mẫu dựa trên FPGA

4 Phương pháp nghiên cứu và nội dung nghiên cứu

4.1 Phương pháp nghiên cứu

Phương pháp nghiên cứu xuyên suốt của luận văn là kết hợp nghiên cứu lý thuyết, tính toán, viết chương trình bằng VHDL, kết hợp mô phỏng bằng phần mềm,

Trang 13

thực thi trên phần cứng để đánh giá các kết quả đạt được và so sánh với các công trình nghiên cứu liên quan đã được công bố

4.2 Nội dung nghiên cứu

- Thu thập và nghiên cứu tài liệu và công trình của các tác giả trong và ngoài nước

có liên quan đến đề tài

- Nghiên cứu các lý thuyết: lý thuyết về mạng nơ-ron nhân tạo và ứng dụng, thuật toán lan truyền ngược (Back Propagation) cho huấn luyện mạng nơ-ron, thư viện để thực hiện các phép toán dấu phẩy động trên FPGA

- Tìm hiểu kiến trúc và phân tích hoạt động của một kiến trúc mạng nơ-ron nhân tạo nhiều lớp (với ít nhất một lớp ẩn) trên FPGA đã được thiết kế Phân tích, đánh giá hiệu năng của kiến trúc này thông qua các thông số về tài nguyên phần cứng, tốc độ tính toán tương ứng với các mô hình mạng nơ-ron khác nhau (thay đổi số lớp, số nơ-ron trong mỗi lớp), đánh giá khả năng thực hiện kiến trúc mạng nơ-ron này trên các board mạch FPGA hiện có

- Huấn luyện mạng nơ-ron nhân tạo nhiều lớp trong bài toán nhận dạng mẫu bằng phần mềm Matlab để tìm bộ trọng số tối ưu, sau đó tổng hợp và thực hiện kiến trúc này trên FPGA, mô phỏng kiểm tra

- Thực thi và đánh giá mạng nơ-ron đã thiết kế trên board mạch FPGA

5 Ý nghĩa khoa học và thực tiễn của đề tài

Việc nghiên cứu và thực thi mạng nơ-ron nhân tạo nhiều lớp trên FPGA nhằm xây dựng mạng nơ-ron ứng dụng trong nhận dạng mẫu Việc xây dựng mạng nơ-ron trên phần cứng FPGA sẽ làm cơ sở cho việc hiện thực hóa các bài toán nhận dạng mẫu ứng dụng mạng nơ-ron trên chip và từ đó có thể mở ra các hướng thiết kế và ứng dụng mang tính thực tiễn cao với sự tích hợp các hệ thống xử lý thông minh trên chip

6 Kết cấu của luận văn

Luận văn bao gồm có 4 chương được tóm tắt như sau:

 Chương 1 - Tổng quan: Trong chương này sẽ giới thiệu tổng quan về mạng

nơ-ron nhân tạo, ứng dụng mạng nơ-nơ-ron nhân tạo tnơ-rong nhận dạng mẫu cũng như việc triển khai mạng nơ-ron nhân tạo trên phần cứng và giới thiệu các nghiên cứu

đã thực hiện trên thế giới Chương này cũng xác định mục tiêu, phạm vi và nhiệm vụ cụ thể của đề tài

 Chương 2 - Cơ sở hiện thực hóa mạng nơ-ron nhân tạo trên FPGA: Trong

chương này sẽ trình bày những vấn đề cần quan tâm khi triển khai mạng nơ-ron nhân tạo trên FPGA bao gồm: hệ thống nhận dạng mẫu trên mạng nơ-ron nhân tạo, mô hình tính toán trong mạng nơ-ron nhân tạo lan truyền thẳng nhiều lớp, huấn luyện mạng nơ-ron nhân tạo nhiều lớp sử dụng thuật toán lan truyền ngược

BP với SGD, công nghệ FPGA và ngôn ngữ mô tả phần cứng VHDL cũng như

Trang 14

giới thiệu thư viện nguồn mở FLoPoCo và các phép toán số thực dấu phẩy động trên FPGA, các phép toán cơ sở để thực hiện mạng nơ-ron nhân tạo Đây là những cơ sở lý thuyết quan trọng làm tiền đề cho việc xây dựng kiến trúc mạng nơ-ron nhân tạo trong chương 3

 Chương 3 - Nghiên cứu kiến trúc mạng nơ-ron nhân tạo lan truyền thẳng nhiều lớp tùy biến trên FPGA: Chương này mở đầu bằng việc trình bày kiến

trúc một nơ-ron nhân tạo, sau đó giới thiệu và mô tả hoạt động của hai kiến trúc

mạng nơ-ron nhân tạo, đó là: i) kiến trúc mạng nơ-ron nhân tạo với nhiều lớp tính toán phần cứng (MHL_ANN) và ii) kiến trúc mạng nơ-ron nhân tạo với chỉ một

lớp tính toán phần cứng (SHL_ANN) Một công cụ tự động dựa trên Matlab để

tự động tạo mã mô tả phần cứng VHDL cho kiến trúc mạng nơ-ron nhân tạo lan truyền thẳng nhiều lớp tùy biến được cũng sẽ được giới thiệu trong chương này

 Chương 4 - Thực hiện và đánh giá: Nội dung chương trình bày qui trình thiết

kế và thực hiện mạng nơ-ron nhân tạo trên FPGA, xây dựng các thông số đánh giá hiệu năng của kiến trúc mạng và các kết quả thực nghiệm thông qua tổng hợp, mô phỏng và thực thi trên phần cứng, đồng thời so sánh kết quả đạt được với một số kết quả nghiên cứu khác

Trang 15

CHƯƠNG 1-TỔNG QUAN 1.1 Mạng nơ-ron sinh học

Bộ não con người và hoạt động của hệ thần kinh nói chung đã được quan tâm nghiên cứu từ rất lâu nhưng cho đến nay các nhà khoa học vẫn chưa thực sự hiểu rõ chi tiết về hoạt động của bộ não và hệ thần kinh, đặc biệt là trong các hoạt động liên quan đến trí óc như suy nghĩ, học tập, tư duy, trí nhớ, sáng tạo… Tuy nhiên, các nhà khoa học cũng có một số thông tin căn bản về bộ não con người Theo đó, một bộ não con người trung bình cân nặng khoảng 1,5 kg và có thể tích là 235 cm3, cấu tạo bộ não được chia ra làm nhiều vùng khác nhau, mỗi vùng kiểm soát một hay nhiều hoạt động của con người Hoạt động của cả hệ thống thần kinh bao gồm não bộ và các giác quan như sau: đầu tiên con người nhận được kích thích bởi các giác quan từ bên ngoài hoặc trong cơ thể Các kích thích này được biến thành các xung điện bởi chính các giác quan tiếp nhận kích thích Những tín hiệu này được chuyển về trung ương thần kinh là

bộ não để xử lý Tại bộ não các thông tin sẽ được xử lý, đánh giá và so sánh với các thông tin đã được lưu trữ để đưa ra các quyết định dưới dạng các xung điện Từ những quyết định từ bộ não sẽ sinh ra các mệnh lệnh cần thiết và gửi đến những bộ phận thi hành thích hợp như các cơ tay, chân, giác quan… [20]

Khi xem xét ở mức độ tế bào thì bộ não được hình thành từ 1011 phần tử gọi là nơ-ron Mỗi nơ-ron được liên kết chặt chẽ với 104 nơ-ron Các nơ-ron này có nhiều đặc điểm chung với các tế bào khác trong cơ thể, ngoài ra chúng có những khả năng

mà các tế bào khác không có được đó là khả năng nhận, xử lý và truyền các tín hiệu điện hóa làm cơ sở hình cách thức xử lý thông tin của bộ não Hình 1.1 mô tả cấu tạo

và cách thức hoạt động của nơ-ron sinh học, trong đó nơ-ron sinh học có 4 thành phần

cơ bản: Thân nơ-ron (cell body) chứa nhân (nucleus) hay một số tài liệu gọi là soma có nhiệm vụ chính là tổng hợp và xử lý các tín hiệu điện nhận vào từ các đầu vào Bản chất của quá trình này chính là việc lấy tổng tất cả các tín hiệu nơ-ron nhận được

Hình 1.1 Cấu trúc minh họa của một nơ-ron sinh học [20]

Trang 16

 Các nhánh tín hiệu vào (denrites) đây chính là các mạng dạng cây của các dây thần kinh truyền tín hiệu vào đến thân nơ-ron

 Sợi trục ra (axon) có chức năng truyền tín hiệu từ thân tế bào này sang nơ-ron khác Phần cuối của axon được chia thành nhiều nhánh nhỏ (cả của denrites và axon) kết thúc tại khớp nối (Synapse)

 Khớp nối (Synapse) là điểm liên kết giữa sợi trục ra của nơ-ron này với các nhánh denrites của nơ-ron khác Liên kết giữa các nơ-ron và độ nhạy của mỗi synapse được xác định bởi quá trình học phức tạp Khi điện thế của synapses tăng lên do xung điện phát ra từ axon thì synapses sẽ tiết ra một loại hóa chất để kết nối mở ra cho các ion đi qua nó Các ion này làm thay đổi tín hiệu điện thế trên các điểm tiếp xúc tạo ra các xung điện lan truyền tới các nơ-ron khác Một cách tổng quát nơ-ron sinh học hoạt động theo cách thức sau: nơ-ron nhận tín hiệu đầu vào từ các denrites sau đó xử lý các tín hiệu này tại nhân nơ-ron mà cụ thể hơn là lấy tổng tất cả các tín hiệu đầu vào mà nó nhận được sau đó phát ra một tín hiệu điện thế; nếu tổng tất cả các tín hiệu điện lớn hơn một ngưỡng cho phép nào đó thì xử

lý và cho ra một tín hiệu đầu ra Tín hiệu đầu ra này được truyền qua axon và chính là tín hiệu đầu vào của một nơ-ron khác

1.2 Mạng nơ-ron nhân tạo

Dựa trên cấu trúc và cách thức hoạt động của nơ-ron sinh học, các nhà nghiên cứu đã đề xuất mô hình nơ-ron nhân tạo và mạng nơ-ron nhân tạo Mạng nơ-ron nhân tạo (Artificial Neural Network - ANN) là một mô hình toán học hay mô hình tính toán được phỏng theo cách thức xử lý thông tin của các nơ-ron sinh học cụ thể hơn ở đây là

bộ não con người Thành phần cơ bản của ANN là nơ-ron nhân tạo có cách thức hoạt động và xử lý tương tự nơ-ron sinh học ANN được hình thành từ số lượng lớn các nơ-ron nhân tạo được liên kết với nhau theo cấu trúc từng lớp với các nơ-ron kết nối với nhau giữa các lớp thông qua các liên kết có trọng số

Xét về mặt toán học, trong một mạng nơ-ron nhân tạo lan truyền thẳng với M lớp (không kể lớp vào), kết quả đầu ra tại lớp thứ k được tính như sau:

xk+1 = f (Wkxk); k = 1, 2, 3…, M, (1.1)

trong đó: xk và Wk là vector dữ liệu vào và ma trận trọng số (đặc trưng cho liên kết

giữa hai lớp) của lớp thứ k; xk+1 là vector kết quả đầu ra của lớp thứ k và cũng chính là

vector dữ liệu vào cho lớp kế tiếp k+1; và f là hàm kích hoạt (activation function,

thường là hàm phi tuyến) Theo công thức (1.1), quá trình lan truyền thẳng trong mạng

nơ-ron nhân tạo nhiều lớp chính là thực hiện phép nhân ma trận – vector Wkxk sau đó

áp dụng hàm kích hoạt đối với từng phần tử của kết quả nhận được, và hai phép toán này sẽ được lặp lại cho từng lớp cho đến khi tính đến lớp cuối cùng Quá trình học

Trang 17

(thông thường với thuật toán lan truyền ngược) trong mạng nơ-ron phức tạp hơn nhiều

so với quá trình lan truyền Mô hình tính toán chi tiết của ANN sẽ được trình bày trong chương tiếp theo

Mạng nơ-ron nhân tạo đã và đang được ứng dụng rộng khắp trong nhiều lĩnh vực khác nhau trong khoa học tự nhiên và kỹ thuật, đến các ứng dụng trong khoa học kinh

tế và khoa học xã hội Thông thường, ANN được sử dụng như một cơ chế xấp xỉ hàm tùy ý có thể đạt được thông qua việc “học” các dữ liệu quan sát đã biết Bên cạnh đó, ANN cũng là công cụ mô hình hóa dữ liệu thống kê phi tuyến và có thể được dùng để

mô hình hóa các mối quan hệ phức tạp giữa dữ liệu vào và ra Một lĩnh vực ứng dụng phổ biến là sử dụng ANN trong nhận dạng mẫu (Pattern Recognition) và đây hiện đang là một trong những hướng nghiên cứu và ứng dụng dành được nhiều sự quan tâm của giới khoa học, cũng chính là hướng nghiên cứu mà luận văn tập trung vào

1.3 Thực hiện mạng nơ-ron nhân tạo trên phần cứng

Rất phổ biến, mạng nơ-ron nhân tạo thông thường được thực thi bằng các chương trình phần mềm từ đơn giản đến các phần mềm chuyên nghiệp trên các máy tính đa mục đích (general-purpose computers) trong nhiều ứng dụng trong thực tế, cho phép người thiết kế chỉ cần tập trung vào các thuật toán huấn luyện cũng như ứng dụng của mạng mà chưa quan tâm nhiều đến yếu tố thời gian xử lý hay thời gian huấn luyện mạng Ngày nay, xu thế sử dụng các thiết bị nhúng thông minh có tích hợp chức năng nhận dạng và phân loại đang gia tăng, đòi hỏi sự tích hợp của các chip thông minh thực hiện chức năng nhận dạng vào các thiết bị này, ví dụ kiến trúc mạng nơ-ron nhân tạo trên phần cứng nhúng và hệ thống nhúng để đạt được những yêu cầu khắt khe về tốc độ xử lý, hiệu năng, tối thiểu công suất tiêu thụ Hơn thế nữa, mạng nơ-ron yêu cầu một khối lượng tính toán song song khổng lồ, để đáp ứng những yêu cầu khắt khe về tốc độ, mạng nơ-ron cần được thực thi trên những nền tảng phần cứng song song Cùng với sự phát triển mạnh mẽ của công nghiệp bán dẫn, các thực hiện mạng nơ-ron nhân tạo trên phần cứng đã và đang được nghiên cứu và phát triển trong suốt vài thập

kỷ qua Các công trình nghiên cứu trên thế giới nhằm thiết kế, thử nghiệm và triển khai kiến trúc mạng nơ-ron trên chip phần cứng đã được tiến hành Các công nghệ được lựa chọn để nghiên cứu và thực thi kiến trúc mạng nơ-ron nhân tạo ANN là công nghệ FPGA (Field Programmable Gate Array) và công nghệ ASIC (Application-Specific Integrated Circuit)

Các nghiên cứu liên quan trong lĩnh vực này được tổng hợp trong [8, 9] Các kết quả nghiên cứu trên thế giới đã được công bố, và cũng như thương mại hóa gần đây Tháng 8/2014, hãng IBM giới thiệu SyNAPSE Chip [17] với kiến trúc gồm một triệu nơ-ron, lĩnh vực ứng dụng của chip mới này là các ứng dụng tính toán thông minh hiệu năng cao liên quan đến học máy (xem Hình 1.2) Bên cạnh đó, các vi mạch chuyên

Trang 18

cứu và phát triển trên thế giới, chẳng hạn Neural Network Chip của General Vision [18], vi mạch ASIC thực hiện mạng nơ-ron tích chập của viện KAIST - Hàn Quốc [19] vừa được công bố đầu năm 2017 (xem Hình 1.3), hay các công trình nghiên cứu và thực hiện mạng nơ-ron trên nền tảng FPGA được công bố gần đây như trong [3, 4, 5]

Hình 1.2 Chip SyNAPSE của IBM (2014) [17]

Hình 1.3 Deep Neural Network Processor của KAIST (2017) và các ứng dụng [19]

Trang 19

Nhiều vấn đề kỹ thuật (cũng như kinh tế) cần được xem xét kỹ lưỡng và cân nhắc lựa chọn khi thiết kế và thực hiện mạng nơ-ron nhân tạo trên phần cứng hướng đến một ứng dụng hay một nhóm ứng dụng cụ thể, có thể kể ra như sau:

 Kiến trúc mạng (neural network architecture): mạng lan truyền thẳng hay mạng hồi quy, số lớp và số lượng nơ-ron ở mỗi lớp, dạng của hàm kích hoạt, mạng có chức năng học để tự động cập nhật bộ trọng số hay việc học được thực hiện off-line trước đó trên máy tính

 Định dạng số (number format) phù hợp cho biểu diễn dữ liệu và tính toán trong mạng nơ-ron: sử dụng số nguyên, sử dụng số thực, hay sử dụng định dạng nhị phân; nếu sử dụng định dạng số thực thì dùng định dạng dấu chấm tĩnh (fixed-point format) hay định dạng dấu chấm động (floating-point format); số lượng bit tối thiểu (bitwidth) cho các toán hạng và các phép toán; sử dụng đồng nhất một định dạng số cho dữ liệu và các phép toán hay sử dụng nhiều định dạng khác nhau cho dữ liệu vào ra, trọng số và các phép toán

 Độ chính xác/Tỷ lệ nhận dạng đúng (accuracy/recognition rate) của ứng dụng yêu cầu

 Tốc độ xử lý yêu cầu của mạng nơ-ron (performance)

 Công suất

 Chi phí thiết kế và chế tạo

 Nền tảng phần cứng và tài nguyên phần cứng cần thiết để thực hiện thiết kế

 Khả năng thương mại hóa và các yếu tố khác có liên quan

1.4 Phạm vi và nhiệm vụ của luận văn

Tại Việt Nam, việc ứng dụng mạng nơ-ron nhân tạo trong các bài toán nhận dạng mẫu đã được nghiên cứu, ứng dụng và thực thi phổ biến trên các máy tính đa mục đích Tuy nhiên, theo tìm hiểu của tác giả thì các đề tài và công trình nghiên cứu phát triển kiến trúc chip mạng nơ-ron nhân tạo ánh xạ trên nền tảng phần cứng FPGA hoặc hướng đến công nghệ ASIC ở trong nước hiện đang còn khá mới mẻ

Với sự giới hạn về thời gian hoàn thành luận văn cũng như những hạn chế trong điều kiện tiến hành thực nghiệm nên luận văn này sẽ tập trung nghiên cứu các kiến trúc mạng nơ-ron lan truyền thẳng nhiều lớp, thực hiện kiến trúc trên nền tảng FPGA dựa vào các công cụ sẵn có, đánh giá các mạng nơ-ron được lựa chọn thực hiện cho bài toán nhận dạng chữ số viết tay dựa vào các tiêu chí đánh giá gồm tỉ lệ nhận dạng đúng, tài nguyên phần cứng sử dụng và hiệu năng, từ đó đánh giá khả năng ứng dụng của kiến trúc mạng nơ-ron đã khảo sát trong ứng dụng thực tế

Trang 20

CHƯƠNG 2 - CƠ SỞ HIỆN THỰC HÓA MẠNG NƠ-RON NHÂN

TẠO TRÊN FPGA 2.1 Mở đầu chương

Chương này sẽ trình bày những vấn đề cơ bản về mạng nơ-ron nhân tạo trên FPGA trong bài toán nhận dạng mẫu, bao gồm hệ thống nhận dạng mẫu trên mạng nơ-ron nhân tạo, mô hình tính toán trong mạng nơ-ron nhân tạo lan truyền thẳng nhiều lớp, huấn luyện mạng nơ-ron nhân tạo nhiều lớp sử dụng thuật toán lan truyền ngược

BP (Back Propagation) với SGD (stochastic gradient descent), công nghệ FPGA và ngôn ngữ mô tả phần cứng VHDL cũng như giới thiệu thư viện nguồn mở FLoPoCo

và các phép toán số thực dấu phẩy động trên FPGA Phần cuối chương sẽ giới thiệu các phép toán cơ sở để thực hiện mạng nơ-ron nhân tạo trên FPGA Đây là những cơ

sở lý thuyết quan trọng làm tiền đề cho việc xây dựng kiến trúc mạng nơ-ron nhân tạo trong chương 3

2.2 Hệ thống nhận dạng mẫu dựa trên mạng nơ-ron nhân tạo

Sơ đồ khối chức năng của một hệ thống phần cứng nhận dạng mẫu trên mạng ron nhân tạo ANN điển hình được hiển thị trong hình 2.1, bao gồm hai khối: khối trích chọn đặc trưng với kỹ thuật phân tích thành phần chính (PCA) và khối nhận dạng sử dụng mạng nơ-ron nhân tạo ANN Mục tiêu của PCA là giảm số chiều của một tập vec-tơ sao cho vẫn đảm bảo được tối đa thông tin quan trọng nhất PCA tìm ra tập các thành phần trực giao để tối thiểu hóa các lỗi trong dữ liệu được xây dựng lại Khối trích chọn đặc trưng là không bắt buộc và thường được sử dụng khi tài nguyên máy tính và lưu trữ phần cứng của ANN có phần hạn chế, như được trình bày trong [6]

nơ-Hình 2.1 Sơ đồ khối chức năng hệ thống nhận dạng sử dụng ANN [3]

Trong những năm gần đây, cùng với sự phát triển nhanh chóng trong lĩnh vực chip FPGA, toàn bộ cấu trúc ANN có thể thực hiện được trên các mạch phần cứng, dẫn đến việc loại bỏ khối trích chọn đặc trưng Sơ đồ khối chức năng hệ thống nhận dạng chỉ

sử dụng mạng nơ-ron nhân tạo không có khối trích chọn đặc trưng như hình 2.2

Trích chọn đặc trưng sử dụng PCA

Nhận dạng sử dụng mạng nơ-ron nhân tạo ANN

Trang 21

Hình 2.2 Sơ đồ khối chức năng hệ thống nhận dạng sử dụng ANN

không có khối trích chọn đặc trưng

2.3 Mô hình tính toán trong mạng nơ-ron nhân tạo lan truyền thẳng nhiều lớp

2.3.1 Nơ-ron nhân tạo

Tương tự như nơ-ron sinh học, nơ-ron nhân tạo là một đơn vị xử lý thông tin và

là thành phần cơ bản của một mạng nơ-ron nhân tạo Cấu trúc một nơ-ron nhân tạo được thể hiện trong hình 2.3

Hình 2.3 Cấu trúc của một nơ-ron nhân tạo

Một nơ-ron nhân tạo gồm có các thành phần cơ bản sau:

 Tập các đầu vào x1, x2, , xN: Là các tín hiệu vào (input signals) của nơ-ron, các tín hiệu này thường được đưa vào dưới dạng một vec-tơ N chiều

 Tập các liên kết: Mỗi liên kết được thể hiện bởi một trọng số (gọi là trọng số liên kết – Synaptic weight) Thông thường các trọng số này được khởi tạo một cách ngẫu nhiên ở thời điểm khởi tạo mạng và được cập nhật liên tục trong quá trình học mạng

 Bộ tổng (Summing function-): Thường dùng để tính tổng của tích các đầu vào với trọng số liên kết của nó

 Ngưỡng (còn gọi là độ lệch - b): Ngưỡng này thường được đưa vào bộ tổng

Kết quả nhận dạng

Nhận dạng sử dụng mạng nơ-ron nhân tạo ANN

Dữ liệu đầu vào

Trang 22

 Hàm truyền (Transfer function - f): Hàm này được dùng để giới hạn phạm vi đầu

ra của mỗi nơ-ron Nó nhận đầu vào là kết quả của hàm tổng và ngưỡng đã cho Thông thường, phạm vi đầu ra của mỗi nơ-ron được giới hạn trong đoạn [0,1] hoặc [-1, 1] Các hàm truyền rất đa dạng, có thể là các hàm tuyến tính hoặc phi tuyến Việc lựa chọn hàm truyền nào là tuỳ thuộc vào từng bài toán và kinh nghiệm của người thiết kế mạng Một số hàm truyền thường sử dụng trong các mô hình mạng nơ-ron được đưa ra trong Bảng 2.1

 Đầu ra r: Là tín hiệu đầu ra của một nơ-ron, với mỗi nơ-ron sẽ có một đầu ra Xét về mặt toán học, cấu trúc của một nơ-ron được mô tả bằng cặp biểu thức sau:

- w1, w2 , , wN là các trọng số liên kết của nơ-ron;

- b là ngưỡng; f là hàm truyền; r là tín hiệu đầu ra của nơ-ron;

Như vậy tương tự như nơ-ron sinh học, nơ-ron nhân tạo cũng nhận các tín hiệu đầu vào, xử lý (nhân các tín hiệu này với trọng số liên kết, tính tổng các tích thu được rồi gửi kết quả tới hàm truyền) và cho một tín hiệu đầu ra (là kết quả của hàm truyền)

2.3.2 Mô hình tính toán mạng nơ-ron nhân tạo [10]

2.3.2.1 Mô hình tính toán mạng nơ-ron một lớp

Hình 2.4 Mạng nơ-ron một lớp gồm N đầu vào và M nơ-ron [10]

Trang 23

Hình 2.4 là mô hình mạng nơ-ron nhân tạo một lớp gồm N đầu vào và M nơ-ron

Các thông số đầu vào của mạng gồm có ma trận trọng số W, các bộ tổng, vec-tơ ngưỡng b, các hàm truyền f và một vec-tơ đầu ra là r

Các vec-tơ đầu vào đưa vào mạng qua ma trận trọng số W có dạng:

𝑥1

𝑥2

𝑥𝑁] + [

𝑏1

𝑏2

𝑏𝑀]

Và lúc này đầu ra của mạng nơ-ron

𝑥1

𝑥1

𝑥𝑀] + [

𝑏1

𝑏2

𝑏𝑀])

Vector đầu ra của mạng nơ-ron ở dạng ma trận:

Trang 24

Một mạng nơ-ron nhiều lớp gồm các đầu vào, các lớp ẩn và một lớp ra Hình 2.5

là mô hình của mạng nơ-ron gồm N đầu vào, 2 lớp ẩn và 1 lớp ra với số nơ-ron trong các lớp lần lượt là M1, M2 và M3 Các đầu vào của mạng là vec-tơ x, các ma trận trọng

số W 1 , W 2 và W 3 và các vector ngưỡng b 1 , b 2 và b 3

Công thức tính toán đầu ra cho mạng nơ-ron theo qui tắc lan truyền tới Đầu ra

của lớp thứ nhất là vector r 1 được xác định như công thức (2.4) và trở thành đầu vào

của lớp thứ hai, đầu ra của lớp thứ 2 là vector r 2 trở thành đầu vào của lớp thứ 3 và

cuối cùng tính toán được vector đầu ra r 3 của mạng nơ-ron

Từ kết quả đầu ra của từng lớp:

2.3.3 Hàm truyền

Các hàm truyền hay còn gọi là hàm kích hoạt f trong ANN chủ yếu là các hàm phi tuyến Mạng ANN lan truyền thẳng nhiều lớp thường sử dụng hàm phi tuyến để làm hàm truyền tại mỗi đầu ra của nơ-ron Một vài hàm truyền hay sử dụng được trình bày trong Bảng 2.1 [10]

2.4 Huấn luyện mạng nơ-ron nhân tạo nhiều lớp [12, 16]

Một mạng nơ-ron được huyấn luyện sao cho với một tập các vec-tơ đầu vào x, mạng có khả năng tạo ra tập các vec-tơ đầu ra mong muốn r của nó Tập x được sử

dụng cho huấn luyện mạng được gọi là tập huấn luyện (training set) Các phần tử x

thuộc x được gọi là các mẫu huấn luyện (training example) Quá trình huấn luyện bản

chất là sự thay đổi các trọng số liên kết của mạng Trong quá trình này, các trọng số

của mạng sẽ hội tụ dần tới các giá trị sao cho với mỗi vec-tơ đầu vào x từ tập huấn luyện, mạng sẽ cho ra vec-tơ đầu ra r như mong muốn

Có nhiều thuật toán dùng để huấn luyện mạng, trong luận văn tác giả nghiên cứu mạng lan truyền thẳng nhiều lớp để nhận dạng nên thuật toán phù hợp để huấn luyện là thuật toán lan truyền ngược BP (Back Propagation) với SGD (stochastic gradient descent)

Trang 25

2.4.1 Mô hình một nơ-ron

Một nơ-ron nhân tạo (hình 2.3) là một hàm ánh xạ vector đầu vào {x1, x2 ,xK} thành đầu ra vô hướng r thông qua vector trọng số {w1,w2, ,wK}, ngưỡng b và hàm phi tuyến f Một phần tử có giá trị x0= 1 được thêm vào vector đầu vào tương ứng với phần tử trọng số w0 = b thêm vào vector trọng số Các công thức (2.1), (2.2) được viết lại thành:

Trang 26

𝐸 = 12(𝑎 − 𝑟)2 = 12(𝑎 − 𝑓(𝒘𝑇𝐱))2 (2.9)

Chúng ta sẽ tìm vector trọng số w sao cho giá trị E là nhỏ nhất Với phương

pháp SGD (stochastic gradient descent), các trọng số được cập nhật lặp đi lặp lại theo chiều của gradient của hàm mất mát đến khi đạt được giá trị tối thiểu Không như phương pháp gradient descent truyền thống, theo đó toàn bộ dữ liệu được sử dụng để tính toán gradient trong mỗi vòng lặp Thay vào đó, trong mỗi vòng lặp, chúng ta chọn ngẫu nhiên 1 điểm dữ liệu trong dữ liệu đầu vào để tính toán và di chuyển theo hướng của gradient của điểm dữ liệu đó Rõ ràng điều này cho thấy chỉ sử dụng một xấp xỉ của gradient, tuy nhiên đã được chứng minh là vẫn đạt được giá trị tối thiểu với gradient này Sử dụng SGD có nhiều ưu điểm hơn so với GD truyền thống:

 Gradient descent truyền thống đòi hỏi tải toàn bộ tập dữ liệu vào bộ nhớ, nếu với dữ liệu lớn thì điều này sẽ là vấn đề khó khăn Trong khi đó SGD chỉ cần 1

Trang 27

điểm dữ liệu tại một thời điểm (đôi khi là một nhóm nhỏ các điểm dữ liệu) do

Hàm mục tiêu E đã được định nghĩa trong (2.9) với một điểm dữ liệu, do đó ta

sẽ tính toán gradient của E theo một phần tử bất kỳ wi trong bộ trọng số w

Theo qui tắc chuỗi, gradient của E theo wi:

Với > 0 là tốc độ học Các điểm dữ liệu lần lượt được đưa vào phương trình

cập nhật đến khi bộ trọng số w hội tụ đến giá trị tối ưu Trên đây là quá trình chúng ta

học trọng số của mô hình một nơ-ron sử dụng thuật toán SGD

2.4.2 Mô hình mạng nơ-ron

Để đơn giản, xét một mạng nơ-ron nhân tạo bao gồm 2 lớp, một lớp ẩn và một

lớp đầu ra như hình 2.6 Vector đầu vào x = {x1,…,xN} Lớp ẩn có H nơ-ron có vector

đầu ra h = {h1,…,hH} Và cuối cùng, lớp đầu ra có M nơ-ron với vector đầu ra r =

{r1,…,rM} Mỗi phần tử trong vector đầu vào được nối với từng phần tử của lớp ẩn với

Trang 28

wik thể hiện cho trọng số tương ứng với kết nối giữa phần tử đầu vào thứ k với nơ-ron thứ i của lớp ẩn Tương tự, kết nối giữa lớp ẩn và lớp đầu ra với w’ji thể hiện cho trọng

số tương ứng với kết nối giữa nơ-ron thứ i của lớp ẩn với nơ-ron đầu ra thứ j

Hình 2.6 Mô hình mạng nơ-ron 2 lớp

Trọng số wik là phần tử thứ (i,k) trong ma trận trọng số W có kích thước [HxN]

và tương tự trọng số w’ij là phần tử thứ (i,j) trong ma trận trọng số W’ có kích thước

[MxH] Đầu ra của mỗi nơ-ron trong lớp ẩn và lớp đầu ra được tính toán như trường hợp mô hình một nơ-ron

Đầu ra của một nơ-ron bất kỳ thứ i của lớp ẩn là:

Trang 29

Theo qui tắc chuỗi, ta có:

 𝑤𝑖𝑘 = 𝑥𝑘

Trang 30

Thay các tích phân từng phần vào (2.17), ta được gradient của E theo wik:

2.5 Công nghệ FPGA và ngôn ngữ mô tả phần cứng VHDL [1]

Công nghệ FPGA (Field Programmable Gate Arrays) xuất hiện như giải pháp cơ bản về vấn đề tranh thủ thời gian để đưa ra thị trường và giảm rủi ro tài chính gánh chịu trong quá trình nghiên cứu sản phẩm của công nghệ vi điện tử Công nghệ này cho phép chế tạo ngay và giá thành của sản phẩm rất thấp FPGA là một thiết bị cấu trúc logic có thể được người dùng sử dụng để lập trình trực tiếp mà không phải sử dụng bất kì một công cụ chế tạo mạch tích hợp nào

2.5.1.1 Kiến trúc của FPGA

Hình 2.7 mô tả mô hình lý thuyết của FPGA Kiến trúc tổng quát của FPGA bao gồm các khối logic có thể tái cấu hình (Configurable Logic Blocks – CLB), các khối I/O khả trình và các liên kết có thể lập trình để truyền tín hiệu giữa các khối logic

và các khối I/O Ngoài ra còn có mạch đồng hồ để đếm các tín hiệu đồng hồ đến mỗi flip-flop cho mỗi khối logic Các khối tài nguyên logic khác như là ALUs (Arithmetic Logic Units), bộ nhớ và các bộ giải mã cũng có thể có Hai phần tử quan trọng nhất có thể lập trình được của FPGA đó là RAM tĩnh và cầu chì nghịch (Antifuse) Công nghệ cầu chì nghịch tương tự như cầu chì lập trình được trong EPROMs

Trang 31

Hình 2.7 Mô hình FPGA

 Khối logic có thể tái cấu hình: Mục đích của việc lập trình khối logic trong FPGA là

để cung cấp các tính toán và các phần tử nhớ cơ bản được sử dụng trong hệ thống số Một phần tử logic cơ bản gồm một mạch tổ hợp có thể lập trình, một Flip-Flop hoặc một chốt (latch) Ngoài khối logic cơ bản đó, nhiều chip FPGA hiện nay gồm một hỗn hợp các khối khác nhau, một số trong đó chỉ được dùng cho các chức năng cụ thể, chẳng hạn như các khối bộ nhớ chuyên dụng, các bộ nhân (multipliers) hoặc các bộ ghép kênh (multiplexers) Cấu hình bộ nhớ được sử dụng trên tất cả các khối logic để điều khiển các chức năng cụ thể của mỗi phần tử bên trong khối đó

 Kết nối có thể lập trình: Các liên kết trong một FPGA dùng để liên kết các khối logic và I/O lại với nhau để tạo thành một thiết kế Bao gồm các bộ ghép kênh, các transistor và cổng đệm ba trạng thái Nhìn chung các transistor và bộ ghép kênh được dùng trong một cụm logic để kết nối các phần tử logic lại với nhau, trong khi đó cả ba đều được dùng cho các cấu trúc định tuyến bên trong FPGA Một số FPGA cung cấp nhiều kết nối đơn giản giữa các khối logic, một số khác cung cấp ít kết nối hơn nên định tuyến phức tạp hơn

 Khối I/O khả trình: I/O cung cấp giao tiếp giữa các khối logic và kiến trúc định tuyến đến các thành phần bên ngoài Một trong những vấn đề quan trọng nhất trong thiết kế kiến trúc I/O là việc lựa chọn các tiêu chuẩn điện áp cung cấp và điện áp tham chiếu sẽ được hỗ trợ

Theo thời gian, các kiến trúc FPGA cơ bản đã được phát triển hơn nữa thông qua việc bổ sung các khối chức năng đặc biệt có thể lập trình như bộ nhớ trong (Block RAMs), logic số học (ALU), bộ nhân, DSP – 48 và cả bộ vi xử lý nhúng được thêm

Trang 32

vào do nhu cầu của các nguồn tài nguyên cho một ứng dụng Kết quả là nhiều FPGA ngày nay có nhiều nguồn tài nguyên hơn so với các FPGA trước đó

2.5.1.2 Ứng dụng

FPGA được ứng dụng điển hình trong các lĩnh vực như: xử lý tín hiệu số, xử lý ảnh, thị giác máy, nhận dạng giọng nói, mã hóa, mô phỏng (emulation) FPGA đặc biệt mạnh trong các lĩnh vực hoặc ứng dụng mà kiến trúc của nó yêu cầu một lượng rất lớn xử lý song song, đặc biệt là mã hóa và giải mã FPGA cũng được sử dụng trong những ứng dụng cần thực thi các thuật toán như FFT, nhân chập (convolution), thay thế cho vi xử lý Hiện nay công nghệ FPGA đang được sản xuất và hỗ trợ phần mềm bởi các hãng như: Xilinx, Altera, Actel, Atmel Trong đó Xilinx và Altera là 2 hãng hàng đầu Xilinx cung cấp phần mềm miễn phí trên nền Windows, Linux, trong khi Altera cung cấp những công cụ miễn phí trên nền Windows, Linux, Solaris

2.5.2 Ngôn ngữ mô tả phần cứng VHDL

2.5.2.1 Giới thiệu về ngôn ngữ VHDL

Các phương pháp thiết kế dựa trên cơ sở các ngôn ngữ mô tả phần cứng – HDL ngày càng trở nên phổ biến HDL được các nhà thiết kế mạch sử dụng chủ yếu để mô

tả cấu trúc hoặc hành vi của các hệ thống số, phục vụ quá trình mô phỏng hoặc thiết

kế Phương pháp thiết kế dựa trên cơ sở các ngôn ngữ HDL so với phương pháp thiết

kế truyền thống trên cơ sở các cổng logic có các ưu điểm sau:

 Các phương pháp này cho phép tăng năng suất thiết kế, cho phép nhà thiết kế tốn ít thời gian hơn và cho phép những người không cần kiến thức sâu về phần cứng có thể tham gia thiết kế phần cứng

 Phương pháp thiết kế dựa trên ngôn ngữ HDL có thể tương thích với các công nghệ khác nhau Các mô tả trên các ngôn ngữ HDL cung cấp các tài liệu độc lập với phần cứng của mạch điện tử Sử dụng các chương trình tiện ích hỗ trợ thiết kế

ta có thể chuyển đổi các biểu diễn trên các ngôn ngữ HDL thành nhiều mức ứng dụng cho những công nghệ khác nhau

Ngôn ngữ VHDL là ngôn ngữ được sử dụng phổ biến trong công nghệ chế tạo mạch VLSI Ngôn ngữ VHDL chính thức được công nhận là ngôn ngữ tiêu chuẩn trong mô tả phần cứng của IEEE từ năm 1993 Ngôn ngữ này hỗ trợ mô tả phân cấp phần cứng từ mức hệ thống xuống tận mức cổng hay mức chuyển mạch Về mặt cú pháp, VHDL là ngôn ngữ được định kiểu chặt chẽ và có một tập hợp lớn các câu lệnh VHDL cung cấp khả năng mô tả mạch số theo các cấp độ trừu tượng khác nhau như: mức thuật toán, mức thanh ghi, mức hàm truyền đạt và mức cổng logic

Trang 33

2.5.2.2 Ưu điểm của ngôn ngữ VHDL

Thứ nhất là tính công cộng: VHDL được phát triển dưới sự bảo trợ của chính phủ

Mỹ và hiện nay là một tiêu chuẩn của IEEE VHDL được sự hỗ trợ của nhiều nhà sản xuất thiết bị cũng như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống

Thứ hai là khả năng hỗ trợ nhiều công nghệ và phương pháp thiết kế VHDL cho phép thiết kế bằng nhiều phương pháp ví dụ phương pháp thiết kế từ trên xuống, hay

từ dưới lên dựa vào các thư viện sẵn có VHDL cũng hỗ trợ cho nhiều loại công cụ xây dựng mạch như sử dụng công nghệ đồng bộ hay không đồng bộ, sử dụng ma trận lập trình được hay sử dụng mảng ngẫu nhiên

Thứ ba là tính độc lập với công nghệ: VHDL hoàn toàn độc lập với công nghệ chế tạo phần cứng Một mô tả hệ thống dùng VHDL thiết kế ở mức cổng có thể được chuyển thành các bản tổng hợp mạch khác nhau tuỳ thuộc công nghệ chế tạo phần cứng mới ra đời, nó có thể được áp dụng ngay cho các hệ thống đã thiết kế

Thứ tư là khả năng mô tả mở rộng: VHDL cho phép mô tả hoạt động của phần cứng từ mức hệ thống số cho đến mức cổng VHDL có khả năng mô tả hoạt động của

hệ thống trên nhiều mức nhưng chỉ sử dụng một cú pháp chặt chẽ thống nhất cho mọi mức Như thế ta có thể mô phỏng một bản thiết kế bao gồm cả các hệ con được mô tả chi tiết

Thứ năm là khả năng trao đổi kết quả: Vì VHDL là một tiêu chuẩn được chấp nhận, nên một mô hình VHDL có thể chạy trên mọi bộ mô tả đáp ứng được tiêu chuẩn VHDL Các kết quả mô tả hệ thống có thể được trao đổi giữa các nhà thiết kế sử dụng công cụ thiết kế khác nhau nhưng cùng tuân theo tiêu chuẩn VHDL Cũng như một nhóm thiết kế có thể trao đổi mô tả mức cao của các hệ thống con trong một hệ thống lớn (trong đó các hệ con đó được thiết kế độc lập)

Thứ sáu là khả năng hỗ trợ thiết kế mức lớn và khả năng sử dụng lại các thiết kế: VHDL được phát triển như một ngôn ngữ lập trình bậc cao, vì vậy nó có thể được sử dụng để thiết kế một hệ thống lớn với sự tham gia của một nhóm nhiều người Bên trong ngôn ngữ VHDL có nhiều tính năng hỗ trợ việc quản lý, thử nghiệm và chia sẻ thiết kế Và nó cũng cho phép dùng lại các phần đã có sẵn

2.5.2.3 Mô tả thiết kế VHDL

VHDL chia các thành phần (components), các mạch (circuits) hoặc các hệ thống (systems) thành hai thành phần: phần giao tiếp bên ngoài hoặc phần nhìn thấy được (tên entity và các kết nối) và phần bên trong hoặc phần không nhìn thấy được (các thuật toán và quá trình thực hiện entity) Sau khi định nghĩa giao tiếp bên ngoài cho một entity, thì có thể dùng lại nó cho các thiết kế khác Có thể phát triển thư viện của các entity để sử dụng cho nhiều thiết kế hoặc cho các họ thiết kế

Trang 34

Cấu trúc ngôn ngữ VHDL được chia làm 3 loại tùy theo mức độ trừu tượng của chúng như sau: hành vi (behavioral), luồng dữ liệu (dataflow), cấu trúc (structural)

 Hành vi: Các mặt chức năng hay thuật toán của một thiết kế được biểu diễn trong một tiến trình (process) VHDL tuần tự

 Luồng dữ liệu: Cách thức dữ liệu truyền qua một thiết kế, từ đầu vào đến đầu ra Một quá trình hoạt động được định nghĩa dưới dạng một sự kết nối của các quá trình truyền dữ liệu, được biểu diễn như các câu lệnh đồng thời

 Cấu trúc: Cách thức gần giống với phần cứng nhất là một mô hình ở đó các thành phần của một thiết kế được liên kết lại với nhau và được biểu diễn bởi các lệnh khởi tạo thành phần (component)

2.6 Thực hiện các phép toán số thực dấu phẩy động trên FPGA

Việc chọn đúng định dạng số để đạt được hiệu quả thực thi mạng nơ-ron nhân tạo trên FPGAs là một thử thách đối với các nhà thiết kế Có hai loại định dạng số chính:

số thực dấu phẩy động và số thực dấu phẩy tĩnh thường được sử dụng cho các phần cứng để thực thi mạng nơ-ron Trong đó định dạng số thực dấu phẩy tĩnh thường được

sử dụng hơn, lý do chính là số thực dấu phẩy tĩnh yêu cầu ít tài nguyên phần cứng để thực thi trên FPGAs và thời gian huấn luyện nhanh hơn so với định dạng số thực dấu phẩy động Xét về khía cạnh chính xác số học, định dạng số thực dấu phẩy động được chứng minh là định dạng số tốt nhất vì có thể đảm bảo chính xác hơn cho kết quả tính toán Tuy nhiên sử dụng các định dạng số thực dấu phẩy động tiêu chuẩn (như số thực chính xác đơn 32 bit hoặc số thực chính xác kép 64-bit) để triển khai mạng nơ ron sẽ chiếm dụng nhiều tài nguyên phần cứng

Kết quả nghiên cứu trong [7] cho thấy việc thực thi mạng nơ-ron nhân tạo có bộ trọng số với định dạng số thực dấu chấm phẩy động bán chính xác 16-bit đảm bảo cho

tỷ lệ nhận dạng và hiệu quả trong việc sử dụng tài nguyên FPGA

2.6.1 Thư viện mã nguồn mở FloPoCo [13]

FloPoCo là một thư viện khởi tạo lõi tính toán số học (generator of arithmetic

cores) mã nguồn mở cho FPGAs Trong đó có những lõi IP (IP – Intellectual Property) hỗ trợ tính toán số học cho số thực dấu phẩy động Một trong các chức năng

chính của thư viện này là hỗ trợ các phép toán với các số nguyên, số thực dấu phẩy tĩnh và số thực dấu phẩy động

Trong thư viện FloPoCo này, định dạng số thực dấu phẩy động được cải biên so với định dạng chuẩn IEEE-754 [11] như sau: một số thực dấu phẩy động bao gồm một chuỗi bit nhị phân có 4 trường

Theo chiều từ trái qua phải:

 2 bit dành cho trường ngoại lệ: 00 là số 0, 01 là số bình thường (normal

Trang 35

number), 10 là số vô hạn (infinity), 11 là không phải số (NaN)

 1 bit dấu với bit 0 là số dương, bit 1 là số âm

 wE bit dành cho trường số mũ (exponent field): được định nghĩa tương tự như trong chuẩn IEEE-754

 wF bit dành cho trường định trị (fraction field): được định nghĩa tương tự như trong chuẩn IEEE-754

2.6.2 Các phép toán số thực dấu phẩy động trên FPGA

2.6.2.1 Bộ cộng Addition

Bộ cộng Addition thực hiện phép toán cộng hai số thực dấu phẩy động 18 bit (X+Y) với định dạng tuân theo định dạng của thư viện FloPoCo, đầu ra là một số thực dấu phẩy động 18 bit Tốc độ (latency) của phép cộng này là 8 chu kỳ máy Sơ đồ khối

bộ cộng Addition của thư viện FloPoCo như hình 2.8

Hình 2.8 Sơ đồ khối bộ cộng

Mô phỏng dạng sóng của bộ cộng, đưa vào đầu vào X giá trị 2.5 (tương ứng với chuỗi nhị phân 010100000100000000), đưa vào đầu vào Y giá trị 2 (tương ứng với chuỗi nhị phân 010100000000000000) Đầu ra R sau 8 chu kỳ máy sẽ tính được giá trị 4.5 (tương ứng với chuỗi nhị phân 010100010010000000) Dạng sóng của bộ cộng được thể hiện trong hình 2.9

Trang 36

Hình 2.9 Dạng sóng bộ cộng

2.6.2.2 Bộ nhân Multiplication

Bộ nhân Multiplication thực hiện phép toán nhân hai số thực dấu phẩy động 18 bit (X*Y) với định dạng tuân theo định dạng của thư viện FloPoCo, đầu ra là một số thực dấu phẩy động 18 bit Tốc độ (latency) của phép nhân này là 3 chu kỳ máy Sơ đồ khối bộ nhân Multiplication của thư viện FloPoCo như hình 2.10

Hình 2.10 Sơ đồ khối bộ nhân

Mô phỏng dạng sóng của bộ nhân, đưa vào đầu vào X giá trị 2.5 (tương ứng với chuỗi nhị phân 010100000100000000), đưa vào đầu vào Y giá trị 2 (tương ứng với chuỗi nhị phân 010100000000000000) Đầu ra R sau 3 chu kỳ máy sẽ tính được giá trị

5 (tương ứng với chuỗi nhị phân 010100010100000000) Dạng sóng của bộ nhân được thể hiện trong hình 2.11

Trang 37

Hình 2.11 Dạng sóng bộ nhân

2.6.2.3 Bộ chia Divider

Bộ chia thực hiện phép toán chia số thực dấu phẩy động 18 bit (X/Y) với định dạng tuân theo định dạng của thư viện FloPoCo, đầu ra R là một số thực dấu phẩy động 18 bit Tốc độ (latency) của phép chia là 10 chu kỳ máy Sơ đồ khối bộ chia Divider của thư viện FloPoCo như hình 2.12

Hình 2.12 Sơ đồ khối bộ chia

Mô phỏng dạng sóng của bộ chia: đưa vào đầu vào của bộ chia các giá trị X = 5 (tương ứng với chuỗi nhị phân 010100010100000000), Y = 2 (tương ứng với chuỗi nhị phân 010100000000000000), đầu ra R sau 10 chu kỳ máy sẽ tính được giá trị = 2.5 (tương ứng với chuỗi nhị phân 010100000100000000) Dạng sóng của bộ chia được thể hiện trong hình 2.13

Trang 38

Hình 2.13 Dạng sóng của bộ chia

2.6.2.4 Bộ thực hiện hàm mũ Exponential

Bộ thực hiện hàm mũ Exponential thực hiện phép lấy hàm exp(X), với X là số thực dấu phẩy động 18 bit với định dạng tuân theo định dạng của thư viện FloPoCo, đầu ra R là một số thực dấu phẩy động 18 bit Tốc độ thực hiện hàm này là 9 chu kỳ máy Sơ đồ khối bộ hàm mũ Exponential của thư viện FloPoCo như hình 2.14

Hình 2.14 Sơ đồ khối bộ thực hiện hàm mũ

Mô phỏng dạng sóng của bộ thực hiện hàm mũ: đưa vào đầu vào của bộ thực hiện hàm mũ giá trị X = 0.5 (tương ứng với chuỗi nhị phân 010011100000000000) thì đầu ra R sau 9 chu kỳ máy sẽ tính được giá trị = 1,6484 (tương ứng với chuỗi nhị phân 010011111010011000) Dạng sóng của bộ lấy hàm mũ đươc thể hiện trong hình 2.15

Ngày đăng: 29/04/2021, 13:42

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Nguyễn Văn Cường, “Cơ sở thiết kế mạch tích hợp số (VLSI) và công nghệ xử lý vi mạch (IC)”, Nhà xuất bản Giáo dục Việt Nam, 2014 Sách, tạp chí
Tiêu đề: Cơ sở thiết kế mạch tích hợp số (VLSI) và công nghệ xử lý vi mạch (IC)
Nhà XB: Nhà xuất bản Giáo dục Việt Nam
[2] Nguyễn Thị Kim Anh,“ Ứng dụng mạng nơ-ron nhân tạo trong nhận dạng chữ số viết tay trên FPGA”, Luận Văn Thạc sĩ, Đại học Bách khoa Đà Nẵng, 2015 Tài liệu tiếng Anh Sách, tạp chí
Tiêu đề: Ứng dụng mạng nơ-ron nhân tạo trong nhận dạng chữ số viết tay trên FPGA
[3] Huynh Viet Thang, “Evaluation of Artificial Neural Network Architectures for Pattern Recognition on FPGA”, International Journal of Computing and Digital Systems (ISSN: 2210-142X), 2017 Sách, tạp chí
Tiêu đề: Evaluation of Artificial Neural Network Architectures for Pattern Recognition on FPGA
[4] Park, Jinhwan; Sung, Wonyong, “FPGA Based Implementation of Deep Neural Networks Using On-chip Memory Only”, ICASSP 2016 Sách, tạp chí
Tiêu đề: FPGA Based Implementation of Deep Neural Networks Using On-chip Memory Only
[6] Huynh Viet Thang, “Design of Artificial Neural Network Architecture for Handwritten Digit Recognition on FPGA”, J. Sci. Techonlogy, UDN, vol. 108, (2016) 206–210, 2016 Sách, tạp chí
Tiêu đề: Design of Artificial Neural Network Architecture for Handwritten Digit Recognition on FPGA
[7] Huynh Viet Thang, “Design space exploration for a single-FPGA handwritten digit recognition system”, in 2014 IEEE-ICCE, 2014 Sách, tạp chí
Tiêu đề: Design space exploration for a single-FPGA handwritten digit recognition system
[8] F. M. Dias, A. Antunes, and A. M. Mota, “Artificial neural networks: a review of commercial hardware,” Eng. Appl. Artif. Intell., vol. 17, no. 8, pp. 945–952, 2004 Sách, tạp chí
Tiêu đề: Artificial neural networks: a review of commercial hardware
[9] J. Misra and I. Saha, “Artificial neural networks in hardware: A survey of two decades of progress,” Neurocomputing, vol. 74, no. 1–3, pp. 239–255, Dec.2010 Sách, tạp chí
Tiêu đề: Artificial neural networks in hardware: A survey of two decades of progress
[10] Martin T. Hagan, Howard B. Demuth, Mark Beale, “Neural Network Design”, PSW Publishing Company, 1996 Sách, tạp chí
Tiêu đề: Neural Network Design
[11] “IEEE Standard for Floating-Point Arithmetic”, IEEE Std 754-2008 Sách, tạp chí
Tiêu đề: IEEE Standard for Floating-Point Arithmetic
[12] Deep Learning Basics: Neural Networks, Backpropagation and Stochastic Gradient Descent http://alexminnaar.com/deep-learning-basics-neural-networks-backpropagation-and-stochastic-gradient-descent.html/[Accessed:20-Jun-2017] Link
[13] FLoPoCo Project, http://flopoco.gforge.inria.fr/ [Accessed: 20-Jun-2017] Link
[14] MNIST database, http://yann.lecun.com/exdb/mnist/ [Accessed: 20-Jun-2017] Link
[15] Xilinx training, http://www.xilinx.com/training/fpga-tutorials.htm [Accessed: 20-Jun-2017] Link
[16] Neural Networks and Deep Learning, http://neuralnetworksanddeeplearning.com [Accessed: 20-Jun-2017] Link
[17] IBM Research: Neurosynaptic chips. [Online]. Available: http://research.ibm.com/cognitive-computing/neurosynaptic-chips.shtml#fbid=e8AW73seOQe. [Accessed: 20-Jun-2017] Link
[18] General Vision - NeuroMorphic Chip. [Online] https://www.general- vision.com/ [Accessed: 20-Jun-2017] Link
[19] KAIST Multimedia VLSI Laboratory - Deep Neural Network Processor http://mvlsi.kaist.ac.kr/research/multimedia-processor/deep-learning-processor [Accessed: 20-Jun-2017] Link
[20] Neural Networks: https://tiendv.wordpress.com/2016/11/19/neural-networks/ [Accessed: 20-Jun-2017] Link

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w