人工神経

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

人工神経または人工ニューロン(Artificial Neuron)とは、生物学的神経を抽象化したニューラルネットワークを構成する基本単位である。人工神経は1つ以上の入力を受け取り(1つ以上の樹状突起に相当)、それらの総和から出力(シナプス)を生成する。通常、各ノードの総和には重み付けがされ、「伝達関数; transfer function」と呼ばれる非線型関数に渡される。伝達関数としてはシグモイドが最も一般的だが、不連続な線型関数、ステップ関数といった非線型関数も使われることがある。一般に、伝達関数は単調増加である。

基本構造[編集]

m個の入力を持つ人工神経を考える。各入力信号を x1 から xm とし、重み付けを w1 から wm とする。

人工神経 k の出力は次の式で表される:

y_k =  \varphi \left( \sum_{j=0}^m w_{kj} x_j \right)

ここで、\varphi は伝達関数である。

Artificial neuron.png

出力は次の層に(重み付けされたシナプスを通って)伝播するか、最終的な出力の一部として使われる。

歴史[編集]

1943年ウォーレン・マカロックウォルター・ピッツが世界初の人工神経 Threshold Logic Unit を生み出した。これを形式ニューロン(Formal Neuron)とも呼ぶ。伝達関数としては「しきい値関数」またはステップ関数を使い、値は 1 または 0 だけをとる。


伝達関数の種類[編集]

人工神経の伝達関数は、ネットワークを強化または単純化するような特性を持つものが選ばれる。実際、線型伝達関数を使った多層パーセプトロンには、全く等価な単層ネットワークが必ず存在する。従って、多層ネットワークの利点を生かすには非線型関数が必須である。

以下では、人工神経への全入力の重み付けされた総和を u で表し、入力数を n で表す。


u = \sum_{i = 1}^n w_{i} x_{i}

ここで w はシナプスの重み付けベクトルであり、x は入力ベクトルである。

ステップ関数[編集]

ステップ関数の出力 y はバイナリであり、u がしきい値 θ の上か下かで出力が決定される。入力の総和がしきい値を超えたとき、出力信号が 1 として出力される。

y = \left\{ \begin{matrix} 1 & \mbox{if }u \ge \theta \\ 0 & \mbox{if }u < \theta \end{matrix} \right.

線型結合[編集]

出力 yu にバイアス値 b を加えた値となる。bθ と同様の役目を持ち、入力とは独立している。

y = \left(u + b\right)

この式に基づいたネットワークを「パーセプトロン」と呼ぶ。一般にこのような純粋な形式の伝達関数は回帰設定の場合のみしか使えない。二値分類設定では出力の符号で 1 または 0 に対応させる。これはすなわち、上述のステップ関数で \theta = -b とした場合と等価であり、学習アルゴリズムで有効である。

シグモイド[編集]

比較的単純な非線型関数であるシグモイド関数は、微分の計算も容易であることからバックプロパゲーションを伴うニューラルネットワークで使われる。ネットワークを数学的に扱うことが容易になるため、シミュレーションの計算負荷を減らしたいと思っていた初期の研究者がシグモイド関数をこぞって採用した。

批判[編集]

人工神経は、生物物理学的には正しいモデルではないと批判されることが多い。というのも、生物の神経は必ずしも出力が1つとは限らず、現在の人工神経では必ず出力が1つになっているためである。この特徴は計算の高速化には役立っているが、生物物理学的な正確さは犠牲となっている。

アルゴリズムの擬似コード[編集]

以下の擬似コードはマカロックとピッツの TLU(Threshold Logic Unit)の実装例である。入力は真理値(真または偽)、出力も真理値である。オブジェクト指向的モデルとなっている。トレーニング方法は定義されていない。関数型のモデルであれば、TLUクラスの代わりにTLUという関数が、入力ベクトルと重み付けベクトルとしきい値を引数とし、真理値を出力とするものになるだろう。

 class TLU defined as:
  data member threshold : number
  data member weights : list of numbers of size X
  function member fire( inputs : list of booleans of size X ) : boolean defined as:
   variable T : number
   T  0
   for each i in 1 to X :
    if inputs(i) is true :
     T  T + weights(i)
    end if
   end for each
   if T > threshold :
    return true
   else:
    return false
   end if
  end function
 end class

関連項目[編集]

参考文献[編集]

  • McCulloch, W. and Pitts, W. (1943). A logical calculus of the ideas immanent in nervous activity. Bulletin of Mathematical Biophysics, 7:115 - 133.

アプリケーション[編集]