「人工神経」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
Dexbot (会話 | 投稿記録)
m Removing Link GA template (handled by wikidata)
Ertyupoi (会話 | 投稿記録)
編集の要約なし
1行目: 1行目:
{{otheruses||再生医療における人工神経|人工神経 (再生医療)}}
{{otheruses||再生医療における人工神経|人工神経 (再生医療)}}


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


== 基本構造 ==
== 基本構造 ==
''m''個の入力を持つ人工神経を考える。各入力信号を ''x''<sub>1</sub> から ''x''<sub>''m''</sub> とし、重み付けを ''w''<sub>1</sub> から ''w''<sub>''m''</sub> とする。
''m''個の入力を持つ人工神経を考える。各入力信号を ''x''<sub>1</sub> から ''x''<sub>''m''</sub> とし、重み付けを ''w''<sub>1</sub> から ''w''<sub>''m''</sub>、バイアス項を ''b'' とする。


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


:<math>y_k = \varphi \left( \sum_{j=0}^m w_{kj} x_j \right)</math>
:<math>y_k = \varphi \left( \sum_{i=1}^m w_{ki} x_i + b_k \right)</math>


ここで、<math>\varphi</math> は伝達関数である。
ここで、<math>\varphi</math> は伝達関数である。


[[Image:artificial_neuron.png]]
:[[Image:artificial_neuron.png]]


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

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

<!-- This part of the article needs to be expanded -->


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


以下では、人工神経への全入力の重み付けされた総和を ''u'' で表し、入力数を ''n'' で表す。
以下ステップ関数と線形結合の説明では、人工神経への全入力の重み付けされた総和を ''u'' で表し、入力数を ''n'' で表す。


:<math>u = \sum_{i = 1}^n w_{i} x_{i}</math>
:<math>
u = \sum_{i = 1}^n w_{i} x_{i}
</math>


ここで '''w''' はシナプスの重み付けベクトルであり、'''x''' は入力ベクトルである。
ここで ''w'' はシナプスの重み付けベクトルであり、''x'' は入力ベクトルである。これはバイアス項を加える前の値


===ステップ関数===
===ステップ関数(形式ニューロン)===
[[ヘヴィサイドの階段関数|ステップ関数]]の出力 ''y'' はバイナリであり、''u'' がしきい値 ''θ'' の上かで出力が決定される。入力の総和がしきい値を超えたとき、出力信号が 1 として出力される。
[[ヘヴィサイドの階段関数|ステップ関数]]の出力 ''y'' は 0 か 1 の二値であり、''u'' がしきい値 ''b'' より大きい小さいかで出力が決定される。入力の総和がしきい値を超えたとき、出力信号が 1 として出力される。


