一晩学習させて1000万ステップいきましたが、1バウンドOKなのに結局バドミントンみたいになってました
0から学習の様子を眺めて、分かったのが、学習の流れが、
- サーブすらできない
- サーブができるようになる
- サーブリターンができるようになる
- サーブリータンを打ち返して相手の背後に落とせる(ロブ)
- 互いにノーバウンドで打ち返すのが基本になる
サーブができないうちは、サーブを打ち返す練習ができないので、サーブができるようになった直後は、サーブを打ち返せない
サーブが打ち返せるようになると、打ち返しを打ち返す練習がまだできてないので、サービスエースばかり決まる
自己対戦なので、一つ習得すると、そこで停滞して、突破すると、またそこで停滞して
みたいに階段状に学習していく
サーブをノーバウンドで上からたたきつけるようになるのは、単にラケットが上まで上がりすぎるからと思う
水平面の移動は制限があるけど、垂直面は制限ないんで、人間なら5メートルの位置から叩きつける感じになって、
まるでバレーボールのブロックみたいな感じになってる
垂直移動を制限すれば、もうちょっとテニスに近づくんじゃないか? と思った
しかし、今の段階って、このテニスは2次元移動しかできないんですよね、実は
Z軸の移動も可能にして3次元にしたら学習収束がどれだけ遅くなるのかな?
あと学習の入力要素として、自分の位置・速度+ボールの位置・速度なんで、相手の位置を見ていないので、
本来、良い位置に打ち返すには、相手の位置も見る必要があると思う。
コンピュータ将棋なんて学習に一ヵ月かけて、あげく学習失敗なんてしてたから、一晩で行けるならまだマシですね
CUDAって手もあるし(さて何を買おうかな? レイトレには興味ないんでGTX1080かな?)
これだって評価関数は深層学習なんで凄いなあと。