半荘をとおしてNAGAが出力した打牌時の確信度(後述)をプロットした結果のグラフです。 グラフのポイントを選択するとその際の局面が表示され、打牌の分布とその理由などの情報を確認できます。ぜひ試してみてください。 なお、終局時の確信度は0になっています。
DMVでは麻雀AIの作成に取り組み、麻雀の高段位者の牌譜から、打牌の選択、副露の選択などを深層学習することで麻雀AI NAGA(Neural Architectural Game Agent, Twitterアカウント)を作成しました。 そして、オンライン対戦麻雀天鳳において最高八段を達成しました。 本稿では、深層学習により強い麻雀AIを作成するために行ってきた取り組みについて紹介いたします。
麻雀は相手の手牌が見えず(不完全情報)、次にどの牌を引くのかわからない(不確定)という難しさのあるゲームです。 プレイヤーが4人のため次の自分の手番の状態が予測がしづらい点や、1試合が複数局からなる半荘という単位で最終的な成績が決定されるため長期的な戦略が必要なことも麻雀の難しい点です。 従来の麻雀AI[1]では期待最終順位やモンテカルロ法などによってこれらの問題を扱っているのに対して、NAGAでは深層学習で取り組みました。
天鳳は国内最大級のオンライン麻雀サイトで段級位制を導入しています。 段級位によって対戦できる卓が限られていて、段級位は段位ポイントによって変動します。 変動する段位ポイントは現在の段級位、卓、試合結果(順位)によって決定します。 NAGAは2018年10月22日から、特上卓まで対局可能なbot用アカウントを発行していただき天鳳に参加しており、一般卓からはじめ、2018年10月24日に一級に昇級して上級卓に、2018年10月29日に四段に昇段して特上卓に参戦しています。 対戦していただいた皆様、誠にありがとうございました。
本AIは打牌モデル、副露モデル、立直モデル、槓モデルの4つのCNNから構成されます。 打牌モデルは自身の手牌、4人の河、副露、点数、見えていない牌の数など、現在の局面を完全に再現できる情報を入力としてどの牌を捨てるかの分布を出力するポリシーベースで、 この分布に従って打牌を選択します。 他のモデルも同様に、その時点で公開されている卓の情報を入力として、どのような行動をとるか決定します。 オーラスでの和了判断(最下位が確定する和了を避ける)などにヒューリスティクスをいれており、通常の他の行動はほぼすべてCNNの出力だけから決定しています。 各モデルの学習には、天鳳で公開されている鳳凰卓の牌譜を使用しました。
麻雀は和了を目指すだけでなく、降りることも重要な要素であり、この降りる判断が従来の麻雀AIの難しい課題でした。 NAGAでは攻めと降りの判断を開発者が明示的に設計しておらず、学習元の牌譜にあらわれる打牌から適切な振る舞いを学んでいます。
また、麻雀は東風戦、半荘戦など複数局単位で勝敗が決定するため、ゲームの進行具合で戦略が異なります。 人間の行動を学習したNAGAはそういった複雑な長期的戦略も反映されています。
NAGAは試合終了後、Twitterに試合結果とともに迷った局面をつぶやいていますが、この迷った局面について説明します。 この迷った局面は確信度推定[2]の結果をもとに選択しています。 NAGAでは確信度を利用して各CNNの学習をしており、予測した行動の分布に対して自信が持てないときは、ペナルティを負うことで正解を参照することができます。 なので確信度の低い局面はNAGAが打牌選択に自信が持てない、つまり迷った局面ということになります。 Twitterでは確信度が50%以下の局面の中で最も低かった局面を迷った局面としてつぶやいています。すべての局面で確信度が50%より高いときは、迷った局面を付けていません。
NAGAは卓の情報をほぼそのまま入力しているためGuided Backpropagation[3]により各選択の根拠を可視化できます。 自身の選択を増幅する勾配を計算することでその選択をした特徴を可視化できます。 逆に、自身の選択を減衰する勾配を計算することでその選択をしなくなるであろう特徴も可視化できます。 ニューラルネットワークの層の深いところでは、「3p5p7pの両嵌張があり、4p6pはまだ場に捨てられていない」 のような複雑な粒度で判断が行われていると思われますが、現状の仕組みでは、使っている入力単位での表現になります。
引き続き天鳳特上卓で対局していきます。同卓の際にはよろしくお願いいたします。