Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DeepMimic: Example-Guided Deep Reinforcement Learning of Physics-Based Character Skills #44

Open
kzmssk opened this issue Jul 18, 2018 · 0 comments

Comments

@kzmssk
Copy link
Member

kzmssk commented Jul 18, 2018

モーションキャプチャデータなどの姿勢模倣を報酬デザインに取り入れることで自然な動きでかつタスクを達成できる強化学習手法を提案

論文本体・著者

  • DeepMimic: Example-Guided Deep Reinforcement Learning of Physics-Based Character Skills

解きたい問題

  • シミュレートされた3D物理環境下でのキャラクターのモーションを自動生成する強化学習エージェントをつくる
    • 動作の報酬デザインや学習法を工夫すれば重力下でも二足歩行・走行ができるが,腕を振り上げるといった不自然な動きが見られる

新規性

  • モーションキャプチャーなどで収集したモーションデータを模倣する報酬を与えることで,自然な動きをしつつも特定のタスクを達成する方策を学習する方法を提案したこと
    • 従来の手法では困難だった不自然な動きを排除しつつダイナミックな動作(回し蹴りなど)の生成を強化学習で達成

実装

  • 現在のキャラクターの姿勢と遂行させたいゴールの情報から次時刻の姿勢(関節角度列)を推定する方策を方策勾配法で学習
    • 報酬は事前に用意したモーションデータとエージェントによって制御されたキャラ姿勢との距離(姿勢の模倣)と,タスクの達成の報酬
      • モーションデータはモーションキャプチャーや手作りされたキーフレームのデータ
      • タスクはパンチ,キックなどのStrikingやボール投げなど
    • 方策関数を使ってキャラクターを制御し探索のためのデータ(エピソード)を集める
      • ダイナミックな動作を学習するために初期姿勢のサンプリングとエピソードの短期打ち切りを行う
      • 既存手法では初期姿勢が固定だったが,提案手法では模倣対象となるデータからランダムに取り出して初期姿勢として使う
        • 毎回初期姿勢から始めると,バク転などの場合に動作の後半に到達できないまま学習が収束してしまう
      • キャラクターの胴体か頭が地面に触れたら報酬を0のまま最終時刻まで何もさせない
        • 不自然な動きを学習させないため
    • 姿勢模倣の報酬は複数のキャプチャーデータに対して計算する
      • 候補となる複数のキャプチャーデータの中から最も近いものを報酬として採用する
    • 複数の動作パターンを学習させるときには,どのパターンかを表すone-hot vectorを方策関数の入力に加える
      • 動作パターンごとにサブの方策関数を用意して,それぞれに対応して推定された価値(Value)によって重み付けされた価値関数を使う
    • 方策関数,価値関数はFeed forward nural netowk

実験・議論

結果はプロジェクトページの動画で紹介されている https://xbpeng.github.io/projects/DeepMimic

deepmimic_fig3
論文 Fig. 3 より 実験に使われたキャラクターモデル
  • 4つのモデルをBullet Engineの環境下で試した
    • 方策関数は30Hzで呼ばれる
    • (a)Humanoidと(b) Atlasは人のモーションキャプションデータ,(c) T-Rexと(d) Dragonは人が作ったキーフレームデータ
    • (a)Humanoidでは歩く,走るなどの動作の模倣を行い,さらにバク転や回し蹴りなどの地面との接触が重要になる動作も行えるようになった
      • 模倣報酬,タスク達成報酬のいずれかのみを使って学習するよりも両者を合わせた提案手法のほうが動作達成率が高かった
    • (b) AtlasはHumanoidと大きく重さバランスが異なるものの,人のデータをうまく模倣しつつ動作生成ができた
    • 複数の動作パターンを学習させた場合,与えられた動作ゴールに応じてインタラクティブに模倣対象のパターンを変えていた
      • 転んだときに起き上がりの動作パターンにスイッチしてリカバリも行える
    • 平らな地面で収集された着地のキャプチャデータを使って段差のある環境での着地動作を獲得できた
    • キャラクター周辺の地面の有無を方策関数に入力することで狭い崖道も歩けるようになった
    • 力による外乱にもある程度まで耐えられた

読んだ中での不明点などの感想

  • 知りたいこと
    • 模倣対象となる動作データをどこまで減らしても動作の自然さが失われないか?
    • キャラクターの身体構造の違いはどこまで許容されているのか?
  • コメント
    • 2つの報酬を合わせる割合や報酬デザインなどのハイパーパラメーターを決めるのがまだ難しそうに思える

関連論文

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants