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

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

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

Contents

パーセプトロンの特徴

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

  • 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 形式のデータを読み込

記事を読む

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

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

記事を読む

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

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

記事を読む

【深層学習】 TensorFlow と Keras をインストールする【Python】

今回は、Google Colaboratory 上で、深層学習(DeepLearning)フレームワ

記事を読む

【機械学習】決定木(decision tree)について。

教師あり学習の一つである決定木(desicion tree)について勉強したことを書いていきます。

記事を読む

【PyTorch】GPUのメモリ不足でエラーになったときの対処方法。

PyTorch で深層学習していて、 GPUのメモリ不足でエラーが出てしまったので、対処方法のメモで

記事を読む

【PyTorch】畳込みニューラルネットワークを構築する方法【CNN】

今回は、PyTorch を使って畳込みニューラルネットワーク(CNN)を構築する方法について紹介しま

記事を読む

【Weka】欠損データを自動的に補完するフィルタを使ってみた。

機械学習で用いるデータについてです。データは完璧なことに越したことはないが、通常は、ある属性の値が入

記事を読む

【転移学習】学習済みVGG16 による転移学習を行う方法【PyTorch】

今回は、PyTorch を使って、学習済みのモデル VGG16 を用いて転移学習をしてみました。

記事を読む

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

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

記事を読む

Message

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

無料動画編集ソフト AviUtl で mp4 形式の動画を読み込み・出力する方法【Windows】

今回は、無料動画編集ソフト AviUtl で mp4 形式の動画を読み

【Cubase】イヤホンから音がでないときの対処方法。

Cubase でイヤホンから音がでなくなったときの対処方法のメモです。

【Cubase】特定のトラックを無効にする方法。

今回は、Cubaseで特定のトラックのみを無効にする方法について紹介し

【転移学習】学習済みVGG16 による転移学習を行う方法【PyTorch】

今回は、PyTorch を使って、学習済みのモデル VGG16 を用い

【PyTorch】畳込みニューラルネットワークを構築する方法【CNN】

今回は、PyTorch を使って畳込みニューラルネットワーク(CNN)

→もっと見る

PAGE TOP ↑