「訓練」 は,つぎがこれの全体:
- 初期設定
初期状態 s_0 を設定。
Policy (ニューラルネットのパラメータ値) を,ランダムに初期設定。
- Policy π_θ が,状態 s_t から行動 a_t を出す
(これは,「ロボットが動く」 に対応)
註. 表記について :
- π_θ のπは,Policy の P に対応するギリシア文字。
θは,「Policy = ニューラルネットのパラメータ値」 の 「パラメータ値」 を表現。
- s_t, a_t の t は,離散に順序づけられた時刻。
- 環境が,行動 a_t の結果を返す
次状態 s_{t+1}
報酬 r_t
終了フラグ done
- これをログに保存
(s_t, a_t, r_t, s_{t+1}, done)
これが 訓練データ1件。
- Policy π_θ は同じままで,1〜3 を数?回繰り返す
これにより,数?件のデータが自動生成。
- このデータを使って Policy を更新
(1) 価値関数 V(s) を使って TD 誤差 δ を計算
(2) GAE でアドバンテージ A を計算
(3) 目的関数 L^CLIP を最大化するように
Policy π_θ を更新
- 更新後の Policy でまた環境を回す
数?〜数?回繰り返す。
即ち,
未熟な Policy で行動する
→ 未熟なデータが集まる
→ そのデータで Policy を改善
→ 改善された Policy でまた行動
→ より良いデータが集まる
→ さらに改善
外見は 「 Policy の成長」 だが,
「ニューラルネットのパラメータ値の更新」
と対応している。
Policy の更新を延々と繰り返すと…
最初:
足をバタつかせてすぐ転ぶ
中盤:
にじり寄るように少し前進するが,まだ不安定
終盤:
低重心を保ちつつ4 本の脚を協調させて前進
|