麻雀AI開発その89・他家から切られる牌分布とニューラルネットその2
2018-08-16(Thu)
2日ほど経過して出てきた重みパラメータ(100回ミニバッジ×100000回のパラメータ更新)を基にcsvファイルから予測切られ率を出してみたところ、
端牌・字牌の切られ率がやや高く、赤牌はかなり切られにくい、程度の結果にしかなっておらず、
枚数とか、他家攻撃への対応みたいなことがほとんどできてない状況でした。
損失関数の推移から覚悟はしていたけど、丸2日たってこれだから学習がほとんど進んでないことがわかりました。
そもそも高々1千万回ニューラルネットをぶん回すだけで、2日も計算時間がかかる時点でちょっときつすぎます。
そこで、昨日から今日にかけて、なんとか計算時間が縮まらないものか、と試行錯誤してました。
一番簡単なのは活性化関数をLeaky Reluから普通のReluに変えたこと。
中間層がマイナスになったノードは微分が0で計算しなくて済むのでおそらく計算時間が半分になるはず。
後は、ループ内で同じ変数を参照する場合の作業量を減らそうと、ループ外に出したりとか1次元配列をジャグ配列に変えて配列の参照を工夫するとか、なるべく演算の数を減らすとか涙ぐましいというかせせこましい努力をしてました。
それによって微分の数値が合わないとかも出てきてコード書くのがストップするハプニングもあったりとか。
ただ計算時間を細かく計測したりもしてみましたが、どうあがいてもDouble型変数の加算代入がたくさん(1回ニューラルネットあたり出力層37個×中間層50個×入力層150~200回)の部分で時間がとられる構図は変わらなかったです。
重みパラメータを使ってる以上、浮動小数点のDouble型で加算をするのは最低必要(だと思ってる)なので、現状どうしようもないと。
今日のバージョンの機械学習だと、100回ミニバッジ×100回重みパラメータ更新の繰り返しにかかる時間は1分20秒ほど。
せいぜい前回の倍くらいまでしか、速度が上がってないです。
果たして今の方式でまともに切られる牌分布を機械学習で求められる日はくるのだろうか、と旧PCの黒いコンソール画面の文字を見つめつつ、もの思ひに耽る今日この頃。
端牌・字牌の切られ率がやや高く、赤牌はかなり切られにくい、程度の結果にしかなっておらず、
枚数とか、他家攻撃への対応みたいなことがほとんどできてない状況でした。
損失関数の推移から覚悟はしていたけど、丸2日たってこれだから学習がほとんど進んでないことがわかりました。
そもそも高々1千万回ニューラルネットをぶん回すだけで、2日も計算時間がかかる時点でちょっときつすぎます。
そこで、昨日から今日にかけて、なんとか計算時間が縮まらないものか、と試行錯誤してました。
一番簡単なのは活性化関数をLeaky Reluから普通のReluに変えたこと。
中間層がマイナスになったノードは微分が0で計算しなくて済むのでおそらく計算時間が半分になるはず。
後は、ループ内で同じ変数を参照する場合の作業量を減らそうと、ループ外に出したりとか1次元配列をジャグ配列に変えて配列の参照を工夫するとか、なるべく演算の数を減らすとか涙ぐましいというかせせこましい努力をしてました。
それによって微分の数値が合わないとかも出てきてコード書くのがストップするハプニングもあったりとか。
ただ計算時間を細かく計測したりもしてみましたが、どうあがいてもDouble型変数の加算代入がたくさん(1回ニューラルネットあたり出力層37個×中間層50個×入力層150~200回)の部分で時間がとられる構図は変わらなかったです。
重みパラメータを使ってる以上、浮動小数点のDouble型で加算をするのは最低必要(だと思ってる)なので、現状どうしようもないと。
今日のバージョンの機械学習だと、100回ミニバッジ×100回重みパラメータ更新の繰り返しにかかる時間は1分20秒ほど。
せいぜい前回の倍くらいまでしか、速度が上がってないです。
果たして今の方式でまともに切られる牌分布を機械学習で求められる日はくるのだろうか、と旧PCの黒いコンソール画面の文字を見つめつつ、もの思ひに耽る今日この頃。
スポンサーサイト