近似器の簡単な解析 1
こんばんは, pyt-314です. 本日もまたちょっとした思考回です. 昨日はLispチャンでE127系の走行音を再現したのですが, 一応完成して, 満足して散歩をしてきたときに, ふと機械学習という名の万能近似器について, 其の収束半径を考えてみようと思いました. 値がどのくらい離れたときにどんな挙動をするのか, ということです. 参考文献はごめんなさい, 最後にまとめて載せます.
さて, さっそく考えてみますか. 一応今回はtaylor展開でべき級数に展開し, その収束半径を調べるので, 一部うまくいかないところが出てくるかと思いますが, その点は生暖かい目で見守っていただきたいです.
ではまず線形回帰…ですがこれは考えるまでもありませんね. 線形なのですから, そのまま一次関数として応答しますね. 表現力の点では問題がありますが, 仮にもとの連続関数に仮定が付いているのならば収束半径は∞を名乗れそうですね. 任意の連続関数の場合は誤差のオーダーがO(x), 中心差分としてみなせるならばいろいろ工夫してO(x^2)くらいと, まあぼちぼちいい感じ(?)ですね. まあこれは本題ではないのでいったん次.
次は, 皆さんお待ちかねのKernel回帰です! 線形SVM? 知らんな. あ, ちなみに今回はすべて回帰のみを考えています. 分類問題も回帰問題として表現可能なので, 問題はありませんね. Kernel回帰といっても, さすがに再生核ヒルベルト空間が~とかは書きません. 採用するカーネルによって誤差オーダーが変わりますし. 今回は単純にGaussian Kernelにします. Gaussian Kernelを取った後は普通の線形回帰で先にも述べた通りの誤差オーダーなので, 各Gaussian Kernelのtaylor展開の線形和を考えれば誤差オーダーを計算できるはずです.
各Gaussian Kernelは, 学習元の実数値データを並べた列を用いて, 入力の実数値ベクトルとすれば, taylor展開を用いて, あとはKernel回帰を思い出すだけですね.
余談ですが, 正則化項を見ていて, 一瞬これ重みに対して正則化になるんか? と疑問に思いましたが, グラム行列が正定値行列であることと, 二次形式の形を考ればしっかり正則化になることが確認できました. 人生ではじめて二次形式使った瞬間です.
まあ話を戻し, Kernel回帰は係数をかけて和を取るので, 適当に係数を取ってあげればO(x^n) (ただしnはデータ数のことです)くらいにはなってくれるのではないでしょうかね. 正則化をする場合は若干変わってくると思いますし, ここでは係数を適当に取っている(最小二乗法+正則化ではない)だけなので実際の係数の決め方がこうなるとは限らないことに注意してください. 収束半径で行けば普通に∞ですね.
まだDNNが残っているのですが, いったん今日は終わりにします. 今晩もお疲れ様でした.