*All archives* |  *Admin*

<<05  2018/06  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  07>>
鳳凰民は役なしドラなし聴牌でリーチをかけるか
今日のテーマは愚形リーチのみです。

今まで何度かやってきたテーマで、愚形リーチのみ1300点でも即リーチで悪くない、という結果を示してきましたが、
実際に鳳凰卓で愚形リーチのみがガンガンかける人が多数派かといえば疑問です。
私自身愚形リーチのみは自重することが多いタイプの打ち手なので。

というわけで、今回は愚形リーチのみがかけられる手牌について、即リーチがかけられた割合を鳳凰卓の牌譜解析で調べてみます。

集計条件は、
・1枚切る直前の14枚手牌
・非副露聴牌(暗槓してる手牌は対象外)
・聴牌に取れる打牌すべてに対して、すべての上がり牌についてリーチロン時2ハン以上の聴牌に取れない。
・待ち(聴牌に取れる打牌の中で、最もよい待ち)で分類する。
・親子別で分類する。
・他家3人はリーチはかけてない(副露状態は不問)
・以上の条件を満たした手牌の総数、即リーチした回数、ダマにした回数、聴牌外しした回数、即リーチ時の局収支、ダマ時の局収支、聴牌外し時の局収支をカウントする。

結果はこんな感じ。
180623-01.png
まずは即リーチ率・ダマ率・聴牌外し率から。

子9巡目両面で即リーチ率65%、ダマ率29%、聴牌外し率6%。
即リーチ率65%ってなんか少なくないっすか?
即リーチしない理由として、
・他家副露へのケア
・枚数が少ない
・手替わり待ち
・リーチ棒損失
・場況が悪い
・オーラスなどの条件戦
が挙げられますが、ほぼ先制の場面においては、両面は全部リーチみたいな感覚を持っていたので、ちょっと即リーチ率低いような感じはします。
別の可能性として、プログラム書くのをミスってるという可能性はあります。意外と難易度が高くててこずったので。

子9巡目無筋カン28で即リーチ率19%、ダマ率58%、聴牌外し率23%。
やはり即リーチは少なめです。
全体の5分の1しか愚形リーのみはかけられてないと。

子9巡目両無筋カン456で即リーチ率10%、ダマ率72%、聴牌外し率18%。
待ちが悪くなるにしたがって順調に(?)即リーチ率が減っていってます。

親になると愚形リーチのみの局収支は悪くないので、即リーチ率が全体的に増えています。


次に、各選択をしたときの局収支を見てみます。
子9巡目無筋カン28で見てみると、
即リーチ時局収支50点、ダマ時局収支-506点、聴牌外し時局収支-408点です。
ただ、ここから短絡的に即リーチの方がやっぱり有利なんだーと結論づけるのは危険です。
データ的に偏りがある可能性が高いからです。
副露者がいないとか、枚数残ってるとか、場況がいいなどといった、いい状況の場合(局収支が高くなりやすい)に即リーチされてるケースが多く、
逆に悪い状況の場合(局収支が低くなりやすい)はダマや聴牌外しが選択されるケースが多い、ということは十分想定されます。

結局愚形リーチのみはどうすればいいのか、と聞かれたら、
「うーん、ケースバイケースじゃないっすか」みたいな逃げの回答になる感じです。
副露者状態とか、枚数とか、場況とかでいろいろ場合分けすると多分サンプル数が足らなくなる気がするので、とってもやりにくい。
スポンサーサイト
麻雀AI開発その84・他家染め手和了時の打点分布予測
しばらく前に、他家染め手をAIで考慮できるようにしようと、いろいろパラメータ取りの牌譜解析をしていました。
確率系統(染め手者の聴牌率とか危険度とか)はパラメータをほぼ取り終えたのですが、打点関連をどうしたものかなーと思って途中でストップしていました。

