麻雀AI開発その91・他家から切られる牌分布とニューラルネットその4
2018-08-19(Sun)
前回の最後で書いた通り、関連の深そうな特徴量を人力でセッティングする方式でニューラルネットを組んでみました。
盤面全体を放り込むより、情報量を絞っているので、入力層ノード数が100くらいまで落ちました。10分の1サイズ。これは計算速度的に期待が持てる…、と思って実際動かしてみたら10倍の学習量を同じくらいの時間(丸1日)でやることができました。
損失関数の減り方も学習が進むにつれてもりもり減ってくれていい感じ。
結果はこんな感じ↓。(従前のパラメータの単純乗算方式と比較してみました。)

1巡目。
悪くない。ヤオ九牌の切られ率が高く、役牌とオタ風の区別もついてるっぽい。

5巡目。
字牌の切られ率からして、枚数の分別はついてるっぽい。

11巡目。

対リーチ。
ややニューラルネットの方が無筋を切る率を高く出力してるのはちょっと気になる。
多分、損失関数の取り方的に大半を占めるリーチ者なし側のデータに引っ張られがちだと思われるので、リーチ者ありデータは完全に別個で学習させる方がいいかもしれない。
全体的にはまだ粗は目立つが、学習の方法次第ではうまいことなりそうな予感。
少なくとも前回よりは明らかに改善しています。
問題は従前方式とニューラルネットとどっちを信用すべきか、という問題。
理論的にはニューラルネットの方が変数間の相互依存関係も見てるので、信用したいところなのですが、私の理解の外にあるので、融通が利きづらく、完全に身をまかせるのはまだかなり不安があるところ。
これは今のところ結論はついてないです。
とりあえず、リーチ者有無で分別するのと、より詳細化(ドラ情報とかカベ効果とか)の作業を進めてみましょうか。
盤面全体を放り込むより、情報量を絞っているので、入力層ノード数が100くらいまで落ちました。10分の1サイズ。これは計算速度的に期待が持てる…、と思って実際動かしてみたら10倍の学習量を同じくらいの時間(丸1日)でやることができました。
損失関数の減り方も学習が進むにつれてもりもり減ってくれていい感じ。
結果はこんな感じ↓。(従前のパラメータの単純乗算方式と比較してみました。)

1巡目。
悪くない。ヤオ九牌の切られ率が高く、役牌とオタ風の区別もついてるっぽい。

5巡目。
字牌の切られ率からして、枚数の分別はついてるっぽい。

11巡目。

対リーチ。
ややニューラルネットの方が無筋を切る率を高く出力してるのはちょっと気になる。
多分、損失関数の取り方的に大半を占めるリーチ者なし側のデータに引っ張られがちだと思われるので、リーチ者ありデータは完全に別個で学習させる方がいいかもしれない。
全体的にはまだ粗は目立つが、学習の方法次第ではうまいことなりそうな予感。
少なくとも前回よりは明らかに改善しています。
問題は従前方式とニューラルネットとどっちを信用すべきか、という問題。
理論的にはニューラルネットの方が変数間の相互依存関係も見てるので、信用したいところなのですが、私の理解の外にあるので、融通が利きづらく、完全に身をまかせるのはまだかなり不安があるところ。
これは今のところ結論はついてないです。
とりあえず、リーチ者有無で分別するのと、より詳細化(ドラ情報とかカベ効果とか)の作業を進めてみましょうか。
スポンサーサイト