*All archives* |  *Admin*

<<08  2017/09  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30  10>>
麻雀AI開発その70・染め手率と機械学習その4
前回の続きです。

ニューラルネットで染め手率を予測しようといろいろアルゴリズムとかをいじっています。

まず、パラメータの数値の選定方法として使っている、遺伝アルゴリズムがどうも胡散臭い感じがしたので、そこを疑うことにしました。
次元の数が数万クラス(入力層200前後、中間層200)のものに対して、損失関数の低さ的に優勢なものが生き残りやすい構造にしているとはいえ、基本的によさげなものをしらみつぶし的に調べる方式に近いので、次元のでかさ(パラメータの取り得る幅)に対して十分探索できていないのではないか、という疑惑です。

ちょうどいいところに確率的勾配降下法というのを勉強してなんとか使えそうだったので、そっちに移行することにしました。
こっちなら損失関数の勾配をだんだん下っていく感じなので、全探索的な方法じゃなくていいかなーと思ったので。
ただ微分を計算しないといけなくて、なかなか理論微分値と実測微分値が合わなくて苦労しましたが。
「おぷてぃまいざー」とかいうなんか確率的勾配降下法の中でもいろいろアルゴリズムの種類があるらしかったのですが、「AdaDelta」というものを採用しました。理由はなんか収束が早い部類らしくてわりかしコード書くのが簡単めだったから。後はノリ。

後は、サンプル数の偏り(非染め手の方が10倍くらい多い)があったので、染め手と非染め手の偏微分の計算を1件ずつ交互にする(染め手と非染め手で別のリストを作って全件調べ終わったらまた先頭に戻る)ことでサンプル数をそろえる的なことをやってみました。

ただ、これでもなかなか狙った通りの予測染め手率になってくれませんでした。(かなり上目の数値が出る傾向があった。)
あくまでトータルの損失関数が最小値を取るパラメータ群を求めてるだけなので、必ずしも実際の染め手率とは合わないのかもしれません。

出てきたパラメータを実際の牌譜(訓練データとほぼイコール)に当てはめて、ニューラルネットの関数にぶちこんだものを柱状グラフみたいなので分析してみたのが↓のグラフみたいな感じです。
170929-01.png
捨て牌と鳴き方から求めた予測染め手率が45%~50%の間に入ってるのが2426件(全体は1000試合までのデータで113160件)あって、そのうち訓練データの答えが「染め手」と判断した(つまり、終局までの間に手持ち非染め色が1枚以下だった瞬間があった)件数は204件なので、実際に染め手だった割合は8%くらいしかないので、実際と予測がだいぶずれています。

予測と実測はイコールではないけれども、↑のグラフを見るとなんとなく正の相関(線形ではなさそうだけど)があるように見えます。

ためしに予測染め手率と実測染め手率のロジスティック変換(y=log(x/(1-x)))を噛まして散布図を描いてみると…
170929-02.png
なんかよくわからんけど、かなり強い正の相関があって、しかも直線で回帰式っぽいものができそうでした。
(実際は各ラベルごとのサンプル数が異なるので、単純に回帰式の公式に当てはめるのはちょっとやばいんですけど、もう勢いでそのままにしちゃった。)

…というわけで、次のような形で染め手率を予測します。
(1)捨て牌と鳴き方を入力値として、確率的勾配降下法で求めたパラメータを使って中間的な予測染め手指数的なのを出す。(ただし、次のステップに渡すのは出力層の活性化関数(シグモイド関数)を噛ます前の値)
(2)回帰直線(1次式)で中間的な予測染め手指数を変換する。
(3)最後にシグモイド関数を噛ませて最終的な予測染め手率とする。

実際の牌譜で確かめてみます。
170929-03.png
東ポンで1p8pの切り出し。
マンズとソーズの染め手率が8%ずつ。

捨て牌的にはやや染め手っぽいけど、役牌ポンなのでその点では染め手っぽくない。
なので、両方合わせて16%くらいというのは、そこまで感覚とかけ離れてる、というわけではないように思います。
170929-04.png
続いて打発。
字牌なので、染め手っぽさが少し薄れて、予測染め手率4%+4%。これもいいでしょう。
170929-05.png
次の例。

789pチーで4m2mの切り出し。相当染め手っぽいけど、予測値は30%くらい。うーん、ちょっと予測値が低いように感じるけど、まぁ役牌後付とか三色一通チャンタ系もあり得るので、著しく不合理まではいかないか。
170929-06.png
白ポンで打東。
染め手っぽさはちょっと薄れて10%くらいまで予測染め率が下がる。まぁこれもいいでしょう。