通常副露とは違って、使える牌が限られてるので、ドラの枚数とか赤ドラ枚数とかを独立とみなして後付けでハン数UPする方式がちょっとまずそうかなーと思いました。
チンイツやトイトイの可能性がどの程度あるかによってもだいぶ打点分布は変わってくるだろうし、役牌の見え方とかもかなり重要と思われます。
そのへんを全部独立扱いにするのはかなり無理があるし、かといってそれらの要素を全部分類すればとてもじゃないけどサンプル数が足りなくなるのは明らかです。

次に考えたのが、ニューラルネットか何かで、他家染め手の手牌構成を読むことをしようかと。
これは思いついただけで、私の能力的にはかなり無理そうで実現可能性が低かったので、ここで思考がストップしてました。
やるとするなら、
単騎待ちかどうか、
単騎待ちなら雀頭は1通り(アガリ牌と同じ牌)、面子(4-副露数個分)がなにかを推測。
非単騎待ちなら、雀頭が何か、アガリ牌を含む面子が何か、それ以外の面子が何かを推測。
メンツ同士の相互依存関係(手役狙いなど)とか複合形をどう考えるか、
などで相当難しそう。

ここ最近思いついたのは、和了形をすべて推測できなくても打点に関係ありそうな情報をつまみぐいで入力してニューラルネットにぶちこんで、分類問題に似たような形でうまいことごにょごにょすれば打点分布だけならうまいこと推測できるんじゃない?というものです。

具体的にどんな感じかは↓の表を見てもらった方が早いと思います。
180420-01.png
列1個分が一色手かつ非門前で和了した、という状況を切り取った、サンプル1個分です。
黄色(正解打点)から上がニューラルネットに入力する要素(?というのかはわからないけど)です。
考慮する内容は一番左の列のラベルの通りです。
主にチンイツ・トイトイ・ドラ・赤・役牌の可能性にまつわる内容です。
一通・チャンタ・タンヤオ・混老頭・四喜和・字一色あたりは関連する入力値として入れてないので考慮されてないです。
小三元・大三元はギリギリ考慮されてる…はずです。白発中それぞれ別の重みパラメータを使ってるからそのへんの相互作用でごにょごにょできてたらうれしいなー程度。

黄色が実際の和了打点(ただし、子のロンでの換算)です。

黄色から黄緑(予測平均打点)の間がニューラルネットの出力値です。これはあるハン数符数になる確率分布を表しているつもりです。
出力層の活性化関数をソフトマックス関数にして、出力値から子のロン換算で平均打点の予測値を求めたのが、黄緑の行です。
損失関数は(「正解打点」-「予測平均打点」)^2として、損失関数の最小化(損失関数を重みパラメータで偏微分したものが0)となる点を確率的勾配降下法(ミニバッジ法、AdaDelta法)で求めました。

一番下の青色(誤差)は各サンプルにおける「正解打点」-「予測平均打点」の値です。

平均すると1件当たり約2000点の誤差(損失関数÷サンプル数、の平方根を取ったもの)で収まっています。
2000点も誤差があるというとでかいように思いますけど、「正解打点」は1ハンの差だけで、3900点とか7700点みたいに大きく動いてしまうので、個人的にはまずまず特徴を捉えられてるかなーと思っています。

例えば1件目(左から2列目)でチンイツ可能性ありだと2ハンの確率と跳満倍満の確率が高めに出ているようになっています。(正解打点は跳満の12000点)
予測平均打点は2ハンと跳満倍満の中間あたりで7607点となってますが、正解打点が2ハン側に振れるか、跳満倍満側に振れるかだけでこの1件の誤差は4000点クラスまで膨れてしまいます。
なので、誤差2000点というのはまぁそれなりには頑張ってるほうじゃない?と思うのはそういうわけです。

上で掲載したのは最初の20件分だけですけど、見た感じ、正解打点が高いものは予測平均打点も高めに出ていたりして、ある程度は「高そうな仕掛けは高く予測している」ことはまずまず実現できてるかなーと思っています。

