「人工神経」の版間の差分
m Removing Link GA template (handled by wikidata) |
編集の要約なし |
||
1行目: | 1行目: | ||
{{otheruses||再生医療における人工神経|人工神経 (再生医療)}} |
{{otheruses||再生医療における人工神経|人工神経 (再生医療)}} |
||
'''人工神経'''または'''人工ニューロン''' |
'''人工神経'''または'''人工ニューロン'''({{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 番目の人工神経の出力は次の式で表される: |
||
:<math>y_k = \varphi \left( \sum_{ |
:<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> |
|||
⚫ | |||
</math> |
|||
ここで |
ここで ''w'' はシナプスの重み付けベクトルであり、''x'' は入力ベクトルである。これはバイアス項を加える前の値。 |
||
===ステップ関数=== |
===ステップ関数(形式ニューロン)=== |
||
[[ヘヴィサイドの階段関数|ステップ関数]]の出力 ''y'' は |
[[ヘヴィサイドの階段関数|ステップ関数]]の出力 ''y'' は 0 か 1 の二値であり、''u'' がしきい値 ''b'' より大きいか小さいかで出力が決定される。入力の総和がしきい値を超えたとき、出力信号が 1 として出力される。 |
||
:<math>y = \left\{ \begin{matrix} 1 & \mbox{if }u \ge |
:<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'' を加えた値とな |
出力 ''y'' は ''u'' にバイアス値 ''b'' を加えた値となる。 |
||
:<math>y = |
:<math>y = u + b</math> |
||
:<math>\varphi(x) = x</math> |
|||
この式に基づいたネットワークを「[[パーセプトロン]]」と呼ぶ。一般にこのような純粋な形式の伝達関数は回帰設定の場合のみしか使えない。二値分類設定では出力の符号で 1 または 0 に対応させる。これはすなわち、上述のステップ関数で |
この式に基づいたネットワークを「[[パーセプトロン]]」と呼ぶ。一般にこのような純粋な形式の伝達関数は回帰設定の場合のみしか使えない。二値分類設定では出力の符号で 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|パーセプトロン}} |
|||
⚫ | |||
[[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 の二値だけをとる。 |
|||
⚫ | |||
⚫ | |||
'''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:ニューラルネットワーク]] |
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 として出力される。
線型結合(パーセプトロン)
出力 y は u にバイアス値 b を加えた値となる。
この式に基づいたネットワークを「パーセプトロン」と呼ぶ。一般にこのような純粋な形式の伝達関数は回帰設定の場合のみしか使えない。二値分類設定では出力の符号で 1 または 0 に対応させる。これはすなわち、上述のステップ関数で b の符号を反転した場合と等価であり、学習アルゴリズムで有効である。
シグモイド関数
比較的単純な非線型関数であるシグモイド関数は、微分の計算も容易であることからバックプロパゲーションを伴うニューラルネットワークで使われる。ネットワークを数学的に扱うことが容易になるため、シミュレーションの計算負荷を減らしたいと思っていた初期の研究者がシグモイド関数をこぞって採用した。
Rectifier
下記関数を 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
関連項目
参照
- ^ 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.