確率的勾配降下法による線形回帰


訓練データ設定

訓練データの生成モデル

\( \begin{align} y_{data} &= \boldsymbol{w}' \cdot \boldsymbol{\phi}' (x_{data}) + {\cal N}(0, \sigma) \\ &= \sum_{i = 0}^{M' - 1} w'_i \phi' _i (x_{data}) + {\cal N}(0, \sigma) \end{align} \)
\( \begin{align} \boldsymbol{w}' &= (w_0, w_1, \cdots, w_{M'-1}) \\ \boldsymbol{\phi}'(x) &= (1, x, \cdots, x^{M'-1}) \\ {\cal N}(0, \sigma) &= \frac{1}{\sqrt{2\pi \sigma^2}} \exp\left(-\frac{x^2}{2\sigma^2} \right) \end{align} \)
訓練データ生成モデルの次数\(M'\):
訓練データモデルの重み\(\boldsymbol{w}'\):

ノイズの分散値\(\sigma\):
訓練データの個数\(N\):

csvファイル(1列目:x座標, 2列目y座標, #:コメント行)からデータを読み込み


学習パラメータ設定

学習モデル

\( \begin{align} h &= \boldsymbol{w} \cdot \boldsymbol{\phi} (x) \\ &= \sum_{i = 0}^{M - 1} w_i \phi _i (x) \end{align} \)
\( \begin{align} \boldsymbol{w} &= (w_0, w_1, \cdots, w_{M-1}) \\ \boldsymbol{\phi}(x) &= (1, x, \cdots, x^{M-1}) \\ \end{align} \)

更新式

\( \boldsymbol{w} \leftarrow \boldsymbol{w} + \eta (y_{data}^{(i)} - h(x_{data}^{(i)}))\boldsymbol{\phi}(x_{data}^{(i)}) \)

スケジューリング

\(N\)回の更新ごとに
\( \eta \leftarrow \alpha\eta \)

評価

\( error = \frac{1}{N} \sum_{i=0} ^ {N - 1} \left(y_{data}^{(i)} - h(x_{data}^{(i)}) \right)^2 \)
学習モデルの次数\(M\):
訓練データモデルの重みの初期値\(\boldsymbol{w}_{init}\):

学習率\(\eta\):
スケジューリングファクタ\(\alpha\):
学習回数\(T\):

学習結果