Có thể chạy và huấn luyện một mạng thần kinh trên vi điều khiển 8 bit không?


11

Gần đây tôi đã đọc về các mạng thần kinh trong các môi trường bị hạn chế (cụ thể là Triển khai mạng thần kinh trên Bộ vi điều khiển tám bit không tốn kém ) và các ứng dụng của chúng cho các thiết bị IoT (ví dụ: hồi quy để dự đoán mọi thứ dựa trên đầu vào cảm biến, v.v.).

Điều này có vẻ lý tưởng cho các ứng dụng đơn giản trong đó việc xử lý không quan trọng về thời gian và dữ liệu cần xử lý sẽ tương đối không thường xuyên. Tuy nhiên, nghiên cứu thêm cho thấy rằng đào tạo một mạng nơ-ron trong môi trường hạn chế tài nguyên là một ý tưởng tồi (xem câu trả lời cho Có thể chạy mạng thần kinh trên vi điều khiển ).

Điều này có còn áp dụng cho phương pháp của Cotton, Wilamowski và Dündar mà tôi liên kết không? Có cần phải đào tạo một mạng được thiết kế để sử dụng tài nguyên thấp trên một thiết bị mạnh hơn trong mạng IoT của tôi không?

Đối với ngữ cảnh, nếu tôi có một cảm biến truyền cài đặt nhiệt, tôi đang xem xét một mạng lưới thần kinh như được mô tả trong bài báo để dự đoán cài đặt nồi hơi mong muốn dựa trên đó và thời gian trong ngày, v.v. Đào tạo sẽ hữu ích để thay đổi mạng lưới thần kinh đầu ra dựa trên nhiều dữ liệu được cung cấp bởi người dùng. Câu hỏi Quora này mô tả một kịch bản tương tự tốt và thảo luận về các chi tiết triển khai cho mạng thần kinh, nhưng câu hỏi của tôi tập trung hơn vào việc chạy mạng trên chính bộ chấp hành có hoạt động hay không.


Curios, bạn có định chạy một mạng thần kinh trên mỗi nút cảm biến / bộ truyền động hoặc tại một số "bộ não" tập trung (bán) (tất nhiên sau đó hạn chế 8 bit sẽ không nhất thiết phải áp dụng)?
Ghanima

@Ghanima nếu có thể, tôi muốn làm điều đó tại nút cơ cấu chấp hành để lưu lớp phức tạp thêm, mặc dù tôi không chắc liệu điều đó có hoạt động với các ràng buộc hạn chế hay không.
Aurora0001

@ Aurora0001 Bộ điều khiển cụ thể mà bạn đặt ở đây có thể không phù hợp để đào tạo NN của bạn, nhưng, có những nỗ lực phối hợp trong thế giới thị giác máy tính nhúng để thực hiện chính xác điều đó. Nếu bạn đang cố gắng tìm một bộ điều khiển vi mô có kiến ​​trúc phù hợp cho các nhiệm vụ như vậy, tôi khuyên bạn nên tìm đến các công ty phát triển các loại phần cứng này cho ngành công nghiệp thị giác máy tính. Tôi chắc chắn một số trong đó có thể được tái sử dụng và thích ứng với yêu cầu của bạn. Một nơi tốt để bắt đầu
grldsndrs

@grldsndrs tuyệt vời, cảm ơn đã tham khảo. Vui lòng gửi nó dưới dạng câu trả lời bổ sung nếu bạn cảm thấy đủ (Tôi chắc chắn sẽ hài lòng với nó)
Aurora0001

1
Bộ xử lý 8 bit có thể làm bất cứ điều gì mà bộ xử lý từ rộng hơn có thể, chỉ có lẽ (phụ thuộc vào tác vụ) chậm hơn. Tuy nhiên, bộ xử lý 8 bit có xu hướng giới hạn không gian địa chỉ gốc, điều đó có nghĩa là chúng phải sử dụng các phương tiện gián tiếp để quản lý bộ nhớ rất lớn và trong trường hợp vi điều khiển có xu hướng xuất xưởng với bộ nhớ trên chip tương đối nhỏ. Có sự chênh lệch chi phí ngày càng ít hơn mức thấp nhất - trình điều khiển chính của chi phí MCU được cho là ký ức, không phải chiều rộng ALU.
Chris Stratton

