【機械学習】パーセプトロン(Perceptron)について。

公開日: : 最終更新日:2018/05/13 機械学習 , , ,

パーセプトロンは、教師あり学習の中でも、入出力モデルベース(eager learning:働き者の学習)に分類され、その中で最も単純なモデルとなります。

パーセプトロンの特徴

パーセプトロンには、以下の特徴があります。

  • 2値クラス分類のみに対応している(多クラス分類には適応できない)。
  • 学習データが線形分離可能(linearly separable)であれば、それらを正しく2値クラスに分離する平面をみつけることができます。線形分離なので、例えば2次元の場合は、直線で分離可能だということになる。
  • 重みベクトルから重要な特徴量(識別に効いている)が推測できる。
  • 線形分離可能でないと性能が落ちる。そのため、パーセプトロンを組み合わせて使うとニューラルネットワークになる。

パーセプトロンで用いる定義について

パーセプトロンで用いる記号をここで定義しておきます。

パーセプトロンは2値クラス分類なので、出力 \(y(x)\)  は正例(+1)もしくは負例(-1)の2種類となります。

$$出力 y(x)=f(w^T\phi(x))$$

$$\phi(x):特徴ベクトル$$

$$w:重みベクトル$$

$$階段関数 f(a)=\{+1, a\geq0\\-1,a<0\}$$

事例 X の 特徴ベクトルを \(\phi(x)\) とします。ただし、特徴ベクトルの要素の1番最初にバイアス要素である \(\phi_0(x)=1\) を追加したものを \(\phi(x)\) とします。ちなみに「\(\phi\)」は Phi と読みます。

出力 \(y(x)\) は、重みベクトル \(w\) と特徴ベクトル \(\phi(x)\) の内積が0以上か0未満かで判定されます。

階段関数は、+1か-1かを出力するために用いられます。

重みベクトルを以下のアルゴリズムで学習していきます。

パーセプトロンの学習アルゴリズム

パーセプトロンの学習アルゴリズムは単純な作業の繰り返しとなります。

  1. 重みベクトルを \(w=(0,0,0,…)\) で初期化する。
  2. 学習データからランダムに事例を選択する。
  3. 分類が間違っていたら以下の式で重みベクトルを更新する。
    • 正例が正解なのに間違っていた場合:\( w ← w + \phi(x) \)
    • 負例が正解なのに間違っていた場合:\( w ← w - \phi(x) \)
  4. 2に戻る。(※全ての事例が正しく分類できるまで繰り返す。)

平均化パーセプトロン(Averaged Perceptron)

通常のパーセプトロンでは、ノイズが含まれる場合、振動して不安定となります。また、学習の最後の方で選んだサンプルに引きずられやすいというデメリットがあります。

それらのデメリットを補うなために、パーセプトロンの学習アルゴリズムを少しだけ変形したものが平均化パーセプトロンです。分類が間違っていたときの重みベクトル更新部分で、重みベクトルをそのまま使うのではなく、全ステップの重みベクトルを平均したものを使います。

そうすることによって、ロバストな挙動を示す、実用的で高性能な機械学習アルゴリズムになります。

関連記事

【Weka】ARFF 形式から CSV 形式に簡単に変換する方法。

フリーのデータマイニングツールである WEKA では、ARFF 形式と CSV 形式のデータを読み込

記事を読む

【Weka】アソシエーション・ルール(association rule)【機械学習】

フリーの機械学習ツール Weka でアソシエーション・ルール(association rule)を使

記事を読む

【探索】縦型・横型・反復深化法の探索手法の比較。

探索とは、チェスや将棋や囲碁などのゲームをコンピュータがプレイするときに、どの手を指すかを決定するの

記事を読む

【機械学習】 scikit-learn で不正解データを抽出する方法【Python】

Python の scikit-learn ライブラリを使って機械学習でテストデータを識別(2クラス

記事を読む

【Weka】フリーの機械学習ソフトをインストールする方法。

Weka は、GUIで使えるフリーの機械学習ソフトです。 https://ja.wikiped

記事を読む

【機械学習・手法比較】決定木とナイーブベイズを比較してみた。

同じデータを使って、教師有り機械学習手法の 決定木(Decision Tree)とナイーブベイズ(N

記事を読む

【探索】ダイクストラ法・最良優先探索・Aアルゴリズムの比較。

縦型探索や横型探索では、機械的に順序を付け、最小ステップでゴールを目指します。 つまり、

記事を読む

機械学習の手法のまとめ。

機械学習は、「与えられた入出力事例をモデル化する行為」のことで、ディープラーニングなどで注目を集めて

記事を読む

【機械学習】 scikit-learn で精度・再現率・F値を算出する方法【Python】

今回は、2クラス分類で Python の scikit-learn を使った評価指標である、精度(P

記事を読む

【Weka】CSVファイルを読み込んで決定木を実行。

フリーの機械学習ソフト Weka を使って、CSVファイルを読み込んで決定木(Decision Tr

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

【matplotlib】 Python でヒストグラムの横軸と棒(ビン)の数を調整する方法。

Python の matplotlib を使ってヒストグラムを描画し、

【デジカメ】 NEX-6 で撮った写真を Wi-Fi で PC に転送する方法【SONY】

今回は、SONY の NEX-6 のデジカメで撮った写真を 無線の W

【SONY NEX-6】オールドレンズをミラーレスカメラに付ける方法【マウントアダプター】

家でずっと眠っていたオールドレンズ(フィルムカメラに装着されて

【WordPress】 カテゴリごとに広告を簡単に切り替える方法【AdRotate】

今回は、WordPress のプラグインを使って、簡単にカテゴリごとに

【ビットコイン】 アドレス生成方法について調べてみた。

仮想通貨の1つであるビットコインを送金するときは、送付側と受け手側のそ

→もっと見る

PAGE TOP ↑