마이크로 컨트롤러에서 신경망을 실행할 수 있습니까?


23

머신 러닝에 사용될 Arduino Uno와 같은 마이크로 프로세서에서 간단한 신경망을 구현할 수 있습니까?


2
호기심 때문에 왜 하시겠습니까?
Josh Vander Hook

1
저는이 분야의 전문가는 아니지만 마지막으로 들었습니다. NN의 교육은 시뮬레이션에서 이루어졌으며 NN은 섀시에서 구현 되었으며 아마도 Arduino보다 높은 수준의 컨트롤러가 장착 된 것입니다.
Josh Vander Hook

1
글쎄, 당신은 그것을 링크 할 필요가 없습니다. 시뮬레이션에서 NN을 훈련시킨 다음 가장자리 가중치와 노드 링크를 포함하여 NN의 토폴로지를 추출하십시오. 그런 다음 NN을 프로그래밍하십시오 (해결해야 할 방정식 일뿐입니다). 이 프로젝트를 시작하기 전에 좀 더 연구가 필요하다고 생각합니다.
Josh Vander Hook

1
내가 16 살이라고 언급 할 가치가 있고 이것은 고등학교를위한 나의 전자 공학 주요 작품입니다.
요르단

1
이 경우, 나는 당신이 이것을 구현하려고 시도하는 의무 이상의 일을하고 있다고 가정합니다.
Joe Baker

답변:


10

마이크로 컨트롤러에서 신경망 을 훈련 시킬 수 있습니까? 어쩌면 시도하지 마십시오. 마이크로 컨트롤러에서 분류 등에 NN을 사용할 수 있습니까? 노드와 엣지 값을 전파 한 결과를 계산하고 곱셈을 처리 할 수 ​​있다면 가능합니다.


1
동의합니다. Arduino에서 훈련하는 데 필요한 복잡성의 신경망을 얻을 수 있다고 가정하면 여전히 엄청난 훈련 시간을 할 수 있습니다. NN의 실습 교육은 논리적으로 진행되는 방법입니다.
fgb

23

Arduino에서 이것을 구현할 수 있습니다. 신경망을 구현하는 Arduino 라이브러리 3 개는 다음과 같습니다.

Arduino가 처리 할 수있는 네트워크의 복잡성은 특히 훈련 데이터에 대한 수만 번의 반복 교육과 관련하여 별도의 질문입니다. 빠른 기계에 대한 훈련을 한 다음 뉴런 가중치를 Arduino에 복사하면 구현을보다 현명하게 개발할 수 있습니다.


5

예. 피드 포워드 모드에서만 실행하고 다른 곳에서 교육을 오프라인으로 수행하는 경우 :

Arduino UNO에서 3 계층 (5-5-2) 피드 포워드 ANN을 프로그래밍했습니다. 모바일 로봇에서 작동했습니다. 로봇이 무언가를 칠 때마다 네트워크를 다시 훈련시킵니다. 네트의 피드 포워드 부분은 실시간으로 실행되었습니다. 역 전파 훈련은 5 ~ 20 초 정도 걸렸습니다. 조금 더 빠르게 실행하기 위해 매개 변수를 사용한 재생뿐만 아니라 네트워크 크기를 트리밍 할 수 있다고 생각하지만 Arduino에서 역 전파를 계획하는 경우 너무 느릴 것이라고 생각합니다.

작업 속도를 높이기위한 몇 가지 생각은 다음과 같습니다.

  • 고정 대 부동 소수점 사용 (FPU가없는 MCU의 경우)
  • FPU가있는 MCU 사용
  • tanh
  • 교육 단계를 PC에서 오프라인으로 수행

다음 은 네트워크에 대한 빠른 기록 입니다.


3

그렇습니다. 신경망을 마이크로 컨트롤러에 내장 할 수 있습니다. 과학 문헌에는 이와 같은 많은 예가 있지만 충분히 똑똑하다면 아주 간단한 MCU로 할 수있는 일에 대한 놀라운 예를들 수 있습니다. 에서 진화 Bits'n'Spikes , 저자는 신경 네트워크 및 차동 바퀴 로봇을 제어하기 위해, 훈련을위한 유전자 알고리즘을 급상승 실시간의 구현을 설명합니다. 전체 코드는 1 입방 인치 Alice 로봇에 내장 된 소형 PIC16F628 4MHz MCU에서 실행됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.