Qhapaq Research Labに棋譜検索機能が実装されました

Qhapaq Research Labの棋譜レーティングシステムを大幅に更新しました。具体的には各ソフトの棋譜や戦型別の棋譜を検索できるようになりました。ベータ版ではあるものの戦型別勝率などの使いみちがあるので簡単に紹介したいと思います。

 

棋譜検索ページはこちらから入れます

各ソフトのリンクをクリックするとそのソフトの棋譜(ただし、2018年以前の棋譜はuuunuuunさんのページのものなので現時点では閲覧できません。大雑把に言ってQQR以降の棋譜のみの対応です)をみることが出来ます。

 

ページ上部にあるテキストボックスに検索ワードを入れることで、その条件を満たす棋譜を検索することが出来ます(ワードはスペース区切り、AND検索)。現時点で以下のワードに対応しています。

 

【各種戦型】

・角換わり .... 20手目以内に角を交換

・相掛かり ... 双方が飛車先を交換した上で20手目までに横歩を取らない

・横歩 ... 先手が横歩をとる

・後手横歩 ... 後手が横歩くとる

・先手/後手向かい飛車 ... 先手/後手が20手目まで向かい飛車にする

・先手/後手三間飛車 ... 先手/後手が20手目まで三間飛車にする

・先手/後手四間飛車 ... 先手/後手が20手目まで四間飛車にする

・先手/後手中飛車 ... 先手/後手が20手目まで中飛車にする

・先手/後手矢倉 ... 78金、77銀の構えを作る、かつ、角を手持ちにしていない

 

【試合結果】

・先手勝ち

・後手勝ち

・引き分け

 

【各種プレイヤー名の状態】

・orqha1018

・orqha1018勝ち

・orqha1018負け

・orqha1018引き分け

・orqha1018先手

・orqha1018後手

 

【年号】

2019年、2018年...

 

【検索実施例】

条件を満たす棋譜の数を調べることで、棋譜のメタゲームの推移を見ることが可能です。

 

f:id:qhapaq:20200511224053p:plain

これが



f:id:qhapaq:20200511224113p:plain

こうなる

【Q1. 将棋ソフトは角換わりが増えているのか】

角換わり 2019年 -> ヒット件数: 7575

2019年 -> ヒット件数: 13645

 

2018年 角換わり -> ヒット件数: 8909

2018年 -> ヒット件数: 26093

 

2018年は角換わり率が35%程度だったのに対し、2019年は50%を超えており滅茶苦茶増えています。

 

【Q2. 横歩の後手は勝てないのか】

横歩 -> ヒット件数: 10215

横歩 後手勝ち ->ヒット件数: 3857

横歩 引き分け -> ヒット件数: 389

全然勝てません。勝率4割未満です。

 

角換わり -> ヒット件数: 16484

角換わり 後手勝ち -> ヒット件数: 6953

角換わり 引き分け -> ヒット件数: 1073

因みに角換わりだとこんな感じ。引き分けが多い

 

【Q3. 向かい飛車 vs 三間飛車 vs 四間飛車 vs 中飛車 in 後手】

後手向かい飛車 -> 22/78 (勝率)

後手三間飛車 -> 112/317

後手四間飛車 -> 242/848

後手中飛車 -> 12/44

 

三間飛車の優勝。時代は三間飛車

 

【最後に宣伝】

QRLでは将棋ソフトの対局結果を募集しています。以下の条件を満たす棋譜がありましたら、ぜひ分けていただけると幸いです。

 

・一手あたりの読みの深さが、やねうら王+初期局面で一手1700万ノード以上となるような計算条件

・公開されている将棋ソフトを利用する

 

興味がある方は開発者までご連絡ください(twitterのDMがおそらく一番早いです)。

Qhapaq from NeoSaitamaの評価関数(やねうら版)を公開します

WCSCオンラインで使ったQhapaq from NeoSaitamaの評価関数を公開します。

 

github.com

 

本評価関数はhalfkpe9版となっております。halfkpe9に対応したやねうら王はtttakさんのgithubなどから取得できます。

 

今回のqhapaqの関数は平たく言えばorhqa-halfkpe9です。めきっと氏が開発したillqha-halfkpe9に対してillqha->orqhaで施した学習をした結果、長い持ち時間でやねうら系列に勝ち越すようになりました。

 

【強さ】

具体的には32スレ4秒(kristallweizen側で凡そ1手6000万ノード)+定跡オフの対局で

62-30 vs kristallweizen

60-32 vs illqha-halfkpe9

 

となる程度。halfkpe9系の評価関数は、総じて持ち時間が長いと強くなる傾向にあるようです。

大会最終成績4位、優勝した水匠に勝利と第一線でも使える強さであると自負しています。

 

【Qhapaq本番環境を復元】

探索部は上記tttakさんのものをそのまま使っています。preponder入りのクラスタ(96スレ*6)で動かしました。定跡は最終的にオフになりました。

 

