「令和の虎CHANNEL」と言うチャンネル登録者数 115万人ものYouTubeチャンネルに、電竜戦で人間最強賞を受賞した人が出演していた。
【FULL】生活保護を受給する男に虎が現実を突きつける。初心者でもプレイできる3択将棋アプリを提供したい【堀田 千】[550人目]令和の虎
この出演された堀田さんは、初心者でもプレイできる3択将棋アプリを作りたいから出資して欲しいと令和の虎たちにお願いに参上したようだ。
堀田さんは、この番組で紹介されていたキーワードを拾うと、
・IQ 150超え
・MENSA会員
・ADHD
・500万円分の機材(?)を窃取された
・双極性障害 I型
・生活保護を受給している
・自分で作った薬で寛解
・将棋アマ五段
・電竜戦で人間最強賞を受賞
など、情報量が大変多い。
この動画について感想を述べている別のチャンネルの動画があるので、そちらも参考にされたい。
堀田さんは、大変頭の良い方であることは間違いないのだが、三択将棋アプリに関しては、私も一言二言、言っておきたいことがある。
まず三択将棋アプリこれ自体は、堀田さんのオリジナルのアイデアではなく、私も20年ぐらい前から(そういうアプリを作りたいんだけど作れるか?というような)問い合わせを何度も受けたことがある。
そして私は何度もその可能性について検討してきた。
今回、その内容について技術的な内容まで踏み込んでここで詳しく書くのは、今後、三択将棋アプリのようなものが出てきたときに、堀田さんが「俺のアイデアをパクリやがって!」みたいに思わないためでもある。
そのようなアプリが商業的に成功するのかについては、プロモーションの問題などがあるので、ここでは言及しない。
ここでは、どのようにして三択の問題を出すのかというロジックの部分について技術的なことを説明する。
堀田さんは動画のなかで、このあたりをうまく説明できていなかったために、虎たちにこれでなぜ将棋が上達するのか、どこが面白いのかという部分があまり伝わらなかった。そのことも虎たちが出資する/しないを判断する上でのマイナスとなったように思う。
話は長くなるが順番に書いていく。
将棋ウォーズでは、自分が悪手を指した将棋の局面を問題として出して、自分が指した指し手と正解(AIが考えた指し手)の2つを選択肢として表示し、選ばせるような「棋神クイズ」という機能がいつぞやのアップデートから追加された。
堀田さんは、動画のなかでは、指し手3つからユーザーに正解を選ばせることで(自分が正解を選んだかどうかは即座にわかるものとする)人間はそこからDeep Learningのようにして学べるはずという考えのようであった。
確かにDeep Learning型の将棋AIの機械学習においては、局面とその評価値を教師として与えて、典型的なDeep Learningのset-up(要するにnetworkにResNetを用いるということであったり、誤差関数にcross entropyを用いるということであったり、optimizerにSGDを用いるということであったり)で、学習させている。
ただ、教師として与えている局面は10億局面とか100億局面とかのオーダーで、なおかつ、用いているnetworkも人間の脳のポテンシャル(学習能力)よりは遥かに高いレベルのものである。(ここ、ちょっと議論を要するのだが、長くなるので割愛)
であるから、人間の場合、もっと効率の良いトレーニング方法でないと学習効率が悪くてやってられないというのはある。要するに正解を提示されるだけでは教材として十分ではないのである。
では、どうすれば良いのか?
まず、将棋AIの評価値とは、PV(Principal Variation : 最善応手列 ≒ 読み筋)の末端の局面で評価関数を呼び出したものである。
$$ eval \leftarrow evaluate(PV_{leaf node}) $$
つまりは、正解と不正解の指し手に関して、それぞれのPVをある程度進めていった局面をユーザーに提示してあげると、その評価値の出どころ(?)がわかりやすくなるわけだ。
実際、棋神クイズでも正解と間違いの指し手に関してそのPVを数手だが進められるようになっている。
そのPVは必然の進行なのか?ここで○○とされたらどう対応するのか?みたいなのを疑問に思うことがある。そのへんも視覚的にわかるようになっているとなお良いと思うのだが、操作性を損なわずにそのへんを盛り込むのは非常に難しい。
そこを盛り込まずして、プレイヤーに自力でわかってもらう方法はないか?ということなのだが、これについても、私は10年ぐらい前には「こうすれば良いのだ」という結論を得ている。
いまから書くことがHEROZの企業秘密だったら申し訳ないのだが、このへんをきちんと説明しておかないと、後で(堀田さんに限らず誰かから)「あのアイデアは俺が先に考えた」みたいなことを私に言われても困るので、このタイミングでここに書いておくことにする。いまから書くことは、HEROZ関係者から聞いたということは断じてない。
まず、棋神クイズがどうやって問題として出題する局面を選んでいるかだ。
ユーザーが対局した棋譜を将棋AIで調べて、そのユーザーが評価値を大きく損ねた局面を問題として出題している…と皆んなは思っているだろうが、実はそんな単純なものではない。(と私は思っている)
そんなことをすると問題の難易度がバラバラになるし、また、正解を提示しても(ユーザーの棋力が足りずに)わかってもらえないだとか、(ユーザーの棋力がありすぎて)問題としてつまらないものになったりもする。そのユーザーが実際に指した指し手ではあるのだが、タップミスで指したような指し手を問題として出されましても…みたいなところはあるからだ。
だから、ユーザーにとって適切な問題難易度となるような局面を選んでやる必要がある。
そこで、次の一手問題の自動作問手法として有名(たぶん論文がいくつかあったと思う)な手法を応用する。
このブログで何度か取り上げているが、(PALの作者が考案した)「平均パフォーマンスレート」という指標がある。これは、棋譜からその対局者の強さ(レート)を推定するのに用いられる指標である。この考え方を用いる。
AIの指し手が正解だと仮定して、(そのプレイヤーが)一手ごとに期待勝率をどれだけ下げるかの平均を求めるわけだ。
当然ながら強いプレイヤーほど、AIの指し手に近いので平均的には期待勝率をあまり下げない。
つまりは、強いプレイヤーはある局面の2つの候補手を見比べて、その差が小さくても検知できるということだ。
逆に弱いプレイヤーは大きな差でないと検知できない。
それこそが棋力というものの正体なのである。
さて、評価値は、+∞で期待勝率100%(1.0)、-∞で期待勝率0%(0.0)であるから、そのような性質を持つ関数(例えば、シグモイド関数)を用いると、評価値から期待勝率に変換できる。
$$ \varsigma_{a}(x) = \frac{1}{1+e^{-ax}} $$
aは10年ぐらい前は1/600(ponanza定数と呼ばれる)で運用されることが多かったが、最近は、将棋AIが(有利な局面から)逆転しにくくなったため、1/350程度にまでなってきている。
さてこのようにして期待勝率が求められるから、つまりは、将棋ウォーズの棋神クイズの問題は、プレイヤーが単に悪手を指した問題を出題しているのではなく、AIの指し手とのプレイヤーの指し手との期待勝率の差を調べ、それがそのユーザーのレーティングで解けるか解けないかぐらいの差であるような局面から出題しているのではないかというのが私の考えである。(そのようにして局面を選ぶと、そのプレイヤーの実力に見合ったいい問題である可能性が高い。)
そのユーザーにとって適切な難易度の問題なのであれば、その後のそれぞれの指し手のPVさえ見せてあげれば、ユーザーがそこから学べる可能性は非常に高くなるということである。
将棋の次の一手の自動作問を行う研究では、もっと様々な観点から(次の一手問題として面白いとはどういうことなのかだとか、上に挙げた以外で問題の難易度を推定する方法だとか)その手法が提案されていたりする。興味があれば各自調べて欲しい。
いずれにしても、三択将棋アプリの三択問題の出題アルゴリズムとして、自動作問技術が応用できることをここで指摘しておき、また、三択将棋アプリというアイデア自体は20年前から多くの人が考え、そして私も実際にそのような問い合わせを受けたことがあり、(技術的な内容もさることながら)マネタイズの難しさから多くの人が断念してきたアイデアだということを指摘しておく次第である。(これは、三択将棋アプリのアイデア自体を否定するものではない。類似のアプリが今後出現したとしても「俺が考えたアイデアだ」のようには思わないで欲しいということである。)
2024/04/13 13:00 追記
ねこ将棋という三択の選択肢が出てくる将棋アプリがすでにあるそうな…。
また、囲碁ウォーズにも三択機能がすでにあるそうです。
https://twitter.com/toopiltzin/status/976088147766386690
2024/4/13 21:00 追記
HEROZの林社長からコメント頂戴しました。
3択機能は、2017年12月にHEROZがローンチした囲碁ウォーズに実装していたのが懐かしいです。
— 林 隆弘(Takahiro Hayashi) (@takhaya) April 13, 2024
囲碁は、初期配置がある将棋と異なり、どこから打てば良いのか初心者には複雑だったために、囲碁メンバーが考えて実装したと記憶しています。… https://t.co/AF0XrcFLm2
あと2009年には銀星将棋に実装されていたようです。
3手先まで読むとその手が良い手だと理解できるようなのと、20手先まで読むとその手が良い手だと理解できるようなのと、そういう違いもあると思う。マスク美女なんだけどマスクを取るといまいちとか、そういうのを見る目みたいな
ええ。なので、ユーザーに5手先までのPVを見せるとして、5手目の静止評価で良しになってる局面にする必要はあるかと…。