考える(そして学習する)機械 というアイデアは、コンピュータが発明される前から存在していました。1920年のカレル・チャペックの戯曲「R.U.R」は、大まかに訳すと「ロッサムの万能ロボット」となり、今日私たちが知っている「ロボット」という用語の起源となったもので、自分で考える人工生物を扱っています。1700年代後半にはすでに、ヴォルフガング・フォン・ケンペレンが「ターク」と呼ばれる自動人形を製作していました。この自動人形は、まるで自分でチェスをプレイできるかのようでした。
機械知能: 想像、理論化、実現
より現実的な計算レベルでは、アラン・チューリングは1948年に、一連の相互接続されたノードを使用して意思決定を行う「非組織化マシン」の概念を提案しました。これは、今日私たちが知っている「ニューラル ネットワーク」の概念に似ています。1991年にターミネーターが「CPUはニューラル ネット プロセッサ、つまり学習するコンピュータである」と宣言したときに、広く認識されるようになりました。
コンピューターベースの意識が最終的にどうなるかについては、いくぶん「賛否両論」の評価があるにもかかわらず(チャペックのロボットも最終的には主人に反抗する)、人類は開発を突き進んでいる。私たちは、AlexaやGoogle Homeのような、それ自体は「インテリジェント」ではないものの、質問に答えたり、制御タスクをインテリジェントに実行したりできるデバイスを開発しました。 このようなデバイスの一般的なパラダイムは、単純なプロセスがウェイクワード/フレーズをリッスンして開始し、オフサイトのクラウド コンピューティング パワーを使用して追加のクエリに応答するというものです。
しかし、他の単純な音声認識タスク、動作パターンの処理、さらにはビデオの操作についてはどうでしょうか?クラウドに頼るのではなく、 Arduinoボード で使用されるような小さな組み込みチップをローカル(「エッジ」)でこのタスクに使用することは可能でしょうか?簡単に答えると「はい」ですが、本当の答えは「複雑です」です。以下に示す簡単な例は、 Arduino Nano 33 BLEセンス( N33BS)追加のハードウェアは必要ありません。
Arduino機械学習の実践: シンプルな音声認識
「Hello World」の マイクロコントローラボード LEDを点滅させている場合、機械学習でそれに相当するのは音声コマンドでそれを制御することでしょう。N33BSには、64MHzで動作し、1MBのフラッシュと256KBのSRAMを備えたnRF52840マイクロコントローラという優れた処理ユニットだけでなく、オンボードの環境センサーも多数搭載されています。
Arduino Nano 33 BLEはさまざまなセンサーを搭載しており、機械学習に最適です。
これらのオンボード センサーの中にはマイク入力があり、ここではこれを使用して「はい」と「いいえ」という単語を認識し、それに応じてオンボードLEDを緑または赤に点滅させます。どちらのオプションでも解決できないノイズが聞こえると、青色に点灯します。
これを実行するには、まず Arduino IDE をインストールし、ボード マネージャーを介してIDEがArduino Nano 33 BLEで動作するように構成します。
ツール > ボード > ボード マネージャー で、 nano 33 ble を検索し、表示される Arduino mbed対応ボード パッケージをインストールします。
その点が済んだら、
「スケッチ」>「ライブラリのインクルード」>「ライブラリの管理」 を選択し、 Arduino_TensorFlowLite ライブラリ (ESP32バージョンではありません) を検索してインストールします。
ついでに、NEEBSの加速度計データを解釈するために Arduino_LSM9DS1 もインストールすることをお勧めしますが、これはこの実験に必須ではありません。
緑: はい、赤: いいえ、青: 不明
TensorFlowLiteライブラリの micro_speech サンプルを開き、矢印キーを押してコンパイルし、アップロードします。完了したら、ボードに向かって「はい/いいえ」のコマンドを話すことができます。「はい」よりも「いいえ」を認識する方がはるかに優れていることがわかりました。私個人向けにトレーニングされたわけではないので、結果は異なる可能性があります。
Edge Impulseを使用してArduinoをトレーニングする
これは、 Arduino が単純な音声認識機能を備えていることを示しているかもしれませんが、正確性に疑問のある2つの事前にプログラムされた単語を使用すると、選択肢が制限されます。理想的には、独自のパラメータを定義する必要がありますが、これはEdge Impulseを介して行うことができます。
このプラットフォームでは、携帯電話経由でのデータキャプチャが可能で、モデル構築時にデータセットをクリーンアップするためのツールも含まれています。Arduinoマイク自体でデータをキャプチャすることも可能で、実際に聞こえる音に近いものになります。しかし、利便性もあまり良くありません。これは重要です。理想的には、さまざまな人がトリガーワードを言っている10分程度のサンプルが必要になるからです。プロセッサが何が重要でないかを知るために、バックグラウンド ノイズ サンプルも必要です。
これを自分で試してみたい場合は、Edge Impulseを検索してアカウントを作成してください。独自のモデルを指導するための手順が提供されます。収集と処理の方法は非常に優れているように見えますが、N33BSが使用する堅牢なモデルを作成するには、かなりの記録時間と、多少の「データ衛生」が必要になります。
音声を超えて: Arduinoイメージセンサーとその他のプロジェクト
ここでは音声が明らかにMLターゲットですが、オンボードの慣性測定ユニット (IMU) やその他のオンボード センサーからの入力を認識するようにモデルをトレーニングすることもできます。適切なトレーニングとセットアップを行えば、外部カメラ センサーからのデータを分析することもできます。Arduino自体には、Arduinoで機械学習を始める方法に関する記事があります。Edge Impulseの代わりに、モデルのトレーニングにGoogle Colabを使用します。
結論
それで、これはどうなるのでしょうか?現時点では、音声だけで LED を点灯できることを意味します。適切なトレーニングを行うことで、Arduinoボードがカスタム コマンドやさまざまなセンサー入力を認識して応答できるようになります。ニューラル ネットワークでトレーニングされたAI、そして一般的なMLが今後どこに向かうのかは、時が経てばわかるでしょう。おそらく私たちは、一部の人が可能性として考えているような悪質な「副作用」なしに、私たちの命令を賢く実行したり、私たちを楽しませたりできる機械の恩恵をすべて享受できるようになるだろう。