github.com

【詫び石】

散々ディープを使う言うたのに、使わなかったことお詫び申し上げます。

本評価関数はいうなれば詫び石です。他の関数よりも弱い可能性がありますが、詫び石が渋いのはよくあることなので許してください。

WCSCオンラインでのメタゲームの変遷とQhapaqの記録

世界コンピュータ将棋選手権オンラインverを視聴してくださった皆様、ありがとうございました。我々のチームはQhapaq_from_NeoSaitama(チーム:オムラインダストリ将棋部)で参加し、4位となりました。

 

本大会はNNUEの発展やディープ勢の躍進など複数のメタゲームが入り乱れる大会となりましたが、Qhapaqチーム視点で見た感想を述べていきたいと思います。

 

【0.ディープを使えなかったことへのお詫び】

まず最初に皆様に謝らなければなりません。アピール文書ではdlshogiベースのエンジンを用意している、昨年準優勝ソフトと同じ程度の強さになったと書いていましたが、結局大会ではディープを使いませんでした。それには以下の理由があります。

 

1.dlshogiをforkして作った探索部が稀にクラッシュする問題を解決しきれなかった

2.計算資源の調達に失敗した

3.やねうら王ベースの評価関数もdlshogiベースのエンジンと同等程度(値段vs強さでみたらこっちのほうが圧倒的に強い)に強いのができた

4.deep用の定跡を用意する暇がなかった(結局やね側も最後は定跡を使わなかったのですが)

5.やねベースの評価関数のほうがユーザにとって使いやすく、勝てたときの宣伝上の価値が大きいと思った

 

寸前までとても迷ったのですが、皆様の期待に添えなくて申し訳ないと思います。

 

以下、本大会で面白いと思ったメタゲームの変遷を解説します。

 

【1.min-max vs mcts

本大会で大きな注目を浴びたのはディープ+mctsを基調としたエンジンです。特にdlshogiはhoneywaffle(探索部はやねうら王、評価関数の強さは白ビールと同等らしい)に勝利しています。floodgateでもやねうら系列のソフトを駆逐しており今後ディープ軸が優勝争いに絡んでくることが大いに期待されます。

ディープ系のソフトの読みはやねうら王などのmin-max系のエンジンと良くも悪くも異質であり、レートの高いソフトに勝てる一方、レートの低いソフトにあっさり負ける可能性もあります(floodgateのdlshogiの棋譜を見ると解りやすいでしょう)。wcscのように全ての試合に勝たないと優勝できない大会だと、勝ちを落としにくいソフトのほうが有利な面があるのがディープ勢にとっては辛いところです。

あと、単純にGPUを使った開発戦争はカネがかかる

 

【2.amd vs クラウド

昨年の大会はクラスタ祭りでしたが、今年の大会は"自宅PC"勢が増えました。amdの最新のCPUはクラウドで調達できるCPUにも匹敵するスレッド数やクロックを持つ上にキャッシュメモリが大きいため、NNUEの計算が特に早くなるという特徴がありました(私はこの辺詳しくないですが)。

単純なNPSでいえばamdの方に分があったと思われますが、Ryzen Threadripper 3990Xはクラスタを作るのには適さず、クラウド勢が使っていたようなmultiponderは組み難いです。今後Ryzen Threadripperのクラウドサービスみたいなのが出てくれば可能でしょうが、クラウド市場的には微妙な気がします。

Ryzen Threadripperを買えば学習などにも流用できるのですが、上記ディープ勢が来るかもしれないことを考えるとお払い箱になる可能性もあり、開発者の財布に大いなる悩みを与えることでしょう。

 

【3. 定跡と戦型選び】

今期は過去2年に比べ角換わりが減ったように見えます。角換わりが減った関係で千日手も減ったように見えます。代わりに相掛かりと矢倉が増えたようです。なぜ、今まで角換わりばかり指されたかというと、2018-2019年の時点では先手勝率は

横歩>>角換わり>相掛かり/矢倉・雁木(後手だけ角道を塞ぐものは含まない)

となっており、後手は横歩を避けたい、そして、先手は相掛かりや矢倉は組みたくなかったからです。しかし、今年の角換わりには二つの逆風がありました。一つは、2019年にやねうら王が編み出したテラショック定跡(様々な局面を事前に評価し、最善手を導き出しておくことで時間を稼ぐ作戦)です。テラショック定跡(やそれに似た戦略)では戦型指定するのは人的コストが高すぎるためテラショック+角換わりはやりにくかったのです。もう一つはソフトや人間が延々と角換わりを研究したことです。相手の研究にのるリスクや千日手の可能性を加味すると、先手視点でムリに角換わりを推す理由も減ってしまいました。

私が思う、今(そして今後)の定跡の二大トレンドは角換わり vs 矢倉相掛かりではなく、作るか vs 作らないかです。定跡を最低限にし浮いた時間で評価関数や探索部を強くするか、定跡に伸びしろを求めるか。定跡巧者相手に定跡を外す戦略も今後大きなトレンドになると見ています。

 

 

