🕸️

パーセプトロン

に公開

単純パーセプトロン (Simple Perceptron)

基本的な考えは「入力層の各要素が、出力層の各要素に対してもつ重みのベクトル」。オプションとして、論理ゲートとしての活性化関数と「発火しやすさ」としてのバイアスを持つイメージ。

  • 入力層と出力層の2層からなる。
  • 各層にはそれぞれ任意の数のノード(ニューロンとも呼ぶ)がある。
  • 入力値(入力層に対応したベクトル)=入力層となる。
  • 出力層の各ノードは
    1. 入力層の全ノードの出力値の重み付き和を計算する。
      • ノードの組み合わせごとに重みを持っている。
    2. 自ノードの持つバイアスを加算。
      • バイアスは出力層の各ノードごとに持つ。
    3. バイアス加算後に活性化関数を通して出力を得る。
      • 活性化関数 (activation function) : 入力値(数値)から出力値(数値)を計算する関数のこと。
      • 単純パーセプトロンにおいてはステップ関数が一般的。
  • 出力層の各ノードの出力=最終的な出力ベクトルとなる。

上の1と2の処理(重み付き和とバイアスの計算)を行うレイヤを Affine レイヤと呼ぶ。

多層パーセプトロン(Multilayer Perceptron; MLP)

基本的に単純パーセプトロンの層を複数重ねたもの。入力層と出力層の間に「中間層(隠れ層)」が任意の数入る。

  • 入力層と出力層の間に任意の数の中間層(隠れ層)が入る。
  • 各層にはそれぞれ任意の数のノードがある。
  • 入力層と出力層の振る舞いは単純パーセプトロンと同じ。中間層のノードの振る舞いは以下(出力層と中間層に特別な違いはない。単に次があるかだけ)。
    1. 前層の全ノードの出力値の重み付き和を計算する。
      • ノードの組み合わせごとに重みを持っている。
    2. 自ノードの持つバイアスを加算。
    3. 活性化関数を通して出力。
      • ステップ関数のほか、シグモイド関数がよく用いられる。

パーセプトロンそのものには学習の機能はない。全てのパラメータは手動で調整される。

ニューラルネットワーク

ニューラルネットワークとは「学習の機能をもった多層パーセプトロン」のこと。

※ 単純パーセプトロンの場合、線形分離可能な問題であれば自動で学習可能(パーセプトロンの収束定理)。

  • ニューラルネットワークの活性化関数にはシグモイド sigmoid 関数(または双曲線正接 tanh 関数)が伝統的。
    • 必ずしもシグモイド関数である必要はないが、非線形関数である必要がある。
      • 線形関数を用いた場合、層を重ねる意味がなくなってしまう(単層で表現できてしまう)
  • 最近はReLU (Rectified Linear Unit) が主流になった。
  • Transformer以後はGELU (Gaussian Error Linear Unit) がよく用いられる。
    • ReLUより計算コストは高いが、微分値が滑らかなため勾配爆発を防ぎやすく、確率的正則化の機能も持つ利点がある。
  • 出力層の活性化関数はタスクに応じて選択する。
    • 分類問題:クラス分け(非連続的な出力)
      • 一般的にソフトマックス関数
      • ソフトマックス関数: 各出力は0から1の間で、かつ出力の総和が1になる。
        • つまり、正規化された確率の出力として扱える。
        • クラス分けにおいては最大値のみが採用される&ソフトマックス関数を通しても大小の順は変わらないため、実際の分類問題では出力層のソフトマックス関数は省略されるのが一般的。
    • 回帰問題:連続的な数値の出力
      • 一般的に恒等関数
  • 推論次は順伝播 (forward propagation)
    • 入力値はそのままではなく「前処理 pre-processing」を行うことが多い。
      • 例:正規化、標準化、白色化 (whitening) 等
  • 学習時は逆伝播 (backward propagation)を利用

Discussion