:<math>y = \left\{ \begin{matrix} 1 & \mbox{if }u \ge \theta \\ 0 & \mbox{if }u < \theta \end{matrix} \right.</math>
:<math>y = H(u - b) = \left\{ \begin{matrix} 1 & \mbox{if }u \ge b \\ 0 & \mbox{if }u < b \end{matrix} \right.</math>
:<math>\varphi(x) = H(x)</math>


===[[線型結合]]===
===[[線型結合]](パーセプトロン)===
出力 ''y'' は ''u'' にバイアス値 ''b'' を加えた値となる。''b'' は ''θ'' と同様の役目を持ち、入力とは独立している。
出力 ''y'' は ''u'' にバイアス値 ''b'' を加えた値となる。


:<math>y = \left(u + b\right)</math>
:<math>y = u + b</math>
:<math>\varphi(x) = x</math>


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


===シグモイド===
===シグモイド関数===
:<math>\varphi(x) = \frac{1}{1+e^{-x}}</math>
比較的単純な非線型関数である[[シグモイド関数]]は、微分の計算も容易であることから[[バックプロパゲーション]]を伴うニューラルネットワークで使われる。ネットワークを数学的に扱うことが容易になるため、シミュレーションの計算負荷を減らしたいと思っていた初期の研究者がシグモイド関数をこぞって採用した。
比較的単純な非線型関数である[[シグモイド関数]]は、微分の計算も容易であることから[[バックプロパゲーション]]を伴うニューラルネットワークで使われる。ネットワークを数学的に扱うことが容易になるため、シミュレーションの計算負荷を減らしたいと思っていた初期の研究者がシグモイド関数をこぞって採用した。

=== Rectifier ===
[[Image:Rectifier and softplus functions.png|thumb|青がrectifier、緑がsoftmax]]
下記関数を '''rectifier'''
:<math>\varphi(x) = \max(0, x)</math>
また、下記関数を '''softmax''' と呼び、
:<math>\varphi(x) = \log(1 + e^x)</math>
これらが活性化関数として使われることもある。


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


==形式ニューロン==
==アルゴリズムの擬似コード==
{{see also|パーセプトロン}}
以下の[[擬似コード]]はマカロックとピッツの TLU(Threshold Logic Unit)の実装例である。入力は[[真理値]](真または偽)、出力も真理値である。[[オブジェクト指向]]的モデルとなっている。トレーニング方法は定義されていない。関数型のモデルであれば、TLUクラスの代わりにTLUという関数が、入力ベクトルと重み付けベクトルとしきい値を引数とし、真理値を出力とするものになるだろう。
[[1943年]]、[[ウォーレン・マカロック]]と[[ウォルター・ピッツ]]が世界初の人工神経 Threshold Logic Unit を発表した<ref>{{Cite journal
|author=Warren S. McCulloch
|author2=Walter Pitts
|title=A logical calculus of the ideas immanent in nervous activity
|journal=The bulletin of mathematical biophysics
|volume=5
|issue=4
|year=1943
|month=December
|publisher=Kluwer Academic Publishers
|pages=115-133
|doi=10.1007/BF02478259
}}</ref>。これを'''形式ニューロン'''({{lang-en-short|formal neuron}})とも呼ぶ。伝達関数としては[[ヘヴィサイドの階段関数]]を使い、入出力の値は 0 または 1 の二値だけをとる。

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


'''class''' TLU '''defined as:'''
'''class''' TLU '''defined as:'''
74行目: 94行目:
== 関連項目 ==
== 関連項目 ==
*[[パーセプトロン]]
*[[パーセプトロン]]
*[[ADALINE]]
*[[コネクショニズム]]
*[[コネクショニズム]]
*[[神経]]
*[[神経]]


== 参考文献 ==
== 参 ==
{{reflist}}

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

== アプリケーション ==
*[http://www.spice.ci.ritsumei.ac.jp/~thangc/programs/japanese.htm 多層ニューラルネットワークと自己組織化写像のアプリケーション]


[[Category:ニューラネック|しんこうしんけい]]
{{デフォルトト:しんこうしんけい}}
[[Category:ニューラルネットワーク]]

2015年2月6日 (金) 14:19時点における版

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

基本構造

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

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

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

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

伝達関数の種類

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

以下ステップ関数と線形結合の説明では、人工神経への全入力の重み付けされた総和を u で表し、入力数を n で表す。

ここで w はシナプスの重み付けベクトルであり、x は入力ベクトルである。これはバイアス項を加える前の値。

ステップ関数(形式ニューロン)

ステップ関数の出力 y は 0 か 1 の二値であり、u がしきい値 b より大きいか小さいかで出力が決定される。入力の総和がしきい値を超えたとき、出力信号が 1 として出力される。

線型結合(パーセプトロン)

出力 yu にバイアス値 b を加えた値となる。

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

シグモイド関数

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

Rectifier

青がrectifier、緑がsoftmax

下記関数を rectifier

また、下記関数を softmax と呼び、

これらが活性化関数として使われることもある。

批判

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

形式ニューロン

1943年ウォーレン・マカロックウォルター・ピッツが世界初の人工神経 Threshold Logic Unit を発表した[1]。これを形式ニューロン: formal neuron)とも呼ぶ。伝達関数としてはヘヴィサイドの階段関数を使い、入出力の値は 0 または 1 の二値だけをとる。

擬似コード

以下の擬似コードはマカロックとピッツの形式ニューロンの実装例である。入力は真理値(真または偽)、出力も真理値である。オブジェクト指向的モデルとなっている。トレーニング方法は定義されていない。関数型のモデルであれば、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

関連項目

参照

  1. ^ Warren S. McCulloch; Walter Pitts (December 1943). “A logical calculus of the ideas immanent in nervous activity”. The bulletin of mathematical biophysics (Kluwer Academic Publishers) 5 (4): 115-133. doi:10.1007/BF02478259.