[ディープラーニング] 回帰問題

About

回帰問題 (regression problem) とは、与えられたデータを表現する関数を求める問題です。

キーワード

  • 訓練データ (training data)
  • テストデータ (test data)
  • 誤差関数 (error function) /損失関数 (loss function)

訓練データ

訓練データとして、入力 \({\mathbf{x}} \in {\mathbb{R}^n}\) と関数がその入力に対して出力するべき値 \({\mathbf{t}} \in {\mathbb{R}^m}\) のペアが与えられます。

\[\{ ({{\mathbf{x}}_1},{{\mathbf{t}}_1}),({{\mathbf{x}}_2},{{\mathbf{t}}_2}), \cdots ,({{\mathbf{x}}_N},{{\mathbf{t}}_N})\} \]

目標関数と損失関数

ニューラルネットワークが表現する関数を \(f(\mathbf{x};\mathbf{w})\) としたとき、以下の関数 \({f^*}\) に近似できるよう重み \(\mathbf{w}\) をうまく調整することを目指します。

\[{f^*}({{\mathbf{x}}_1}) = {{\mathbf{t}}_1},{f^*}({{\mathbf{x}}_2}) = {{\mathbf{t}}_2}, \cdots ,{f^*}({{\mathbf{x}}_N}) = {{\mathbf{t}}_N}\]



サンプル1個の場合の誤差

サンプル \(({\mathbf{x}},{\mathbf{t}})\) について考えます。
ニューラルネットワークが \({\mathbf{y}}\) を出力し、期待される出力は \({\mathbf{t}}\) である場合、損失は \({\mathbf{y}}\) と \({\mathbf{t}}\) の距離を考えるのが自然でしょう。
一般に距離関数としては、二乗誤差 (squared error) が使われます。

\[{\left\| {{\mathbf{t}} – {\mathbf{y}}} \right\|^2} = \frac{1}{2}\sum\limits_{j = 1}^m {{{({t_j} – {y_j})}^2}} \]

ただし、\(\left\| \cdot \right\|\) はL2ノルムを表し、\({\mathbf{y}} = {({y_1},{y_2}, \cdots ,{y_m})^T},{\mathbf{t}} = {({t_1},{t_2}, \cdots ,{t_m})^T}\)としました。

\(\frac{1}{2}\) は微分した形をきれいにするためについており、特に深い意味はありません。

\[\frac{\partial }{{\partial {u_j}}}\frac{1}{2}{\left\| {{\mathbf{t}} – {\mathbf{y}}} \right\|^2} = \frac{\partial }{{\partial {u_j}}}\frac{1}{2}\sum\limits_{j = 1}^m {{{({t_j} – {y_j})}^2}} = \left( {{y_j} – {t_j}} \right)\frac{{\partial {y_j}}}{{\partial {u_j}}}\]

サンプル\(N\)個の場合の誤差

全部の訓練データについて考える場合、誤差は個々のサンプルの二乗誤差を足し合わせた以下の関数になります。

\[{E_N}({\mathbf{w}}) = \frac{1}{2}\sum\limits_{k = 1}^N {{{\left\| {{{\mathbf{t}}_k} – {{\mathbf{y}}_k}} \right\|}^2}} \]

出力層のデルタ

逆伝播法の記事で紹介しますが、逆伝播を実行する際に損失関数に対して、ニューラルネットワークの出力に関する偏微分係数

\[\delta _1^{(L)} = \frac{{\partial {E_N}}}{{\partial {y_1}}},\delta _2^{(L)} = \frac{{\partial {E_N}}}{{\partial {y_2}}}, \cdots ,\delta _m^{(L)} = \frac{{\partial {E_N}}}{{\partial {y_m}}}\]

を計算する必要があるため、ここで求めておきます。

\[\delta _j^{(L)} = \frac{{\partial {E_N}}}{{\partial {y_j}}} = \frac{\partial }{{\partial {y_j}}}\frac{1}{2}\sum\limits_{k = 1}^N {{{\left\| {{{\mathbf{t}}_k} – {{\mathbf{y}}_k}} \right\|}^2}} = \sum\limits_{k = 1}^N {({y_{kj}} – {t_{kj}})\frac{{\partial {y_{kj}}}}{{\partial {u_j}}}} \]

\({{y_{kj}},{t_{kj}}}\) はそれぞれ \({{\mathbf{y}}_{\mathbf{k}}},{{\mathbf{t}}_{\mathbf{k}}}\) の \(j\) 成分を表しています。

コメントを残す

メールアドレスが公開されることはありません。