はじめてのpython&Tensorflowその9・他家リーチ
2018-10-26(Fri)
前回(はじめてのpython&Tensorflowその8・自分副露)から、
他家リーチ者ありのケースを訓練データに追加、入力チャンネルに他家リーチかどうかと、各牌の現物筋変数状況を追加。
今回もチャンネル数が増えただけで、モデルの構造に大きな変化はないのでTensorBoradのグラフ図は省略。
損失関数と正解率のグラフ↓。

途中で折れ曲がってるのは、最初の10epoch回して学習を打ち切ったのですが、グラフの曲線的に学習を進めればもうちょっと改善できそう?と思って、さらに10epoch追加で学習させたためです。
他家リーチへの対応とかいう普通の手作りと別要素が入ってくるにもかかわらず、正解率65%超えまで進んでくれていい感じ。
さらに学習を進めれば、まだまだ損失関数の改善が見込めそうですが、とりあえず試作段階なので、このへんで終えておきます。
手牌との突合せが↓。(最初の100件)

全体のバランス的にはリーチ者なしのサンプル数の割合のほうが高いので、前回とそんなに変わらないように見える。
対面リーチがある場合でフィルターをかけたものの最初の数十件↓。

対面リーチの件数は10000件中386件。予測1位的中率は58%、予測2位まで的中だと75%になってます。
対リーチだと手が広いことのほうが多い(現物や安全そうな牌が3種以上あるとか、危険牌を切って押し返しもあるとか)ので、全体よりは正解率は落ちますけど、それでも6割弱は正解を当てられてるというのは、自分としてはなかなかいいんじゃないか、と思いましたが、どうですかね?
次の課題は他家副露です。これで訓練データの制限は全部外れる(自分リーチの場合以外)ので、自分ツモ番についてのポリシーニューラルネットの決定版になりそうです。
ただ、他家副露まで含めると考えるべき要素が多くなるので、うまいこと入力データを作れるといいですが。
考えてる追加項目とすると、
・他家が副露しているかどうか、もしくは門前状態であるかどうか。
・他家副露数
・他家副露種類
・他家副露牌
・他家副露の見えてる役・ドラの枚数
・捨て牌が一色模様かどうか
・同巡フリテンと同巡筋牌
・ある牌が最後に通ってからの手出し回数
・同色5が切られてるかどうか、もしくは切られた巡目
・同色内側牌が切られてるかどうか、もしくは切られた巡目
・親番が誰か
・他家3人の役牌情報
・4人の点数
・残り局数
・積み棒、供託リーチ棒
うん、たくさんあるね。
一番難しそうなのは「捨て牌が一色模様かどうか」をどう定義してニューラルネットに組み込むかですね。
csvの容量的にもけっこう大変なことになってきてます。
現時点でエクセルで「AAR」列まで1件あたりのデータが増えてきてます。列番3桁は初めて見る。
他家リーチ者ありのケースを訓練データに追加、入力チャンネルに他家リーチかどうかと、各牌の現物筋変数状況を追加。
今回もチャンネル数が増えただけで、モデルの構造に大きな変化はないのでTensorBoradのグラフ図は省略。
損失関数と正解率のグラフ↓。

途中で折れ曲がってるのは、最初の10epoch回して学習を打ち切ったのですが、グラフの曲線的に学習を進めればもうちょっと改善できそう?と思って、さらに10epoch追加で学習させたためです。
他家リーチへの対応とかいう普通の手作りと別要素が入ってくるにもかかわらず、正解率65%超えまで進んでくれていい感じ。
さらに学習を進めれば、まだまだ損失関数の改善が見込めそうですが、とりあえず試作段階なので、このへんで終えておきます。
手牌との突合せが↓。(最初の100件)

全体のバランス的にはリーチ者なしのサンプル数の割合のほうが高いので、前回とそんなに変わらないように見える。
対面リーチがある場合でフィルターをかけたものの最初の数十件↓。

対面リーチの件数は10000件中386件。予測1位的中率は58%、予測2位まで的中だと75%になってます。
対リーチだと手が広いことのほうが多い(現物や安全そうな牌が3種以上あるとか、危険牌を切って押し返しもあるとか)ので、全体よりは正解率は落ちますけど、それでも6割弱は正解を当てられてるというのは、自分としてはなかなかいいんじゃないか、と思いましたが、どうですかね?
次の課題は他家副露です。これで訓練データの制限は全部外れる(自分リーチの場合以外)ので、自分ツモ番についてのポリシーニューラルネットの決定版になりそうです。
ただ、他家副露まで含めると考えるべき要素が多くなるので、うまいこと入力データを作れるといいですが。
考えてる追加項目とすると、
・他家が副露しているかどうか、もしくは門前状態であるかどうか。
・他家副露数
・他家副露種類
・他家副露牌
・他家副露の見えてる役・ドラの枚数
・捨て牌が一色模様かどうか
・同巡フリテンと同巡筋牌
・ある牌が最後に通ってからの手出し回数
・同色5が切られてるかどうか、もしくは切られた巡目
・同色内側牌が切られてるかどうか、もしくは切られた巡目
・親番が誰か
・他家3人の役牌情報
・4人の点数
・残り局数
・積み棒、供託リーチ棒
うん、たくさんあるね。
一番難しそうなのは「捨て牌が一色模様かどうか」をどう定義してニューラルネットに組み込むかですね。
csvの容量的にもけっこう大変なことになってきてます。
現時点でエクセルで「AAR」列まで1件あたりのデータが増えてきてます。列番3桁は初めて見る。
スポンサーサイト