もちろん、3ハン40符予測確率のところがほとんど0に近くて息してない、とか変なところもありますが、
目指してるのは百発百中で染め副露者打点をスパッと言い当てるところではなく、単にシミュレーションの一部で被和了時失点の予測で使いたいだけですので、まぁ今回はこんなところで十分でしょう。

というわけで、他家染め手に対するパラメータはこれで一通りそろったことになります。
これで第一段階のパラメータ取りまでできたことになるので、第二段階としてAIの思考に染め手を搭載するところに移ろうと思います。
パラメータの種類数がえらい多くて、ここから先もだいぶ大変ですけど、ぼちぼちやっていきますかー。

どうでもいいですけど、今回の染め和了時打点のニューラルネットの重みパラメータの次元数が24万とか(入力層100弱、中間層200、出力層12で、3つ掛け算すると24万とかになる)になってるのですけど、これって普通なんですかね?
パラメータ表のテキストファイルのサイズがもりもり増えたお。
リーチがチートイかどうか読み…両面落としとドラ切り
前回は、リーチのチートイ割合が40%以上あれば、チートイを意識した字牌止め無筋切りができる、という話でした。

というわけで、チートイ読みについて、より精度の高い捨て牌の特徴をとらえたいと思います。

今日目を付けたのは、
・両面落とし
・ドラが切られていない。
です。
いずれもチートイ狙いにありがちな捨て牌の特徴です。

牌譜解析の取り方として、
・ドラが切られていない。
については、そのままなので、説明するまでもないですが、
・両面落とし
については、次のような条件で取りました。
・2~8牌の手出しがあった場合に、すでに両面塔子を構成できる±1の距離にある牌(2(8)牌については3(7)牌のみ)が切られている場合、「両面落とし」フラグをオンにする。
・リーチ宣言されたときの「両面落とし」フラグのオンオフの別で場合分けする。
この仕様なので、両面落としの1枚目については手出しツモ切りは問わないが、2枚目は手出しに限定されています。

それで、リーチ巡目別、切ってる3~7牌別、両面落とし別、ドラ切りor not別で牌譜解析でリーチ時チートイ割合を集計しました。
結果がこちら↓です。
180326-01.png
両面落としがされてるかつ、ドラが切られていない場合(両〇ド×の項)は確かにチートイ率が高まってるのが分かります。

ちょうど、今日実戦でいい感じのリーチを受けたので、例で挙げてみます。
180326-02.png
10巡目リーチで、切れてる3~7牌枚数7枚、両面落とし〇(ツモ切り6p→手出し5pが該当)、ドラ切り×
というわけで、チートイ率38.3%ということになる感じです。

このくらいのチートイ率なら(ベタオリするならば)、生牌字牌を止めて無筋を先に切る打ち筋もありかなーとは思います。
実戦では超愚形とはいえ、役有り筋待ち聴牌だったので、中と北はプッシュ、中筋のドラ5mでギブアップでした。

中筋ドラ5mの危険度はチートイに対しては20%くらい(サンプル数が多くなくて統計的にはアバウトな数値)、面子手に対しては5.1%で、トータル(40%チートイで計算)で、11%の放銃率です。
点棒的にリードしてるのもあるので、5mを止めたことについては悪くないと思ってます。
ただ1枚切れ中はともかく、生牌の北を押したのはちょっと疑問だったかもしれません。


というわけで、運よく(?)タイムリーなリーチが来たので、あれですけど、
今回の例のようにチートイを強く意識できる、チートイ率40%~30%のラインの読みができる捨て牌は現実的に存在しなくはないということです。

うん、まぁこれでチートイ読みについては満足いく結果が出たので、このテーマはこれでおしまいということにします。
チートイリーチの危険度その2
昨日のチートイリーチの危険度で、
・字牌について手持ち枚数別の分類を加える。
・ドラかどうかを分類する。
の修正して牌譜解析をやり直しました。

結果はこちら↓です。
180325-01.png
この部分は主題ではないので、軽く流すとして、ここからが本題。

