エンジン · Mino AI
人間のように指す将棋AI。
通常の将棋エンジンは「最善手は何か」を答えるために作られています。しかし上達のために対局する相手としては、それは適した問いではありません。将棋城の Mino AI が答えるのは別の問いです。「この棋力の人なら、実際に何を指すか」。
なぜ Mino AI を作ったか
弱いことと、人間らしいことは違います。
強いエンジンを弱くするのは簡単です。読みを浅くする、時々4番目の候補手を指させる。確かに負けやすくはなります。しかし初心者の指し方にはなりません。二十手は完璧に指し、突然理由もなく駒をただで取らせ、また完璧に戻る。そんな相手は現実にいないので、そこから学べることもありません。
人間の間違いには形があります。初心者は合法手を無作為に選んでいるのではありません。突く歩を間違え、開いた筋を下りてくる香車を見落とし、玉が少し薄いことにまだ気づいていない。これらは具体的で、しかも学習できます。同じ間違いを何百万人もが棋譜の中で残しているからです。
弱くしたエンジン
- 最善手を探す
- 読みを削る、または悪手を強制する
- 好手のあとに突然の大悪手
- 弱いが、人間ではない
Mino AI
- 人の指し手の選び方を学習する
- 棋力を条件として与える
- 実際に指されている手から選ぶ
- 人が弱いのと同じ形で弱い
返ってくるもの
Mino が返すのは一つの手ではありません。すべての合法手に対する確率、つまり「その棋力の人がこの手を指す可能性」の分布です。対局相手はそこからの一引き。同じ序盤に二度ならない理由です。
実際の一局面。エンジンなら最善を一つ挙げて終わりますが、人はこの中から選びます。
仕組み
ひとつのモデルで、あらゆる棋力を。
Mino は局面だけでなく、誰が指しているかも一緒に読み込みます。指し手の棋力、相手の棋力、そして何手目か。返すのは一つの答えではありません。すべての合法手に対する確率、つまり「その棋力の人がこの手を指す可能性はどのくらいか」の分布です。
将棋城の対局相手は、この分布から作られています。上位のレベルは強い棋力の指し手の分布から、より決定的に選びます。下位のレベルは弱い棋力の分布から、より揺らぎを持って選びます。どの手も、実際の対局で人が指している手です。一番弱い相手も、無作為ではなく、ありうる相手です。
登っていける階段
Mino の強さは読みを壊すことではなく分布そのものから来るので、レベルの差はなめらかです。どのレベルも一つ下より確実に強く、どのレベルも将棋として成立しています。
何から学んだか
Mino は、公開されている人間の対局棋譜から取った数百万局面で学習しています。初心者から高段者まで、幅広い棋力が含まれます。
学習の目的は単純です。局面を見せ、手番の棋力を伝え、その人が実際に指した手を当てさせる。「最善」という概念は入りません。Mino が将棋について知っていることは、すべて人の対局から学んだものです。
見たことのない対局者で試す
学習した棋譜を覚えただけのモデルは、数字の上では優秀に見えて、何の役にも立ちません。そのため Mino の評価は、学習から完全に外した対局者に対して行います。局面単位ではなく対局ごと丸ごと除外し、その対局者自身の指し手だけを採点します。
この条件で最も成績が良いのは、まさに設計の狙いどおり、初級者と中級者の指し手の予測です。コンピュータ相手が最も人間らしくないと感じられてきた領域です。
役割に応じたエンジンを
Mino は最強を目指して作られたものではなく、そう主張もしません。人の手を予測するモデルが読みの深さでエンジンに勝てるはずはなく、その必要もありません。
ですから将棋城は両方を使います。人間らしさが大切な対局相手は Mino が担当します。正確さがすべてである高段者向けの対局と解析は、従来のエンジンが担当します。
学習には、オープンソースの将棋サーバー lishogi.org で公開されている棋譜を使用しています。将棋城は lishogi と提携関係にはなく、推奨を受けてもいません。対局者名やアカウント情報はモデルに使用していません。
Mino と対局する
将棋城の対局相手はすべて Mino AI です。好きな強さで対局できます。