1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TL;DR ニューラルネットワーク

Last updated at Posted at 2024-03-19

TL;DR-TL;DR

多次元に星空を一直線に二分して星を探す様なシステムです。

パーセプトロン

ニューロンの発火と学習を数学的モデルとしたもの。

\vec{w}=\left(
\begin{array}{ccccc}
w_{1}\\
\vdots\\
w_{n}\\
\end{array}
\right)
\quad,\quad
\vec{x}=\left(
\begin{array}{ccccc}
x_{1}\\
\vdots\\
x_{n}\\
\end{array}
\right)
\quad,\quad
\vec{z}=\vec{w^T}\vec{x}
\Phi(\vec{z}) = \left\{
\begin{array}{ll}
1 & (\vec{z} \geq \theta) \\
-1 & (\vec{z} \lt \theta)
\end{array}
\right.

多層パーセプトロン

a_j=\Sigma^D_{i=1}\vec{w_{ji}}\vec{x_i}+\vec{w_{j0}}
a_j:活性,\quad w_{ji}:重みパラメータ,\quad w_{j0}:バイアスパラメータ

ここで非線形活性化関数$h(\cdot)$を考え、$z_j=h(a_j)$とする。
また、二項定理のベルヌーイ分布の指数標準形を考えて、
$h(\cdot)$を$\sigma(x)=\frac{1}{1+e^{-x}}$のシグモイド関数とする事が一般的である。
これらの事と、$y(\vec{x},\vec{w})=f(\Sigma^D_{j=1}\vec{w_{j}}\phi(\vec{x_j}))$を考えると、
バイアスパラメータは$x_0=1$とすると重みパラメータの集合の内に含められる事から、

y_k(\vec{x},\vec{w})=\sigma(\Sigma^M_{j=0}\vec{w_{kj}^{(2)}}h(\Sigma^D_{i=0}\vec{w_{ji}^{(1)}}\vec{x_i}))

とし、これをニューラルネットワークの順伝播と解釈する事が出来る。

2クラス分類

$y_k(\vec{x},\vec{w})$の2クラス分類問題を考えて、$p(C_1|\vec{x})$とすると、
$p(C_2|\vec{x})=1-y_k(\vec{x},\vec{w})$なので、目標変数$t$より、
$p(t|\vec{x},\vec{w})=y_k(\vec{x},\vec{w})^t(1-y_k(\vec{x},\vec{w}))^{1-t}\quad(∵ベルヌーイ分布)$
ここで、$\vec{x}$の独立性と最尤推定から、負の対数尤度の最小化を考え、
$$ E(\vec{w})=-\Sigma^N_{n=1}(t_nln(y_n)+(1-t_n)ln(1-y_n))(交差エントロピー誤差関数) $$

多クラス分類

$t_k$∈{$0,1$}及び$y_k(\vec{x},\vec{w})=p(t_k=1|\vec{x})$及びクラスラベルの独立性を仮定すると、
$E(\vec{w})=-\Sigma^N_{n=1}\Sigma^K_{k=1}t_{nk}ln(y_k(\vec{x_n},\vec{w}))$となり、
$$ y_k(\vec{x},\vec{w})=\frac{exp(a_k(\vec{x},\vec{w}))}{\Sigma_jexp(a_j(\vec{x},\vec{w}))}\quad(ソフトマックス関数) $$
となり、$0<=y_k<=1,\quad\Sigma_ky_k=1$を満たす。

勾配降下法

\vec{w^{\tau+1}}=w^{\tau}-\eta\Delta E(w^{\tau})
\eta:学習率パラメータ

これによりニューラルネットワークを収束させ学習させる。

誤差逆伝播

つまり、$\frac{dy}{dx}=\frac{dy}{dz}\cdot\frac{dz}{
dx}$
ネットワークの全隠れ層の微分を、この微分の連鎖率を用いた逆伝播により逆順に計算して得るアルゴリズム。
最終層の出力と教師データとの誤差関数からの出力を最後の微分係数とした上で微分の連鎖率を適用し、最終層の勾配と掛け合わせる事で最終層の微分係数を得て、同様の事を更に一段前のネットワークへ逆伝播させてその隠れ層の微分係数を得て、教師データとネットワーク全層の微分係数をこの逆伝播により得る事で、この得られた微分係数列の勾配を用いた勾配降下法等により学習を収束させる。

ミニバッチ学習

ニューラルネットワークの訓練データをN個に分割して学習するアルゴリズム。
その際、誤差関数をNで割る事により正規化する。

サンプル

NumPyによる実装コード

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?