パーセプトロンの定義
정의
線形関数 $f(x) = wx + b$と単位ステップ関数 $H$の合成をパーセプトロンperceptronと定義する。
$$ \text{Perceptron} := H \circ f (x) = H(wx + b) $$
多変数関数の場合、$f(\mathbf{x}) = \mathbf{w}\cdot \mathbf{x} + b = w_{1}x_{1} + \cdots w_{n}x_{n} + b$であり、
$$ \text{Perceptron} := H \circ f (\mathbf{x}) = H(\mathbf{w} \cdot \mathbf{x} + b) $$
特にこれを単層パーセプトロンsingle layer perceptronとも呼ぶ。
説明
パーセプトロンは1957年にローゼンブラットによって考案された最初の教師あり学習モデルだ。機械学習では、重みやバイアス、活性化関数などと入門者が理解しづらい説明をするが、ただの線形関数とステップ関数の合成にすぎない。重みは線形項の係数、バイアスは定数項を意味する。
ここで単位ステップ関数は便宜上の定義による。
$$ H(x) = \begin{cases} 1 & x \gt 0 \\ 0 & x \lt 0\end{cases} \quad \text{or} \quad H(x) = \begin{cases} 1 & x \gt 0 \\ -1 & x \lt 0\end{cases} $$
また、$H$の位置に単位ステップ関数が入る必要はなく、活性化関数として使われるものであれば問題ない。したがって、一般的に定義すると、パーセプトロンとは線形関数と活性化関数の合成である。
その値が$0$より大きいか小さいかによって分類されるので、基準となる場所を見つければいい。そのためには式を整理して、次のような結果を得る。
$$ \begin{align*} && w_{1}x_{1} +w_{2}x_{2}+b &= 0 \\ \implies && w_{2}x_{2} &= -w_{1}x_{1}-b \\ \implies && x_{2} &= -\frac{w_{1}}{w_{2}}x_{1}-\frac{b}{w_{2}} \end{align*} $$
これは2次元平面での直線の方程式と同じだ。入力データが$N$次元の場合は次のように表せる。
$$ \begin{align*} \hat{y}&=\varphi \left( \begin{bmatrix} b & w_{1} & \dots &w_{N} \end{bmatrix} ^{T} \begin{bmatrix} 1& x_{1} & \dots & x_{N} \end{bmatrix} \right) \\ &= \varphi \left( \bf{w}^T \bf{x} \right) \end{align*} $$ したがって、パーセプトロンの学習目標は、以下の図のように2種類のデータを区別できる線を引くことである。
すると、重みベクトル$\mathbf{w}$は次の図のように表される。
この図のように、$\mathbf{w}$とすべての青い点との角度が90度以内ならば内積の値が正であり、すべての緑の点との角度が90度より大きいので内積の値が負になる。したがって、こうした条件を満たす$\mathbf{w}$は一意ではない。このように、パーセプトロンが以下の図1のようにデータを区別する線を描くことができる場合を線形分離可能という。
学習方法
学習方法は単純だ。$n$番目の入力データ$\mathbf{x} (n)$が$-1$で分類されるべきだが、結果が$\hat{y}(n)=\varphi \left( \mathbf{w}^{T}(n)\mathbf{x}(n) \right)=1$であったとしよう。これは現在の重みに対して$\mathbf{w}^{T}(n)\mathbf{x}(n)$が正であることを意味し、パーセプトロンが正しく予測するには$\mathbf{w}^{T}(n)\mathbf{x}(n)$の値が負になる必要がある。したがって、$\mathbf{w}^T(n)\mathbf{x}(n)$から何らかの値を引く形で更新すればいい。これを入力データ$\mathbf{x}(n)$に依存させると、次のように重みの更新を表すことができる。 $$ \begin{align*} && \mathbf{w}^T(n+1)\mathbf{x}(n) &=\mathbf{w}^T(n)\mathbf{x}(n)-\eta\mathbf{x}^T(n)\mathbf{x}(n) \\ \implies && \mathbf{w}(n+1) &= \mathbf{w}(n) -\eta \mathbf{x}(n) \end{align*} $$ この時、$\eta>0$は学習率と呼ばれる定数だ。同じ方法で、$+1$の$\mathbf{x}$を$-1$と予測した反対の場合は、次のように重みを更新すればいい。 $$ \mathbf{w}(n+1) = \mathbf{w}(n) +\eta \mathbf{x} $$ この2つの場合を一度に表すことが次のようにできる。 $$ \mathbf{w}(n+1) = \mathbf{w}(n) +\eta y(n) \mathbf{x}(n) $$ この時、$y(n)$は$\mathbf{x}(n)$のラベル(正解)だ。実際に、パーセプトロンが2次元、3次元データに対して学習する過程をGIFで見ると、次のようになる。
Simon Haykin. (2009). Neural Network and Learning Machines(3rd Edition) –> ↩︎