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


11

私は最近、制約のある環境でのニューラルネットワーク(特に、安価な8ビットマイクロコントローラーのニューラルネットワークの実装)とIoTデバイスへのそれらのアプリケーション(センサー入力に基づいて物事を予測するための回帰など)について読みました。

これは、処理がタイムクリティカルではなく、処理するデータが比較的少ない、単純なアプリケーションに理想的です。ただし、さらなる研究によると、リソースに制約のある環境でニューラルネットワークをトレーニングすることはお勧めできません(マイクロコントローラーでニューラルネットワークを実行することは可能ですか?への回答を参照してください)。

これは、私がリンクしたコットン、ウィラモウスキー、デュンダルのアプローチにも適用されますか?IoTネットワークのより強力なデバイスで、リソース使用量が少ないように設計されたネットワークをトレーニングする必要がありますか?

コンテキストとして、熱設定を送信するセンサーがある場合、論文に記載されているニューラルネットワークを検討し、それに基づいて希望のボイラー設定を予測します。時間帯など。トレーニングは、ニューラルネットワークの変更に役立ちます。ユーザーが提供するより多くのデータに基づいて出力します。このQuoraの質問は、同様のシナリオをよく説明し、ニューラルネットワークの実装の詳細について説明しますが、私の質問は、アクチュエーター自体でネットワークを実行することが機能するかどうかに重点を置いています。


Curios、ニューラルネットワークを各センサー/アクチュエータノードで実行するつもりですか、それとも(半)集中型の「脳」で実行するつもりですか(もちろん、8ビットの制限は必ずしも適用されません)。
ガニマ共和国

@Ghanimaは、可能であれば、アクチュエータノードで実行して複雑さの余分なレイヤーを節約したいと思いますが、制限された制約で機能するかどうかはわかりません。
Aurora0001

@ Aurora0001ここに配置する特定のコントローラーはNNのトレーニングに適していない可能性がありますが、組み込みコンピュータービジョンの世界では、それを正確に行うための協調的な取り組みがあります。このようなタスクに適したアーキテクチャを持つマイクロコントローラを見つけようとしている場合は、コンピュータビジョン業界向けにこの種のハードウェアを開発している企業を検討することをお勧めします。その一部は転用してお客様の要件に適合させることができると思います。 開始するには良い場所は
grldsndrs

@grldsndrsは素晴らしいです。参照ありがとうございます。十分だと思われる場合は、追加の回答として自由に投稿してください(きっと満足します)
Aurora0001

1
8ビットプロセッサは、より広いワードプロセッサで実行できるすべてのことを実行できますが、(タスクによっては)遅くなるだけです。ただし、8ビットプロセッサはネイティブアドレススペースが限られている傾向があります。つまり、非常に大きなメモリを管理するために間接的な手段を使用する必要があり、マイクロコントローラーの場合、比較的少量のオンチップメモリ​​を搭載する傾向があります。ローエンドを超えたコストの差はますます小さくなっています。MCUコストの主な要因は、おそらくALU幅ではなくメモリです。
Chris Stratton

回答:


9

最初の論文によると、走行は問題ではありません。それが目的でした。最大の重みに制限があるだけです。

現在、このマイクロコントローラーに組み込まれているアーキテクチャーの制限は、必要な重みの数によってのみ制限されています。ニューラルネットワークは現在256の重みに制限されています。ただし、ほとんどの組み込みアプリケーションでは、この256の重みでシステムが制限されることはありません。


トレーニングに関しては、説明されている実装を理解している限り、PICコントローラーは外部ソースからパラメーターを受け取ります。

ニューラルネットワークの前方計算は、各ニューロンが一連のネストされたループで個別に計算されるように記述されています。各ループの計算数と各ノードの値はすべて、メモリ内の単純な配列に格納されます。

[...]

これらのアレイには、アーキテクチャとネットワークの重みが含まれています。現在、デモンストレーションの目的で、これらのアレイはチップのプログラム時にプリロードされていますが、最終バージョンではこれは必要ありません。マイクロコントローラーは、遠隔地から重量と地形のデータを受信するオンボードRS232シリアルポートを利用する単純なブートローダーを含むように簡単に変更できます。これにより、チップがフィールドにある間に、重みまたはネットワーク全体を変更することもできます。

訓練も外部で行われているのではないでしょうか。

また、PICのメモリに事前にプログラムされた値を決定するために使用されたと思われるニューラルネットワークトレーナーの参考資料も示します。

ここで、ネットワークアーキテクチャとそれらで使用するアルゴリズムを説明する最初の1つを調べました。ただし、ここで使用するニューラルネットワークトレーナーソフトウェアは、MATLABで実装されています。

現在、完全に接続されたネットワークをトレーニングする利用可能なニューラルネットワークトレーニングソフトウェアはほとんどありません。したがって、グラフィカルユーザーインターフェイスを備えたパッケージは、その目的のためにMATLABで開発されました。このソフトウェアを使用すると、ユーザーは非常に複雑なアーキテクチャだけでなく、初期の重み、トレーニングパラメーター、データセット、およびいくつかの強力なアルゴリズムの選択を簡単に入力できます。

完全に接続されたネットワークは、同じタスクに対して、レイヤーごとのアーキテクチャよりも重みの数が少ないことを述べなければなりません。それはそれをマイクロコントローラーにより適しています。

私はニューラルネットワークの専門家ではなく、かなり複雑なので間違っている可能性がありますが、これらの論文に基づいて、コットン、ウィラモウスキー、デュンダルのアプローチには、トレーニングを実行するための外部のより強力なプラットフォームが必要だと言えます。


マイクロコントローラ上のニューラルネットワークの実行について、STマイクロエレクトロニクスは、ただのツールキットを発表しましたSTM32用に最適化されたコードに変換ニューラルネットワーク:STM32Cube.AIをコンバートする前訓練を受けた彼らのSTM32マイコンのほとんどに人気のあるライブラリからのニューラルネットワーク。

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