# ITエンジニアのための機械学習理論入門(第4章)


パーセプトロン:分類アルゴリズムの基礎

パーセプトロンについて

  • パーセプトロンはある分類問題があるとき、その分類問題を重み付きの線形関数を用いて分類する手法
    • 与えられた重み付きの線形関数を最適化し、分類の成否により定義された誤差関数を最小化する(たぶん)
    • 重み付き線形関数にデータセットをぶち込んで、予め定義された基準によりクラスを決定
      • 例えば線形関数の出力が正なら1、負なら-1とか
  • 例えば2変数の線形関数なら以下のように表現できる
 f(x)=w_0x_0 + w_1x_1 + w_2
  • ここで最適化するのは関数についている重み
    • 機械学習ではここらへんのことを学習というっぽい
      • 個人的には最適化って言いたい感じある
  • 例えば分類するときにその分類する関数をパーセプトロンによって学習させて求めていく
  • どうやって最適なパラメータを決めるとか、誤差関数をどうするかとかはまた別に決められる
    • 最適化には進化計算とか、古典的な最適化アルゴリズムとか
    • ぼくに言いやすい形だと誤差関数はもはや目的関数よね
    • 重みにはバイアス項と呼ばれる定数項がある
      • ここは人によりデータを見てチューニングするのが望ましい
  • もっと難しい概念だと思っていた(語感的に)けどわかりやすかった
  • この本では重みの最適化部分を確率的勾配降下法で行う
    • ここについて書くかは微妙だけどせっかくなので後述していく
  • パーセプトロンを幾何学的に解釈するとかあったけど割愛

確率的勾配降下法

  • よくある現在の地点からの勾配をみて最適なパラメータを探していく最適化アルゴリズム

    • 任意の点が与えられた時に目的関数を偏微分することにより得られる勾配ベクトルを計算
    • 得られた勾配ベクトルを現在の設計変数(上記で言うところの重み)に対して差分することで更新(以下式のように)
      • いまよりもっとも勾配が逆にきつい方向に進んでいく
     w_{new}=w_{old}-\nabla E
    
  • これを用いてパーセプトロンの線形関数を最適化するなら、探索するパラメータは重みになる

    • また勾配は分類が失敗しているデータの変数値を重みに足し合わせる形?
      • ちょっと自信ない
      • ここ自体にも学習率のパラメータをつける資料もあったりなかったり