皆さんこんにちは、ラスクです。
突然ですが、皆さんはオセロクエストの詰めチャレをプレイされたでしょうか。
今日は僕が詰めチャレを解いていてふと気づいたことを皆さんに共有してみようと思います。
オセロの未来に関する話です。
特にオセロエンジニアの方々に読んでいただきたいです。
(オセロエンジニアとか一桁代しかいないのでは…)
気づいたら5000字超えの大作になってしまいました。
途中で飽きたら離脱してください(^^;)
目次
気づき
その「気づき」はとある方のツイートから得られました。
オセロクエストの詰めチャレ、
終盤練習問題の難易度指標が有段者の感覚で決まってたのを、数値で比較できる(レベルにあった指導ができる)ようになる初めての試みな気がしてるので期待してる(のではやくグーグルの審査通ってほしい— まどっち@下振れ (@nono_articolo) October 7, 2021
詰めチャレによって、終盤問題の難易度を数値化できる、というまどっちさんの指摘です。
そして、実際に詰めチャレは現時点でその役割(難易度数値化)を果たしていると感じます。
未来予測
未来予測というと大げさで、どちらかというとカッコ願望ですが、次のような展開に期待しています。
今までは局面の難易度を評価値のみで判断してきたが、これからは評価値に加えて、人間的な難易度を「分岐数」と「手筋距離」によって判断するようになる。
こんな予想をしてみました。
順を追って解説してみようと思います。
そもそも詰めチャレとは
詰めチャレについて軽く触れておきます。
詰めチャレは最近オセロクエスト(オセロのネット対戦アプリ)に実装されたミニゲーム的な機能です。
細かい機能は説明するよりも実際にプレイして頂いた方が早いので割愛します。
退屈な終盤問題をゲーム感覚で楽しく解くことができます。
革新的なのは、レーティングシステム(イロレーティング)を取り入れていることです。
- プレイヤー
- 問題
の両者にそれぞれレートを設定し、多くの人にプレーしてもらうことでレートが適正値に近づきます。
ビッグデータ(多くの人にプレイしてもらうことで得られるデータ)とレーティングシステムによって革新的なサービスになっていると言えます。
ビッグデータとレーティングシステム
「どうしたラスク?何インテリぶっているんだ。」
と思われるかもしれませが、今回の記事では僕自身慣れない横文字を使ってみようと思います。
もう一度言いますが、詰めチャレのすごさは、ビッグデータとレーティングシステムの掛け算にあります。
今回の記事でも大切な位置付けの用語なので、少し難しいですが深堀しようと思います。
レーティングシステム
大切なのは、「レート=指標」になっている、ということです。
そして、その精度が「まあまあ高い」、ということです。
例えば、オセロクエスト5分持ちにおけるレートはその人の「オセロの強さ」の指標になっています。
もし自分が、
- 自分より強い相手に勝ったら、たくさんレートが増える。
- 自分より弱い相手に勝ったら、少しだけレートが増える。
- 自分より強い相手に負けたら、少しだけレートが減る。
- 自分より弱い相手に負けたら、たくさんレートが減る。
上記のように、対戦相手とのレートの差異によって対戦後のレート変動値が変わります。
(ちなみに上記の方式によるレーティングシステムをイロレーティングと呼びます。)
このようなレーティングシステムを採用することで、あとはプレイヤーが対戦を重ねることで、自然とレートがプレイヤーの強さを「まあまあな精度」で反映してくれます。
数学的には、「レートが(その人の強さを表す値に)収束する」と言えます。
詰めチャレでは「プレイヤー」と「問題」の両者にレートを設定します。
- プレイヤーのレート=プレイヤーの解答力
- 問題のレート=問題の難易度
それぞれ上記のように連動しています。
プレイヤー視点だと、
- 難しい問題を解いたら、たくさんレートが増える。
- 簡単な問題を解いたら、少しだけレートが増える。
- 難しい問題を間違えたら、少しだけレートが減る。
- 簡単な問題を間違えたら、たくさんレートが減る。
問題側の視点だと、
- 強いプレイヤーを間違えさせたら、たくさんレートが増える。
- 弱いプレイヤーを間違えさせたら、少しだけレートが増える。
- 強いプレイヤーに解かれてしまったら、少しだけレートが減る。
- 弱いプレイヤーに解かれてしまったら、たくさんレートが減る。
となります。
結果、終盤力の高いプレイヤーのレートは相応に高くなるし、簡単な問題のレートは相応に低くなります。
相応しい値に収束していくということですね。
長ったらしく、解説してしまいましたが、以上がレーティングシステムの凄さです。
数値化しづらい概念的な値をまあまあな精度で公平に評価し表現できる、という強みがあります。
これにより、従来漠然と捉えていた問題の難易度を、共通のルールによって数値化することに成功したのです。
ビッグデータ
こちらは軽い補足程度で。
要はたくさんのデータです。
レーティングシステムにはたくさんの試行回数が必要です。
収束するにはより多くプレイしてもらう必要があります。
ビッグデータがあってこそ、レーティングシステムの真価が発揮されるのです。
人間的難易度とは
まとめると、詰めチャレは「人間的難易度」を「ビッグデータ」と「レーティングシステム」で数値化することに成功しました。
こうなると次のステップとして、任意の局面の手の良し悪しを「評価値」のみならず「人間的難易度」という視点で判断出来る様になったらいいな、と思いませんか?
僕は強くそう思います。
その背景に、近代のオセロの「評価値至上主義」への懸念があります。
評価値を過大評価している
オセロには、手の良し悪しを数値化した概念があります。
それが評価値です。
数値が大きいほど「良い手」で、数値が小さい程「悪い手」です。
しかし、この評価値も完璧ではありません。
オセロにおける評価値は「互いに最善を尽くした場合の石数差」を表しています。
特に、AIが終盤を読み切った場合は「完全に正確な」評価値になります。
評価値が+6と表示されている手を打った場合、その後双方最善を尽くすと
自分35vs相手29(石数差6)の終局となります。
ここで注目すべきは、評価値は「双方最善を尽くした場合」という条件付きの値だということです。
すなわち、終局までに通過する局面の「人間的難易度」は考慮されていないのです。
評価値の弱点はここにあります。
評価値が良いからといって、必ずしもその手が人間的に勝ちやすいとは限らないのです。
例えば、その後の展開が「人間的に難しい評価値+6の手」と「人間的に簡単な(一通りでカウントが容易など)評価値+2の手」、どちらの方が勝ちやすいか、ということです。
状況にもよりますが、後者に魅力を感じる人の方が多いはずです。
と言っても実は、「評価値」と「人間的難易度」には強い相関があるので、今までさほど話題にされることはありませんでした。
しかし、そろそろ新しい世界に飛び込む頃合いなのではないでしょうか。
AIの威を借りプロに難癖つける将棋初心者
僕は将棋界には詳しくないのですが、こういった話題を耳にします。
最近では、プロの将棋対局の解説のお供に将棋AIが使用されるようになっているみたいです。
現在、プロ棋士よりも将棋AIの方が強くなっています。
そのため、解説にAIを導入すると、今までなんとなくしか分からなかったプロ棋士の凄さを可視化できる反面、「ミス」まで可視化されてしまうという状況になっています。
挙句、AIの力を借りて、将棋初心者がプロの手に難癖つけるという状況にまでなっているそうです。
将棋AIの評価基準(手の良し悪しを数値化する基準)には詳しくないのですが、これも「人間的難易度」を織り込んでいないと思われます。
しかし、それを理解していない視聴者が多いのです。
現在は、そのギャップを埋めるために将棋の強い解説者がフォローすることで成り立っています。
プロが「ミス」をした時に、
「いやー、AIは「悪い手」と評価しましたが、AIの推奨する「良い手」は人間的には難しすぎて実戦的ではないですよ。」などと。
AIが「ミス」と指摘した手は、人間のプロの目からすればほぼミスと見なせないこともあるのです。
これは由々しき事態だと思いませんか?
もしも将棋AIが人間的難易度を表示できれば、このギャップが少しは埋まるはずです。
人間的難易度を数値化する方法
では、どうすれば人間的難易度を数値化出来るのでしょうか。
これについても相変わらず僕は専門外なのですが、誰かにAIを作ってもらいましょう!(他力本願)
とはいえ、ここまで話しておいて全て他力本願なのも無責任なので、少しアイデアを共有したいと思います。
まず、前提として、僕らが目指すのは、局面という「入力」から人間的難易度(を数値化したスコア)という「出力」を得る関数を作ることです。
詰めチャレは、イロレーティングという関数を用いることで、ビッグデータという入力から人間的難易度という出力を得ています。
僕らが目指すのは、入力にビッグデータを必要としない関数(AI)です。
冒頭にも書きましたが、人間的難易度を数値化するには以下の二つが鍵だと思います。
- 分岐数(うみがめ数)
- 手筋距離
手筋距離は僕が勝手に名付けました。(めっちゃダサいので、誰かいい名前を付けて欲しい。)
「人間が経験則から学んだ「手筋の教科書」からどれだけ乖離しているか」を評価します。
うみがめ数は我らがうみがめさんが最近提唱した評価基準です。
例えば、分岐数が少ない(相手のマシな手が一通りしか存在しない)場合は人間的に簡単ですよね。
この分岐数の課題はAIの計算に時間がかかることでしょうか。
その辺は専門家に期待しましょう。(丸投げ)
テクノロジーの発展にも期待ですね!
問題は手筋距離の方です。
オセロは上のレベルに行くほど、手筋の理解が必須になります。
手筋とは「こういう形はこう打つべき」という知恵です。
しかし、実際の手の良し悪しは手筋通りとはいかず、その「例外」にオセロの奥深さがあります。
手筋距離が大きいほど、つまり例外であるほど、人間的に難しくなります。
例えばストナー返しなどは手筋距離が離れた手です。
ストナーという「手筋」の例外にあたるのでスコアが大きくなります。
さて、読者は次のような疑問を抱かれていると思います。
「手筋距離をどうやって数値化するの?」
これまた専門外で申し訳ないのですが、「ビッグデータ」と「機械学習」によって実装するしかないと推測しています。
手筋を分類し(この分類を人間が行うのか、機械が勝手にやってくれるのかは僕は分からない)、それぞれの手筋を人間がどれ程信用しているかを機械学習によって評価します。
参照するビッグデータには、人間の強さ(レート)の情報もあると尚よしです。
「多くの人が隅を重要視しているな」
「強い人は黒を持った時、逆偶数よりも連打を狙っているな」
などなど。
人間が経験則から得た「一般的な手筋の教科書」を、ビッグデータと機械学習によって作り上げます。
その教科書からどれだけ離れているかを数値化し、手筋距離とします。
「ビッグデータ」と「機械学習」によって一度関数ができてしまえば、局面という入力のみで、手筋距離のスコアを求めてくれます。
もちろんこの関数はブラックボックス(中の仕組みは人間には分からない)です。
なんとなくイメージが出来たでしょうか。
問題を解く側と問題を出題する側
ところで、数値化した「人間的難易度」はどのように使われるのでしょうか。
僕がおぼろげに想像しているのは、問題を解く側と出す側の二つの視点です。
問題を解く側はシンプルで、評価値とセットで判断するようになると思います。
同じ評価値ならば、人間的難易度が低い手を選ぶべき、といった発展的な考えができるようになりますよね。
続いて、問題を出す側の視点です。
例えば、-2の負け局面の時、次の手以降に相手に「人間的難易度」の高い手を打たせるような展開を選ぶべき、という考えです。
相手に難しい問題を突き付けるイメージです。
よって、評価値と一緒に、その手を打った後の
- 自分側の人間的難易度 と
- 相手側の人間的難易度
の両方を表示すれば、より高度な分析が出来るようになると思います。
結論
誰かAIを作ってください。
まとめ
- 詰めチャレは人間的難易度を数値化することに成功している。
- 評価値至上主義という現代の問題。
- 評価値と同様に局面だけでそれぞれの手の人間的難易度が表示されるようになる未来。
- 課題は、人間が経験則から得た「手筋の教科書」をAIに機械学習で創らせること。
もし人間的難易度が評価出来るようになれば、
- 新たな戦略がうまれる。
- 観戦者にプレイヤーの凄さがより伝わる。
拙い記事でしたが、最後までお読み頂きありがとうございました。