結局のところ、重要なのはシミュレーションでの挙動なので、染め手割合が10%単位で違うということでなければ、まぁそこまで細かく染め手率が1%2%違うからといって、目くじら立てなくてもいいような気がします。
実際、こういう予測染め手割合の求め方をデータ面から一般に出してる人は今のところいないでしょうし、今のところはこれでいいことにしましょう。
なにより、同じテーマでとどまり続けるのに飽きてきました。

なんで、予測染め手率についてはこれでいいとして、次は実際に染め手に向かった者の挙動についてパラメータを取得する作業に移ろうと思います。
ただ、これについてもけっこういろいろ取るべきパラメータの種類は多いです。
単純に今までリーチと副露(+ダマ)のパラメータを取ってたものに新たに染めが加わるに等しいので、今までの作業の半分くらいの分量を新たにやる必要があります。

また、シミュレーションの難易度も染め手かどうかの分岐が入るので、より難しくなります。

まぁ、次の段階に進めただけでもよしとしましょうか。
スポンサーサイト
麻雀AI開発その69・染め手率と機械学習その3
前回(麻雀AI開発その68・染め手率と機械学習その2)の続きです。

続きなんですけど、染め手率の予測関数を作るのがかなり難航しています。
パラメータらしいものは取れるんですけども、なかなか実際の感覚と適合してくれない状況です。

例その1
170926-01.png
役牌ポンで3巡目発以外は全部ピンズの捨て牌。
まだマンズかソーズかは分からないですけど、この局面のマンズ染め手率とソーズ染め手率の予測値として、
0.75%という結果を返してきます。両方合わせて1.5%。
いくらなんでもそれは低すぎじゃないですかね?

副露手のうち染め手に向かっている割合は1割前後なので、役牌ポンで初手が端牌であることを考慮したとしてももうちょい高いのを出してほしいところですが。体感的には少なくともこの手の染め手率5%くらいはあると思うんですけど、どうでしょう。

例その2
170926-02.png
ピンズ端の仕掛けで、4m2mの切り出し。
この情報でピンズ染め手率56.6%というのはまぁいいとしましょう。
170926-03.png
ここから白ポンして打東で、染め手率が一気に10.7%まで低下。
確かにホンイツ以外に役ができたとはいえ、そういうもんですかね…。

課題
・入力情報として副露の情報が「その他仕掛け」「タンヤオ仕掛け」「役牌仕掛け」の3パターン+副露数のみで、かなりお粗末なのが原因か。→仕掛けのパターン(ポンカンが役牌・オタ風・染め色19・28・37・46・5、チーが123・234・345・456で計11パターン)ごとに重みパラメータを変える。
・染め手に向かった割合が全データのうちの1割くらいしかないので、多数派の染め手に向かってないデータのかたまりにパラメータが引っ張られる傾向があるかもしれない。(この前の鳴き判断のときみたいにほぼ全部スルーと答える、みたいな事態に近いことが発生している可能性がある。)→データ数をそろえるために、染め手に向かったデータの総数よりも多い非染め手のデータをカットする。


今すぐ関係ある話ではないですけども、機械学習についての情報収集をしていたところ、パラメータ選定の手法として、確率的最急降下法という方法があるらしいです。
なんでも、学習データ1件ごとの勾配を使ってパラメータの修正を図っていく的なものらしいです。
(この前東京行ったときに聞いた話はこれかー、と遅ればせながら納得しました。)
これだと、全データについて毎回目的関数を計算しなくていいから楽そうな感じに見えました。それと全データについてメモリを確保しなくて済むのもかなりのメリットっぽいです。

ただ、今だと微分を使わないごりごり脳筋の遺伝アルゴリズムでやってるので、新たに微分を計算しないといけないようです。
全部の重みパラメータについて、ニューラルネットで合成関数の偏微分するって…。
活性化関数も途中で噛むから3つくらいの合成関数の微分の積になるからぷにゃーってなりそう。

計算時間が超長くて耐えられなかったり、入力情報が多くてメモリが足りないという事態になったらそれを検討しましょうか。
新しくコード書いたり手計算したりするのがめんどうなものぐさモードです。
カンチャンVSシャボ論争
今回のネタは先制面前聴牌でカンチャンかシャボか待ち選択ができるときに、どちらに取るのが有利か、というお題です。

