ラビットチャレンジ 深層学習day1レポート 要点まとめ

Section1 入力層~中間層 要点まとめ

入力層

何かしらの数字の集まりを入力するための層。

\(\bf{x}\):入力するデータ
\(\bf{W}\):重み。重要なものほど大きい値をとる
\(\bf{b}\):バイアス。
\(\bf{W}\)と\(\bf{b}\)をニューラルネットで学習させる。

入力を\( x = \lbrack x_1, x_2, x_3, \cdots ,x_m \rbrack^T  \)とし、\(  W = \lbrack w_1, w_2, w_3, \cdots ,w_m \rbrack^T \)としたときに総入力uは次のようになる。
\begin{align*}
u &= x_{1} w_{1} + x_{2} w_{2} + \cdots +x_{n} w_{n} + b \\
&= Wx + b
\end{align*}

 

中間層

入力層で計算した\(u=Wx+b\)の出力結果を総入力\(u\)として受け取り、活性化関数z=f(u)で得られたzを出力する。それをまた次のニューラルネットワークの入力になる。

入力層と中間層を一つのパーツとしてみなし、それが何層も重なったもの、一般的には4層以上のものをディープニューラルネットワークという。

 

Section2 活性化関数 要点まとめ

ニューラルネットワークにおいて、次の層へ出力の大きさを決める非線形の関数
入力によって次の層への信号のON/OFFや強弱を定める。
脳神経のシナプスにおける発火現象にあたるもの。
重みとバイアスでは線形なのだが、非線形の活性化関数を通すことでネットワークの表現力が上がる。

中間層の活性化関数

  • ステップ関数
    しきい値を超えたら発火する関数であり、出力は常に1か0。
    課題 0 -1間の間を表現できず、線形分離可能なものしか学習できなかった
  • ReLU関数
    0 ~ 1の間を緩やかに変化する関数で、ステップ関数ではON/OFFしかない状態に対し、信号の強弱を伝えられるようになり、予想ニューラルネットワーク普及のきっかけとなった。
    課題 大きな値では出力の変化が微小なため、勾配消失問題を引き起こす事があった
  • シグモイド関数
    今最も使われている活性化関数。勾配消失問題の回避とスパース化に貢献することで良い成果をもたらしている。

Section3 出力層 要点まとめ

出力層の役割

人間が欲しいデータの形にして最終的に出力する層。
クラス分類の問題では、各クラスの確率にして出力する。

誤差関数

入力データと訓練データ(正解値)のペアを用意する。
入力データをニューラルネットワークで入力して結果を出力する。
その結果と正解値がどのくらい誤差があるか計算する関数を誤差関数という。

ニ乗誤差
\begin{align}
E_{n}(w)
= \frac{1}{2}\sum_{i=1}^{I} (y_{i} − d_{i})^2
= \frac{1}{2} \|y−d\|^2
\end{align}

交差エントロピー
\begin{align}
E_{n}(w)
= -\sum_{i=1}^{I} d_{i} \log y_{i}
\end{align}

出力層の活性化関数

中間層では重みに基づいて値の強弱を調整するのが目的だったが、出力層は人間が扱いやすい形にするのが目的。
そのため、出力層では信号の大きさ(比率)をそのまま変換する。
確率出力の場合、
・分類問題の場合、出力層の出力は0~1の範囲に限定し、総和は1になる必要がある。

活性関数の種類

解きたい問題で使用する活性化関数と誤差関数が決まる。
とりあえず動くものを作りたいときはこの組み合わせで作れる。

 

 

 

 

 

Section4 勾配降下法 要点まとめ

深層学習の目的は学習を通して誤差を最小にするネットワークを作成すること。
その際に勾配降下法を利用してパラメータを最適化する。

ε:学習率
学習率が大きすぎる場合、最小値にいつまでもたどり着かず発散してしまう。
学習率が小さい場合、発散することはないが、小さすぎると収束するまでに時間がかかってしまう。また、局所解にはまりこみ、大域最適解にたどり着かないこともある。
学習率を適切な大きさにすることは非常に重要で改良された手法が提案されている。

  • Momentum
  • AdaGrad
  • Adadelta
  • Adam

確率的勾配降下法

学習に使用する全データから一部をランダムに選んだサンプルを使用して学習する方法。
メリット
計算コストの軽減
局所極小解に収束するリスクの軽減
オンライン学習ができる

ミニバッチ勾配降下法

ランダムに分割したデータの集合(ミニバッチ)\(D_t\)に属するサンプルの平均誤差を使って修正を行う方法。
ディープラーニングのモデルを作る時に一般的に使われている手法。
メリット
ミニバッチに分割したデータを並列に計算でき、CPUを利用したスレッド並列化やGPUを利用したSIMD並列化ができる。

Section5 誤差逆伝播法 要点まとめ

重みをどのように修正していくかを決める方法。

単純に数値微分を使用すると計算量が大きくなり実用的でない。
そこで誤差逆伝播法を使用する。

算出された誤差を、出力層側から順に微分し、前の層前の層へと伝播。最小限の計算で各パラメータでの微分値を解析的に計算する手法。

後ろ側から計算する。Eをyで偏微分した結果は次の計算(\(u^{(2)}\)のところ)でも再利用される。さらにyをuで偏微分した結果も次の計算で使用されるため、不要な再帰的な計算を避けて微分を計算できる。

コメント

タイトルとURLをコピーしました