見出し画像

ニューラルネットワーク 単純パーセプトロン


単純パーセプトロン

関連記事の単純モデルでは、入力が2つの場合を考えた。ここでは、図1に示すように入力がより多い場合を考える。

図1 単純パーセプトロン

図1のように、入力が増えてもニューロンの動作(受け取った電気量が、閾値を超えた場合に$${1}$$を出力、それ以外の場合に$${0}$$を出力)は変わらない。したがって、出力$${y}$$は、

$$
y=
\begin{cases}
\,1 & (w_{1}x_{1}+w_{2}x_{2} + \cdots + w_{n}x_{n}\geq \theta)\\
\,0 &(w_{1}x_{1}+w_{2}x_{2}+ \cdots + w_{n}x_{n} < \theta)
\end{cases} \tag{1}
$$

となる。

ここで、次のような関数を考える。

$$
f(x)=
\begin{cases}
\,1 & (x\geq 0)\\
\,0 &(x< 0)
\end{cases}
$$

この関数をステップ関数という。

この関数を使うと式(1)は、

$$
y=f\left(w_{1}x_{1}+w_{2}x_{2} + \cdots + w_{n}x_{n}-\theta \right)\tag{2}
$$

と書き直すことができる。

式(2)では、負の値があるのでこれを正の値にするために$${b = -\theta}$$とすれば、

$$
y=f\left(w_{1}x_{1}+w_{2}x_{2} + \cdots + w_{n}x_{n}+b \right)\tag{3}
$$

となる。

重み$${w}$$と入力$${x}$$をそれぞれ列ベクトルで表すと、

$$
\bm{x} = \left(\begin{matrix}
x_{1}\\
x_{2}\\
\vdots\\
x_{n}
\end{matrix}\right)
,\qquad
\bm{w} = \left(\begin{matrix}
w_{1}\\
w_{2}\\
\vdots\\
w_{n}
\end{matrix}\right)
$$

と表すことができるので、式(3)の$${w_{1}x_{1}+w_{2}x_{2} + \cdots + w_{n}x_{n}}$$は、この列ベクトルを用いると、

$$
\begin{align}
&\notag\\
\bm{w}^{T}\bm{x}&= \left(\begin{matrix}
w_{1}\\
w_{2}\\
\vdots\\
w_{n}
\end{matrix}\right)^{T}\left(\begin{matrix}
x_{1}\\
x_{2}\\
\vdots\\
x_{n}
\end{matrix}\right) \notag\\
&= \left(\begin{matrix}
w_{1}&w_{2}&\cdots&w_{n}
\end{matrix}\right)\left(\begin{matrix}
x_{1}\\
x_{2}\\
\vdots\\
x_{n}
\end{matrix}\right) \notag\\
&= w_{1}x_{1}+w_{2}x_{2} + \cdots + w_{n}x_{n}\notag\\
\end{align}
$$

と表せる。

したがって、式(3)は、

$$
\begin{align}
&\notag\\
y&=f\left(\bm{w}^{T}\bm{x}+b \right)\notag\\
\end{align}
$$

となる。

ニューロンの出力がこの式の形で表されるモデルをパーセプトロンといい、図1のように入力した値が出力に直接伝播するモデルを単純パーセプトロンという。
また、ベクトル$${\bm{x}}$$を入力ベクトル、ベクトル$${\bm{w}}$$を重みベクトル、$${b}$$をバイアスという。

誤り訂正学習法をベクトルを用いて表すと、

$$
\begin{align}
\Delta \bm{w} &= (t-y)\bm{x}\notag\\
\Delta b &= (t-y)\notag\\
&\notag\\
{\bm{w}}^{(k+1)}&= {\bm{w}}^{(k)}+\Delta \bm{w} \notag\\
{b}^{(k+1)}&= {b}^{(k)}+\Delta b\notag\\
\end{align}
$$

モデルの作成

単純パーセプトロンを用いたモデルを作成していく。
モデルの作成にはPythonを用いる。
また、ここでは、Pythonのディープラーニング用のライブラリは使用せずに作成する。
モデルを作成していく際は、クラスを定義することで、可読性・再利用性を高めていく。

モデルの基本的な作成ステップは、

  1. データの準備

  2. モデルの構築

  3. モデルの学習

  4. モデルの評価

である。

データは2種類の正規分布に従う。
2次元データとし、$${30\times 2 = 60}$$個のデータからなる。
片方は、平均値$${0}$$、もう片方は平均値$${10}$$とする。
データを可視化すると、図2のようになる。

図2 入力データ

入力データのうち、平均値が$${0}$$となる方は出力$${0}$$、平均値が$${10}$$となる方は出力が$${1}$$となるように学習させる。
学習のプログラムは関連記事の単純パーセプトロン ニューラルネットワークを参照してほしい。

学習の結果は図3に示すように学習ができていることがわかる。

図3 単純パーセプトロンの学習結果

関連記事

ニューラルネットワーク 単純モデル
https://note.com/elemag/n/n7bf117b1c818?sub_rt=share_pw

単純パーセプトロン ニューラルネットワーク
https://note.com/elemag/n/n6ecd3604481b?sub_rt=share_pw

参考文献

サイト

https://sites.google.com/view/elemagscience/%E3%83%9B%E3%83%BC%E3%83%A0

いいなと思ったら応援しよう!