一般的にはカンチャンよりシャボ、とはよく言われますが、ただしシャボが中寄りでカンチャンが端寄りならカンチャンというのも聞きます。
そのへんを細かく見ていこうかと思います。

方法は製作中の麻雀AIで、自分の手牌と4人の捨て牌をてきとうに決めて、シミュレーションパートの局収支で判断します。

手牌を変えていろいろやってみたのがこちら↓。
170925-02.png
2段あるうちの上段がシャボ待ち、下段がカンチャン待ちとなる打牌です。

・愚形複合塔子が688だったら、だいたいシャボ有利。例外はシャボが1枚少ないかつ雀頭が3~7のとき。(6切りリーチにより、6がたくさん場に切られて8待ちがカベになるケースがあるためか、かなりシャボ寄りのところが多い。)
・愚形複合塔子が668だったら、雀頭28でシャボ寄り、雀頭37が微妙、雀頭46ならカンチャン寄り。
・愚形複合塔子が133だったら、雀頭28で微妙、雀頭3~7でカンチャン寄り。
・愚形複合塔子が335、355だったらシャボ有利。
・愚形複合塔子が446だったら、雀頭28で微妙。(赤5受けがある分だけ割とカンチャン寄りになってる感じ。)

てきとうにやっただけなので、全部網羅できてるわけではないですが、まぁこんなところで。
全体的にはシャボの方がいいところがやや多そうですが、思ったよりはカンチャンも健闘している印象を受けました。

