
4,096 文字

この動画では、ディープラーニングを使って人型ロボットのトレーニングを行います。まず人型ロボットの仕組みの概要を説明し、その後アルゴリズムの仕組みについて理解を深めます。今回のケースでは近位方策最適化(PPO)というニューラルネットワークを使用します。そして、トレーニング後の人型ロボットの結果を可視化して確認していきましょう。
まずはロボットの内部構造からです。このロボットを動かすためには、アクションによって制御する必要があります。0から16までのIDを持つ合計17の関節があり、各関節には-0.4から+0.4の範囲のトルクが加わります。このロボットは立つ、あるいは動くために、毎回異なる関節に合計17のトルクを受けます。
ここで疑問となるのは、人型ロボットを立たせたり動かしたりするために、どのようにしてそれらのトルク値を得るのかということです。そのために、私たちはロボットから観測値を得ます。ロボットから合計348の入力値を受け取り、それに応じてロボットを動かすためのトルクを生成します。これらの値は正の無限大から負の無限大までの範囲を取ることができます。観測空間には、ロボットの体の部位の位置、速度、質量、慣性、関節の力、外力が含まれており、その状態を包括的に把握することができます。
では、ロボットを立たせて動かすための正確なトルクをニューラルネットワークから得るにはどうすればよいのでしょうか。ニューラルネットワークを導くために、報酬の概念を導入します。この報酬は単なる数値であり、アルゴリズムの目標は報酬を最大化することです。
報酬の最初の部分は健康報酬です。この報酬は人型ロボットのz軸上の中心に依存します。開始時の値は1.4で、若干のランダム性があります。値が1.0から2.0の間であれば、プレイの各ステップで報酬が5となります。この健康報酬の目的は、ロボットが最適な立位姿勢を保ち、バランスと姿勢を維持することを確実にすることです。
前進報酬は0から正の値の範囲で、人型ロボットがx軸に沿って正の方向に前進したときに報酬が正となります。制御コストは、人型ロボットが大きすぎるアクションを取ることにペナルティを与える負の報酬です。接触コストも同様に、外部接触力が大きすぎる場合に人型ロボットにペナルティを与える負の報酬です。
これらの報酬の全体的な目的は、強化学習アルゴリズムが、人型ロボットを立たせ、x軸に沿って正の方向に動かすのに役立つトルクを学習するよう導くことです。
ランダムなトルクを適用すると、人型ロボットはすぐに倒れてしまうことがわかります。これを防ぐために、各ステップで適切な量のトルクを決定し、人型ロボットを立たせて正しい方向に動かし続けるためのニューラルネットワークをトレーニングする必要があります。2回目のプレイでもランダムな重みを使用すると、関節に供給されるランダムなトルクによって人型ロボットは再び倒れてしまいます。
詳細については、環境についてさらに詳しい情報が得られるgymnasiumのドキュメントを参照してください。
次に、この人型ロボットのタスクのためにニューラルネットワークを訓練するために使用するアルゴリズムについて理解しましょう。アルゴリズムに入る前に、いくつか理解しておくべきことがあります。
S1で表される単純な状態を考えてみましょう。この状態値は単なる348個の値の配列です。これは環境(この場合は人型ロボット)から得られる観測値です。アクション値(つまりトルク)を得るために、これらの状態をニューラルネットワークに入力します。ネットワークはアクション値を出力し、これらのアクション値は人型ロボットのためのトルクとなります。これらはネットワークの方策と考えることができます。
アクションを取ることで報酬も得られます。状態S1から開始して、ニューラルネットワークを使用してアクションA1を取り、報酬R1を得て、新しい状態S2に移動します。ニューラルネットワークを使用してアクションA2を取り、報酬R2を得ます。このプロセスを繰り返すことで、状態、アクション、報酬のコレクションが得られます。
つまり、環境から状態を取得し、ニューラルネットワークでアクションを取り、そのアクションによって報酬を得て、新しい状態に移動するというプロセスを行っています。このプロセスを繰り返して、すべての状態・アクション・報酬のペアを取得します。各状態・アクション・報酬のペアは、各アクションの後に新しい状態に移動するため、タイムステップとして知られています。
これらの報酬はすべて、環境について議論したときに説明したルールに基づいて収集されています。これらは環境から収集した報酬です。
割引報酬を理解するために、単純な報酬値を使用してみましょう。エピソードの最後に1つの報酬を得て、他のすべてのステップでは報酬が0であったと仮定します。これらは人型ロボットからの実際の報酬ではなく、割引報酬の概念を理解するためのものです。
これらの新しい報酬が、計算したい報酬です。これらの割引報酬は、上記の報酬に基づいて計算されます。割引率0.9での報酬の値は、この式を使って簡単に計算できます。割引報酬は非常にシンプルな概念です。タイムステップTでの報酬を取り、タイムステップt+1での割引報酬に割引率を掛けたものを加算します。
開始時点では、9ステップ後に報酬1を得るので、開始時の報酬値は割引形式となります。これは報酬からある距離があるためです。最後で報酬1を得ました。負の報酬-1を得ることもあり、これによってエピソード全体の割引報酬も変化します。
複数のポイントで報酬を得て、各ポイントでの割引報酬を計算することができ、複数の報酬による割引報酬の変化を確認できます。エピソード後に複数の報酬を得ることになります。ここでエピソードとは、複数のタイムステップで構成される人型ロボットの1回のプレイを指します。
では、各ポイントでの報酬が良いかどうかをどのように判断すればよいでしょうか。言い換えれば、将来この方策を採用すべきかどうかということです。これが私たちが収集したデータです。目標は、これらの報酬が私たちにとって良いものかどうかを判断することでした。
以前は、状態を入力として受け取り、その状態からアクションを生成する1つのネットワークがありました。これは私たちが訓練する2番目のネットワークで、同じく状態を入力として受け取り、与えられた状態に対してスカラー値を出力として生成します。この値は、現在の方策に従った場合の期待報酬です。
2番目のネットワークを使用して、すべての状態に対して生成されたすべての値がここにあります。タイムステップ数がtである状態Stを取り、この状態に対するアクションaを得ます。同様に、2番目のネットワークを使用してタイムステップTの値を得ます。
しかし、私たちの目標は、与えられたタイムステップでの報酬が良いかどうかを計算することでした。では、どの報酬が良くて、どの報酬が良くないのかをどのように判断すればよいでしょうか。
そのために、各状態のアドバンテージ値を計算します。各ステップでのこのアドバンテージは、この方程式で計算されます。タイムステップTでのアドバンテージは、タイムステップTでの報酬からタイムステップTでの値を引いて計算されます。報酬は、現在の方策で環境と相互作用してどれだけの報酬を得たかを示す割引報酬であり、値は現在の方策から期待される報酬量を示します。
アドバンテージが正の場合、期待よりも多くの報酬を得たことを意味するので、これは良いアクションであり、将来このアクションをより頻繁に取るべきです。アドバンテージが負の場合、期待よりも少ない報酬を得たことを意味するので、このアクションは良くなく、将来このアクションを少なくすべきです。
このアクション値は決定論的で、方策ネットワークから得られますが、ここではPPOで分布からサンプリングする確率的方策を使用したいと考えています。アドバンテージが正の場合、古い方策は良く機能したアクションを奨励するように更新され、良い行動を強化する確率が高まります。アドバンテージが負の場合、古い方策は悪い結果をもたらしたアクションを避けるように調整され、悪い決定を防ぐためにそれらの確率が減少します。
これにより、新しい方策は時間とともに改善されます。このクリップ関数は、方策をゆっくりと更新するためのものです。これについては、オリジナルのPPO論文でさらに詳しく学ぶことができます。2番目のネットワークを更新するために、割引報酬との平均二乗誤差を取ります。
これは深層強化学習の基本的な理解を含む、近位方策最適化アルゴリズムの概要でした。私たちの主な目標は、このアルゴリズムを使用して人型ロボットを訓練することでした。このアルゴリズムについては、さらに詳しく学ぶことができます。
トレーニング前は、結果はこのようになっています。人型ロボットが倒れると新しいエピソードが即座に開始されるため、複数のエピソードを連続して見ていることに注意してください。アルゴリズムのトレーニングを開始すると、タイムステップ数とともに報酬が改善していくのが分かります。50万タイムステップ後、人型ロボットはより長く立ち続けることができるようになり、そのため追加の報酬を得ています。これはアルゴリズムがデータから学習していることを示しています。
約200万ステップのトレーニングを行うと、報酬がより高くなるのが分かります。これは、結果がより良くなることを意味します。200万タイムステップ後、人型ロボットはより長く立ち続けることができ、x軸の正の方向に沿って動き始めました。これは、アルゴリズムが正しく機能していることを意味します。
ソフトアクタークリティックと呼ばれる別のアルゴリズムは、わずか50万タイムステップでもっと良い性能を発揮します。
コメント