第二話 そんなにうまくゆくのかな? 世の中直線だけじゃない
2009/03/25
・・・こんばんわ〜・・・ぐぅ、、、って、もう朝ぁ〜?
PLAY:
いろんなモデルの歌
(MP3 Download)
未来は直線だけじゃない 可能性は無限大![]() 指数関数ねずみ算 対数関数人の慣れ 変化は微分で記述する 直線たったの1次式 変化するのは2次3次 次数どんどん上げてけば 精度どんどん上がってく 万能なのは多項式 必殺テイラー展開で どんなカーブも描けちゃう 判断ものさしAIC モデルは意味とデータから
計算の前にモデルありき
まずは屈辱の経験値データ・・・やっぱ見る? ![]() そのうちだんだんハイになってきて、頭がポワ〜ンってなっちゃったんだよね。 それが2日目にはモヤモヤ〜って感じになって、ほとんど進まなくなっちゃったの。 直線回帰予測では「時間をかけるほど -> 経験値が上がる」って単純に思ってたんだけど、 実際には「後に行くほど、経験値は上がりにくくなる」ってことだったんだね。 それじゃあ、この「後に行くほど上がりにくい」って関係を、数学では何と言うでしょう? えーっと、比例の反対だから、反比例、かな? おしい、ちょっと違うんだ。 反比例っていうのは「後に行くほど、減ってゆく」ことでしょ。 経験値がどんどん減っていったら、悲しいよね・・・ そうじゃなくって、経験値は「後に行くほど、増え方が、減ってゆく」の。 反比例して減ってゆくものを、積み重ねるってこと。 反比例っていうのを式にすると、
y = 1 / x
で、積み重ねるっていうのは、文字通り積分のことだから・・・
Y = ∫ 1/x dx = ln ( x )
答えは「対数」。えー、わかんなーい、、、って、こんなのその場で考えたってわかんないよ、ふつー。公式覚えてるかどうかだけ。 なので3日後の経験値は、直線じゃなくて、対数で予想した方がよかったんだ。
対数って知ってる?
「対数」って、あまり普段使わないし、イメージ湧かないよね。
y = a ^ x のとき、その逆の関係を
うーん、指数だってアヤフヤなところに、さらにその逆っていったら、なんかもうアヤアヤフヤフヤ。x = log[a] y と書いて、これを対数と定義する。 ミクのイメージだと、対数っていうのは「後に行くほど、増え方が減ってゆく」関係のこと。 ほら、映画やゲームがヒットすると、続編で2とか3とか、出てくるでしょ。 でも2のインパクトって、たいてい初代より小さいよね。 で、3のインパクトは、2より小さい。 それが4とか5とかになると、もうアンタしつこく何やってんの?って感じ。 でもこれって、制作スタッフが手抜いてるんじゃなくって、 2で1と同じことやってるだけだと、1より評価が下がっちゃうんだ。 1と同じ評価になるためには、1の何倍も良くないといけないの。 ってな感じで、リメイクを重ねるにつれて、インパクトがどんどん小さくなってゆくっていうのが対数のイメージ。
その対数が、学校で教わるように「指数の逆」になっていることの方が、むしろ不思議。
y = 10 ^ x
10を x回掛け算したら、つまり数字を x桁にしたら、y になりますよって意味だね。次の世代が、今いるねずみの数だけ増えるんだから、 指数っていうのは、 増え方が、そのときの数(y)に比例して増える関係 のこと。 そうすると、対数との関係が見えてくるんじゃない? 対数っていうのは 増え方が、そのときの数(x)に反比例して増える関係 のこと。 ほら、なんか逆っぽいでしょ。 ![]() 指数:
増え方って、数学の言葉で言うと「微分」。dy/dx = a y -- 増え方が、そのときの数に比例して増える関係 それは y = C a ^ x -- 指数関数 だったときです。 対数: dx/dy = (1/a) x -- 上の指数の式の x と y を逆にしてみました dy/dx = a / x -- 増え方が、そのときの数に反比例して増える関係 それは y = a ln | x | + C -- 対数関数 だったときです。 (C は不定な定数、とりあえずなんでもいい数ってことだよ) 記号で書くと dy/dx 。 増え方がわかっているとき、全体の関係がどうなるかっていうのは、積分するとわかるの。 こういうのを「微分方程式」って言うんだ。 でもって、指数・対数の考え方が、微分方程式の基礎中の基礎になってるんだね。
必殺、N次の多項式!
さて、ここまでで未来予測のパターンは3つ出てきたよ。 ![]() いま、加速って言ったけど、実際のN次式には加速だけじゃなくて減速もありなの。 式の上では、+プラスが加速になって、−マイナスが減速になるんだ。 例えば
y = - 3 x^2 + 5 ^x + 7
って式は、加速度 -3 で、速度が +5 。最初は +5 で前進しているけど、-3 の力でだんだんブレーキがかかってきて、 そのうちストップして、今度は反対方向に動き出すの。 つまりこれは、ボールを上向きに放り投げたときの運動だね。 これのどこが必殺技なのか? いま、2つの数字の加減速でもって、行って帰ってくるカーブが描けたよね。 この調子で、加減速をうまーく調整すれば、どんな形のカーブだって描けちゃうの! まず速度を決めて、(1次) カーブさせたかったら加減速を調整して、(2次) ちょっと加速し過ぎたかな、と思ったら「加加速度」=加速度の変化を調整して、(3次) それで減速し過ぎちゃったかな、と思ったら、今度は「加加加速度」=加速度の変化の変化を調整して・・・(4次) これをどこまでも続ければ、最終的にはどんなカーブだってN次式に収まっちゃうんだ。※ どんな形のカーブも無限次の式で表せる、これがN次式の必殺技。 名付けて「テイラー展開っ!」( ← 必殺技っぽく、気合いと共に叫ぼう!) 例えば5次式のカーブが描きたかったら、とにかく
y = a x^5 + b x^4 + c x^3 + d x^2 + e ^x + f
という式の形を先に決めちゃうの。あとは、a〜f の6つのパラメータを決めれば予測が完成ってこと。 こういうやり方を、まとめて「多項式回帰」って呼んでるよ。
これでピッタリ、なんと999次式!
必殺、テイラー展開っ! ![]()
・モデル1: 時間をかければかけるほど、経験値は上がるだろう。
もしモデル3まで意味があるんだったら、上から3つで3次曲線にしよう、ってなるんじゃないかな。・モデル2: 長時間プレイすると疲れてくるから、後の方ほど経験値は上がりにくい。 ・モデル3: もっとたくさんゲームをプレイすると、コツを掴んできて、経験値の上がりが早くなる。 ・モデル4: 大人になったら、だんだんゲームってものに飽きてくるのかな? モデル選びは試行錯誤。 データと意味との二人三脚で、いちばんピッタリするモデルを地道に探し出すの。 わけもわからず999次曲線とか作っても、なーんの役にも立たないぞ。
モデルを計るモノサシ
そうは言っても、どんな力が働いているのか、最初から分かっていれば何の苦労もないよね。
・パラメーターの数を増やすと、正確にはなるけど、モデルが複雑になってしまう。
そこで大事なのがポイントの付け方なんだけど、AICではこんな風にしてまーす。・できるだけ少ないパラメーターで、そこそこ正確な、ちょうどいい具合のところを見つけ出したい。 ・そのために、精度とパラメーター数の両方を合わせたポイントを付けて、 ポイントが一番小さくなったときがベストってことにしよう。
AIC = -2 ln(最大尤度) + 2 (自由なパラメータ数)
たとえば多項式
y = a x^m + b x^(m-1) + c x^(m-2) + ・・・
についてのAICは、これ。
AIC = n { ln(2π) + 1 + ln(σ^2) } + 2 (m + 2)
なぜこんな計算なのか、っていうのは難しいからパス。n はデータの数、 ちょっと気になる 2π って数は、正規分布から出てくるの。 ※ この計算には、誤差が正規分布だっていう前提が入ってます。 σ^2 はデータとモデルのずれを二乗して足したもの、 σ^2 = (1/n) Σ {(データの値) - (モデルから計算で出した値)} ^ 2 = (1/n) Σ {yi - (a x^m + b x^(m-1) + c x^(m-2) + ・・・)} ^ 2 とりあえず、良いモデルを探すためのモノサシがありますよー、ってことでいいと思うんだ。
数式に書けるのがモデル
そもそもモデルっていったい何だろう?
・まず数式で形を決めちゃって、
っていうのが回帰分析の考え方。・次に実際のデータにあてはまるようにパラメータを調整しましょう、 とにかく数式で書けさえすれば、あとは最小二乗法でパラメータを決めるだけ。 最小二乗法っていうのは、こんな方法でした。
・実際のデータと、数式モデルとの食い違いを、2乗して足し合わせる。
詳しくは第1話を見てね。・足し合わせた合計が一番小さくなるように、パラメータを調整する。 ・具体的には、2乗して足し合わせた式を、それぞれのパラメータで微分する。 ・パラメータの数だけ出てきた式を、連立方程式として解く。
たとえば指数モデルっていうのは、式に書くと
y = a Exp( b x )
これってパッと見にはわからないけど、うまいことすると直線と全く同じになっちゃうんだ。そのテクニックは、両辺の対数をとること。
ln(y) = ln( a Exp( b x ) )
これを
= ln(a) + b x
ln(y) = Y
って置き換えたら・・・
ln(a) = A
Y = A + b x
ほら、直線と全く同じだよ。こんな感じに、うまく直線と同じ形に持ち込めればラッキー。 それがダメでも、直線と同じ手順で地道に計算すれば、たいていの数式で予測パラメータが調整できちゃうんです。
未来は直線だけじゃない、いろんなモデルがあるってこと。
さて、今回はいろいろ盛りだくさんだったね。 |