【以下、qhapaqの感想戦(と書いてポエム)】

今回のqhapaqの関数は平たく言えばorhqa-halfkpe9です。めきっと氏が開発したillqha-halfkpe9に対してillqha->orqhaで施した学習をした結果、長い持ち時間でやねうら系列に勝ち越すようになりました。具体的には32スレ4秒(kristallweizen側で凡そ1手6000万ノード)+定跡オフの対局で

62-30 vs kristallweizen

60-32 vs illqha-halfkpe9

程度の成績を上げるようになりました。しかしこの関数、1手300万ノード程度の試合ではkristallweizenに負け越すし、互角局面を用意して戦わせるとレートが60ぐらい下がると色々問題も抱えていました。

 

余談ですが、qhapaqのディープ軸は

1手約6000030000ノード(deep、V100を利用) vs やね(32スレ4秒)で6:4でディープが勝ち越すぐらいであった一方、やね側のノード数を下げても、ディープ側はあまり勝率が上がらなかったので(逆にノード数を上げても勝率はそんなに減らない)、読み筋が異質であるという印象を受けました。ディープにクラッシュする危険があること、カネがかかることを考え、泣く泣くやね軸を使うことにしました。

 

関数が4月頃に出来たので定跡を作る暇はなく、世に転がってた定跡を適当にかき集めて使いました。クラスタも昨年使ったpreponder入りのものを使い、ハード構成もほぼ同じもの(96スレ*6)を使いました。

 

以下、大会結果と感想。棋譜こちらから

1戦目 vs argo(先手、勝利)

横歩の展開。青野流から飛車を切った攻めが強烈に刺さりそのまま勝利。argoの強気プレイにぎょっとしたし、飛車を切った責めは胃に悪かったが横歩先手は勝ちというトレンドに従い無事に勝利。

 

2戦目 vs 習甦 (後手、敗北)

角換わりで22金が壁になる形。手損はないが玉の形が悪い...など考えていたら、あっという間に玉を寄せられて敗北。ジリジリ悪くなるというよりは急激に反省した形(qhapaqは途中まで自分良しと言っていた)となり、読みの異質さをブツけられた展開。

 

3戦目 vs HoneyWaffle (後手、勝利)

先手中飛車を相手にする。互角な局面が長く続いてドキドキしたが、寄せ合いになる前に模様を良くすることに成功。その後玉が延々と詰まず、316手目で勝利。320手まで行ったら引き分けだったので危ない勝利。

 

4戦目 vs GCT (後手、勝利)

矢倉。中盤で模様を良くしてそのまま押し勝ち。ディープ系は読み筋が異質なので、勝つ寸前まで安心できない相手でしたが、事故は起こらず勝利。やね系以外の相手は胃に良くない

 

5戦目 vs novice (先手、敗北)

相掛かりからひねり飛車で歩を得する展開。指しやすいかと思ったが先手の有利を拡大できないまま、100手目あたりでねじり合いに負けて、一気に-300ぐらいまで評価値を悪くし、そのまま敗北。

 

6戦目 vs ichibinichi (先手、勝利)

再び相掛かりからのひねり飛車。先程のように負けるのではとヒヤヒヤしたが、40手目辺りでqhapaqが模様を良くしたようでそのまま勝ち。最後は玉頭戦になったためこれも大変胃に悪かった。

 

===

ここで、qhapaqのレート測定に使ってた棋譜は角換わりや雁木が多かったのに対し、使っている定跡が相掛かりをよく選ぶことに気付く。定跡の相性が悪いのではと考え、ここから定跡をoffにする。今大会でも相手の多くはpreponderを使っていなかったので、序盤で時間を使っても相対的な消費時間で損することはないだろうと踏んでの作戦。

===

 

7戦目 vs dlshogi (後手、勝利)

雁木がでてホッとする。ジリジリした展開が長く続いたが、dlshogiが長考を連打したお陰で時間差を確保、終盤で競り勝ってそのまま勝利。今日の勝ち戦では一番胃に良くなかった。

 

8戦目 vs 水匠(先手、勝利)

水匠は優勝確定、qhapaqも仮に勝ったとしても3位以上は他力と消化試合感があったが、水匠の全勝優勝は避けねばならぬ。水匠の定跡が長く50手目ぐらいまで付き合わされたものの、定跡を抜けた時点でqhapaqは少し有利(評価値200前後)となっていた上に、水匠の長考にpreponderが刺さりそのまま勝利。優勝ソフトにこう言っては何だが、評価値推移だけで言えば今日の勝ち戦で一番胃に優しい勝ち方だった。定跡はイラン子だったんや......

 

【まとめ】

最終順位は4位でした。自己ベスト(5位)を更新する良い結果です。ご視聴いただいた皆様、誠にありがとうございました。来年もよろしくお願いします。

 

