[Unity]:ml-agentsのBasicデモを改良する

[検証バージョン]
Unity 2017.2.0p4
Unity ML – Agents (Beta) 0.2

Unityが提供している機械学習の仕組みに関するお話です。

Unity ML – Agents (Beta)に含まれるBasicデモが、学習させても期待通りの結果が得られなかったので、学習に使用するstateを増やしたところ概ね期待する結果が得られるようになりました。

・デモの内容
エージェントが1マスずつ左右に動き、ゴールに到達したらリワードを獲得。
ゴールは2種類あり、片方は近いがリワードは小さい、もう片方は遠いがリワードは大きい。

・変更内容
Brainが判断をするために与えられている情報(state)がエージェントの左右の位置しか無かったので、各ゴールの位置も渡すように変更。

1.BrainのStateSpaceTypeをDiscrete→Continuousに変更し、StateSizeを元々の1→3に増やす。

2.BasicAgent.cs内のCollectState()にて収集する情報を追加する。

	public override List<float> CollectState()
	{
		List<float> state = new List<float>();
		state.Add(minPosition); // 追加
		state.Add(maxPosition); // 追加
		state.Add(position); // 元々ある行
		return state;
	}

・補足
かなり単純なデモでありながら、8エージェント×10,000ステップの学習でもまだ無駄な動きがあるように見えるので、もっとパラメータや処理の調整が必要なのかもしれません。

・追記-改善案(未検証)
1.位置情報に関するstateはエージェントとの相対座標でコード化した方が良い。
Environment Design Best Practices

2.エージェントのObservationsにカメラを設定することで、視覚情報を与え学習の効率化ができるかもしれない。
Learning Environments Overviewの最後の項Additional FeaturesのComplex Visual Observations

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です