多層パーセプトロン

多層パーセプトロン（たそうパーセプトロン、英: Multilayer perceptron、略称: MLP）は、順伝播型ニューラルネットワークの一分類である。MLPは少なくとも3つのノードの層からなる。入力ノードを除けば、個々のノードは非線形活性化関数を使用するニューロンである。MLPは学習のために誤差逆伝播法（バックプロパゲーション）と呼ばれる教師あり学習手法を利用する。その多層構造と非線形活性化関数が、MLPと線形パーセプトロンを区別している。MLPは線形分離可能ではないデータを識別できる。 多層パーセプトロンは時折、特に単一の隠れ層を持つ時、「バニラ」ニューラルネットワークと口語的に呼ばれることがある。 多層パーセプトロンが全てのニューロンにおいて線形活性化関数、すなわち、個々のニューロンの出力に重み付けされた入力（英語版）をマップする線形関数を持つとすると、線形代数から、いかなる数の層も2層からなる入力-出力モデルに削減することができることが示される。MLPでは、一部のニューロンは、生物学的ニューロンの活動電位の頻度および発火をモデル化するために開発された「非線形」活性化関数を用いる。 一般的な2つの活性化関数はどちらもシグモイドであり、以下の式で表わされる。 y ( v i ) = tanh ⁡ ( v i )     and     y ( v i ) = ( 1 + e − v i ) − 1 {\displaystyle y(v_{i})=\tanh(v_{i})~~{\textrm {and}}~~y(v_{i})=(1+e^{-v_{i}})^{-1}} 1つ目の式は−1から1の範囲の双曲線正接（tanh）関数であり、2つ目の式はロジスティック関数である。ロジスティック関数は双曲線正接関数と形状が似ているが範囲は0から1である。ここで、 y i {\displaystyle y_{i}} は i {\displaystyle i} 番目のノード（ニューロン）の出力であり、 v i {\displaystyle v_{i}} は入力接続の加重和である。他に、Rectifierおよびsoftplus関数を含む活性化関数が提案されている。より専門分野に特化した活性化関数に放射基底関数がある（教師ありニューラルネットワークモデルの一分類である放射基底ネットワーク（英語版）で使われる）。 MLPは、非線形的に活性化されるノードの3つ以上の層（入力層と出力層と1つ以上の「隠れ層」）からなり、ディープニューラルネットワークを作り出す。MLPは全結合（fully connected）のため、1つの層中のそれぞれのノードは次の層中の全てのノードと任意の重み w i j {\displaystyle w_{ij}} で結合している。 学習は、個々のデータが処理された後に、期待される結果と比較した出力中の誤差の大きさに基づいて、結合加重を変化させることによってMLPにおいて起こる。これは教師あり学習の一例であり、誤差逆伝播法（バックプロパゲーション）を用いて実行される。誤差逆伝播法は、線形パーセプトロンにおける最小二乗法アルゴリズムの一般化である。 n {\displaystyle n} 番目のデータポイント（訓練例）における出力ノード j {\displaystyle j} の誤差は、 e j ( n ) = d j ( n ) − y j ( n ) {\displaystyle e_{j}(n)=d_{j}(n)-y_{j}(n)} と表わされる。上式において、 d {\displaystyle d} は目標値、 y {\displaystyle y} はパーセプトロンによって作り出される値である。ノードの重みは、全出力における誤差 E ( n ) = 1 2 ∑ j e j 2 ( n ) {\displaystyle {\mathcal {E}}(n)={\frac {1}{2}}\sum _{j}e_{j}^{2}(n)} を最小化する補正に基づいて調整される。 最急降下法を用いると、それぞれの重みにおける変化は以下の式で表わされる。 Δ w j i ( n ) = − η ∂ E ( n ) ∂ v j ( n ) y i ( n ) {\displaystyle \Delta w_{ji}(n)=-\eta {\frac {\partial {\mathcal {E}}(n)}{\partial v_{j}(n)}}y_{i}(n)} 上式において、 y i {\displaystyle y_{i}} は一つ前のニューロンの出力、 η {\displaystyle \eta } は「学習率」である。学習率は、重みが振動することなく反応に対してすばやく収束するように選択される。 計算される導関数はinduced local field v j {\displaystyle v_{j}} に依存し、それ自身も変動する。出力ノードについて、この導関数が − ∂ E ( n ) ∂ v j ( n ) = e j ( n ) ϕ ′ ( v j ( n ) ) {\displaystyle -{\frac {\partial {\mathcal {E}}(n)}{\partial v_{j}(n)}}=e_{j}(n)\phi ^{\prime }(v_{j}(n))} と単純化できることを証明するのは容易である。上式において、 ϕ ′ {\displaystyle \phi ^{\prime }} は上述した活性化関数の導関数であり、それ自身は変化しない。隠れ層への重みの変化についての解析はより難しいが、 関連のある導関数は以下のように表わすことができる。 − ∂ E ( n ) ∂ v j ( n ) = ϕ ′ ( v j ( n ) ) ∑ k − ∂ E ( n ) ∂ v k ( n ) w k j ( n ) {\displaystyle -{\frac {\partial {\mathcal {E}}(n)}{\partial v_{j}(n)}}=\phi ^{\prime }(v_{j}(n))\sum _{k}-{\frac {\partial {\mathcal {E}}(n)}{\partial v_{k}(n)}}w_{kj}(n)} . これは、出力層を表わす k {\displaystyle k} 番目のノードの重みの変化に依存する。したがって隠れ層の重みを変化させるには、活性化関数の導関数にしたがって出力層の重みを変化させる。したがってこのアルゴリズムは活性化関数の逆伝播（バックプロパゲーション）に相当する 。 「多層パーセプトロン」という用語は、複数の層を持つ単一のパーセプトロンを意味しない。むしろ、層へと組織化された多くのパーセプトロンを含む。代替用語は「多層パーセプトロンネットワーク」である。さらに、MLP「パーセプトロン」は、最も厳密に言えばパーセプトロンではない。真のパーセプトロンは正式には、ヘヴィサイドの階段関数といった閾値活性化関数を用いる人工ニューロンの特殊な場合である。MLPパーセプトロンは任意の活性化関数を用いることができる。真のパーセプトロンは二項分類を実行する。対して、MLPニューロンは、その活性化関数に依存して分類あるいは回帰のどちらを実行するかは自由である。 「多層パーセプトロン」という用語は後に、ノード/層の特性に関係なく適用されるようになった。ノード/層は、パーセプトロンに限定されず、任意に定義されたニューロンから構成することができる。この解釈は、一般に人工ニューロンを意味するところの「パーセプトロン」の定義の緩和を避けている。 MLPは、確率的に問題を解くことができるため研究において有用である。MLPは適応度近似（英語版）のような極めて複雑な問題に対する近似解をしばしば与える。 MLPはCybenkoの定理（英語版）によって示されているように普遍的な関数近似器であるため、回帰分析によって数理モデルを作成するために使うことができる。分類は、応答変数がカテゴリ一変数（英語版）である時の回帰の特殊な例であり、MLPはよい分類アルゴリズムを作る。 MLPは1980年代に人気のある機械学習法であり、音声認識や画像認識、機械翻訳ソフトウェアといった多様な分野に応用されたが、その後より単純な（そして関連する）サポートベクターマシンとの激しい競争に直面した。ディープラーニングの成功によってバックプロパゲーションネットワークへの関心が戻った。