画像はイメージです original image: dzimin / stock.adobe.com
自律運転ロボットで、ニューラルネットワークとコンピュータが主従逆転する
2020.01.30
Updated by Ryo Shimizu on January 30, 2020, 15:55 pm JST
画像はイメージです original image: dzimin / stock.adobe.com
2020.01.30
Updated by Ryo Shimizu on January 30, 2020, 15:55 pm JST
大阪に来ています。
インテックス大阪で開催中の、AI・自動化展に僕が代表を務めるギリア株式会社(GHELIA)が出展しているからです。
4月1日には東京で、日本最大規模の「AI・人工知能EXPO」が開催される予定で、来週からイベントを任せる会社のコンペがあるので、展示内容のイメージを考えるためにひとまず大阪に来てみました。
予想外に盛況で、ひっきりなしにお客様が来る中、社長がひとり、ぽつんと所在なくしているのも妙なので、せっかくだから原稿を書こうかなと思って筆を執りました。
今回は、まだ実験的なものですが、初めて自律運転するロボットを実演展示しています。
これは、もともと当社で作ったシミュレーション環境のAIを、現実世界のロボットに載せたらどうだろうか、という興味からインターン達が作ったものですが、思いがけず、色々考えさせられるきっかけになりました。
このロボットの何が面白いかと言うと、基本的にアルゴリズムを持っていないのです。
アルゴリズムをもっていないのに、シミュレーターの中で強化学習しただけで、障害物を避け、目的地に到達します。
普通に考えると、アルゴリズムがないのに障害物を避けるというのは、それだけで驚きです。
しかも、このロボットにはカメラがついていません。
LiDAR(ライダー)だけです。LiDARというのは、要はレーダーです。自動運転車などには搭載されています。
カメラがついていないので、寝室やホテル、病院など、プライバシーに対する配慮が十分必要な環境でも安心してつかうことができます。
LiDARだけで障害物を検知し、避けて目的地までたどり着きます。自分の位置は慣性航法(北に60cm、南に30cm、のように記録して自分の位置を見つける方法)とLiDARからのSLAM(レーダーの情報をもとに地図をつくる方法) で認識しているのですが、ゴール地点の指定だけ、この段階でのデモではまだ天井についたカメラを併用していますが、これも4月のイベントまでにはなくなる予定です。
普通の作り方では、「LiDARで障害物を検知したら、止まるか、曲がるようにアルゴリズムを作る」というやり方で作らなければなりません。
しかし、このロボットはアルゴリズムを一切用いずに、コンピュータ上のシミュレーション環境だけで繰り返し強化学習を行います。
カメラを持たずLiDARだけにしているのはそのためで、LiDARはシミュレーション環境でも完璧に再現できますが、カメラをつかう場合は、シミュレーション環境をかなりリアルなものにしなければならず、しかも動作環境に応じて異なる画像を学習させる必要があります。
これは手間ばかりかかるので、LiDARだけを頼りにしてひたすら障害物を避けるニューラルネットワークを深層強化学習で訓練すると、基本的にはLiDARが使えるならばどのような環境でも適応できます。ここが最大の違いです。
たとえば展示の前日まで、インターン達は机をふたつくっつけただけの環境でロボットの動作テストと調整を行っていました。
この環境で動くものが、そのまま全く光源も見通しも違う環境でそのまま動くというのは、実は凄いことなのです。
しかも、このロボットは、実際の環境を一切学習していません。
あくまでも学習はシミュレーションだけで行い、ロボットに転送しているだけです。このロボットそのものは全く学習せずに推論だけで動いています。
これはたかだか一週間だけ学習させたものですが、それでも障害物がリアルタイムに変化した場合もちゃんと避けて目的地までたどり着きます。
唯一、誤算だったのは、学習時にロボットの大きさを考慮しなかったため、スレスレで避けようとして当たってしまう場合があることくらいです。
これも4月までには再学習などをして解決できるでしょう。
さて、アルゴリズムなしに推論しかしないロボットが動いている状態というのがどういう状態なのかわかるでしょうか。
そもそも、今はニューラルネットワーク、すなわち人工的に作られた神経回路はコンピュータの上で動いています。しかし、本来のニューラルネットワークは、コンピュータの上で動くよりも遥かに高速で効率的です。すべてのニューロンは独立しており、単純に入力の積分を出力しているだけです。いま、コンピュータの上で動いているのは、いわばニューラルネットワークをエミュレーションしているに過ぎないのです。
しかし、ニューラルネットワークを表現する方法は電気回路だけとは限りません。実際に、回析格子という、光線の拡散効果を利用した装置でニューラルネットワークの推論を再現できるという報告もあります。
これが意味するところは何かというと、それがコンピュータで動作しているかどうかに関わらず、ニューラルネットワークがロボットの活動の中心になった場合、プログラムやアルゴリズムといったコンピュータ特有のものは、補助的な装置に過ぎなくなるということです。
たとえば光学的にニューラルネットワークを再現した場合、ロボットに必要な電子機器はニューラルネットワークにデータを入力するための装置(カメラの代わりにニューラルネットワークを使うならそれすら不要)と、ニューラルネットワークの出力を工学的に読み取るフォトトランジスタ、そして実際にロボットを動作させるモータードライバーの機能だけです。
原則として、プログラムはなにも検知しないし何も考えません。
つまり、ロボットとして動作する段階まで達すると、プログラムは「思考する機械」としての主役の座をニューラルネットワークに譲り、「従属する機能」としての役割しか求められなくなります。
敷いて言えば、ニューラルネットワークが誤った判断を下した時(例えばなぜか目の前の壁に激突したいとニューラルネットワークが考えた時)に非常ブレーキをかけるような安全装置としてのプログラムとアルゴリズムの役割はまだあるかもしれません。しかし、もはや主役ではなくなるのです。
ニューラルネットワークを訓練するとき、特にシミュレーション環境を効果的に構築するためにはまだプログラムが必要です。
しかしそれは、学校には教科書が必要だが、社会人になると教科書はなくなってしまうのと同じです。近い将来、いまよりもずっとプログラムが果たさなければならない役割は小さくなっていくでしょう。
それにしても、よちよちと障害物を避けて動くニューラルネットワーク・ロボットを見ていると、なんだか微笑ましい気分になります。
学習をもっと重ねれば、人間では制御不能なほど素早く動くロボットになっていくかもしれません。
僕が数年前に想像していたよりも、もっと大きなパラダイムシフトが、今まさに起きようとしている予感がします。
おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)
登録はこちら新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。