halfkpe9勢、もっとたくさん出てくると思いましたが自分の他に居なかったかもしれません(少ないもののいた模様。要検証)。NNUEのアーキテクチャの改造も今後のトレンドになることでしょう......

流行りの機械学習をフル活用して棋力スカウター開発してみた話(後編)

歴代の名人と今の名人はどちらが強いのか。将棋が強くなる上で必要な力は何であるか。女流棋士は此処数年でどのぐらい強くなったのか。アマチュアトップとプロの実力差はどのぐらいなのか。

前回に引き続きこの壮大な問に挑戦するべく、棋力スカウターの開発をしていきます。今回はKaggleなどで使われる技術をフル活用して回帰精度を上げていきます。今回用いた技術の大半は以下の書籍から学ぶことが出来ます。実際お勧め。

【前回までの進捗】
前回までの進捗を簡単に纏めると以下のようになります。

・人間の棋譜と各局面での評価値をやねうら王で計算したものから対局者のレーティングをあてるのが目標
・先行研究で使われていた、最善手と実際の指し手の評価値の差分の平均値からレートを計算する機能を実装
・評価値の差分の平均値とレートの間に強い相関があることを再現
・一方、1局毎の評価値差分の平均は人によってブレが大きいことを確認。特に相手が勝手に自滅した場合にフタコブになってしまう
・評価値の差分ではなく、評価値から計算される勝率の差分を指標にするのは良くないことがわかった

qhapaq.hatenablog.com

この面倒な問題に流行りの機械学習技術をフル活用すると果たしてどうなるのでしょうか。


【今回の棋力測定戦略】
今回は「局面毎にレートを推定し、各種モデルのアンサンブルを取って最終予想とする」という戦略を用います。

教師データとしてプレイヤーの棋譜を見た場合、プレイヤーによって棋譜の数が変わり、更に、棋譜によって手数が変わります。可変長のデータを扱う方法としては、RNNなどの自然言語処理向けの技術が知られていますが、これらの手法は往々にして計算量が多く、今回のような教師データが少ない系にはあまり適していません。

そのため、前回紹介した評価値差分平均と同様に、局面毎に手の質を計算しその平均からレートを計算することにします。手の質は色々な評価方法が考えられますが、ここでは評価値の分布から指し手のレートを予測する問題を教師あり学習で解かせて、レートの予測値を手の質とみなすことにします。回帰モデルには機械学習コンペでよく用いられる勾配ブースティング(XGBoost、NGBoost)とニューラルネットワークの二つを用いました。

最終的なレートは各種モデルが予測したレートの合議で決定します。合議の方法についても勾配ブースティングによる教師あり学習を用いました。

全体の学習の流れは以下のようになります。

f:id:qhapaq:20200301192659p:plain
棋力スカウターの学習フロー


【各種モデルの回帰結果】
以下に各種モデルの回帰結果を紹介します。

【XGBoost】

f:id:qhapaq:20200304083045p:plain
xgboostによる棋力予想。横軸がレート(右ほど強い)、縦軸が棋力(上ほど強い)

f:id:qhapaq:20200304083608g:plain
図面上部に書かれているのが正しいレート、横軸が1つの対局から予測されたレート、縦軸がその分布

グリッドサーチでハイパラチューニングをしたり、考慮に入れる手の順位を弄ったりしましたが、予測精度には殆ど差は出ませんでした。評価値差分のときに比べフタコブが大分緩和されているのが解ります。どこをみてコブを消したのかが凄く知りたいですが、勾配ブースティングの判断基準の可視化って難しい。

【NGBoost】
NGBoostは予測の不確かさも同時に出力できる、新型の勾配ブースティングです。かの有名なAndrew Ngも開発に絡んでいるのでこの名前になっているようです。中身の概要を知りたい人にはAI Scholarの記事がおすすめです。

挙動としてはXGBoostとほぼ同じです。NGBoostにはweightの調整機能などの気の利いた処理がないにもかかわらずXGBoostに比べても悪くない結果が出ています。不確かさが出るのも用途によってはものすごく便利でしょう。


f:id:qhapaq:20200304084237p:plain
横軸が実際のレート、縦軸が棋力 in NGBoost

f:id:qhapaq:20200304084402g:plain
図面上部に書かれているのが正しいレート、横軸が1つの対局から予測されたレート、縦軸がその分布

ニューラルネット
MSEという観点ではニューラルネットが一番いいスコアが出ていました。

f:id:qhapaq:20200304084537p:plain
ニューラルネットによる棋力予想 横軸が実際のレート、縦軸が予測された棋力

やはり、フタコブはある程度解消されています

f:id:qhapaq:20200304084716g:plain
図面上部に書かれているのが正しいレート、横軸が1つの対局から予測されたレート、縦軸がその分布


