« Home « Kết quả tìm kiếm

Nghiên cứu mạng neuron nhân tạo và thực hiện mô hình NN trên FPGA


Tóm tắt Xem thử

- Cấu trúc mạng nơ-ron nhân tạo .
- Kết quả thực hiện .
- Mục đích nghiên cứu của luận văn là hiện thực hóa một cấu trúc mạng Neuron trên FPGA, xây dựng mô hình mạng Neuron trên phần cứng FPGA để làm cơ sở cho việc hiện thực hóa các giải thuật huấn luyện cho mạng Neuron trên chip, và từ đó có thể mở ra các hướng thiết kế các ứng dụng xử lý thông minh trên chip.
- Bởi vậy, thao tác tốc độ cao trong các ứng dụng thời gian thực có thể chỉ đạt được nếu các mạng được triển khai sử dụng kiến trúc phần cứng song song.
- Đặc biệt một mạng nơ-ron huấn luyện thao tác trong một môi trường cụ thể có thể được huấn luyện lại dễ dàng để xử lý các thay đổi nhỏ trong các điều kiện môi trường hoạt động.
- Một mạng nơ-ron có thể được thiết kế để thay đổi các synaptic weight theo thời gian thực.
- Đáp ứng tin cậy Một mạng nơ-ron có thể được thiết kế để cung cấp thông tin không chỉ tới đầu ra mà còn cả sự tin cậy.
- Thông tin này có thể được sử dụng để loại bỏ các đầu ra nhập nhằng mơ hồ do đó cải thiện sự phân loại của mạng.
- Các mạng từng phần có thể được xây dựng bằng một sự tích hợp các khối liền với nhau.
- Do vậy các nơ-ron trong cùng một lớp có thể xử lý thông tin một cách đồng thời, cùng một lúc.
- Từ mô hình này, hoạt động của nơ-ron có thể được biểu thị như sau: Đầu ra của nơ-ron.
- Nó được sử dụng để phân loại đầu vào thành hai tập khác nhau, và có thể được định nghĩa như sau: Hình 1.2: Hàm Symmetrical Hard Limit 1.3.2.
- Hàm Saturating Linear Đầu ra của hàm Saturating Linear “satlins” có thể được định nghĩa như sau: 20 Hình 1.3: Hàm Saturating Linear 1.3.3.
- Điều này có thể dẫn đến một số lượng cực lớn các kết nối tồn tại trong mạng, thậm chí với khá ít nơ-ron mỗi lớp.
- Hình 1.5: Một mạng nơ-ron nhân tạo cơ bản 1.4.1.
- Những đầu vào này có thể được thu thập dữ liệu, hoặc các đầu vào thế giới thực từ các bộ cảm biến vật lý.
- Quá trình tiền xử lý của các đầu vào có thể được thực 22 hiện để tăng tốc độ quá trình học của mạng.
- Điều này sẽ cần nhiều thời gian, và có thể mạng lớn hơn so với các đầu vào được xử lý.
- Có thể tồn tại nhiều lớp ẩn, với nhiều đầu vào cho mỗi nơ-ron lớp ẩn thường được kết nối đầy đủ tới các đầu ra của các nơ-ron lớp trước đó.
- Hình 2.2 cho thấy một lớp ẩn nhưng các kiến trúc mạng khác có thể có nhiều lớp ẩn.
- Những đầu ra này có thể đưa tới quá trình xử lý tính toán khác, một hệ thống điều khiển cơ khí, hoặc có thể được lưu trong một file để phân tích.
- Giống như hàm đầu ra của một nơ-ron, lớp đầu ra có thể tham gia vào một số loại cạnh tranh giữa các đầu vào.
- Sự hạn chế ở bên có thể được nhìn thấy ở hình 2.2 như là đường nhiều chấm kết nối các nơ-ron đầu ra.
- Thêm vào đó, các đầu ra có thể cũng được phản hồi lại các nơ-ron trước đó để hỗ trợ quá trình học.
- Thích ứng tốt hơn để ít biến đổi, tốc độ học có thể thấp hơn.
- Bộ thử được sử dụng để xác thực lại mạng có thể khái quát hóa cái nó đã học để ít biến đổi.
- Sự gia tốc và giảm tốc của xe có thể được so sánh với đầu ra mong muốn của người lái xe.
- Mạng với đầu ra lớn nhất sẽ chiến thắng, và đi tới cập nhật weight của nó và có thể một số lân cận của nó.
- Thuật toán học có thể được biểu diễn với hai phương trình.
- Giải quyết sự khác nhau này có thể được thể hiện rõ trong hai phương trình, tùy thuộc vào weight cần quan tâm.
- Tuy nhiên, mạng nơ-ron phần cứng có thể đạt được rất nhiều các lợi ích [12] Một triển khai phần cứng tối ưu có thể mang lại hiệu năng tốt hơn cấu hình phần mềm chạy trên một bộ vi xử lý chuẩn.
- Thêm vào đó, một triển khai phần cứng có thể thực hiện cho các ứng dụng khó đạt được trong thiết lập phần mềm, như với các ứng dụng cảm nhận từ xa.
- FPGA cũng dùng cho việc triển khai thực hiện phần cứng của các mạng nơ-ron nhân tạo, có thể điều chỉnh động đồ hình của chúng.
- Một điều đáng chú ý đó là cách trình bày số, về cơ bản có hai cách mà một số có thể được miêu tả trong bất cứ thiết bị phần cứng nào: dấu phẩy tĩnh và dấu phẩy động.
- Dấu phẩy động là cách miêu tả phổ biến nhất được sử dụng trong tính toán phần cứng vì dải giá trị rộng có thể thực hiện.
- Với một số ứng dụng nó có thể là 16 bits.
- Do vậy, chỉ các đơn vị số học rất nhỏ mới có thể được sử dụng trong việc triển khai phần cứng.
- Thực tế nó có thể chuyển đổi giữa các bộ hàm một cách dễ dàng nghĩa là nó có thể được sử dụng trong mạng dùng các hàm truyền đạt khác nhau trong các lớp mạng khác nhau.
- Khi trong mode tính toán thích hợp, CORDIC có thể được sử dụng để tính hàm này với sự giúp đỡ của một bộ chia nhị phân, sử dụng đồng nhất thức tanh(x.
- CORDIC cũng có thể thực hiện phép tính nhân khi ở mode rotation tuyến tính, có thể tính các weight cho đầu vào Neuron, mặc dù các đơn vị tính nhân tối ưu cho việc nhân với một hằng số thích hợp hơn khi các weight được xác định sẵn.
- 30 CHƯƠNG 2: KHÁI QUÁT VỀ FPGA VÀ VIỆC PHẦN CỨNG HÓA MẠNG NEURON FPGA (Field Programmable Gate Array) có ứng dụng rất lớn trong nhiều lĩnh vực như xử lý tín hiệu số DSP, các hệ thống hàng không, vũ trụ, quốc phòng, xử lý ảnh… bởi tính linh động cao trong quá trình thiết kế, giúp người lập trình có thể xử lý những bài toán phức tạp mà trước kia chỉ thực hiện nhờ phần mềm máy tính.
- Các thiết bị như SPLDs và CPLDs có khả năng mềm dẻo trong thiết kế, thời gian phát triển sản phẩm ngắn và có thể nâng cấp dễ dàng do có thể lập trình lại nhiều lần nhưng không có khả năng xử lý các bài toán có độ phức tạp cao.
- Công nghệ FPGA có thể được ứng dụng rộng rãi từ thiết kế các mạch logic cho đến những hệ thống lớn tích hợp vi xử lý hoặc xử lý đồ họa.
- Hầu hết các chip FPGA đều có thể được cấu hình lại nhiều lần do đó rất mềm dẻo, linh hoạt 31 trong thiết kế.
- Một số kiến trúc FPGA hiện nay còn có thể cho phép tái cấu hình lại từng phần.
- Một ưu điểm khác của FPGA là người thiết kế có thể tích hợp vào đó các bộ xử lý mềm hay vi xử lý tích hợp nhúng.
- Các vi xử lý này có thể được thiết kế như các khối logic thông thường, mà mã nguồn do các 32 hãng cung cấp thực thi các lệnh theo chương trình được nạp riêng biệt, và có các ngoại vi được thiết kế linh động (khối giao tiếp UART, vào/ra đa chức năng GPIO, Ethernet.
- Các vi xử lý này cũng có thể được tính toán khả trình lại ngay trong khi đang chạy.
- Tuy nhiên kiến trúc cơ bản của một chip FPGA vẫn bao gồm một ma trận các khối logic CLB có thể cấu hình được và các kết nối giữa chúng, phía ngoài được bao phủ bởi các khối vào ra I/O.
- Hệ thống kết nối bên trong chip gồm có các đường dây ngang và dọc có thể được định nghĩa thông các chuyển mạch lập trình được.
- Kiến trúc FPGA Khối Vào/Ra Ngày nay một chíp FPGA có thể có hơn 1000 chân và được sắp xếp thành các từng dãy xung quanh chip.
- Các chân vào ra này có thể cấu hình để hoạt động ở các chuẩn khác nhau: LVTTL, LVCMOS, LVDS.
- Việc có thể cấu hình các chuẩn I/O giúp việc thiết kế hệ thống trở nên đơn giản hơn rất nhiều.
- Mỗi bank I/O có thể được cấu hình với một chuẩn vào ra riêng.
- Do đó chip FPGA có thể sử dụng trong các hệ thống yêu cầu nhiều chuẩn tín hiệu vào ra khác nhau.
- Ngoài việc có thể cấu hình theo các chuẩn vào ra khác nhau các chân I/O còn có thể điều chỉnh giá trị trở kháng đặt trên nó.
- Vì lý do đó ngày nay các chip FPGA sử dụng các điện trở nối bên trong chip có thể thay đổi được giá trị để phù hợp với từng điều kiện làm việc và từng chuẩn vào ra.
- 34 Các khối logic khả cấu hình CLBs Cấu trúc cơ bản của chip FPGA bao gồm một ma trận các khối logic có thể lập trình được CLB đặt trên một hệ thống các đường kết nối và ma trận chuyển mạch.
- Ta có thể quan sát vị trí của CLB trong chip FPGA trong hình dưới đây: Hình 2.3: Sơ đồ khối CLB Ngoài các đường kết nối giữa các CLB, bên trong mỗi CLB cũng có các kết nối có thể lập trình được.
- Chính khả năng này giúp CLB có thể lập trình để thực hiện các hàm logic khác nhau.
- Trong các dòng chip cũ mỗi CLB có thể được cấu thành bởi hai slice nhưng trong các kiến trúc mới thì số slice trong mỗi CLB thường là bốn.
- Điều này làm tăng khả năng tính toán của mỗi CLB và của cả chip FPGA [13] Mỗi LUT có thể thực hiện bất cứ một hàm logic bốn đầu vào nào do đó nó còn được gọi là bộ tạo hàm.
- LUT là một phần tử cơ bản trong thiết kế số có thể chuyển sang ASIC.
- Mỗi Block Ram có thể được sử dụng độc lập hoặc kết hợp nhiều block Ram với nhau để có kích thước lớn hơn.
- Những block Ram này có thể được dùng vào rất nhiều mục đích ví dụ như thực hiện các bộ nhớ một cổng, hai cổng, FIFO, FSM.
- Mỗi BRAM có thể thay đổi kích thước (độ rộng) các cổng để phù hợp với các ứng dụng khác nhau.
- Trong một vài chip của Xilinx như chip Virtex-4 các block Ram có thể hoạt động ở tần số 500MHz và có thêm các khối logic để thực hiện việc ghép các BRAM lại với nhau hoặc để sử dụng BRAM như một FIFO một cách hiệu quả nhất mà không tốn thêm một slice nào.
- Các bộ nhân có thể thực hiện các phép nhân có dấu hoặc không dấu, hoạt động ở chế độ không đồng bộ hoặc ở chế độ đồng bộ với xung đồng hồ.
- Chúng có thể được dùng như là các bus ở trong chip.
- Các chuyển mạch có thể lập trình được bên trong chip cho phép kết nối giữa CLBs tới các đường kết nối và giữa đường kết nối với các line khác và với ma trận chuyển mạch.
- Thông thường một chip FPGA sẽ có nhiều chân clock và nhiều hệ thống kết nối khác nhau đảm bảo chip FPGA có thể hoạt động ở nhiều tần số khác nhau.
- Hình 2.8: Khối DCM Mỗi dòng chip FPGA khác nhau có thể có các khối DCM khác nhau và có nhiều khối DCM trong một chip.
- Điều đó rất quan trọng kể từ khi mỗi công cụ tổng hợp được khuyên dùng và sự ủy thác của cách thiết kế phần cứng nên nó có thể hoạt động tổng hợp đúng hơn.
- Mỗi khi thiết kế và mô phỏng hoàn thành, dẫn đến một cái nhìn tổng quan khác về thiết kế vì thế thiết kế có thể được kiểm tra lại.
- Các lỗi này cần được kiểm tra và trích dẫn lại để có thể được sửa chữa trong phiên bản tiếp theo của chip.
- Giới thiệu ngôn ngữ HDL HDL (Hardware Description Language) là ngôn ngữ mô tả phần cứng, mô tả hành vi của mạch điện hoặc hệ thống, từ đó mạch điện vật lý hoăc hệ thống có thể được thực thi.
- Mỗi khi mã nguồn HDL được viết, chúng có thể được dùng để thực thi mạch điện trong các thiết bị lập trình được (từ Altera, Xilinx, Almel.
- hoặc có thể gửi đến các xưởng chế tạo các chip ASIC.
- Chúng ta có thể dễ dàng chuyển từ VHDL sang Verilog và ngược lại.
- Bởi vì nó có thể mô hình hóa và mô phỏng một hệ thống số có mức trừu tượng cao và với các tiện ích quan trọng cho các thiết kế mô-đun.
- Trong phần này sẽ giới thiệu thiết kế các mô hình nơ-ron nhân tạo dựa trên thiết bị FPGA Xilinx, những tính năng mô tả dưới đây cần thiết cho việc thực thi nơ-ron: -Logic nhanh cho phép việc thiết kế các hàm số học nhanh và gọn (ví dụ: Phép nhân và phép cộng) -Các bảng tìm kiếm LUT có thể được sử dụng như các RAMs và ROMs -Các hàm kết hợp có tới mười đầu vào ở trong các khối logic khả cấu hình CLBs -Khả năng định tuyến rất cao cho phép triển khai thành công các trễ path quan trọng, thậm chí cho mạng nơ-ron phức tạp.
- Một LUT có thể được sử dụng để thực hiện hàm kích hoạt Sigmoid bởi các giá trị trung bình rời rạc.
- Nó tiêu thụ một phạm vi và thời gian lớn, có thể ảnh hưởng đến tốc độ tính toán.
- Xấp xỉ bậc hai Chú ý tới phương trình bậc hai: Sử dụng phương pháp xấp xỉ bình phương tối thiểu với x Є [0;4] được: Hàm này có thể được viết đơn giản hơn là: Kiểm nghiệm với hàm Sigmoid nguyên bản, người ta thấy rằng đây là một hàm không đối xứng qua .
- Hàm xấp xỉ có thể được biểu diễn như sau: 48 CHƯƠNG 3: THUẬT TOÁN CORDIC Thuật toán CORDIC (COrdinate Rotation Digital Computer) là một kĩ thuật được sử dụng để tính giá trị của các hàm lượng giác.
- CORDIC khác với các phương pháp tính toán khác bởi vì nó có thể dễ dàng được thực hiện chỉ bằng việc sử dụng các phép toán cộng, trừ và dịch bit.
- Năm 1971, Walther đã chứng minh được rằng phạm vi của thuật toán cũng có thể được mở rộng ra tính toán các phương trình lượng giác với cả các hàm hyperbolic và tuyến tính (nhân-cộng-hỗn hợp).
- Hai kiểu xác định tập các hàm có thể được tính toán sử dụng trong thuật toán.
- Các chỉ số x’ và y’ có thể được tính lại bằng việc sử dụng công thức lượng giác cơ bản = cho ra kết quả sau: (3.7.
- Tuy nhiên, do số hạng này tương đương với góc quay mong muốn – tính thay thế được - thanh ghi Z phải luôn được tính theo biểu thức: (3.11) Các số hạng đối số có thể được lưu giữ trong một bảng LUT nhỏ.
- Do đó chỉ số đếm lặp có thể là cố định không đổi trên phần cứng, nên kích cỡ của bảng là hằng số.
- Mô hình thực hiện xác định tập hợp các hàm có thể được tính toán và các giá trị trong những thanh ghi X, Y và Z thay đổi ở mỗi lần lặp như thế nào.
- Do các giá trị arctangent cho mỗi lần lặp là cố định, chỉ có giá trị trong thanh ghi Z là có thể 54 được điều khiển thông qua các giá trị .
- Sine, Cosine và phép biến đổi Polar-Cartesian Việc tính toán các hàm sine và cosine là thực chất của Rotation Mode, và có thể dễ dàng thu được từ phương trình (3.13).
- Nếu không đề cập đến sự khuếch đại độ lớn biên độ của véc-tơ đầu vào, thì thanh ghi X có thể được khởi tạo giá trị ban đầu là 1, và các giá trị sine, cosine có thể được đọc trực tiếp ra các thanh ghi Y và thanh ghi X tương ứng theo thứ tự.
- Chúng ta có thể xác định giá trị không theo tỷ lệ bằng cách chia giá trị cuối cùng cho .
- Sử dụng hàm quyết định mới, sau n lần lặp của thuật toán, các thanh ghi sẽ là: (3.17) Các phần dưới đây tiếp tục thảo luận về các hàm có thể được tính bởi Vectoring Mode.
- Có thể khởi tạo giá trị ban đầu X là 1.0 và Y là α, như được thực hiện trong hình (3.3).
- Sau đó, có thể thu được các giá trị đầu ra của khối mạch chức năng Sigmoid (Z1, Z2, Z3, Z4, Z5).
- Tiếp theo, có thể thu được các giá trị đầu ra của khối mạch chức năng Sigmoid là Zk

Xem thử không khả dụng, vui lòng xem tại trang nguồn
hoặc xem Tóm tắt