1 |
Neural NetworkをFPGAに実装する |
Neural Network (以下NN)の理論を確認していきます。以下にシグモイドニューロンの図を示します。
図90.1のように入力値$\boldsymbol{x}$及び係数$\boldsymbol{w}$をそれぞれn次元ベクトルとし、その積が閾値$\theta$より大きい時に発火する場合、活性化関数をシグモイド$\sigma(x)$として、
$$y=\sigma(\boldsymbol{w}\cdot\boldsymbol{x}-\theta)$$
のように表せます。ここで、$-\theta=b$(bはバイアス)とおけば、
$$y=\sigma(\boldsymbol{w}\cdot\boldsymbol{x}+b)$$
となります。このシグモイド関数$\sigma(x)$は、
$$\sigma(x)=\frac{1}{1+e^x}$$
で定義され、その微分は、シグモイド関数自身を用いて
$$\sigma'(x)=\sigma(x)\left(1-\sigma(x)\right)$$ と表せます。シグモイドは微分が簡単な形で表されるので、学習時のバックプロパゲーションにおいて非常に便利な性質です。一方、勾配消失の問題があることから、近年は使用されず、ReLUにとってかわられています。