ニューラルネットワーク


パーセプトロンとニューラルネットワークの違い

パーセプトロンの応用がニューラルネットワーク
具体的には、最終的な出力の活性化関数が異なる

活性化関数 伝達方法
パーセプトロン ステップ関数
一択
ステップ関数
 $ b + w_1 + x_1 + w_2$
が $0$ を超えたら1、それ以外は $0$ を出力
ニューラルネットワーク 目的によって使い分ける
例)
回帰:恒等関数
分類:ソフトマックス関数
$h(b + w_1 + x_1 + w_2) $
を出力

を採用している


ニューラルネットワークの概要図$

第1層目の活性化関数の1番目のニューロン の活性化関数 $h()$ の入力は $a_1$

記号 意味
X 入力層
$W^{(1)}$ 1層目め重み
$B^{(1)}$ 1層目のバイアス
$A^{(1)}$ 1層目の重み付き和
$h$ 1層目の活性化関数
$z^{(1)}$ 1層目の活性化関数の出力

$$ A^{(1)} = XW^{(1)} + B^{(1)}$$
$$ Z^{(1)} = h(A^{(1)})$$


活性化関数

入力信号の総和
$$ 例: \ b + w_1 + x_1 + w_2 \ $$
を出力信号に変換する関数

$$ 例:h \ ( \ b + w_1 + x_1 + w_2 \ ) $$

活性化関数 ( activation function )という

以下の活性化関数 $h(x)$ は入力が $0$ を超えたら $1$ を返し、そうでなければ $0$ を返す

\begin{align}
h \ (\ x \ )
 &=
 \begin{cases}
    0 & ( \ x \leqq 0 \ ) \\
    1 & ( \ x \gt 0 \ )
  \end{cases}
\end{align}

恒等関数

入力値をそのまま出力する関数
回帰問題などで採用される

$$h \ (\ x \ ) = x $$


ステップ関数

閾値が考慮された入力値に対して、入力値が $0$ 以下ならば $0$、それ以外は $1$ を返却する

\begin{align}
h \ (\ x \ )
 &=
 \begin{cases}
    0 & ( \ x \leqq 0 \ ) \\
    1 & ( \ x \gt 0 \ )
  \end{cases}
\end{align}

シグモイド関数 (sigmoid function)

ステップ関数に類似させた微分可能な関数
微分は勾配法によりパラメータを更新させる事が目的

$$
h \ ( x ) = \frac{1}{1 + e^{-x}}
$$

ReLU

入力が $0$ 以下であれば、$0$ を出力し、$0$ を超えていれば、その値を出力する関数

\begin{align}
h \ (\ x \ )
 &=
 \begin{cases}
    0 & ( \ x \leqq 0 \ ) \\
    x & ( \ x \gt 0 \ )
  \end{cases}
\end{align}


ソフトマックス

出力層が $n$ 個ある場合、$k$ 番目の出力 $y_k$ を求める場合

$$ y_k = \frac{e^{a_k}}{\displaystyle\sum_{i=1}^{n} e^{a_i}} $$

で定義される
但し、素で計算すると直ぐオーバーフローを起こしてしまう為

\begin{align}
 y_k 
&= \frac{e^{a_k}}{\displaystyle\sum_{i=1}^{n} e^{a_i}} \\\\
&= \frac{Ce^{a_k}}{C\displaystyle\sum_{i=1}^{n} e^{a_i}} \\\\
&= \frac{e^{a_k + logC}}{\displaystyle\sum_{i=1}^{n} e^{a_i + logC}} \\\\
&= \frac{e^{a_k + C'}}{\displaystyle\sum_{i=1}^{n} e^{a_i + C'}} \\\\
\end{align}

とする。但し
$ C=\max (e^{a_i}) \ (i = 1, 2, \cdots , n) \qquad C = e^{logC} \Longleftrightarrow log_e C = log_e e^{logC} $

各出力は、下記に示すように全ての入力から影響を受ける
$0〜1.0$ までの値を取り、総和は$1$であるので、確率とみなす事ができる


参照

ゼロから作るDeep Learning