これは特定牌姿に限定した話で、一般論ではないので、場況とかそのへんはてきとうに各自で補正してください。(最後は投げやり)
残り枚数とチーテン入れる巡目の関係その14・ごちゃまぜ
今回はしばらく前のテーマの続きです。(残り枚数とチーテン入れる巡目の関係その13・対1軒リーチ

今回やったのは次のケースです。

・34m24p(雀頭)(面子)(面子)北 出3p
・34m24p(雀頭)(面子)(面子)北 出2m
・34m8p8p白白(面子)(面子)北 出2m
・34m23p(ドラ雀頭)(タンヤオ面子)(タンヤオ面子)北 出2m

それぞれのケースについてグラフを貼って逐一コメントをして、というのがめんどうだったので、
手抜きして境界巡目の表だけにしておきます。
170925-01.png

どれもだいたいそんなものになるでしょうねー、という感想です。(手抜き感はんぱない。)
麻雀AI開発その68・染め手率と機械学習その2
前回の続きです。

副露者の捨て牌と鳴き方(とその他の情報)から染め手に向かう確率を求める評価関数を作ろうとしています。
この1週間くらいやる気が出なくて全然進んでなかったのから、今日は反転攻勢か、かなり作業が進みました。

まずは実際の鳳凰卓牌譜から学習の元データをcsvファイルでこんな感じに排出して、
170921-01.png

それで、ニューラルネットの重みパラメータを遺伝アルゴリズムで算出するプログラムまで書けました。

出力値(予測染め手率)は0~1の間の数値にしたいので、ニューラルネットの出力値(実数値)をロジスティック変換して0~1の数値にします。
目的関数は、学習データの実際に染め手に向かったか(csvファイルの一番右の列)からニューラルネット+ロジスティック変換の予測染め手率を引いたものの2乗和です。だいたい回帰分析の最小2乗法と同じ考え方です。

それで、とりあえず最初の100試合分だけ遺伝アルゴリズム(1世代につきパラメータ群が50個、100世代まで計算)にかけてみました。
(およそ10分待つ…。)
出てきたテキストファイルは145KB。エクセルに貼り付けてみると1行×8101列。
エクセルで列番号KYPとかまでずらーっと数値が並んでいます。でかい…。列番号3桁とかそうそう見ないですね。

ニューラルネットの入力層のノード数が79個、中間層のノード数を100個にしたので、
79×100とその他定数項などプラスαで8000超まで次元の数が急増しました。

ニューラルネットで次元数8000もあるパラメータの微分とかはわけわかんないので、微分情報がいらない遺伝アルゴリズムの使い勝手の良さが光ります。

中間層が入るニューラルネットなので、出てきた重みパラメータの値を見てもさっぱりわからないです。
実際にAIに載せて検証するまでうまく予測できてるかわからないブラックボックス状態です。

100試合、100世代で約10分かかったので、1万試合まで増やせば1000分で16時間くらいか。
目的関数の減少の仕方から見て、できれば200世代くらいはやっておきたいのでさらに倍で32時間。
明後日の昼くらいまでは結果が出るまで待ちの時間になりそうな感じです。
まぁ、それくらいなら待てますね。

この後プログラムを起動させましょう。
麻雀AI開発その67・染め手率と機械学習
今回からは染め手について考えてみようと思います。

従前の局収支シミュレーションだと、ある一定の条件(6巡以内の捨て牌に染め色がない、など7条件)に当てはまる仕掛けを入れている他家を「染め模様者」として、別のパラメータを使っていました。

ただ、この方式だと「染め模様」の定義に当てはまるかそうじゃないかの、0か1かしかないのがネックです。
捨て牌が1枚だけ違って「染め模様」の定義に入るか、入らないかで大きく挙動が異なるのは、実際の牌を使ったシミュレーション(逆に言うと従前の局収支シミュレーションでは、全部確率処理で、具体的に牌を使ってるわけではない。)ではちょっとよろしくないです。

できれば、この捨て牌・晒し牌から見て、実際に染め手である確率○%である、というのを(短時間で)計算できる評価関数を作ることができればベストです。

例えば初期状態(シミュレーション開始時点)で染め手である確率40%という予測値が分かれば、10000回シミュレーションのうち40%を染め手に向かっているものとして、そういう挙動(例えば非染め色を多く切る傾向にある、とか非染め色の仕掛けは入れないとか、上がった時の打点が染め手で高いとか)をさせ、残りの60%は染め色でない通常の仕掛けとして、それ相応の挙動をさせる、というような使い分けをさせることが可能になると思われます。

というわけで、課題は2つあります。
・染め手率を求める評価関数を作る。
・染め手に向かった者の挙動の元になる各種パラメータを取って、実際にシミュレーションに組み込む。

とりあえずは1個目の染め手率から考えてみることにします。
まず一つ問題になるのは、どのようなときに「実際に染め手に向かった」と判断するかです。
これは簡単そうに見えて実はそんなに単純な問題ではないです。

「上がった時に実際に一色手の和了である」という定義では、上がりまでたどりつかなかったケースがすべて非染め手と判断されてしまいます。
次に「局終了時に手牌が一色になっている」という定義も考えられますが、これも例えば途中でリーチが入って降りに回った場合が染め手でないと判断されてしまいます。
「手牌中の非染め色の枚数が単調非増加(つまりイコールか減少)」でも、途中で降りた場合が該当しないのでダメ。

今のところ自分の中で有力と考えているのは、「局終了までに非染め色の枚数が1枚以下である状態が1巡でもあった」という定義です。
1枚以下ならば非染め色で塔子や対子を構成できない(もちろん面子やポン・チー・カンも排除できる)ので、確実に染め手に向かっているだろうと判断できるだろうと思います。
これでも、非染め色を落としきる前に早いリーチがかかって染め手を諦めた場合が集計から漏れますが、まぁそういうケースは大して重要でないと思うのでいいことにしましょう。

これで、学習データで実際に一色手に向かったかそうでないかの判別がつけられる(と思う)ので、
今度は入力値としてどのようなものを入力すればいいか、という点を考えてみようかと思います。

○基本情報
・巡目
・副露数
・染め色はどの色か
・ドラ色か
・リーチ者有無(あるいは先制リーチ巡目)

○副露関連
・役牌のポン・カンがあるか
・タンヤオの可能性があるか

○捨て牌関連
・k巡目の牌区分(役牌・オタ風・染め色19・28・3~7・非染め色19・28・3~7)

特に処理が大変そうなのが、捨て牌関連ですかね。
9巡目あたりまでに絞ったとしても、9×8で72次元用意しないといけないので、ぷにゃー、となりそう。
OutofMemoryの影もちらついてきそうです。

まずはこれで学習データを準備するところから始めてみましょうか。
麻雀AI開発その66・近況報告
麻雀AIの話の続きです。

あまり目立った進展はないですが、近況報告だけしておきます。

まずは鳴き判断の評価値関数の計算について、ニューラルネットに変更してパラメータを取り直しました。
あんまり従前と大きく変わることはなかったです。

それで、まだ染め手を入れてないですが、一応一区切りはついたので、
floodgate for mahjongで多数試合対局して、今のところの実力を測ろうかと思っています。

…なんですけど、現在、閑散としていて、自分以外誰もいません…。
全くマッチングしませぬ。(だれかきてほしいなぁ、と期待をこめたまなざしで見つめるわたし。)

「麻雀AIやってる人が全然いなくてうんぬん」みたいな話はよくされますが、ここでそれが露見して、つまづくとは思わなかったです。
誰か来るまで気長に待ちましょうかね。

とりあえず、1試合だけでも完走させて、ちゃんと正常に対局できるかどうかだけでも確かめたいところです。

もしfloodgateが頼れないなら自前で前バージョン(おそらく天鳳レートで1800くらい)と新バージョンを対戦させるプログラムを書かないといけないのかなぁ。
オフ会(麻雀AI開発者・麻雀研究者の集い)に参加して
先日、東京にて麻雀AI開発者・麻雀研究者の集いに参加してきました。

いろいろお話を聞かせていただいたうえで、自分のAI研究について思ったことをつらつらと書いていきます。


私の場合、最初に作ったのがモンテカルロ式の局収支シミュレーションからで、そこで得た知見を下地にしてAIに仕立て上げてるので、AIとしては正統派ではないらしいなーというのを感じました。
シミュレーションだと計算時間的に難があって、小手先のテクニックではどうにもならずに機械学習的な理論を取り入れた結果、シミュレーションと機械学習的なのが魔融合したなんかよくわからんごった煮みたいなのができてる感じです。

牌譜解析とシミュレーションを捨てて全部機械学習で設計していく方がスマートで、強いAIになるんでしょうけど、
今まで作り上げてきたものが全部崩れることになりかねないので、ちょっと抵抗感はありますね。
機械学習についてはちょっと前に勉強を始めたひよっこなので、その分野のみで先駆者に追いつくのはかなり困難というのもあります。

最初はシミュレーションが基本とした独自路線でやっていけばいいかなーと思ってはいたのですが、どうやらそうはいかなさそうだなーと感じました。
細かいアルゴリズムのことが分からない外部の人にとっては機械学習だろうが、牌譜解析とシミュレーションだろうが、アプローチの仕方が異なるとはいっても、そんなの区別はつかないからどうしても同じようなものとして見られるのは避けられないだろうとは思います。
そうなると、ソフトの性能、つまりAIの強さや考慮時間の短さで優劣がつけられ、劣っている方は誰からも見向きもされなくなってしまうのだろうと、かなり悲観的になっています。
競争とか成果主義とか成長戦略みたいなことは非常に苦手なんですが、社会というものはそういうものなんでしょうね…。
世界に一つだけの花のフレーズ、ナンバーワンにならなくてもいい、もともと特別なオンリーワン、というのが恋しいですねぇ…。

勉強になったのは待ち牌読みとか聴牌率読みとか染め手読みなど、個別のものも機械学習でもできるらしい、というところです。(ていうか、それが普通の感覚らしい。)
牌譜解析結果をパラメータとしてそのままべたっと使って後は個々の特徴量について独立性を仮定して単純掛け算するみたいな合ってるかどうかよくわからんのよりはスマートそうな気がします。少なくともその部分は伸びしろがありそうです。
なんですけど、まだ染め手の実装すらやってないので、まだスタートラインにすら立ててないのがあれです。

後はソフトのネーミングセンスの話とか。
今は仮に「麻雀添削くん」と命名してますが、現状そんなに強くないくせになんか先生みたいな上から目線なのはなにを偉そうに、とか言われそうです。
女の子とか、萌えキャラ?みたいな方が受けがいいという説があるらしいのですが、
個人的にはそういうのより動物系のかわいいキャラ(ピカチュウとかしろたんとか)のが好きなんですが、そういうところに私情を挟んでもしょうがないかもです。
既存のキャラ名とかぶらず、かつ麻雀と関係があるネーミング。
とりあえず、「まーちゃん」とか「まあたん」とか「じゃんのすけ君」とかしか思いつかない時点でセンスがないのがバレバレです。
なんかひらがなの方が柔らかい感じがして親しみやすいかなぁとは思ったけど気のせいでしょうか。
絵心がないので、自分でかわいいキャラを描けないのも一つ悩みの種かも。(そんなこと考えてる暇あったらさっさと研究しろ、と怒られるかもしれないけれども。)


というわけで、優秀な方とお話ができて、とても刺激になって得るものが大きかったですけど、少しセンチメンタルな気分になったそんなオフ会でした。
麻雀AI開発その65・1順当たりロン率補正その2
前回(麻雀AI開発その64・1順当たりロン率補正)の続きです。
ここ1週間くらいいろいろ牌譜解析しながらAI計算の和了時ツモ割合が高すぎ(出上がりが少なすぎ)問題を考えてみましたが、ようやく原因っぽいものにたどり着きました。

まずはひとつ特大バグがみつかりました。
AIと従前のシミュレーションの両方で、他家総副露数を調べてみたところ、AI側の鳴き発生率が極端に少なくなってることが判明しました。
170908-01.png
先制無筋カン28待ちの実測を取ってみたところ、従前シミュレーションの方が実測と大体合っています。
170908-02.png

AIの内部計算の鳴きのうち、間違ってたのはチーの方でした。無筋or筋or現物の変数を参照する際、今打たれた牌が同順フリテンで現物扱いになってしまっていて、チー発生率を極端に下げてしまっていた(現物→一度切った牌はほぼ鳴かれることがない)というミスでした。


後は他家→他家横移動率について、当たり牌が切られる補正(1より小さい値を掛ける)を入れていたものが実態に合っていない(むしろそれがない方が実際横移動率に近かった)ので、その補正を削除しました。

それで修正後のAI計算結果がこちら。
170908-03.png
他家チーが正常になったので、自手リーチへの押し返しが増えてツモ割合微減、被和了率増になったのと、
横移動率を上方修正した分が入っています。

肝心のツモ割合はあんまり変わっていませんが、以下の考えにより、今のままでも大問題ではないと結論付けました。

・今回の牌姿ではマンズの258mについてはカベ効果・序盤外側効果がない。
・非序盤外側と非カベの影響により、258mが切られる確率がAI内部計算で約3割くらい減になる計算になっているのを確認。
・従前局収支シミュレーションでは序盤外側やカベの待ちも1順当たりロン率の計算に入っているので、今回よりは高めの値が出やすい。
・出る率3割減なら全体ロン率も同じ程度の割合で動くので、和了時ロン割合も3割減(5割前後→35%へ。ツモ割合なら65%)になることも、あってはおかしくはなかろうと。

えらく回り道しましたが、バグもつぶれたし、まぁ結果オーライということで。
さて、元のAI開発に戻ることにしましょう。
Next→鳴き判断ニューラルネット、実戦(floodgate)へ投入、染め手絡み判断。
麻雀AI開発その64・1順当たりロン率補正
今回は別のところから重要そうなバグ(のようなもの)が見つかったのでそれの対応をします。

発端となったのは8月30日にツイッターで出題したこの問題です。
170830_Q.png
先制聴牌の待ち選択なので、従前の局収支シミュレーションでも麻雀AIでもどちらでも計算するのが可能なので、両方ともやってみたところ…
170902-02.png
なんか全然上がり率が違うんですけど、どうなってるのでしょう。
誤差というには済まないレベルです。

和了時ツモ割合から考えると、明らかにAIの方が出上がりを低く見積もっています。
ここで思いついたのが「他家→自分リーチに当たり牌が切られる倍率」のパラメータです。
これは読みなどによって同じ無筋の中でも当たり牌になりそうな牌は止まりやすい傾向にある、というのを表現するために付けたのですが、このパラメータをつけた後にカベ効果・外側効果の切られやすさ倍率を入れたので、
もとの「他家→自分リーチに当たり牌が切られる倍率」と合わせると過剰に出上がり率を割り引きすぎ、ということなのかもしれません。

これを裏付けるために牌譜解析をやりました。
170902-01.png
左側がそれぞれの区分(牌を切った人が聴牌かどうか・牌を切った人の副露数・自分(リーチ者)からみて切られた牌の見え方・筋か無筋か)ごとの実際に当たり牌が切られる確率、
中央がそれぞれの区分の条件が与えられたときにAIが算出した当たり牌の切られる確率(同区分内の平均値)、
右側が実際の切られ率÷AI計算切られ率の値(比率)です。

(0副露聴牌のAI算出切られ率がやけに低いのはなんらかの牌譜解析上のバグだと思いますが、それ以外のところでは、)
比率を見ると1より大、つまりAIが算出した当たり牌切られ率は過小評価しているところが多いというのが実証されたと思います。
0副露聴牌のバグの原因究明はやらないといけないですが、それが終わったらもとの「他家→自分リーチに当たり牌が切られる倍率」のパラメータに今回の値を乗算して(多くは1より大なので倍率が上がる)パラメータ表の修正すればいいかと思います。

同じことは副露聴牌・ダマ聴牌・他家→他家横移動についても言えるので、同じように牌譜解析してパラメータの修正をかけていきます。
プロフィール

nisi5028

Author:nisi5028
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
フリーエリア
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード