Posts Issued on March 1, 2019

Neural NetworkをFPGAに実装する

posted by sakurai on March 1, 2019 #90

Neural Network (以下NN)の理論を確認していきます。以下にシグモイドニューロンの図を示します。

図90.1
図90.1 シグモイドニューロン

図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にとってかわられています。

図90.2
図90.2 シグモイド関数

左矢前のブログ 次のブログ右矢