オムライスの備忘録

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

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

この記事の読者


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



キーワード・知ってると理解がしやすい

  • 行列演算
  • 集合



Index

パーセプトロンとは

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

複数の信号を入力として、ひとつの信号を出力するアルゴリズムになりますが、
ここでの「信号」は電流や川のような「流れ」をイメージするのが良いと思います
出力は、後続の信号を先に「流す / 流さないか (1 / 0)」 の二値です

分類問題としては、二値分類となります

パーセプトロン

アルゴリズム Algorithm

上図は以下の場合のパーセプトロンになります

  • 入力 : 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とすることで都合が良いケースもある)

一般化 Generalization

入力ベクトル  \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 の精度を向上させる

参考

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

  • 作者:斎藤 康毅
  • 発売日: 2016/09/24
  • メディア: 単行本(ソフトカバー)

パターン認識と機械学習 上

パターン認識と機械学習 上