概要
はじめに
題材にさせていただいたポケモンWordle様(https://wordle.mega-yadoran.jp/)
参考にした教科書(中川聖一.電子工学・技術科学シリーズ 情報理論の基礎と応用,近代科学社)
みなさんは,ポケモンWordle(https://wordle.mega-yadoran.jp/)というゲームをご存知だろうか.※ポケモンWordleをご存知の方はしばらく読み飛ばし推奨
まあまあ前に旧Twitterで流行していた言葉当てゲームである.
ルールは簡単で,まずはランダムに答えとなる5文字のポケモンが決定される.
プレイヤーがポケモンを1匹選ぶと,以下のようにゲーム側は選んだポケモンの名前に色を塗ってくれる.
ここでは,”レントラー”の’ー’が黄色に塗られている.これは,答えのポケモン名に’ー’が含まれるが,レントラーと同じ箇所に含まれるわけではない,ということを示している.よってこの場合は答えにかんして
- 名前に’ー’が含まれる
- 5文字目は’ー’ではない
- 名前に’レ’,’ン’,’ト’,’ラ’はいずれも含まれない
というヒントが得られる.
このヒントをもとに次のポケモンを選んでいこう...
例えば筆者は,”マルノーム”(逆張り)を選んだ.するとこのような画面になった.
今度は緑に塗られた.これは,緑に塗られた文字が,答えのポケモン名に同じ位置で含まれていることを示す.この情報を使うと,答えのポケモン名は
- 4番目が’ー’
- ’レ’,’ン’,’ト’,’ラ’,’マ’,’ル’,’ノ’,’ム’は含まれない
とさらに絞り込める.
この流れを何回か繰り返していくと,以下のように答えにたどり着けるといった具合である.
今回は,この言葉当ての際に選ぶポケモンを,確率的に選べないかな~という内容である
情報理論とエントロピー
電気電子工学や通信工学を学んでいるおかしな人たち(誉め言葉)以外は,エントロピーと聞いても何のことかわからなかったり,熱力学の難しいアレねとしか思わなかったりする可能性があるので,簡単に説明する.
エントロピーという前に,まずは情報量というものを示さなくてはならない.SNSなどでは「情報量が多い」などと言ったりするが,情報理論では
と定義される.だいたい底は2.logって何だ?という人はまあ置いといてください.
この式では,pは何か出来事の起こる確率を示していて,起きる確率pが小さいほど,情報量Iが大きいということになっている.
例えば,「6月の大阪で雨が降った」(高確率な出来事)という情報を聞いても,そりゃそうじゃ(オーキド博士)としかならないが,「8月の名古屋で大雪が降った」(低確率な出来事)という情報には,統計的に価値があるというようなことであるらしい.
この”情報量”というものを使って,次はエントロピーを定義する.
式をみてわかる人も多いかもしれないが,これは情報量の平均値をとっている.この式によれば,ばらつきの多いものほどエントロピーHが大きく,ばらつきの小さいものほどエントロピーは小さくなるらしい.
これも例を示そう.例えば6面サイコロを1回振った際の,出目のエントロピーは,
と計算できる.次にコインを1回投げた際の,裏表のエントロピーは,
と計算でき,サイコロのときより小さくなった.よって計算上はサイコロの出目のほうがコインの裏表よりばらつきが大きいということになるが,これは直観に反していないだろう(適当).
ここまでの説明をまとめると,なんだか確率を使って求めることのできる,エントロピーというやつが小さいと,情報のばらつきが小さい,ということである.
条件付きエントロピー
エントロピーの仲間に,条件付きエントロピーというやつがいる.
今回の記事では,この条件付きエントロピーに注目してポケモンWordleを攻略していく.
みなさんは,高校の数学で条件付き確率を習った(突然の断定).
ある出来事Aの結果を知ったうえで,出来事Bの確率はどうなる?といったものである.
この条件付き確率を使って求めるのが,条件付きエントロピー(次式)である.
ここまでくると式から意味がすぐにはわからないが,どうやらこれは,出来事Xの結果を知ったときの,出来事Yの不確かさ (ばらつき)の平均値ということになるらしい.
既に情報理論を学んでいる方々は察しがついたかもしれないが,ポケモンWordleにおいて,
とすると,答えの不確かさについて知ることができるのである.
ならば思うだろう.
不確かさを小さくするようなポケモンを選んでいけば,早く正解にたどり着けるのでは?
ここからは,実際に条件付きエントロピーを求め、比較する手順を,具体例を出しながら説明していこうと思う.
ちょっとした計算例
例えば,答えの候補が何らかの方法によって次の10匹まで絞られたとしよう.
ここでは,トルネロスを選ぶ場合とギラティナを選ぶ場合で条件付きエントロピーを比較し,どちらのほうが(確率的に)絞り込みに有利かを議論する.
実際の確率類やエントロピーの計算結果を示す.
これを見ると,ギラティナを選んだほうがが圧倒的にエントロピーが大きいとわかる.
要するに,”ギラティナ”と入力した結果からは(統計的に)答えについてあまり知ることができない一方,”トルネロス”と入力した場合は答えの不確かさを(平均的に)小さくできるということである.
実際にやってみる
5文字のポケモンはSV時点で557匹もいる.そのため,全ポケモンに対して上記のように手計算するのは実用的ではない.そこで,python上で簡単に実装してみた.今回は,そこまでのヒントによって除外できる(絶対に正解ではない)ポケモンは選ばない,として,候補のポケモンを自動で絞ってくれるようにもした.python環境がない人も,Colaboratoryとかで動くと思う.わからなかったら筆者のXとかで聞いてください.
依存関係とかあるのでフォルダごとダウンロードしてほしいなあ.
実行例
最初はレントラーを入力するように主張してくる.
レントラーを入れてみる
いきなり一択まで絞れた.レントラーは(条件付きエントロピーの観点から)は優秀なのかな?
当然正解
もう一回やってみる.最初は絶対にレントラーが来るようになっている.
今度はかすりもしてない
次はダルマッカが良いらしい.余談だが残っている候補を表示するようになっている.
一気に候補が減った気がする.あとは引き続き機械の言いなりになっていく.
キッショ、なんで分かるんだよ
まとめ
- 情報理論の考え方はWordle等のゲームに当てはめたら面白いかもしれない.
- 今回のお話はみんなが普段使っているデータや通信と深く関わりのある学問の,ほんの入り口なので,面白いと思ったら皆さん調べたりしてほしいね.