Có thể chạy một mạng thần kinh trên một vi điều khiển


23

Bạn có thể triển khai một mạng nơ ron đơn giản trên bộ vi xử lý như Arduino Uno để sử dụng trong học máy không?


2
Vì tò mò, tại sao bạn lại muốn?
Josh Vander Hook

1
Tôi không phải là chuyên gia trong lĩnh vực này, nhưng cuối cùng tôi đã nghe nói, việc đào tạo NN được thực hiện trong mô phỏng và NN được thực hiện trên khung gầm, và có lẽ là một bộ điều khiển cấp cao hơn Arduino.
Josh Vander Hook

1
Chà, bạn không cần phải liên kết nó, bạn chỉ cần đào tạo NN về mô phỏng, sau đó trích xuất cấu trúc liên kết của NN, bao gồm trọng số cạnh và liên kết nút. Sau đó, bạn lập trình NN (nó chỉ là một phương trình bạn phải giải). Tôi nghĩ có vẻ như cần thêm một ít nghiên cứu trước khi bạn thực hiện dự án này.
Josh Vander Hook

1
Có lẽ đáng nói đến tôi 16 tuổi và đây là công việc điện tử lớn của tôi cho trường trung học.
Jordan

1
Trong trường hợp đó, tôi cho rằng bạn đang vượt lên và vượt ra ngoài nhiệm vụ trong nỗ lực thực hiện điều này?
Joe Baker

Câu trả lời:


10

Bạn có thể đào tạo một mạng lưới thần kinh trên một vi điều khiển? Có thể, nhưng xin đừng thử. Bạn có thể sử dụng NN để phân loại, vv trên vi điều khiển không? Chắc chắn, miễn là bạn có thể tính toán kết quả của việc truyền các giá trị nút và cạnh và xử lý các phép nhân.


1
Tôi đồng tình. Giả sử bạn có thể có được một mạng lưới thần kinh về độ phức tạp cần thiết để đào tạo trên Arduino, bạn vẫn sẽ có một khoảng thời gian đào tạo điên rồ. Đào tạo ngoại khóa của NN là cách hợp lý để đi.
fgb

23

Chắc chắn có thể thực hiện điều này trên Arduino. Dưới đây là 3 thư viện Arduino như vậy thực hiện các mạng thần kinh:

Sự phức tạp của mạng mà Arduino có thể xử lý là một câu hỏi riêng biệt, đặc biệt là khi nói đến đào tạo - hàng chục ngàn lần lặp lại trên dữ liệu đào tạo. Đào tạo trên một máy nhanh và sau đó sao chép trọng lượng nơ-ron vào Arduino sẽ là cách thông minh hơn để phát triển việc thực hiện của bạn.


5

Vâng. Nếu bạn chỉ chạy nó trong chế độ chuyển tiếp và thực hiện đào tạo ngoại tuyến ở một nơi khác:

Tôi đã lập trình ANN 3 lớp (5-5-2) cho ANN trên Arduino UNO. Nó chạy trên một robot di động. Bất cứ khi nào robot sẽ đánh một cái gì đó, nó sẽ đào tạo lại mạng. Phần tiếp theo của mạng chạy trong thời gian thực; trong khi đào tạo tuyên truyền ngược đã diễn ra theo thứ tự ~ 5 đến 20 giây. Tôi cho rằng bạn có thể cắt giảm kích thước của mạng cũng như chơi với các tham số để làm cho nó chạy nhanh hơn một chút, nhưng nếu bạn có kế hoạch thực hiện backpropagation trên Arduino, tôi nghĩ nó sẽ quá chậm.

Một số suy nghĩ để tăng tốc mọi thứ bao gồm:

  • Sử dụng điểm cố định và dấu phẩy động (đối với MCU không có FPU)
  • Sử dụng MCU có FPU
  • tanh
  • Có giai đoạn đào tạo xảy ra ngoại tuyến trên PC

Đây là một bài viết nhanh tôi đã làm về mạng.


3

Đúng vậy, có thể nhúng mạng nơ ron vào vi điều khiển. Có nhiều ví dụ như vậy trong tài liệu khoa học nhưng tôi có thể trích dẫn một ví dụ nổi bật về những gì có thể được thực hiện với MCU rất đơn giản nếu bạn đủ thông minh. Trong Evolutionary Bits'n'Spike , các tác giả mô tả việc thực hiện một mạng lưới thần kinh tăng tốc thời gian thực VÀ một thuật toán di truyền để huấn luyện nó, để điều khiển một robot bánh xe vi sai. Toàn bộ mã chạy trong một MCU nhỏ gọn PIC16F628 4 MHz được nhúng trên robot Alice 1 phân khối.

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.