*All archives* |  *Admin*

<<06  2018/07  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 31  08>>
新年のあいさつとメモ
ちょっと遅いですが、あけましておめでとうございます。
今年もよろしくお願いします。

ここのところやる気とその他の都合で研究がご無沙汰だったのですが、
まぁ年も明けたし、重い腰を上げてAI作りを再開するかーと思っています。

やる気を出すために科学的に言われてることを実践してみようかと。
・とりあえずなんでもいいから始めてみる。
・目標を小分けにする。

次のでかい目標は染め手をAIで考慮できるようにすることです。
これができれば、いつもの何切る問題でわざわざ染め手関連を避けなくてもすむので、かなり作問の幅が広がってよりよくなるでしょう。
染め手のうち自手染め手狙いはいったん置いておいて他家染め手のケースを考えます。
踏むべきステップのうち、
①染め模様者が実際に染めに向かっている確率と聴牌率予測
についてはすでにできています。
一方、
②染め者の挙動を牌譜解析でパラメータとして取る
③パラメータをシミュレーションに織り込む
がまだできてないところです。

「とりあえずなんでもいいから始めてみる」、ということでまずは必要になりそうなパラメータの種類の書き出しからやってみます。
全体像の把握からしないとどうにもならないので。

・染め者聴牌時ある牌が当たり牌である確率
・染め者からある牌が切られる確率(リーチ者有無別・聴牌不聴別)
・染め者がいるときに別の他家からある牌が切られる確率
・染め者が牌を切った時に聴牌化する確率、聴牌を崩す確率(リーチ者有無別)
・染め者がある牌に対して鳴きを入れる確率
・染め者が鳴きを入れた後、ある牌が切られる確率
・染め者が鳴きを入れたときに聴牌化する確率
・染め者が和了した時の打点分布
 基本打点分布(役牌・ドラ・赤・清一色を除いたハン数符数)
 役牌暗刻数(副露数別、それぞれの役牌の場に見え方別)
 ドラ含有枚数(ドラ種類別)
 赤含み率
 清一色率(副露数別)

思わず、うへぇとため息が漏れますが、嘆いてばかりいても仕方ないので1個ずつ牌譜解析をこつこつやってくしかないですね。
麻雀AI開発その79・自己対戦途中経過
麻雀AIの続きです。
AIどうしの自己対戦をやっている最中です。
やっぱりどうがんばっても現状のままだと1日150試合くらいしか消化できません。人間的には鬼打ちでもAI的にはすごくスピードが遅いです。

現在651試合まで打ち終わったので、いったん和了率とか局収支とかの基本的なデータを牌譜解析で出してみることにします。
なにか致命的なミスがあったときに、早めにやり直しできるように。

AIの思考については前回(麻雀AI開発その78・AIどうしの自己対戦プログラム)で述べたように、
平均順位の多寡で打牌選択するAI(COM1)、局収支の多寡で打牌選択するAI(COM2)、自分和了得点に1.1倍の重みをつけた局収支ベースAI(COM3)、自分放銃失点に1.1倍の重みを付けた局収支ベースAI(COM4)の4体です。

二向聴以上の手についてはニューラルネットの計算なので、どのAIも思考は同じです。一向聴と聴牌の打牌選択・鳴き判断のみ思考が変わってきます。
171028-01.png

鳳凰卓の実測値と大きく違っていそうなところは、

・リーチ和了が多い。(和了時リーチ割合・対リーチ放銃割合・対リーチ被ツモ割合)
・副露和了が少ない。(和了時副露割合・対副露放銃割合・対副露被ツモ割合)
・ダマ和了が少ない。(和了時ダマ割合・対ダマ放銃割合・対ダマ被ツモ割合)
COM2・3・4は局収支しか見てないので、副露・ダマ和了が少ないのはまぁわかる気がします。

・流局率が低い。
・流局時聴牌割合が高い。
・流局時得失点が低い。
・リーチ和了が多い。
・和了時ツモ割合はほぼ同じ。
AIはみんな聴牌・上がりを目指す傾向が人間よりも強いためか、流局になりにくく、流局になった時聴牌の割合も多いと。
和了時ツモ割合はほぼ同じですが、リーチ和了割合が多い(→ツモ割合が高くなりがちな和了が多い)ことから考えれば、
実質では人間同士より出上がりが多くて、全員参加型に近い場になっているように思います。
(人間だと段位戦でラス回避を重視する、ということも関係しているかも。)

・リーチ率が高い。
特に局収支型のCOM2や局収支攻め型のCOM3のリーチ率はかなり高いです。

・リーチ時先制割合がやや低い。
全員参加型になることが多い、ということで。

・リーチ時良形割合(ここでの定義は字牌待ちor待ち牌が5枚以上(捨て牌は関係なしで。))が低い。
人間の方が手作りがうまい(?)、というか良形を目指したがる、ということでしょうか。

