マイクロコントローラーでニューラルネットワークを実行することは可能ですか?


23

Arduino Unoなどのマイクロプロセッサに単純なニューラルネットワークを実装して、機械学習で使用できますか?


2
好奇心から、なぜあなたはしたいですか?
ジョシュヴァンダーフック

1
私はこの分野の専門家ではありませんが、最後に聞いたところによると、NNのトレーニングはシミュレーションで行われ、NNはシャーシに実装され、おそらくArduinoよりも高いレベルのコントローラーを備えています。
ジョシュヴァンダーフック

1
リンクする必要はありません。シミュレーションでNNをトレーニングし、エッジの重みやノードリンクを含むNNのトポロジを抽出するだけです。次に、NNをプログラミングします(解く必要があるのは単なる方程式です)。このプロジェクトに取り組む前に、もう少し研究が必要だと思う。
ジョシュヴァンダーフック

1
おそらく私が16歳であることに言及する価値があり、これは高校向けの電子工学の主要な仕事です。
ヨルダン

1
その場合、私はあなたがこれを実装しようとする義務を超えて行っていると思いますか?
ジョーベイカー

回答:


10

マイクロコントローラーでニューラルネットワークをトレーニングできますか?たぶん、でも試さないでください。マイクロコントローラの分類などにNNを使用できますか?確かに、ノードとエッジの値の伝播の結果を計算し、乗算を処理できる限り。


1
私は同意します。Arduinoでトレーニングするために必要な複雑さのニューラルネットワークを取得できると仮定すると、トレーニング時間は非常に長くなります。NNのオフボードトレーニングは、論理的な方法です。
FGB

23

Arduinoでこれを実装することは確かに可能です。以下に、ニューラルネットワークを実装する3つのArduinoライブラリを示します。

Arduinoが処理できるネットワークの複雑さは、特にトレーニングに関しては別の問題です-トレーニングデータでの数万回の反復。高速なマシンでトレーニングし、ニューロンの重みをArduinoにコピーすることは、実装を開発する賢い方法です。


5

はい。フィードフォワードモードでのみ実行し、他の場所でオフラインでトレーニングを行う場合:

Arduino UNOで3層(5-5-2)フィードフォワードANNをプログラムしました。移動ロボットで走りました。ロボットが何かにぶつかると、ネットワークを再訓練します。ネットのフィードフォワード部分はリアルタイムで実行されました。一方、バックプロパゲーショントレーニングは約5〜20秒かかりました。ネットワークのサイズを調整するだけでなく、パラメーターを使用して少し高速化することもできますが、Arduinoで逆伝搬を行う予定がある場合は遅すぎると思います。

物事をスピードアップするためのいくつかの考えが含まれます:

  • 固定小数点と浮動小数点を使用します(FPUなしのMCUの場合)
  • FPUを備えたMCUを使用する
  • タンシグモイドの代わりに)を
  • トレーニングフェーズをPCでオフラインで実行する

ここでは簡単だ、ライトアップ、私はネットワークのでしたが。


3

はい、確かに、マイクロコントローラーにニューラルネットワークを組み込むことは可能です。科学文献にはこのような例が数多くありますが、賢明であれば、非常に単純なMCUで何ができるかという印象的な例を挙げることができます。で進化Bits'n'Spikes、著者は、ニューラルネットワークと差動ホイールロボットを制御するために、それを訓練するために、遺伝的アルゴリズムをスパイクリアルタイムの実装を記述します。コード全体は、1立方インチのアリスロボットに組み込まれた小さなPIC16F628 4MHz MCUで実行されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.