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

Learning Basketball Dribbling Skills Using Trajectory Optimization and Deep Reinforcement Learning #46

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

Comments

@kzmssk
Copy link
Member

kzmssk commented Jul 20, 2018

物理シミュレーション環境下でのバスケットプレイヤーのドリブルモーションをモーションキャプチャデータを利用した強化学習で実現

論文本体・著者

  • Learning Basketball Dribbling Skills Using Trajectory Optimization and Deep Reinforcement Learning

解きたい問題

  • 物理シミュレーション環境下でのバスケットプレイヤーのドリブルを含むモーション生成をオンラインに行えるモデルを作りたい
    • 止まった状態でのボールハンドリングと走りながらのドリブルを含む

新規性

  • 強化学習を利用してオブジェクトとの継続的なインタラクションを含むダイナミックな動きを実現したこと
    • 特にドリブルはキャラクターとボールの接触時間が短く精緻な制御を継続的に行う必要がある
    • 実際のプレイヤーをキャプチャーしたデータを導入することで効率的な学習を行うアルゴリズムを提案した
      • 既存のモーキャプデータを利用した線形回帰によるモーション生成手法を拡張

実装

basketballdribblingskills_2
論文 Fig. 2 より

モーキャプデータの線形回帰をベースに追加学習を行う.ただデータを再現するだけだとシミュレーション環境下ではうまく動かない

  • 実際のプレイヤーの動きをモーションキャプチャーで記録
  • 両腕(手も含む)とそれ以外の動作(Locomotion)を別々に最適化
    • Locomotionはボールなしでモーキャプデータの回帰
    • 両腕についてはボールの挙動を考慮し最適化を行う.ゴールはキャラの状態から関節角度列を推定する方策関数を得ること.
      • Trajectory Optimization:線形回帰のための教師データ作り
        • 共分散行列適応進化戦略(Covariance Matrix Adaptation Evolution Strategy, CMA-ES)を使って腕の関節角度列(肩・肘・手首のモーキャプデータからのオフセット角度・手の開閉度合い)を求める.
        • 目的関数は特定の時間における,指とボールの距離とボールと手の接触の有無の和
      • Linear Regression:線形回帰で方策関数をつくる
        • キャラとボールの状態を入力として,腕の関節角度列を決定する方策関数を線形回帰で求める
        • 入力:ボールとキャラの位置・速度,ボールと手の距離,キャラの質量中心,キャラが向いている方向の角運動量
        • 出力:腕の関節角度列
        • 教師信号:Trajectory Optimizationで最適化された腕の関節角度列
      • Deep Reinforcement Learning: 非線形な方策関数を学習でつくる
        • Deep Deterministic Policy Gradient(DDPG)を使う
        • ActorとCriticは共にFeed Forward Neural Network
        • Replay Bufferは本来Actorが環境に対して働きかけて収集するが,学習の初期段階のみLinear Regressionで求めた方策関数を使って収集する

実験・議論

学習結果の動画

basketballdribblingskills_12
論文 Fig. 12 より 横軸が学習ステップ,縦軸が1万回の同じ動作を繰り返したときの失敗回数
basketballdribblingskills_13
論文 Fig. 13 より Linear Regressionによって方策関数を初期化する場合,しない場合の比較
  • 5種類のスキルを学習させたところ,どれも1万回に10回以下の失敗程度まで達成できた
    • A: 立ったまま両手でボールを横に移動させる(Carrying while swinging arms)
    • B: 片手でドリブル(dribbling w/ one hand)
    • C: ボールを腰の周りでまわす(rotating around the waist)
    • D: 両手でドリブル(dribbling w/ both hands)
    • E: 走りながらドリブル(dribbling while running)
  • 外から突発的な力を加えて妨害してもある程度まで耐えられた
  • 未学習のボールの反発係数でも多少の変動であれば対応できた
  • Linear Regressionを導入することで精度の向上が見られた(Fig. 13)
  • A~Eのうち,特定のスキル間を遷移するような学習も行うことができた

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

  • 腕+ボールとそれ以外の部位の動きを別々に学習しているが,両者のインタラクションを考える必要はないのだろうか?
    • ボールの動きに合わせて下半身の動き方を変えることがこの方法ではできない
  • キャラクターがどのようにスキルを切り替え・どの方向にドリブルをするのかをユーザーが操作することができない
  • エージェントが予測できないボールの動きにどれくらい適応できるのかを知りたかった
    • 例:床の摩擦が一様でない場合など

関連論文

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