・副露成功率(副露したという条件の下での和了率)が低い。
人間の方が仕掛けの精度が高い、とか守備のために遠いところからは仕掛けない、ということかと思います。

今のところはこんなところですね。
まぁ、あまりにも致命的なものはなさそうなので、このまま継続で試合数を重ねていきます。

今のところは試合数が少なくて標準偏差(σ)が大き目で結論が出しにくいところが多いですが、
10000試合とかまでがんばって積み重ねられたら各AIごとの特徴とかがはっきりして面白くなったりするような気がします。
牌譜さえ先に取れれば、後は牌譜解析で好きなデータを引っ張ってこれるので、わくわくしますね。
麻雀AI開発その78・AIどうしの自己対戦プログラム
麻雀AIの続きです。

前回、染め手パラメータを取って、これから染め手も含めたシミュレーションの設計をやろう!…と思ったのですが、
とある事情により、そっちはいったんほったらかして、AIどうしの自己対戦のプログラムを作ることにします。

人間一人VSAI三体のプログラムはすでにできてるので、それをちょっと改造すればすぐできます。

バグを収拾させつつ1試合分打たせたのがこんな感じ↓。
haifufile.txt

とりあえず自然な感じにはなっているっぽいです。

問題は計算時間ですね。東風戦1試合で10分~15分かかりました。
10000試合しようとすると1試合10分なら1時間6試合、1日150試合、ということは66日かかる、と。うむー。

ボトルネックになってるのは一向聴・聴牌の再帰計算+シミュレーションです。
二向聴以上の手みたいに全部機械学習で置き換えた方がよろしいのかしら。
一向聴以下だと上がりに直結する分、最終の待ち受けとか役判定打点関連とかをもっと精密に作らないといけなさそうな気がします。
機械学習でやると、中身がブラックボックス的になって分析がやりにくいですし、一番は今までシミュレーションで培ってきた知見が活かしづらいということがあるので、あんまり乗り気ではないです。

さて、どうしようか。
とりあえず1000試合・7日くらいでお茶を濁しておきましょうか。

後は対戦するAIですが、全部同じものを対戦させるのも芸がないので、別個のものを4体用意しようかと思っています。
今考えているのは、平均順位ベースAI・局収支ベースAI・局収支ベース(攻め型)・局収支ベース(守り型)

平均順位ベースは打牌選択基準(一向聴以下手牌のみ)を平均順位の良し悪しで判断する。
攻め型は自手上がり時得点に関して局収支を1.1倍換算したものを判断基準にする。
守り型は放銃時失点に関して局収支を1.1倍換算したものを判断基準にする。
という感じの予定。


普段使いのPCとは別に、自己対戦とかfloodgateでの大量対戦用のPCを買おうかなーと本気で検討中です。
もし、今のPC(3年選手)がつぶれてもスペアがあれば安心ですしね。
ハードディスクをSSDというのにすれば動作が早いらしいですし。
麻雀AI開発その77・染めパラメータの取り込み
前回までで染め手関連のパラメータを取り終わったので、さっきまでパラメータの数値の羅列をAI(シミュレーション)に取り込むところまでできました。
171014-01.png
パラメータの種類35種類、エクセルで約12000行消費。
つかれましたねー。

無事パラメータの取り込みまでは終わったので、次はこのパラメータを使って染め手者がいるときのシミュレーションの設計をやります。ここからもまた大変です。
麻雀AI開発その76・染めパラメータ(染め者への対応・染め率推移)
染め手パラメータ取りの続きです。

↓他家の予測染め率ごとの別の他家が非染め色・染め色・字牌を切る確率(下家・対面)
171011-01.png
↓他家の予測染め率ごとの別の他家が非染め色・染め色・字牌を切る確率(上家)
171011-02.png

基本的に、予測染め率が高いほど、別の他家が非染め色が切られる確率が上がり、染め色・字牌が切られる確率が下がる、という期待通りの結果になっています。

聴牌率が低い0副露・1副露余りなしだと下家・対面より上家の方がより染め色を絞る傾向が強いのも↑の表からわかります。
一方、聴牌率が高い2副露以上だと下家・対面と上家の差はそこまで大きくないです。

↓染め模様者が牌を切った時・鳴いたときの予測染め率の変動
171011-03.png
数値がプラス(マイナス)になっているところがその行動がとられたときに予測染め率が増加(減少)する、ということを表しています。
基本的に非染め色真ん中牌が切られたら予測染め率が増加、染め色が切られたら予測染め率が減少、
染め手が否定されない鳴き(非染め色数牌の鳴き)が入ったら予測染め率が大幅増加(ただし、役牌ポンは増加が控えめ)
という感じです。


これでとりあえずパラメータ取りはいったん終了です。新規追加になるパラメータが20~30種類もあるので、これからの作業量の多さで泡吹きそうですが、こつこつ設計を頑張ってやっていきます。
プロフィール

nisi5028

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

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

この人とブロともになる

QRコード
QRコード