一昨日のチートイ読みと今回の結果を組み合わせて、各牌の危険度比較をしてみます。
巡目は9巡目固定にします。
180325-02.png
左から2列目3列目の「チートイ危険度」と「面子手危険度」はそれぞれ100%チートイ(面子手)のリーチであると仮定した場合の放銃率(今日の結果)で、
4列目以降はリーチがチートイである確率がn%である、と読めた場合の危険度(内分計算による)です。

チートイの可能性が極めて低い場合、例えば3~7枚の切れてる枚数が0~1枚でチートイ割合が1%の場合(4列目の「1%チートイ」)だと、ほぼ面子手の危険度と同じです。

20%の確率でリーチがチートイである、と読める場合、これは前々回の結果から9巡目リーチで、切れてる3~7牌が7枚以上の場合です。
9枚中7枚以上真ん中牌とかあからさまに怪しすぎる捨て牌ですね。
これほど異彩を放つ捨て牌の場合ですら、孤立の生牌字牌(1見1持字牌)の危険度が5.0%で、無筋19とかの危険度が6.3%なので、まだ生牌字牌を止めて、無筋を先に打つようなベタオリ法はできない、ということですね。

仮に何らかの方法で、40%の確率でリーチがチートイである、と読める場合になると、ようやく1見1持字牌が無筋の危険度を上回るので、字牌を止めて無筋の数牌を打つ余地が生まれてきます。
孤立生牌字牌ですら、これなので、対子持ち字牌(2見2持字牌)とかなら、普通に対子字牌に手をかけるところでしょう。

面白いのは40%チートイの場合で無筋19・28・37の危険度がほぼ横並びのところですね。後は面子手の当たりやすさ(序盤外側など)とかで、字牌や端牌よりも37牌を打つケースもあるということかもしれません。
なお、両無筋46はチートイに当たる率は低いですけど、面子手の危険度が段違いなので、ベタオリから切ることはなさそうです。


というわけで、以上まとめると、
「チートイ率20%ではまだ危険度がひっくり返るまではいかない、できればチートイ率40%(最低でも30%)くらいの精度で読めないときつい」
という感じです。

まぁ実戦的に使える目安はできたので、後は「目指せチートイ率40%以上読み」ですね。
明日は両面落としリーチのチートイ率読みをやってみようかと思います。
チートイリーチの危険度
前回のチートイ読みについて、
リーチ者が切ってる3~7牌の枚数である程度チートイかどうかを読める、という話でしたが、
そもそもチートイリーチに対する放銃率が分からないのでは危険度比較がどうこうという話もできないので、
今日は放銃率(危険度)のデータを取ってみます。

集計時点はリーチされた瞬間に、リーチの当たり牌かどうかを調べます。(よって、後筋ひっかけとかは考えない。)
チートイのリーチ(チートイのシャンテン数が0。二盃口両面待ちとかも含まれる)については牌の種類と被リーチ者から見た当該牌の見えてる枚数別と筋か無筋か別。
非チートイのリーチ(国士以外は面子手)についてはいつもと大体同じ分類。
180324-01.png
180324-02.png
まぁ、面子手についてはそんなにいつもと変わりはないので、特にいうことはないです。

100%チートイを聴牌しているという条件付きでの危険度は面子手とは大きく違うのが分かります。
筋牌や字牌の危険度が高いです。1枚見え筋19で10%くらい、1枚見え字牌で10%~15%。
高いには高いですけど、図抜けて高いとかはないですね。チートイの待ち候補になるような筋牌とか字牌は通常複数あるから1牌当たりの危険度はまぁ常識的な範囲に収まると。

無筋の危険度もまったくゼロというほどではないなー、とこの文章を書きながら気づいたのですが、ドラは分類した方がよかったなーと思いました。ドラ単騎は無筋だろうと待ちとして選好されるので。(まぁ、それは明日やることにしよう。)

具体的な、牌の危険度比較についてのケーススタディは今日は時間がないので、また明日にしましょう。
プロフィール

nisi5028

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

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

この人とブロともになる

QRコード
QRコード