オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【機械学習】パーセプトロン #アルゴリズム編

この記事の読者

深層学習・ディープラーニングアルゴリズムの基礎となる「パーセプトロン」について知りたい.

Index

パーセプトロンとは

パーセプトロン( Perceptron ) は、1957年にローゼンブラット(Rosenblatt)というアメリカの研究者によって考案され、 ニューラルネットワークの起源となるアルゴリズム.

複数の信号を入力として、ひとつの信号を出力するアルゴリズムになるが、 ここでの「信号」は電流や川のような「流れ」をイメージするのが良い.

出力は、後続の信号を先に「流す / 流さないか (1 / 0)」 の二値.

分類問題としては、二値分類となる.

パーセプトロン

アルゴリズム

上図は以下の場合のパーセプトロンになる.

  • 入力 : x1、x2
  • 出力 : y

(図中の○は「ニューロン」や「ノード」と呼ばれるもの)

重み / Weight

図中のw1、w2は重みパラメータと呼ばれ、入力に乗算する.

このパラメータが更新されることで出力が変更される.

各入力の信号の重要性をコントロールする要素.

つまり、重みが大きくなるほど、その重みに対応する信号の重要性が高くなる.

(w は weight)

閾値 / Threshold

各入力 x に対応する重み w を乗算した値の総和を 中間出力 h としたときに、 h と比較する値.

最初に決定しておくパラメータなので、ハイパーパラメータとなる.

出力 / Output

各入力 x に対応する重み w を乗算した値の総和を 中間出力 h としたときに、  h閾値  \theta を超えか超えないかによって出力 y を決定する.

 h\ =\ w_{1}x_{1}\ +\ w_{2}x_{2}



行列で表現すると以下のよう.

 h\ =\ \textbf{w}^{T}\ \textbf{x}



 
\textbf{w}\ =\ 
\left(
    \begin{array}{c}
      w_1 \\
      w_2 \\
    \end{array}
\right),\ 

\textbf{x}\ =\ 
\left(
    \begin{array}{c}
      x_1 \\
      x_2 \\
    \end{array}
\right)

定式化 / Formulation

上図の例だと、以下の式.


y\ =
  \left\{
    \begin{array}{l}
      0\ \ (w_{1}x_{1}\ +\ w_{2}x_{2}\ \leq\ \theta) \\
      1\ \ (w_{1}x_{1}\ +\ w_{2}x_{2}\ \gt\ \theta)
    \end{array}
  \right.



(0 ではなく、-1とすることで都合が良いケースもある)

一般化

入力ベクトル  \textbf{x}、重みベクトル \textbf{w}^{T}、出力 y としたとき

 y(\textbf{x})\ =\ f(\ \textbf{w}^{T}\ \phi(\textbf{x})\ )



 \phi(\textbf{x}) は特徴量ベクトル、 f非線形活性化関数 のステップ関数.

最適化 / Optimization

重みパラメータw をどのように更新して、最適化するのか

パーセプトロン規準

以下のような誤差関数を設ける.

(ここで、誤差関数とはパラメータを最適化するために設定する指標として考える.)

 E(\textbf{x},\ \textbf{w}) = \textbf{w}^{T}\ \phi( \textbf{x} )



そこでクラス  C_1とクラス  C_2 の2クラスを考える.

  • 各クラスは入力ベクトル  \textbf{x} の集合 ( \textbf{x}\ \in\ C_1,\ \textbf{x}\ \in\ C_2)
  • クラス  C_1 は出力を 1 として出力するべきクラス、クラス  C_2 は出力を -1 として出力するべきクラス

クラス C_1 に属する  \textbf{x} に対する誤差  E(\textbf{x}, \textbf{w}) E(\textbf{x}, \textbf{w}) > 0 となるように、 クラス C_2 に属する  \textbf{x} に対する誤差  E(\textbf{x}, \textbf{w}) E(\textbf{x}, \textbf{w}) \lt 0 となるように  \textbf{w} を更新する.

このように考えると、誤差関数はこのようにも表せる.

 E_{p}(\textbf{w}) = - \displaystyle \sum_{n \in M}\ \textbf{w}^{T}\ \phi_{n}\ t_{n}



  •  \phi_n\ =\ \phi(\textbf{x}_n)
  • M は誤分類された入力ベクトル \textbf{x}の集合
  •  t\ \in \{1, -1 \}

これの誤差関数をパーセプトロン規準と呼ぶ.

確率的勾配降下法

上で定義した誤差関数を、確率的勾配降下法で、 \textbf{w}を最適化する.

まとめ

  • いくつかの入力 x に対して、信号を流すかどうかを決定する
  • 重みパラメータと、予め決めた閾値  \theta によって出力 y が決定する
  • 重みパラメータが更新されることで、出力 y の精度を向上させる

Multi Layer Perceptron / MLP

MLP-Mixer

gMLP

参考