【アンサンブル】
今まで作ったモデルをよく眺めると、モデルによって一長一短があることが解ります。例えば、レート上位層の予測については単純な評価値差分が良いように見えますし、フタコブをなくすという意味では勾配ブースティング系が良さそうです。そして、単純なmseではニューラルネットが良さそうです。

そこで、これらの意見のいいとこ取りをするために、各種モデルの予測値をあつめ、これらを合議することで最終的なレートを予測し直すことを考えます。Kagglerにとってはおなじみの合議です。

まずは単純な線形足し合わせ。フタコブがかなり解消され滑らかになっているのが解ります。

f:id:qhapaq:20200304090924g:plain
図面上部に書かれているのが正しいレート、横軸が1つの対局から予測されたレート、縦軸がその分布

XGBoostを使って回帰した場合。更にピークがシャープになっています。

f:id:qhapaq:20200304090957g:plain
図面上部に書かれているのが正しいレート、横軸が1つの対局から予測されたレート、縦軸がその分布


棋力の予測値が全体的に2000によっているのが気になる(二乗誤差を基準にしたのが悪い)ので、実際にレートを予測する場合は「予測値*3 - 4000」みたいな式を挟む必要があるでしょう(二乗誤差よりも優れた評価関数があればもっと精度は上がるのでしょうけど、あまりそのへん詳しくないので詳しい人良ければ教えてください

【まとめと課題】
棋譜の特徴量抽出+各種非線形モデリング+アンサンブルというKaggleでおなじみの技法をフル活用して棋力スカウターを作ってみました。モデルを増やしアンサンブルを取ることで予測精度が向上することが確認できました。未解決の課題としては以下のようなものがあります。

・本当に過学習していないかを確認する
・プロ棋士やコンピュータなど教師データよりも強いプレイヤーの棋力を見積もれるか


【次回予告?】
スカウターの骨組みが完成したので、これを使ってプロ棋士やコンピュータの棋譜を解析していきます。冒頭で述べたような壮大な問は解けるのか....ご期待ください!

流行りの機械学習をフル活用して棋力スカウター開発してみた話(前編)

歴代の名人と今の名人はどちらが強いのか。将棋が強くなる上で必要な力は何であるか。女流棋士は此処数年でどのぐらい強くなったのか。アマチュアトップとプロの実力差はどのぐらいなのか。

 

こうした問題の答えを得ることは、将棋AIに期待されている大きな仕事の1つです。人間であれば手の評価にブレが出てしまったり、そもそも巨大な棋譜のデータを読み切る事自体が困難であるという問題があります。しかし、コンピュータであれば大量のデータを均一な品質で評価することが可能です。しかも、幾つもの技術的な幸運により昨今の将棋AIは1秒未満の計算でもかなり正確な(ほぼ全ての人間に余裕で勝ち越せるレベルの)盤面評価を行うことが出来ます。

本シリーズでは令和時代の機械学習技術(?)を総動員してできるだけ少ない棋譜で正確に棋力を推定できるエンジンの開発を目指していきます。前編では先行研究の検証を通じてデータの可視化の重要さをお見せすると同時に、勝率ベースの手の評価に潜む落とし穴について検証します。

 

【データ収集と解析方法】

解析はwebから集めた人間の対局棋譜を対象としています。思考エンジンにはやねうら王、評価関数にはorqha、解析はノード数400000で上位10手の評価値を出力しています。

 

【悪手率(評価値の差分)】

将棋AIによる盤面評価、棋力評価は長い研究の歴史があります。特に有名なものとしてはYSS、AobaZeroの開発者である山下氏の研究があります。この研究ではBonanzaから計算した悪手率を用いて、大山15世名人と羽生九段の棋力を予測しています。

この研究ではプレイヤーの実力はAIが導き出した最善手を指したときの評価値と、実際に指された手の評価値の差分の平均(厳密には初手40手を削ったり、形作りを除去したりしている)を棋力の指標に用いています。本手法で将棋倶楽部24のレートをある程度の精度で予測できているとのことなので、まずはこれを検証します。

f:id:qhapaq:20200229220511p:plain

横軸はプレイヤーのレーティング、縦軸は評価値差分の平均(高いほど強い)

先行研究と同様にレートの上昇に応じて概ね評価値の差分が減っていることがわかります。先行研究に比べレート1000〜1500付近での悪手率の増加が著しくなっていますが、これは計算条件の違い(形作りの定義が先行研究から定まりきらなかった and 実装が面倒くさかったので手数のフィルタだけにしてる)や評価エンジンの違いと思われます。

しかし、評価値の差分はレーティングの指標としては不安定な側面があります。下図は1つの対局で得られる評価値差分平均から推定されたレートのヒストグラムです(図面上部に書かれているのが正しいレート、横軸が1つの対局から予測されたレート、縦軸がその分布です)

f:id:qhapaq:20200229221238g:plain

レート分布のアニメーション

評価値差分は大量の棋譜の平均で見れば良い指標であると言えますが、ヒストグラムでみるとコブが二つあることがわかります。レートが1000前後のプレイヤーでも時折レート3000前後のスコアが出ているのは相手が先に致命的なミスをした結果、ミスらしいミスをする前に対局が終わってしまったことを示唆しています。

 

【悪手率(勝率に変換したもの)】

評価値の差分ベースで悪手率を計算すると、評価値が3000の局面から評価値を500損するのと、評価値が0の局面から評価値を500損するのを同じレベルの損失であるとみなしてしまいます。

将棋ソフトの評価値と勝率の関係はシグモイド関数に似ていることが実験的に知られているため(下図参照)、評価値が0から-500になるのは3000から2500になるよりも損と言えます。

f:id:qhapaq:20200229222011j:plain

例:elmoでの評価値と勝率の関係図。横軸が評価値、縦軸が勝率、バーは分散

ならば、評価値の差分の代わりに、評価力計算できる勝率の差分の平均を取ったほうが良いのではないか。と思うのは割と自然な発想と言えます.....が

f:id:qhapaq:20200229222324p:plain

横軸はレート、縦軸は勝率ベースで見た差分の平均(高いほど強い)

 

f:id:qhapaq:20200229222451g:plain

レート分布のアニメーション for 勝率差分

ご覧の有様です。特にレート1000前後の領域で勝率差分平均が殆ど変わっていないことがわかります。高レート領域でのグラフについても評価値の差分の方が滑らかであり、棋力の指標として扱う際には評価値は勝率に変換しないほうが良いことが示唆されました。これは筆者にとっても少し意外でしたが、互角の局面であろうと優劣がついた局面であろうとミスの価値は変わらないということでしょう。

 

【後半の予告】

此処までの研究で、意外にも(?)評価値を勝率に変換しないほうが棋力を見る上では適切であるという説が得られました。昨今の将棋中継では評価値を勝率に変換したものもありますが、どうやら棋力を見る上では素の値のままのほうが良さそうという大胆な仮説にも繋がるような面白い発見であると思います。

さて、後編ではKaggleでおなじみの手法を駆使してレートの分布をより美しくしていきます。何処まで綺麗にできるかは今後の頑張り次第ですが、現状フタコブを消すところまでは成功しています。

f:id:qhapaq:20200229231321g:plain

Kaggleで出てくるおなじみの技術を活用しまくった結果(仮)

ご期待下さい!

ダニング=クルーガー効果によるwebイキり対策とその誤用

ダニング=クルーガー効果とは、能力の低い人物が自らの発言・行動などについて、実際よりも高い評価を行ってしまう認知バイアスのことです。

ダニング=クルーガー効果はyoutube地方でよく見るwebイキリ芸人に対する防衛術から、エンジニア同士の奥ゆかしいコミュニケーション(*)にも使える非常に汎用性の高いものです。発見者の二人はその功績から2000年にイグノーベル心理学賞を受賞してもいます。

(*) 「完全に理解した」という言葉を殆ど理解していないという意味で使ったり、「チョットデキル」という言葉をその分野の第一人者であるという意味で使うなど

 

しかし、このダニング=クルーガー効果。多くの人がその効用を勘違いしています。いや、厳密には、勘違いをすることで勘違いが勘違いじゃなくなっているのですが......

そこで、本稿ではダニング=クルーガー効果をもう少し深堀し、より適切なwebイキリとその防衛術を模索していきます。

 

ダニング=クルーガー効果を吹聴する人間の勘違いを正すために、貴方が言うべき言葉は至ってシンプル。「ダニング=クルーガー効果は君が期待するほど強力なものじゃない」です。

これは、原著論文を読めば確認できます。

論文ではユーモア(*)、論理思考、文法、論理パズルの4つのスキルに関するテストを行い、自分が全体の上位何%ぐらいに居るかを予測してもらっています。その結果がこちらです。横軸が実際の順位(右に行くほど高スキル)、縦軸が自己申告したもの(上に行くほど高スキル)です。


(*) ジョークの面白さの評点がコメディアンの評点にどのぐらい近いかを測定したらしい。

 

【ジョーク】

f:id:qhapaq:20200125174309p:plain

【論理思考】

f:id:qhapaq:20200125174330p:plain

【文法】

f:id:qhapaq:20200125174342p:plain

【論理パズル】

f:id:qhapaq:20200125174404p:plain

 

確かに、スキルがない人ほど自分のスキルを過剰評価しがちという傾向はあります。しかし、ダニング=クルーガー効果を画像検索すると往々にして出てくるような、謙虚化(自分のスキルが足りていないことを自覚して自己評価が下がる)は殆ど発生していません(実験協力者の人数が100人程度であることを加味すると、誤差の範囲と言えるレベルです)。それ故に、謙虚化については原著論文では殆ど言及されていません。

 

謙虚さの重要さを語る上でダニング=クルーガー効果は非常に便利な道具です。きっとyoutubeセミナーチャンネルでも使われているでしょうし、そのチャンネルを批判する人にも使われていることでしょう。

が、用法として間違っています。その手の輩を見たら言ってやりましょう。

 

「君はダニング=クルーガー効果の理解が足りていないから過剰に信頼しているのかも知れないが、ダニング=クルーガー効果は言うほど強力ではない。私ぐらいになってくるとダニング=クルーガー効果などとおいそれとは言えないよ」......

 

ちょっと待て。この言い回し、どこかで見たことがあるぞ......

 

ネット上でよく目にする方の、ダニング=クルーガー効果やん

 

(ここからは完全に私の妄想です)

 

ダニング=クルーガー効果の理解度に対する自己評価。原著の実験よりも激しくダニング=クルーガー効果を起こしているのではなかろうか。

そして、ネットに拡散される過剰広告されたダニング=クルーガー知識を信じる人が増えれば増えるほど、ダニング=クルーガー効果の理解に対するダニング=クルーガー効果はネット住民が想像するようなダニング=クルーガー効果へと近づいていく。その暁には「ダニング=クルーガー効果は弱い」と主張する私のほうが間違っていることになる......

自分自身を実験台に完成する理論とは。ダニング=クルーガー効果、恐るべし。

金田一少年の事件簿の犯人当てマニュアル

※ マニュアル自体にはネタバレ要素はありませんが、実践編はネタバレがあります。ご注意ください。

 

金田一少年の事件簿は累計一億部を超えたミステリー漫画の金字塔とも言える作品です。長編漫画だけでも50以上の事件に巻き込まれ、数百人規模の死体と50人以上の犯人の悲しいストーリーを目にしてきた金田一少年ですが、そのストーリーを俯瞰してみると犯人の人選に規則性があることが解ってきます。

 

本稿では小学生時代から金田一を読み続けてきた重度の金田一ヘッズである筆者が金田一の犯人あてをやる際につかうテクニックを、本編のネタバレを含まない形で紹介していきたいと思います。因みに筆者は下記のトリックで犯人当てクイズに十連勝中です。

 

トリック1.異変を発見したヤツが犯人

密室殺人や不可能殺人は登場人物の恐怖を煽る矛であると同時に犯人を守る盾でもあります。しかし、綿密なトリックの中には犯人自らが登場人物を誘導しなければならないものも少なくありません。数ある誘導の中でも最も典型的なのは死体や脅迫状を見つけて大声で叫ぶことです。手元の調査では35件中9件の事件において犯人はトリックなどへの必要性などから死体(またはそれに類するもの)の第一発見者をやっています。犯人探しの王道とも言える技です。

 

トリック2.場を提供したヤツが犯人

計画殺人を行うにあたり地味かつ極めて面倒なのが被害者(+必要に応じて探偵役)を一箇所に集めることです。また、密室殺人や不可能殺人を行うにあたり事件現場特有の仕掛けが重要な役割を持つことは多々あります。こうした背景から金田一たちを集めた人物、部屋割りなどを決めた人物が犯人である可能性はかなり高いです。手元の調査では35件中8件の事件において世話人が犯人をやっています。死体の発見者と違って世話人は一事件につき基本一人なので命中率という観点では一番強力(かつ決まると悲しい)なトリックと言えます。

 

トリック3.色恋沙汰周りの敵討ちを疑う

金田一の犯人の動機の多く誰かの敵討ちなのですが、かなりの確率で男の犯人は女の、女の犯人は男の敵討ちをしています。手元の調査では35件中27件が故人に対する敵討ちであり、故人が個人であるケース(故人が複数居るケースなどを除外)については15−4で性別が異なるケースが多数派です。

 

トリック4.地の利があるやつを疑う

事件現場特有の仕掛けを使った殺人が行われた場合、犯人は現場における地の利があることになります。事前に入り込み調査したという設定もありえますが、例えば、事件現場が屋敷などである場合、犯人がそこに長く滞在している可能性は高いです。容疑者の大半が屋敷に長く滞在してるケースも多いですが、屋敷に初めて来た型の人物はかなり白いです。

 

トリック5.某ライバルが出てくる事件では犯人が口を滑らせる確率が急増する

犯人しか知らないことを口走ってしまい探偵に疑われるのは探偵モノではあるあるですが、金田一シリーズでは意外と少ないです(手元の調査では6件)。しかし、発言ミスによる犯人の発覚は某ライバル殺人鬼が絡む事件になると急増します。手元の調査では5件中4件で本来知らないはずのことを口走ったことが犯人特定の要となっています。トリックの仕様上、発言から犯人を特定させるほうが楽とは言え、ちと雑すぎでは......?

 

トリック6.ビジュアルの悪いやつはだいたい白い

物語の終盤で犯人の可哀想なストーリーを展開していく上でビジュアルに恵まれないキャラは涙を誘えないからなのか犯人である可能性が低いです。おばはんは若かりし頃が綺麗な可能性があるのであんまり白くないですが、おっさんは出場回数(そして死んだ回数)に比べると白いです。昔語りをする必要性から老人は結構な白要素です。

 

トリック7.露骨に怪しいやつは寧ろ白い

こいつが過去を語りだしたら画になるかを意識して、画にならなさそうなキャラの推理は後回しにしましょう。あからさまに電波な人物が過去を語りだして悲壮感が出るでしょうか。一人過去の因縁に浸るシーンが既に描かれてしまっている人物の過去語りは既視感を避けられるでしょうか。金田一シリーズの事件は過去語りまで含めての作品です。トリックと同じように丁寧に扱いましょう

 

トリック8.トリックは被害者と犯人の5W1Hに注目しよう

金田一シリーズでは全貌を解明するのが不可能なトリックが多々現れます(コマ割などの関係で情報が足りない、物理的にそもそもありえない、google検索でひどいがサジェストされる etc)。そこで、トリックの全貌を暴いて犯人を当てようとするのではなく、事件前後の被害者の5W1Hに注目しましょう。死体の消失やアリバイトリックの全貌がつかめなくても、「どうやらここは遠隔操作で行けそう」、「この鍵は突破できそう」と言った要領で被害者と犯人の取りうる経路がわかれば犯人候補を絞り込むことができます



各種トリックの使い方:

外部の環境(トリック2,3,4,6,7)から犯人を絞り込み、犯人候補の事件前後の挙動を詳細に読み解く(トリック1,5,8)ことで事件の全貌を明らかにしていきます。犯人命中率の高いトリック1〜3が主軸に、トリック4〜8でサポートをしていく感じです。

以下に具体例を紹介してきます。Good Luck 名探偵君!

 

実践編:雪鬼伝説殺人事件

注意:ここから先は金田一少年の事件簿R、雪鬼伝説殺人事件のネタバレを含みます! そのため、文章そのものを白抜きにしてあります。



金田一と美雪はうぇぶすれっどが企画するスキーイベントに招待される。イベントにはランダムに選ばれたモニターがやってくる

→ トリック2を使えばこの時点で犯人がイベントの最高責任者(うぇぶすれっど社長)であろうと予想がつきます。イベントが2回も遅延されたという美雪の発言と組み合わせると、どうせ天候を利用したトリックを使うんだろと予想もついてしまいます。

 

・参加者の一人(雲沢)が何者かに襲撃される

犯人の姿が映っていないことを考えると、何らかの仕掛けを使って殺害した可能性がある。イベント運営側の黒度上昇

 

・雲沢が行方不明になる。雪に残った足跡的に全員にアリバイがある。無線機も壊され天候も悪いため、建物に閉じ込められてしまう

天候を利用したアリバイの時点で先程のイベント遅延と組み合わせて犯人が社長であるとほぼ確信できます

 

・二人目の被害者が現場近くの倉庫の棺桶から発見される

→ 死体の発見は社長秘書が行っています。社長と秘書の二択にする気満々すぎひんか? この辺から他の参加者は漫画的にも空気になってしまいます。

 

・社長の命令で被害者の棺桶をしまう。その後、二人目の被害者が死んだふりをしていたのではと言う議論になり、倉庫に戻って棺桶を開けるも死体が消失している

→ 棺桶か倉庫にトリックがあると予想できる。それができるのは運営側だけだし、棺桶をしまう命令をした点を加味するとやはり社長が黒い

 

・二人目の被害者(鯖木)のパソコンから、うぇぶすれっどの過去のイメージガールの炎上事件が発見される

→ 今回は若いおにゃのこの敵討ち。となると犯人は男である可能性が高い。まあ、社長も秘書も男で役には立たないが。

 

・鯖木パソコンを自室で解析している美雪が犯人に襲われ、パソコンが壊される

→ 鯖木のパソコンを美雪の自室で解析していたにもかかわらず、社長はそのパソコンを鯖木のものであると言及する。もう駄目やんこの人

 

・山の上から事件現場のコテージを見下ろして金田一が違和感に気付く

→ コマ割的にトリックの種が見えるかは怪しいが、コテージのギミックを使った何かであることは察しがつきます。コテージのギミックを使える人物となると運営側の人間になるし、遠隔殺人が可能なら社長秘書のアリバイは意味をなしません。

 

予想:社長が犯人。そもそもイベントの成り立ち自体が怪しすぎる。ここまで怪しいと逆に外れてほしくなってくる

 

結果:しっかり社長が犯人で幕を閉じる。炎上事件に巻き込まれたアイドルの彼氏だったのでその復讐をしたかったらしい。因みに雲沢の殺害は雲沢のコテージを遠隔操作でコテージごと氷の池の下に沈めるというやべえやつでした。色々無理があると思う......

 

トリック2が強力に刺さりすぎて事件が始まる前から犯人が確信できてしまいましたが、それ以外にもここで紹介したほぼ全てのトリックが使えるという意味で永字八法的な美しさのある事件でした。多分