Closed nissymori closed 2 years ago
ToDo
実験に必要な実装は一通り終わったので, 実験を始めていきます.
南四局の結果です.
いい感じですね。席によって違うかも確認したいですね。ラス親とそうでない人の違いとか。
-135超えちゃってるのが少し気になるな。。。🤔
-135超えちゃってるのが少し気になるな。。。🤔
そうですよね.... プロット時のデータの渡し方が悪いかもしれないので少し考えてみます!
明らかにoverfittingしていますが, 1000epochくらいでこんな感じです. データ足りないかも知れません.
とりあえず, 8局分学習を回してみようと思います!
あれ、なんで1000epochもやるんでしたっけ。。。 Validロスがサチってるんで10とかくらいで止めて良くないですか?!
ブートストラップでの8局全体の流れとりあえずやってもらえると🙏
あれ、なんで1000epochもやるんでしたっけ。。。 Validロスがサチってるんで10とかくらいで止めて良くないですか?!
傾向として, 少ないepochだとシャープな曲線にならなかったので, 実験的にか学習させてみた感じでした!
8局分の学習はエポック少なめでとりあえずやってみます!
学習させてみました.
いいですね!可視化のやつ。同じfigに重ねてもらえると比較しやすいかも? 計4枚になるはず。 やっぱりround7の時点でなんかおかしい気がするんですよね。。。3万超えてるだけで90超えないと思うんですよね
いいですね!可視化のやつ。同じfigに重ねてもらえると比較しやすいかも? 計4枚になるはず。 やっぱりround7の時点でなんかおかしい気がするんですよね。。。3万超えてるだけで90超えないと思うんですよね
これ対象のプレイヤー以外は全部同じ点数にしてるので2万5千点を少しでも超えるとトップになります. 少しずらすとまた結果変わると思います!
5000ずつくらいずらしてみようかと思います.
点数ずらしてみるのもいいと思いますけど、 3万ちょいで残り全員フラットでも2万点はありますよね。 満ツモで逆転トップなんて全然あるので、やっぱり3万超えてすぐ90超えるのはおかしい気がするんですよね。
点数ずらしてみるのもいいと思いますけど、 3万ちょいで残り全員フラットでも2万点はありますよね。 満ツモで逆転トップなんて全然あるので、やっぱり3万超えてすぐ90超えるのはおかしい気がするんですよね。
すみません実装間違っているかもしれません🙇♂️, 開始時のデータを予測に使うべきところを終了時のデータを使って学習していました. 終了時のデータだったので3万点で必ずトップ判定されていました.
現状では model7 南四局終了時 -> [90, 45, 0, -135]を予測 model6 南三局終了時 -> model7の南三局終了時の予測を予測 ...
としています.
確認ありがとうございます!いいですね!楽しみにしてます!!😆
確認ありがとうございます!いいですね!楽しみにしてます!!😆
とんでもないです. model7 南4局開始時 -> [90, 45, 0, -135]を予測 model6 南3局開始時 -> model7の南4局開始時の予測を予測 ... model0 東一局開始時 -> model1の東2局開始時の予測を予測
こちらが正しいという認識であっていますかね.
その場合, 東1局については, 親の場所と風から予測する感じになるってことですかね.
そうですね。
でも東一局も連荘したりして点数違う場面もあると思いますけどね。 なので終局時の情報じゃなくて開局時の情報使ったほうがいいと思います。
Model6のコメントなんか違う気しますけど
南3局開始時から南4局開始時のモデル7の予測、を予測する感じになりますね。 連荘のときがどうするか考える必要ありますけど、一旦気にしないでいきましょう
Model6のコメントなんか違う気しますけど 今修正しました!
でも東一局も連荘したりして点数違う場面もあると思いますけどね。 なので終局時の情報じゃなくて開局時の情報使ったほうがいいと思います。
了解です!
変更点
明日の夜に実装して実験してしまいます!
まだ途中ですけど, 結構いい感じな気がします!
いいですね!😆👍 あとは重ねてプロットすると見やすいかもです!
席ごとにプロットして見ました!
データの選び方
東一局だけ他の局と違いますね. 起家だけほとんどマイナスになっていないのは, 東一局開始時でマイナスであることがあり得ないからだと思います.起家以外がプラスにあまりならないのも同じ理由な気がします.
[-135, 90]からはみ出している値は報酬関数として組み込むときはclipすればいいですかね.
ありがとうございます!いい感じですね😆
ただやっぱりはみ出てるのが気になりますけどね。。。 とくに、段々と誤差が増えていってるように見えるんですよね。。。 毎回ターゲットを-135/90収まるようにしてます?してなかったらそのせいかもしれない? あとは解決しなければlogとか試してもいいかもしれない?
https://stats.stackexchange.com/questions/11985/how-to-model-bounded-target-variable
絶対値が大きいところで誤差が大きいのはあんまり良くないと思うんですよね。学習がそこに大きく影響受けてるはずなので。。。
ありがとうございます!いい感じですね😆
ただやっぱりはみ出てるのが気になりますけどね。。。 とくに、段々と誤差が増えていってるように見えるんですよね。。。 毎回ターゲットを-135/90収まるようにしてます?してなかったらそのせいかもしれない? あとは解決しなければlogとか試してもいいかもしれない?
https://stats.stackexchange.com/questions/11985/how-to-model-bounded-target-variable アドバイスありがとうございます! してませんでした.. targetを[-1.35, 0.90]でclipしてもう一回回してみます!
各局開始時の特徴量 $X_0 \in R^{n_0, d},...X_7 \in R^{n_7, d}$, 予測値: $Y_0 \in R^{n_0, d}, ... Y_7 \in R^{n_7, d}$, model: $f_0, ..f_7$とする. ある一局の特徴量とラベルを小文字で表現して,
$$y_7 = f_7(x_7) + \epsilon_7$$
$$ \epsilon \sim N(0, {\sigma_7}^2)$$
$$y_6 = y_7 - \epsilon_7 = f_6(x_6) + \epsilon_6 \Rightarrow y_7 = f_6(x_6) + \epsilon_6 + \epsilon_7$$
$$ \epsilon_6 + \epsilon_7 \sim N(0, {\sigma_6}^2 +{ \sigma_7}^2)$$
誤差は独立と仮定して良さそうです.各局で次の局のモデルの予測を予測することは実際にはその局から最終スコアを予測しているということが正当化できている気がします.
仮にNN$g$を用意して, $$y_7 = g(x_6) + \epsilon$$とした時今回の手法と誤差の分散が同じになるかどうか気になるところ(同じになりそう.)
単に1半荘に一局サンプリングして局ごとに最終スコアを予測するというアルゴリズムに比べて確かにデータ八倍になりますね! 式にして考えていなかったので, 今まで完璧に理解していませんでしたが, すごくいい手法だと思いました!
麻雀みたいにリワードがスパースなゲームの報酬設計に普遍的に使えそうだと思いました.
スーパーフェニックス方式ではNNを一つしか使っていないので, 各局についてこちらの方が分散が小さいということができそうだと思いました.NN8個使うので単純な比較はできないかもしれませんが..
clipして学習させてみました! だいぶんマシになりましたが, まだ少しはみ出ています..
一回上のリンクにある手法試してみてvalid誤差比較してみてもいいかもですね。
要するにターゲットを (t + 135) / 225
で変換してから exp(f(x)) / (1 + exp(f(x)))
で予測するだけですが。
ToDo
学習させられました. 東家の結果のみ添付します. suphx no logistic TD no logistic suphx logistic TD logistic
validationのgame rewardとの絶対誤差について TDの方は局ごとにデータがあります. suphxの方は局ごとでなく全体でのデータのみがある状態です. 明日suphxの局ごとのデータを取ります.
@sotetsuk 学習後の絶対誤差も評価できるようになりました. このPRは閉じて, 次のPRでいくつか試してみようと思います.
了解です!セルフマージしちゃって下さい🙏@nissymori
1127