この記事は, Muroran Institute of Technology Advent Calendar 2018 2日目 の記事です.
はじめに
みなさんはこのようなクイズを見たことがありますか?
$2+3 = 10$
$8+4 = 96$
$7+2 = 63$
$6+5 = 66$
$9+5 = ?$
意味が分かりませんね. どうやら私の生きるている世界で定義されている加算では起こりえない計算が為されているようです. 他の世界での演算を推測するなんて,まるでかつてオランダ語で書かれた医学書を杉田玄白らが暗号解読のごとく翻訳したことのようです.
そこで今回は,こういった別の世界で定義された加算演算を読み解き,IQ130を目指していこうと思います.
導入
まず一般人的観点から思いつくのは,そもそも数値が10進数ではないかもしれないということです. 一見10に見える"10"も2進法の世界では2です. よってn進法へ変換することで活路を見出せるかもしれません.
$2+3=10$ を $n$ 進法表記であると仮定すると,式を10進法表記へ変換すると以下のようになります.
$2+3=n$
この式を満たす $n$ は明らかに5のみですので,このクイズにおける底は5と導けます. しかし,底5を他の式に当てはめても式は成り立ちません(8+4≠51=9*5+6). このことから,'+'を我々の知る加算演算と捉えたままでは一向に解を出すことはできないと分かります.
そこで,'+'を別の演算として定義しなおす,つまり, $a+b≔f(a,b)$ と定義し,関数fを推測することを考えます. そうすることで,クイズは以下のような回帰問題に帰着できます.
- $f:ℝ^2→ℝ:(a,b)↦f(a,b)$
- $f(2,3)=10$
- $f(8,4)=96$
- $f(7,2)=63$
- $f(6,5)=66$
パラメトリック回帰
まずは簡単なパラメトリック回帰を行います.モデル式を以下のように定義します.
$f(a,b) = w_0a^2+w_1b^2+w_2ab+w_3a+w_4b+w_5$
この式に対し, $(a,b)=(2,3),(8,4),(7,2),(6,5)$を代入し,真の値との誤差を最小化するような $\boldsymbol{W}=(w_0,w_1,w_2,w_3,w_4,w_5) $ を決定します(最小2乗法).
実際に決定された $\boldsymbol{W}$ は以下のようになります.
$W=()$
これを $f$ に当てはめ,問題の数値を代入すると以下の値が得られます.ただし,解が整数であるとこや計算誤差を考慮して四捨五入による整数化をしています.
- $f(2,3)=10$
- $f(8,4)=96$
- $f(7,2)=63$
- $f(6,5)=66$
- $\color{red}{f(9,5)=126}$
以上により,問題の要件を満たした関数 $f$ を生成して,解である $9+5 = 126$ を得ることが出来ました.
答え合わせ
実際に推測した解があっているか確認してみましょう. クイズの答え,導出の仕方は以下のようになっています.
つまり, $9+5$ は $(9+5)*9=126$となり,126が答えとなります.
見事推測解と一致しました.
不正行為
これまでの議論でクイズを解いてIQ130になれたように見えますが,実は1か所だけ不正をしています. クイズの解法をもう一度見てみましょう.
これを数値化すると以下のようになります.
$f(a,b) = a^2+ab$
これは,先ほど定義したパラメトリック回帰のモデル式と酷似しています. パラメトリック回帰は推測する関数の形状(モデル式)を最初に決めてからパラメータの推測を行います. このモデル式が真の関数と酷似しているほど精度の良い値が導出できます. 察しの良い方をお気づきかと思いますが,今回の例では解を知る私がモデル式を最良となるように操作していました. これではIQ130になれないので,別の方法を考える必要があります.
そこで登場するのがノンパラメトリック回帰です.
ノンパラメトリック回帰
詳細は省きますが,ノンパラメトリック回帰は関数の形状を決め打ちしないので,誰でもIQ130になることができます. 今回はガウスカーネルを用いたRBF回帰によって解いていきます. モデル式は以下のようになります.
$f(a,b)=\boldsymbol{X}^T\boldsymbol{K}^{-1}\boldsymbol{y}$
ここで, $\boldsymbol{X}$ は入力(a,bからなるベクトル), $\boldsymbol{K}$ はサンプル点の共分散行列, $\boldsymbol{y}$ はサンプル点の解のベクトルです. また,共分散行列の各要素はガウスカーネルにより計算します.なお,カーネル関数のハイパーパラメータは手動で調整しました.
細かい話を始めると記事が終わってしまうので省きますが,この回帰により $f(a,b) = 126.23998110509001≒126$ が得られました.やや誤差が大きいですが,整数値縛りと考えるとほぼ解と一致するので解けたと言っても良いでしょう.
各手法の比較
各手法がどれくらい問題をモデル化できたのか比較します. 以下にモデルから得られたグラフを載せます. グラフは上から問題,パラメトリック回帰,ノンパラメトリック回帰のものとなります. やや形状に違いはあるものの,いずれの手法もほぼほぼ正確に問題をモデル化できていることが分かります. これで誰にも文句を言われずIQ130を名乗れます.
IQを研ぎ澄ます
今回の手法はもしかしたらたまたま問題と相性が良かっただけ,という可能性もあります. より高いIQを目指すことを考え,別の問題も解いてみます.
問題2
- $6+6=2$
- $2+1=11$
- $4+3=7$
- $3+4=7$
- $1+6=7$
- $6+2=?$
回帰をすると $f(6,2)=6.178194664053237≒6$と出ました. 真の解は以下のように導出します.
つまり, $6+2$ の場合はそれぞれのサイコロの目の裏,6であれば1,2であれば5に変換します. そして,それをそのまま足した値 $1+5=6$が解となります. 推測解と一致しました.
問題3
- $1+5=5$
- $8+9=4$
- $3+6=7$
- $10+1=3$
- $4+5=9$
- $2+4=7$
- $7+8=4$
- $5+5=?$
回帰をすると $f(5,5)=8.470487469280556≒8$ と出ました. 真の解は以下のように導出します.
つまり, $5+5$ の場合は漢数字に直した"五"の画数である4に変換して足した $4+4=8$ が解となります. もはや何でもありのこのクイズも見事推測解と一致しました.
なお,モデルをグラフ化すると以下のようになります.実数値の画数も定義できていますね(?)
おわりに
まだ書こうと思ったことがあるのですが間に合いませんでした. 近日中に更新します(大嘘). ついでにグラフががばがばなのでそれも作り直します(大嘘).