ChatGPTでロボットを動かそう
最近私が所属している研究チーム(Microsoftの応用ロボティクスグループ)でも、ChatGPTをはじめとした大規模言語モデルを使った研究を進めています。最近の実験的な取り組みについてこんなブログを書きましたので、Noteでご紹介したいと思います。
GPT Models Meet Robotic Applications: Long-Step Robot Control in Various Environments - Microsoft Research
(ちなみに、このNoteはこういった技術を日本語で少し読みやすくして伝えられないかなという個人の試みです。いわゆる個人の見解というやつです)
大規模言語モデルとロボットとの関係
ChatGPTをはじめとした大規模言語モデルをつかって、ロボットを動かそうというアイデアはロボットの研究分野でも見かけるようになりました(モデルという言葉がピンとこない方は「AI」と置き換えて大丈夫です)。何となく感じているトレンドとしては、それを使って「○○してね」という言語指示と、その環境の画像を入れると、ロボットがその指示通りに動いてくれる、みたいな使い方です(たとえばこれ)。こういった研究は言語モデルを発展させて画像を扱えるようにしましょう、といった発想に支えられています。やっぱり現実世界で動くためには、言語だけではなく、画像も扱えるようにしたほうがいいよね、という考えは納得しやすい感じがしますね。
ただし、言語モデルが画像も理解して、しかもロボットを動かせるようにするためには、自分たちでたくさんの言語指示や、カメラで撮った画像や、ロボットの動きなんかをたくさん集めて、モデルを学習し直す必要があります。
さて、こういったアプローチで少し困るのは、「じゃあ○○さんが作ったモデルを私たちのロボットに使ってみよう」といったときに、同じ作業環境や同じロボットならいいんですけど、全然違うロボットを全然違う環境で使うときには、そのままではちゃんと動いてくれなかったりするということです。そういったときどうするかというと、新しい環境でデータを取り直したり、たくさんの電気を使ってモデルを学習し直さないといけません。これは正直めんどくさいです。
ChatGPTをそのままつかってしまおう
このブログで紹介しているアプローチは、いったん画像やロボットの動きを置いておいて、ブラウザで利用できるChatGPTを使って、言語でできるところまでやってみようということです。ChatGPTなら誰でもすぐに使えますし、たくさんのデータがなくても、少しの例を言葉で与えてあげるだけで、なかなかいい仕事をしてくれます。
今回は、プロンプトと呼ばれるChatGPTに与える説明文を工夫することで、「○○してね」という指示を与えたら、ChatGPTがロボットが実行しなければいけない動作の系列を出力するようにしました。
例えば「テーブルの上のコップを棚においてね」といったら「コップを掴んで、コップを持ち上げて、コップを棚に運んで、コップを置く」といった結果を出してくれます。いきなり「テーブルの上のコップを棚においてね」という指示を理解するのは難しくても、このように小さなステップに分割することで、ロボットは実行しやすくなります。
もちろんChatGPTだけでは動かない、けど
もちろん「コップを掴んで、コップを持ち上げて、コップを棚に運んで、コップを置く」という結果だけではロボットは動きません。ひとつひとつのステップを実行するためには、どんな感じで動かすのかとか、どのあたりに置くのかとか、細かい情報を知る必要があります。このブログでは、そういった細かい情報は口で言うよりも見せた方が早いので、人間に実演してもらいましょうというアプローチを紹介しています。言語で大まかなステップを教えて、実演で細かいやり方を見せてあげることで、はじめてロボットが何かを実行できるというわけです。
まとめ
今回Noteでご紹介したブログは、ChatGPTを活用してロボットを動かそうという取り組みでした。画像の処理やロボットの動きをいったん脇に置いておくことで、ChatGPTをそのまま使うことできるので、データを集めたりモデルの学習などをせずに、誰でもすぐに使って試したり、カスタマイズできます。ただし、データ集めの大変さがない代わりに、ロボットの実行プログラムや画像認識システムなどは、それぞれのロボットのために用意する必要があります。一長一短かもしれませんが、知見を再利用しやすくしてみんなで共有することで、ロボットの研究がもっと発展するといいなと思います。
おしまい