ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

Roboticsにおける世界モデルとは

ロボット系のニュースに良く登場してくる世界モデルについて整理してみました。 社内の勉強会で使う予定でしたが、ボリュームが足らずここで公開します。

強化学習におけるモデル

まずは強化学習におけるモデルについて。

強化学習第二版 から「環境のモデルとは、エージェントが、自身のとる行動に対して環境がどのような応答をするかを予測するために用いる事のできる、あらゆる物のことを指す」がモデルの定義になります。また「モデルは環境をシミュレートし、シミュレートされた経験を作り出す」という表現があるように、実際はエージェントにシミュレーターを持つところから始まります。強化学習の学習プロセスは反復が基本のため、同じ行動を取りながら少しずつ精度を上げていくことになります。実際に環境とやりとりをしなくても、シミュレーターで学習プロセスを回せると学習が早くなります。

ややこしいのが強化学習の場合環境自体がシミュレーターを使うことが多く、この場合はシミュレーターが入れ子になります。厳密に言うとモデルというのはシミュレーターではなく、シミュレーターを通して得た評価関数ですが、ここではシミュレーターということにしておきます。

  • 強化学習でのモデル シミュレーター 
  • Deep Learningのモデル NN構造やその重み

この2つを混乱しないようにしたいです。

OpenAIのFrozenLakeを使って、モデルを使った学習を説明します。

例えば環境がこのような場合、エージェント側にも4x4の行列を作り、一度経験した場所に点数をつけることができます。 一回目の挑戦でたまたま上手いこといって成功したとします。

この経験を元にエージェントは環境とやりとりをすること無く、最適なパスとあまり行く価値のない場所を計算できます。例えばこういう評価関数を作ることができます。

次はこれを使ってエージェントの方針を決めることで学習を進めます。単に良いところを探すだけで無く、例えば右上の経験が足りなから一度そっち側に行ってみるかといった効率の良い探索ができるようになります。

エージェント、環境、モデルの関係を絵で描くとこうなります。

FrozenLakeが何かしらのシミュレーターと考えると、シミュレーターが入れ子になっているのがわかります。 この場合、FrozenLakeのシミュレーターとエージェントが持っているモデルとしてもシミュレーターは完全に別の物になります。

世界モデル

モデル学習は非常に有効なことが知られてますが、まずモデル(シミュレーター)を作るためには、環境のことがわかってないと駄目という問題があります。上の例で言えば、環境は4x4のグリッドになっていること、ロボットが上下左右にしか動けないこと等がわかっている必要があります。

ここで現実の問題は簡単にモデルが作れないことは想像できると思います。ここで登場するのが表現学習であり、そこから登場した世界モデルです。ロボティックスで世界モデルと言ったときは大きく2つの意味で使われます。一つは概念の話、もう一つは実装の話です。

これが2018年の世界モデルの論文です。

arxiv.org

概念の話から入ると、世界モデルは今の状態を入れればロボットがどういう状態にあって何をすれば良いかを教えてくれるモデルです。 具体的にはロボットについているカメラの画像を渡すと、「ここに水たまりがあるから避けよう」といったことを教えてくれるようなモデルになります。

このサイトに世界モデルのデモがあります。

worldmodels.github.io

もう一つ、世界モデルといったときに実装を指すときがあります。VMCの構造です。VがVision、Memory、Controllerの構造です。まあ、このブログに来ている人はここは興味が無いと思うので、こっちが話題になることは無いと思います。

論文からその構成を引用します。

世界モデルから基盤モデルへ

ここでChatGPTをはじめとするLLMが登場すると、世界モデルとしてLLMを使おうという流れになります。 このときの世界モデルは実装では無く概念の意味合いが強いです。

例えばこういった論文がすぐに見つかります。 https://www.jstage.jst.go.jp/article/pjsai/JSAI2023/0/JSAI2023_2G5OS21e01/_pdf/-char/ja

上の論文は世界モデルの実装側にも踏み込んでいますが、LLMに次の取るべき行動を聞くだけでも、今までのロボット制御に比べると画期的に進歩しています。もちろん単純にLLMに聞けば良いという話では無く、世界モデルとして使うには自分が取った行動を経験として上手く使う必要があります。

ロボットへのLLMの応用まとめサイト https://github.com/GT-RIPL/Awesome-LLM-Robotics

最近はLLM搭載のロボットのニュースも増えているので、面白くなってきていますね。