post Image
Unityの機械学習ライブラリで歩くモーションを作成する実験をした

概要

前回の続き。歩くモーションも出来るんじゃないかと思って実験してみた。
(前回の記事)Unityの機械学習ライブラリで待機モーションを作成する実験をした

出来たのが以下のもの。想像の範囲外の歩き方になった。これが機械学習の面白いところかもしれない。

この記事にはこの歩き方にいたるまでの試行錯誤の過程を書いておこうと思う。

失敗例1

まずは歩いて前進するという行為を要素に分解してみた。

  • 足以外の部分が地面につかない(待機モーションと同じ)
  • 目標地点に到達するように移動する

これをAgentが得られる報酬に置き換えると

  • 足以外の部分が地面に設置したら罰則を与えてstep終了しリセット
  • 目標地点に到達したら報酬を得られてstep終了しリセット
  • 1step毎に目標地点に近いほど多く報酬をもらえる

その結果がこれ。

おそらくこの条件が良くなくて、前に倒れこむだけで報酬が貰えるという欠陥があるのだろうと推測。

  • 1step毎に目標地点に近いほど多く報酬をもらえる

失敗例2

失敗例1の欠点である倒れこむだけで報酬が貰えるのを改善する為に目的地までの間に撒き餌をまいて、撒き餌を採ると報酬が貰える条件を追加してみた。

  • 足以外の部分が地面に設置したら罰則を与えてstep終了しリセット
  • 目標地点に到達したら報酬を得られてstep終了しリセット
  • 1step毎に目標地点に近いほど多く報酬をもらえる(近づいたときだけ貰える)
  • (New)撒き餌を採ったら報酬が貰える

結果がこれ。

これまでのように足が地面についたまま倒れこむのではなく、足を浮かせて前に進もうとしているのが分かる。一歩を踏み出したので大きな前進である。

成功例

正直、これ以上どんな条件を加えれば良いのか思い浮かばなかったので、公式のページをここで初めて参考にしてみた。
Camera as a state #92
Agentの状態を測定するのに、手動で加えたState(前回の記事ではStateにRagdollの位置、速度を与えた)だけではなく、Cameraからの画像を利用する方法があるようだ。これを利用してみる。設定は、Agentのインスペクタのobservationsにカメラを設定するとの事。

alt

カメラを使うと計算時間が何倍にもなるようで自分の環境で30分ぐらいで済んでいた計算が3時間ほどかかった。
ただ、結果としては概要で示したように、満足いくものとなった。今回の実験のように、操作するパラメタ(36つ)と監視するパラメタ(72こ)が多い場合はカメラを使った方が効率的に分析できるのかも?

成功例の考察

なぜ、奇妙な動き方になったのかは正直分からない。どの関節にも均等に偏りなく回転速度を与えるようにしたし、報酬を与える条件も目的値に近づくという単純な条件だけである。Unityの物理エンジンにおいてRagdollが一番安定して移動できる方法がそれだったという事か。


『 機械学習 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。