Câu trả lời:


9

Theo bài báo đầu tiên , chạy không phải là một vấn đề. Đó là mục đích. Chỉ có một giới hạn về trọng lượng tối đa:

Hiện tại, giới hạn về kiến ​​trúc được nhúng trong vi điều khiển này chỉ bị giới hạn bởi số lượng trọng lượng cần thiết. Mạng lưới thần kinh hiện bị giới hạn ở 256 trọng lượng. Tuy nhiên, đối với hầu hết các ứng dụng nhúng, trọng lượng 256 này không nên giới hạn hệ thống.


Đối với đào tạo, theo như tôi hiểu về việc triển khai được mô tả, bộ điều khiển PIC nhận các tham số từ nguồn bên ngoài.

Các tính toán chuyển tiếp mạng nơ-ron được viết sao cho mỗi nơ-ron được tính riêng trong một chuỗi các vòng lặp lồng nhau. Số lượng tính toán cho mỗi vòng lặp và giá trị cho mỗi nút đều được lưu trữ trong một mảng đơn giản trong bộ nhớ.

[...]

Các mảng này chứa kiến ​​trúc và trọng lượng của mạng. Hiện tại, với mục đích trình diễn, các mảng này được tải sẵn tại thời điểm chip được lập trình, nhưng trong phiên bản cuối cùng, điều này là không cần thiết. Bộ vi điều khiển có thể dễ dàng được sửa đổi để chứa bộ tải khởi động đơn giản sử dụng cổng nối tiếp RS232 trên bo mạch để nhận dữ liệu cho trọng lượng và địa hình từ một vị trí từ xa. Điều này sẽ cho phép các trọng số hoặc thậm chí toàn bộ mạng được sửa đổi trong khi chip đang ở trong trường.

Tôi nghi ngờ rằng việc đào tạo cũng được thực hiện bên ngoài.

Bài viết cũng cung cấp các tài liệu tham khảo cho các giảng viên mạng thần kinh có thể được sử dụng để xác định các giá trị được lập trình sẵn trong bộ nhớ của PIC.

Bây giờ, tôi đã xem xét cái đầu tiên mô tả các kiến ​​trúc và thuật toán mạng để sử dụng với chúng. Nhưng phần mềm Neural Network Trainer được sử dụng ở đây được triển khai trong MATLAB.

Hiện tại, có rất ít phần mềm đào tạo mạng thần kinh có sẵn sẽ đào tạo các mạng được kết nối đầy đủ. Do đó, một gói với giao diện người dùng đồ họa đã được phát triển trong MATLAB cho mục đích đó. Phần mềm này cho phép người dùng dễ dàng nhập các kiến ​​trúc rất phức tạp cũng như trọng lượng ban đầu, các tham số đào tạo, bộ dữ liệu và lựa chọn một số thuật toán mạnh mẽ.

Tôi phải đề cập rằng các mạng được kết nối đầy đủ có số lượng trọng lượng thấp hơn cho cùng một nhiệm vụ so với kiến ​​trúc từng lớp. Điều đó làm cho nó phù hợp hơn cho vi điều khiển.

Tôi không phải là một chuyên gia về mạng lưới thần kinh và nó khá phức tạp nên tôi có thể sai, nhưng dựa trên những bài báo này, tôi sẽ nói rằng cách tiếp cận của Cotton, Wilamowski và Dündar đòi hỏi một nền tảng mạnh mẽ hơn bên ngoài để thực hiện đào tạo.


Về việc vận hành mạng thần kinh trên vi điều khiển, ST Microelectronics vừa công bố bộ công cụ STM32Cube.AI: Chuyển đổi Mạng thần kinh thành Mã tối ưu hóa cho STM32 để chuyển đổi mạng thần kinh được đào tạo trước từ các thư viện phổ biến sang hầu hết các MCU STM32 của họ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.