バックプロパゲーション

機械学習において、バックプロパゲーションは、パラメータ更新を計算する際にニューラル ネットワークのトレーニングによく使用される勾配計算方法です。

これは連鎖律をニューラルネットワークに効率的に適用したものです。バックプロパゲーションは、単一の入出力例に対するネットワークの重みに対する損失関数の勾配を計算します。この計算は効率的に行われ、勾配を1層ずつ計算し、最後の層から逆方向に反復することで連鎖律の中間項の冗長な計算を回避します。これは動的計画法によって導出できます。[ 1 ] [ 2 ] [ 3 ]

厳密に言えば、バックプロパゲーションという用語は、勾配を効率的に計算するアルゴリズムのみを指し、勾配の使用方法については言及しません。しかし、この用語はしばしば学習アルゴリズム全体を指すために広く用いられます。これには、確率的勾配降下法のように勾配の負の方向にモデルパラメータを変更することや、適応モーメント推定法のようなより複雑な最適化手法の中間ステップとして使用されることが含まれます。[ 4 ]

バックプロパゲーションには複数の発見と部分的な発見があり、複雑な歴史と用語が存在します。詳細は歴史の項を参照してください。この手法は「逆自動微分法」や「逆累積法」などとも呼ばれます。[ 5 ]

概要

バックプロパゲーションは、損失関数に関して、フィードフォワードニューラルネットワークの重み空間における勾配を計算します。以下を表します。

  • ×{\displaystyle x}: 入力(特徴のベクトル)
  • y{\displaystyle y}: ターゲット出力
    分類の場合、出力はクラス確率のベクトル(例: )になり、ターゲット出力はワンホット/ダミー変数によってエンコードされた特定のクラス(例:)になります。0.10.70.2{\displaystyle (0.1,0.7,0.2)}010{\displaystyle (0,1,0)}
  • C{\displaystyle C}:損失関数または「コスト関数」[ a ]
    分類の場合、これは通常クロスエントロピー(XC、対数損失) ですが、回帰の場合、これは通常二乗誤差損失(SEL) です。
  • L{\displaystyle L}: 層の数
  • Wljl{\displaystyle W^{l}=(w_{jk}^{l})}: 層と間の重み。ここでは層の - 番目のノードと層の - 番目のノード間の重み[ b ]l1{\displaystyle l-1}l{\displaystyle l}jl{\displaystyle w_{jk}^{l}}{\displaystyle k}l1{\displaystyle l-1}j{\displaystyle j}l{\displaystyle l}
  • fl{\displaystyle f^{l}}:層の活性化関数l{\displaystyle l}
    分類の場合、最後の層は通常、バイナリ分類の場合はロジスティック関数、マルチクラス分類の場合はソフトマックス(softargmax) ですが、隠し層の場合は、伝統的に各ノード (座標) のシグモイド関数(ロジスティック関数など) でしたが、今日ではより多様化しており、整流器(ランプReLU ) が一般的です。
  • 1つのjl{\displaystyle a_{j}^{l}}:レイヤーの - 番目のノードのアクティブ化。j{\displaystyle j}l{\displaystyle l}

バックプロパゲーションの導出においては、必要に応じて以下の式を導入することで、他の中間量が使用されます。バイアス項は、入力が1に固定された重みに対応するため、特別扱いされません。バックプロパゲーションにおいては、損失関数と活性化関数は、それらとその導関数が効率的に評価できる限り、特に重要ではありません。従来の活性化関数には、シグモイド関数、tanh関数、ReLU関数などがあります。Swish [ 6 ] Mish [ 7 ]など多くのものがあります

全体的なネットワークは関数合成行列乗算の組み合わせです。

グラム×:=fLWLfL1WL1f1W1×{\displaystyle g(x):=f^{L}(W^{L}f^{L-1}(W^{L-1}\cdots f^{1}(W^{1}x)\cdots ))}

トレーニングセットには、入力と出力のペアのセットが存在します。トレーニングセット内の各入力と出力のペアについて、そのペアにおけるモデルの損失は、予測出力と目標出力の差のコストです。 {×y}{\displaystyle \left\{(x_{i},y_{i})\right\}}×y{\displaystyle (x_{i},y_{i})}グラム×{\displaystyle g(x_{i})}y{\displaystyle y_{i}}

Cyグラム×{\displaystyle C(y_{i},g(x_{i}))}

違いに注意してください。モデル評価中は、重みは固定されていますが入力は変化します(ターゲット出力は不明な場合があります)。ネットワークは出力層で終了します(損失関数は含まれません)。モデル学習中は、入力と出力のペアは固定されていますが重みは変化します。ネットワークは損失関数で終了します。

バックプロパゲーションは、重みが変化する可能性のある固定入力-出力ペアの勾配を計算します。勾配の各要素は連鎖律によって計算できますが、重みごとに個別に計算するのは非効率的です。バックプロパゲーションは、各層の勾配(具体的には、各層の重み付き入力の勾配( で示される))を後ろから前に 向かって計算することで、重複計算を回避し、不要な中間値を計算しないようにすることで、勾配を効率的に計算します。×y{\displaystyle (x_{i},y_{i})}jl{\displaystyle w_{jk}^{l}}C/jl{\displaystyle \partial C/\partial w_{jk}^{l},}δl{\displaystyle \delta^{l}}

非公式には、重要な点は、 の重みが損失に影響を及ぼす唯一の方法は、次の層に対するその効果を通してであり、そしてそれは線形 であるため、は層 における重みの勾配を計算するために必要な唯一のデータであり、そして前の層の重みの勾配は によって計算され、再帰的に繰り返される、ということです。 これにより、2 つの方法で非効率性が回避されます。まず、 層 における勾配を計算するときに、それ以降の層のすべての導関数を毎回再計算する必要がないため、重複が回避されます。2 番目に、各ステージで最終的な出力 (損失) に対する重みの勾配が直接計算されるため、不要な中間計算が回避されます。重み の変化に関する隠れ層の値の導関数を不必要に計算する必要がないためです。 Wl{\displaystyle W^{l}}δl{\displaystyle \delta^{l}}l{\displaystyle l}δl1{\displaystyle \delta^{l-1}}l{\displaystyle l}l+1l+2{\displaystyle l+1,l+2,\ldots }1つのjl/jl{\displaystyle \partial a_{j'}^{l'}/\partial w_{jk}^{l}}

バックプロパゲーションは、単純なフィードフォワード ネットワークの場合は行列乗算で表現できますが、より一般的には随伴グラフで表現することもできます。

行列の乗算

フィードフォワードネットワークの基本的なケースでは、各層のノードはすぐ次の層のノードにのみ接続され(層をスキップせず)、最終出力のスカラー損失を計算する損失関数があるため、バックプロパゲーションは単純に行列の乗算で理解できます。[ c ]基本的に、バックプロパゲーションは、コスト関数の導関数の式を各層間の右から左への導関数の積として(「逆方向」に)評価し、各層間の重みの勾配は部分積(「逆方向伝播エラー」)の単純な修正になります。

入力と出力のペアが与えられた場合、損失は次のようになります。 ×y{\displaystyle (x,y)}

CyfLWLfL1WL1f2W2f1W1×{\displaystyle C(y,f^{L}(W^{L}f^{L-1}(W^{L-1}\cdots f^{2}(W^{2}f^{1}(W^{1}x))\cdots )))}

これを計算するには、入力から始めて順方向に計算を進めます。各隠れ層への重み付き入力を、隠れ層の出力を活性化関数 と表します。バックプロパゲーションでは、活性化関数と導関数( で評価)を、逆方向パスで使用するためにキャッシュしておく必要があります。 x{\displaystyle x}zl{\displaystyle z^{l}}l{\displaystyle l}al{\displaystyle a^{l}}al{\displaystyle a^{l}}(fl){\displaystyle (f^{l})'}zl{\displaystyle z^{l}}

入力に関する損失の導関数は連鎖律によって与えられます。各項は入力のネットワークの値(各ノード)で評価される全導関数であることに注意してください。 x{\displaystyle x}

dCdaLdaLdzLdzLdaL1daL1dzL1dzL1daL2da1dz1z1x,{\displaystyle {\frac {dC}{da^{L}}}\cdot {\frac {da^{L}}{dz^{L}}}\cdot {\frac {dz^{L}}{da^{L-1}}}\cdot {\frac {da^{L-1}}{dz^{L-1}}}\cdot {\frac {dz^{L-1}}{da^{L-2}}}\cdot \ldots \cdot {\frac {da^{1}}{dz^{1}}}\cdot {\frac {\partial z^{1}}{\partial x}},}

ここでは対角行列です。 daLdzL{\displaystyle {\frac {da^{L}}{dz^{L}}}}

これらの項は、損失関数の導関数[ d ]、活性化関数の導関数[ e ]、重み行列[ f ]である。

dCdaL(fL)WL(fL1)WL1(f1)W1.{\displaystyle {\frac {dC}{da^{L}}}\circ (f^{L})'\cdot W^{L}\circ (f^{L-1})'\cdot W^{L-1}\circ \cdots \circ (f^{1})'\cdot W^{1}.}

勾配は、入力に関する出力の微分の転置なので、行列は転置され、乗算の順序は逆になりますが、エントリは同じ です{\displaystyle \nabla }

xC=(W1)T(f1)(WL1)T(fL1)(WL)T(fL)aLC.{\displaystyle \nabla _{x}C=(W^{1})^{T}\cdot (f^{1})'\circ \ldots \circ (W^{L-1})^{T}\cdot (f^{L-1})'\circ (W^{L})^{T}\cdot (f^{L})'\circ \nabla _{a^{L}}C.}

バックプロパゲーションは、基本的にこの式を右から左へ評価し(同様に、導関数の前の式を左から右へ乗算し)、途中で各レイヤーの勾配を計算することから構成されます。重みの勾配は単なる部分式ではないため、追加の手順があり、追加の乗算があります。

部分積(右から左への乗算)の補助量を導入します。これは「レベル での誤差」として解釈され、レベル での入力値の勾配として定義されます。 δl{\displaystyle \delta ^{l}}l{\displaystyle l}l{\displaystyle l}

δl:=(fl)(Wl+1)T(fl+1)(WL1)T(fL1)(WL)T(fL)aLC.{\displaystyle \delta ^{l}:=(f^{l})'\circ (W^{l+1})^{T}\cdot (f^{l+1})'\circ \cdots \circ (W^{L-1})^{T}\cdot (f^{L-1})'\circ (W^{L})^{T}\cdot (f^{L})'\circ \nabla _{a^{L}}C.}

はレベル内のノードの数に等しい長さのベクトルであることに注意してください。各コンポーネントは、「そのノード(の値)に起因するコスト」として解釈されます。 δl{\displaystyle \delta ^{l}}l{\displaystyle l}

レイヤー内の重みの勾配は次のようになります。 l{\displaystyle l}

WlC=δl(al1)T.{\displaystyle \nabla _{W^{l}}C=\delta ^{l}(a^{l-1})^{T}.}

係数 は、レベルと 間の重みが入力 (アクティベーション) に比例して レベルに影響を与えるためです。入力は固定で、重みは変化します。al1{\displaystyle a^{l-1}}Wl{\displaystyle W^{l}}l1{\displaystyle l-1}l{\displaystyle l}l{\displaystyle l}

これは、次のように右から左へ簡単に再帰的に計算できます。 δl{\displaystyle \delta ^{l}}

δl1:=(fl1)(Wl)Tδl.{\displaystyle \delta ^{l-1}:=(f^{l-1})'\circ (W^{l})^{T}\cdot \delta ^{l}.}

したがって、重みの勾配は、各レベルごとにいくつかの行列乗算を使用して計算できます。これがバックプロパゲーションです。

単純に順方向に計算する場合(例として を使用)と比較すると、次のようになります。 δl{\displaystyle \delta ^{l}}

δ1=(f1)(W2)T(f2)(WL1)T(fL1)(WL)T(fL)aLCδ2=(f2)(WL1)T(fL1)(WL)T(fL)aLCδL1=(fL1)(WL)T(fL)aLCδL=(fL)aLC,{\displaystyle {\begin{aligned}\delta ^{1}&=(f^{1})'\circ (W^{2})^{T}\cdot (f^{2})'\circ \cdots \circ (W^{L-1})^{T}\cdot (f^{L-1})'\circ (W^{L})^{T}\cdot (f^{L})'\circ \nabla _{a^{L}}C\\\delta ^{2}&=(f^{2})'\circ \cdots \circ (W^{L-1})^{T}\cdot (f^{L-1})'\circ (W^{L})^{T}\cdot (f^{L})'\circ \nabla _{a^{L}}C\\&\vdots \\\delta ^{L-1}&=(f^{L-1})'\circ (W^{L})^{T}\cdot (f^{L})'\circ \nabla _{a^{L}}C\\\delta ^{L}&=(f^{L})'\circ \nabla _{a^{L}}C,\end{aligned}}}

バックプロパゲーションには 2 つの重要な違いがあります。

  1. の観点から計算すると、レイヤーやそれ以降の明らかな重複した乗算が回避されます。δl1{\displaystyle \delta ^{l-1}}δl{\displaystyle \delta ^{l}}l{\displaystyle l}
  2. から始めて乗算する(誤差を逆方向に伝播する)ということは、各ステップでベクトル ( ) に活性化の重みと導関数の行列を乗算するだけです。対照的に、前の層の変化から始めて順方向に乗算するということは、各乗算で行列に行列を乗算することを意味します。これははるかにコストが高く、1 つの層での変化の可能性のあるすべてのパスを層の変化まで順方向に追跡することに相当します( を乗算し、活性化の導関数に対して追加の乗算を行います)。これにより、重みの変化が隠しノードの値にどのように影響するかを示す中間量が不必要に計算されます。aLC{\displaystyle \nabla _{a^{L}}C}δl{\displaystyle \delta ^{l}}(Wl)T{\displaystyle (W^{l})^{T}}(fl1){\displaystyle (f^{l-1})'}l{\displaystyle l}l+2{\displaystyle l+2}Wl+1{\displaystyle W^{l+1}}Wl+2{\displaystyle W^{l+2}}

随伴グラフ

より一般的なグラフやその他の高度なバリエーションでは、バックプロパゲーションは自動微分の観点から理解することができ、バックプロパゲーションは逆累積(または「逆モード」)の特殊なケースです。 [ 5 ]

直感

モチベーション

あらゆる教師あり学習アルゴリズムの目標は、入力セットを正しい出力に最もよくマッピングする関数を見つけることです。バックプロパゲーションの目的は、多層ニューラルネットワークを訓練し、適切な内部表現を学習させることで、任意の入力と出力のマッピングを学習できるようにすることです。[ 8 ]

最適化問題としての学習

バックプロパゲーションアルゴリズムの数学的導出を理解するには、まずニューロンの実際の出力と特定のトレーニング例における正しい出力との関係について、ある程度の直感を養うことが役立ちます。2つの入力ユニット、1つの出力ユニット、そして隠れユニットを持たない単純なニューラルネットワークを考えてみましょう。このネットワークでは、各ニューロンは線形出力を使用します(入力から出力へのマッピングが非線形であるニューラルネットワークの多くの研究とは異なります)。[ g ]は入力の加重和です。

2つの入力ユニット(それぞれ1つの入力を持つ)と1つの出力ユニット(2つの入力を持つ)を持つ単純なニューラルネットワーク

トレーニング前の初期段階では、重みはランダムに設定されます。次に、ニューロンはトレーニング例から学習します。この場合、トレーニング例は一連 の組で構成され、 とはネットワークへの入力であり、tは正しい出力(トレーニング済みの場合、これらの入力に対してネットワークが生成するはずの出力)です。 と が与えられた初期ネットワークは、tは異なる可能性のある出力yを計算します(ランダムな重みが与えられている場合)。損失関数は、目標出力tと計算された出力yの差異を測定するために使用されます。回帰分析の問題では二乗誤差を損失関数として使用でき、分類ではカテゴリクロスエントロピーを使用できます。 (x1,x2,t){\displaystyle (x_{1},x_{2},t)}x1{\displaystyle x_{1}}x2{\displaystyle x_{2}}x1{\displaystyle x_{1}}x2{\displaystyle x_{2}}L(t,y){\displaystyle L(t,y)}

例として、二乗誤差を損失として使用する回帰問題を考えてみましょう。

L(t,y)=(ty)2=E,{\displaystyle L(t,y)=(t-y)^{2}=E,}

ここで、Eは差異または誤差です。

単一のトレーニングケースにおけるネットワークを考えてみましょう。つまり、入力と出力はそれぞれ 1 と 1 で、正しい出力tは 0 です。ここで、ネットワークの出力y を横軸に、誤差Eを縦軸にプロットすると、放物線が描かれます。放物線最小値は、誤差Eを最小化する出力yに対応します。単一のトレーニングケースでは、最小値は横軸にも接しており、これは誤差がゼロになり、ネットワークがターゲット出力tと正確に一致する出力yを生成できることを意味します。したがって、入力を出力にマッピングする問題は、誤差が最小になる関数を見つける最適化問題に帰着できます。(1,1,0){\displaystyle (1,1,0)}x1{\displaystyle x_{1}}x2{\displaystyle x_{2}}

単一訓練ケースにおける線形ニューロンの誤差面

ただし、ニューロンの出力はすべての入力の加重合計によって決まります。

y=x1w1+x2w2,{\displaystyle y=x_{1}w_{1}+x_{2}w_{2},}

ここで、およびは入力ユニットから出力ユニットへの接続における重みです。したがって、誤差はニューロンに入力される重みにも依存し、最終的には学習を可能にするためにネットワーク内で変更する必要があるのはニューロンの重みです。 w1{\displaystyle w_{1}}w2{\displaystyle w_{2}}

この例では、トレーニングデータを注入すると、損失関数は次のようになります。 (1,1,0){\displaystyle (1,1,0)}

E=(ty)2=y2=(x1w1+x2w2)2=(w1+w2)2.{\displaystyle E=(t-y)^{2}=y^{2}=(x_{1}w_{1}+x_{2}w_{2})^{2}=(w_{1}+w_{2})^{2}.}

すると、損失関数は、底辺が に向いた放物面円筒の形になります。 を満たす重みの集合はすべて損失関数を最小化するため、この場合、唯一の解に収束するために追加の制約が必要になります。追加の制約は、重みに特定の条件を設定するか、追加のトレーニングデータを注入することで生成できます。 E{\displaystyle E}w1=w2{\displaystyle w_{1}=-w_{2}}w1=w2{\displaystyle w_{1}=-w_{2}}

誤差を最小化する重み集合を見つけるために一般的に用いられるアルゴリズムの一つは、勾配降下法です。バックプロパゲーションによって、損失関数と現在のシナプス重みとの関係において、最も急な降下方向が計算されます。そして、その最急降下方向に沿って重みを変更することで、誤差を効率的に最小化することができます。

導出

勾配降下法では、損失関数をネットワークの重みに関して微分する。これは通常、バックプロパゲーションを用いて行われる。出力ニューロンが1つであると仮定すると、[ h ]の二乗誤差関数は

E=L(t,y){\displaystyle E=L(t,y)}

どこ

L{\displaystyle L}は出力と目標値に対する損失であり、y{\displaystyle y}t{\displaystyle t}
t{\displaystyle t}はトレーニングサンプルのターゲット出力であり、
y{\displaystyle y}出力ニューロンの実際の出力です。

この節では、重みインデックスの順序は前の節とは逆になっています。は番目のユニットから 番目のユニットまでの 重みです。[ i ]各ニューロンの出力は次のように定義されます。 wij{\displaystyle w_{ij}}i{\displaystyle i}j{\displaystyle j}j{\displaystyle j}oj{\displaystyle o_{j}}

oj=φ(netj)=φ(k=1nwkjxk),{\displaystyle o_{j}=\varphi ({\text{net}}_{j})=\varphi \left(\sum _{k=1}^{n}w_{kj}x_{k}\right),}

ここで、活性化関数は非線形であり、活性化領域全体で微分可能である(ReLUは一点では微分不可能である)。歴史的に用いられてきた活性化関数はロジスティック関数である。 φ{\displaystyle \varphi }

φ(z)=11+ez{\displaystyle \varphi (z)={\frac {1}{1+e^{-z}}}}

これは次のように簡単に導出できる。

dφdz=φ(z)(1φ(z)){\displaystyle {\frac {d\varphi }{dz}}=\varphi (z)(1-\varphi (z))}

ニューロンへの入力は、前のニューロンの出力の重み付き和です。ニューロンが入力層の次層に位置する場合、入力層の は単にネットワークへの入力となります。ニューロンへの入力ユニット数は です。変数 は、前の層のニューロンと現在の層の ニューロン間の重みを表します。netj{\displaystyle {\text{net}}_{j}}ok{\displaystyle o_{k}}ok{\displaystyle o_{k}}xk{\displaystyle x_{k}}n{\displaystyle n}wkj{\displaystyle w_{kj}}k{\displaystyle k}j{\displaystyle j}

誤差の導関数を求める

ここで使用される表記法を説明するための人工ニューラルネットワークの図

重みに関する誤差の偏微分を計算するには、連鎖律を2 回使用します。 wij{\displaystyle w_{ij}}

上記の右辺の最後の因数では、和の1つの項のみがに依存するため、 netj{\displaystyle {\text{net}}_{j}}wij{\displaystyle w_{ij}}

ニューロンが入力層の後の最初の層にある場合、は です。 oi{\displaystyle o_{i}}xi{\displaystyle x_{i}}

ニューロンの入力に対する 出力の微分は、単純に活性化関数の偏微分です。j{\displaystyle j}

ロジスティック活性化関数の場合

ojnetj=netjφ(netj)=φ(netj)(1φ(netj))=oj(1oj){\displaystyle {\frac {\partial o_{j}}{\partial {\text{net}}_{j}}}={\frac {\partial }{\partial {\text{net}}_{j}}}\varphi ({\text{net}}_{j})=\varphi ({\text{net}}_{j})(1-\varphi ({\text{net}}_{j}))=o_{j}(1-o_{j})}

これが、バックプロパゲーションにおいて活性化関数が微分可能であることが必要となる理由です。(ただし、0で微分不可能なReLU活性化関数は、例えばAlexNetなどで非常に人気があります。)

最初の要因は、ニューロンが出力層にあるかどうかを簡単に評価できます。 oj=y{\displaystyle o_{j}=y}

二乗誤差の半分を損失関数として使うと、次のように書き直すことができる。

Eoj=Ey=y12(ty)2=yt{\displaystyle {\frac {\partial E}{\partial o_{j}}}={\frac {\partial E}{\partial y}}={\frac {\partial }{\partial y}}{\frac {1}{2}}(t-y)^{2}=y-t}

ただし、 がネットワークの任意の内部層にある場合、に関する導関数を見つけることはそれほど明白ではありません。 j{\displaystyle j}E{\displaystyle E}oj{\displaystyle o_{j}}

ニューロンからの入力を受け取るすべてのニューロンを入力とする関数として考えると、 E{\displaystyle E}L={u,v,,w}{\displaystyle L=\{u,v,\dots ,w\}}j{\displaystyle j}

E(oj)oj=E(netu,netv,,netw)oj{\displaystyle {\frac {\partial E(o_{j})}{\partial o_{j}}}={\frac {\partial E(\mathrm {net} _{u},{\text{net}}_{v},\dots ,\mathrm {net} _{w})}{\partial o_{j}}}}

について全微分をとると、微分に関する再帰式が得られます。 oj{\displaystyle o_{j}}

したがって、出力ニューロンに近い次の層の出力に対するすべての微分が既知であれば、に対する微分を計算できます。[注: セット内のニューロンのいずれかがニューロン に接続されていない場合、それらは から独立しており、対応する総和に対する偏微分は0になります。] oj{\displaystyle o_{j}}o{\displaystyle o_{\ell }}L{\displaystyle L}j{\displaystyle j}wij{\displaystyle w_{ij}}

式2式3、式4式5を式1に代入すると次の式が得られます。

Ewij=Eojojnetjnetjwij=Eojojnetjoi{\displaystyle {\frac {\partial E}{\partial w_{ij}}}={\frac {\partial E}{\partial o_{j}}}{\frac {\partial o_{j}}{\partial {\text{net}}_{j}}}{\frac {\partial {\text{net}}_{j}}{\partial w_{ij}}}={\frac {\partial E}{\partial o_{j}}}{\frac {\partial o_{j}}{\partial {\text{net}}_{j}}}o_{i}}
Ewij=oiδj{\displaystyle {\frac {\partial E}{\partial w_{ij}}}=o_{i}\delta _{j}}

δj=Eojojnetj={L(t,oj)ojdφ(netj)dnetjif j is an output neuron,(Lwjδ)dφ(netj)dnetjif j is an inner neuron.{\displaystyle \delta _{j}={\frac {\partial E}{\partial o_{j}}}{\frac {\partial o_{j}}{\partial {\text{net}}_{j}}}={\begin{cases}{\frac {\partial L(t,o_{j})}{\partial o_{j}}}{\frac {d\varphi ({\text{net}}_{j})}{d{\text{net}}_{j}}}&{\text{if }}j{\text{ is an output neuron,}}\\(\sum _{\ell \in L}w_{j\ell }\delta _{\ell }){\frac {d\varphi ({\text{net}}_{j})}{d{\text{net}}_{j}}}&{\text{if }}j{\text{ is an inner neuron.}}\end{cases}}}

はロジスティック関数であり、誤差は二乗誤差です。 φ{\displaystyle \varphi }

δj=Eojojnetj={(ojtj)oj(1oj)if j is an output neuron,(Lwjδ)oj(1oj)if j is an inner neuron.{\displaystyle \delta _{j}={\frac {\partial E}{\partial o_{j}}}{\frac {\partial o_{j}}{\partial {\text{net}}_{j}}}={\begin{cases}(o_{j}-t_{j})o_{j}(1-o_{j})&{\text{if }}j{\text{ is an output neuron,}}\\(\sum _{\ell \in L}w_{j\ell }\delta _{\ell })o_{j}(1-o_{j})&{\text{if }}j{\text{ is an inner neuron.}}\end{cases}}}

勾配降下法を用いて重みを更新するには、学習率 を選択する必要があります。重みの変化は、の増加または減少が に与える影響を反映する必要があります。 の場合、 の増加はを増加させ、逆に の場合、 の増加は を減少させます。新しいが古い重みに追加され、学習率と勾配の積に を乗じることで、が常に を減少させるように変化することが保証されます。言い換えれば、以下の式において、は常にが減少するように変化します。 wij{\displaystyle w_{ij}}η>0{\displaystyle \eta >0}E{\displaystyle E}wij{\displaystyle w_{ij}}Ewij>0{\displaystyle {\frac {\partial E}{\partial w_{ij}}}>0}wij{\displaystyle w_{ij}}E{\displaystyle E}Ewij<0{\displaystyle {\frac {\partial E}{\partial w_{ij}}}<0}wij{\displaystyle w_{ij}}E{\displaystyle E}Δwij{\displaystyle \Delta w_{ij}}1{\displaystyle -1}wij{\displaystyle w_{ij}}E{\displaystyle E}ηEwij{\displaystyle -\eta {\frac {\partial E}{\partial w_{ij}}}}wij{\displaystyle w_{ij}}E{\displaystyle E}

Δwij=ηEwij=ηoiδj{\displaystyle \Delta w_{ij}=-\eta {\frac {\partial E}{\partial w_{ij}}}=-\eta o_{i}\delta _{j}}

2次勾配降下法

誤差関数の2次導関数のヘッセ行列を使用することで、レーベンバーグ・マルカート法は、特に誤差関数の位相が複雑な場合に、1次勾配降下法よりも収束が速いことがよくあります。[ 9 ] [ 10 ]また、他の方法では収束しない可能性のある、より小さなノード数でも解が見つかることがあります。[ 10 ]ヘッセ行列はフィッシャー情報行列で近似できます。[ 11 ]

例として、単純なフィードフォワードネットワークを考えてみましょう。第層では、は事前活性化、は活性化、は重み行列です。損失関数 が与えられた場合、1次逆伝播法では となり、2次逆伝播法では となります。ここではディラックのデルタ記号です。 l{\displaystyle l}xi(l),ai(l)=f(xi(l)),xi(l+1)=jWijaj(l){\displaystyle x_{i}^{(l)},\quad a_{i}^{(l)}=f(x_{i}^{(l)}),\quad x_{i}^{(l+1)}=\sum _{j}W_{ij}a_{j}^{(l)}}x{\displaystyle x}a{\displaystyle a}W{\displaystyle W}L{\displaystyle L}Laj(l)=jWijLxi(l+1),Lxj(l)=f(xj(l))Laj(l){\displaystyle {\frac {\partial L}{\partial a_{j}^{(l)}}}=\sum _{j}W_{ij}{\frac {\partial L}{\partial x_{i}^{(l+1)}}},\quad {\frac {\partial L}{\partial x_{j}^{(l)}}}=f'(x_{j}^{(l)}){\frac {\partial L}{\partial a_{j}^{(l)}}}}2Laj1(l)aj2(l)=j1j2Wi1j1Wi2j22Lxi1(l+1)xi2(l+1),2Lxj1(l)xj2(l)=f(xj1(l))f(xj2(l))2Laj1(l)aj2(l)+δj1j2f(xj1(l))Laj1(l){\displaystyle {\frac {\partial ^{2}L}{\partial a_{j_{1}}^{(l)}\partial a_{j_{2}}^{(l)}}}=\sum _{j_{1}j_{2}}W_{i_{1}j_{1}}W_{i_{2}j_{2}}{\frac {\partial ^{2}L}{\partial x_{i_{1}}^{(l+1)}\partial x_{i_{2}}^{(l+1)}}},\quad {\frac {\partial ^{2}L}{\partial x_{j_{1}}^{(l)}\partial x_{j_{2}}^{(l)}}}=f'(x_{j_{1}}^{(l)})f'(x_{j_{2}}^{(l)}){\frac {\partial ^{2}L}{\partial a_{j_{1}}^{(l)}\partial a_{j_{2}}^{(l)}}}+\delta _{j_{1}j_{2}}f''(x_{j_{1}}^{(l)}){\frac {\partial L}{\partial a_{j_{1}}^{(l)}}}}δ{\displaystyle \delta }

任意の計算グラフ内の任意の次数の導関数はバックプロパゲーションで計算できますが、次数が高くなると式がより複雑になります。

損失関数

損失関数とは、1つ以上の変数の値を、それらの値に関連する「コスト」を直感的に表す実数にマッピングする関数です。バックプロパゲーションの場合、損失関数は、学習例がネットワークを伝播した後のネットワーク出力と期待出力の差を計算します。

仮定

損失関数の数学的表現は、バックプロパゲーションで使用できるようにするためには、2つの条件を満たす必要がある。[ 12 ] 1つ目は、個々の訓練例に対する誤差関数の平均として表せることである。この仮定の理由は、バックプロパゲーションアルゴリズムは単一の訓練例に対する誤差関数の勾配を計算するため、この勾配を全体の誤差関数に一般化する必要があるからである。2つ目の仮定は、損失関数がニューラルネットワークの出力の関数として表せることである。 E=1nxEx{\textstyle E={\frac {1}{n}}\sum _{x}E_{x}}Ex{\textstyle E_{x}}n{\textstyle n}x{\textstyle x}

損失関数の例

を のベクトルとします。 y,y{\displaystyle y,y'}Rn{\displaystyle \mathbb {R} ^{n}}

2つの出力の差を測定する誤差関数を選択します。標準的な選択肢は、ベクトルとベクトル間のユークリッド距離の2乗です。訓練例全体の誤差関数は、個々の例全体の損失の平均として表すことができます。E(y,y){\displaystyle E(y,y')}y{\displaystyle y}y{\displaystyle y'}E(y,y)=12yy2{\displaystyle E(y,y')={\tfrac {1}{2}}\lVert y-y'\rVert ^{2}}n{\textstyle n}E=12nx(y(x)y(x))2{\displaystyle E={\frac {1}{2n}}\sum _{x}\lVert (y(x)-y'(x))\rVert ^{2}}

制限事項

勾配降下法では、グローバル最小値ではなくローカル最小値が見つかる場合があります。
  • 勾配降下法とバックプロパゲーションは、誤差関数の大域的最小値を見つけることが保証されておらず、局所的最小値を見つけることしか保証されません。また、誤差関数のランドスケープにおけるプラトーを越えるのが困難です。この問題は、ニューラルネットワークにおける誤差関数の非凸性によって引き起こされ、長い間大きな欠点と考えられてきましたが、ヤン・ルカンらは、多くの実用的な問題において、これは必ずしもそうではないと主張しています。[ 13 ]
  • バックプロパゲーション学習では入力ベクトルの正規化は不要であるが、正規化によって性能が向上する可能性がある。[ 14 ]
  • バックプロパゲーションでは、ネットワーク設計時に活性化関数の導関数が既知である必要があります。

歴史

先駆者

バックプロパゲーションは、本質的にはチェーンルール(1676年にゴットフリート・ヴィルヘルム・ライプニッツによって最初に書き留められた)[ 15 ] [ 16 ]をニューラルネットワークに効率的に適用したものであるため、繰り返し導出されてきた。

「バックプロパゲーションによる誤差補正」という用語は1962年にフランク・ローゼンブラットによって導入されましたが、彼はこれをどのように実装するかを知りませんでした。[ 17 ]いずれにせよ、彼は出力が離散レベルであり、導関数がゼロであるニューロンのみを研究していたため、バックプロパゲーションは不可能でした。

バックプロパゲーションの前身は、 1950年代から最適制御理論に登場しました。Yann LeCunらは、1950年代のPontryaginらによる最適制御理論の研究、特に随伴状態法がバックプロパゲーションの連続時間版であると述べています。[ 18 ] Hecht-Nielsen [ 19 ]は、 Robbins –Monro アルゴリズム(1951) [ 20 ]Arthur BrysonYu-Chi HoApplied Optimal Control (1969) がバックプロパゲーションの前身であると述べています。その他の先駆者としてはHenry J. Kelley の1960、[ 1 ]Arthur E. Bryson (1961) がいます。[ 2 ] 1962年、Stuart Dreyfus は連鎖律のみに基づいたより単純な導出を発表しました。[ 21 ] [ 22 ] [ 23 ] 1973年に彼は誤差勾配に比例して制御器のパラメータを適応させた。 [ 24 ]現代のバックプロパゲーションとは異なり、これらの先駆者は、1つのステージから前のステージまでの標準的なヤコビ行列計算を使用しており、複数のステージにまたがる直接的なリンクやネットワークのスパース性による潜在的な追加の効率向上には対処していなかった。[ 25 ]

ADALINE (1960)学習アルゴリズムは、単層勾配降下法であり、二乗誤差損失を用いた。確率的勾配降下法によって学習された、2層以上の層を持つ最初の多層パーセプトロン(MLP) [ 20 ]は、1967年に天理俊一によって発表された[ 26 ]。MLPは5層で、そのうち2層は学習可能層であり、線形分離不可能なパターンを分類することを学習した[ 25 ]。

現代のバックプロパゲーション

現代のバックプロパゲーションは、セッポ・リンネンマーによって「自動微分化の逆モード」(1970年)[ 27 ]として初めて発表され、入れ子になった微分可能関数の離散接続ネットワークを対象としていた。[ 28 ] [ 29 ] [ 30 ]

1982年、ポール・ワーボスは、現在では標準となっている手法でMLPにバックプロパゲーションを適用した。[ 31 ] [ 32 ]ワーボスはインタビューで、バックプロパゲーションの開発経緯について述べている。1971年、博士課程在学中に、フロイトの「精神エネルギーの流れ」を数学的に表現するためにバックプロパゲーションを開発した。しかし、論文の出版には幾度となく困難が伴い、1981年にようやく出版に至った。 [ 33 ]また、彼は「バックプロパゲーションの最初の実用的応用は、1974年にナショナリズムと社会コミュニケーションを予測するための動的モデルを推定することだった」と主張している。[ 34 ]

1982年頃、[ 33 ] : 376 David E. Rumelhart は独自にバックプロパゲーションを開発し、 [ 35 ] : 252 そのアルゴリズムを研究仲間に教えました。彼は先行研究を知らなかったため、それらを引用しませんでした。彼はまず1985年の論文でそのアルゴリズムを発表し、その後1986年のNature誌にその手法の実験的分析論文を発表しました。[ 36 ]これらの論文は引用数が多くなり、バックプロパゲーションの普及に貢献し、1980年代にニューラルネットワークへの研究関心が再び高まった時期と重なりました。[ 8 ] [ 37 ] [ 38 ]

1985年に、この手法はデビッド・パーカーによっても説明されました。[ 39 ] [ 40 ]ヤン・ルカンは1987年の博士論文でニューラルネットワークのためのバックプロパゲーションの代替形式を提案しました。 [ 41 ]

勾配降下法が受け入れられるまでには、かなりの時間を要しました。初期の反論としては、勾配降下法が大域的最小値に到達するという保証はなく、局所的最小値に到達するだけであること、ニューロンは生理学者によって連続信号ではなく離散信号(0/1)を生成することが「知られている」こと、そして離散信号では勾配をとらないことなどが挙げられました。この分野への貢献により2024年のノーベル物理学賞を受賞したジェフリー・ヒントン氏へのインタビュー[ 33 ]ご覧ください[ 42 ]

初期の成功

受け入れられる要因としては、バックプロパゲーションによるニューラル ネットワークのトレーニングにおけるいくつかのアプリケーションが挙げられ、研究分野以外でも人気を得ることがありました。

1987年、NETtalkは英語のテキストを発音に変換する能力を獲得しました。セジュノフスキーはバックプロパゲーションとボルツマンマシンの両方で学習させようとしましたが、バックプロパゲーションの方がはるかに高速であることがわかったため、最終的なNETtalkではバックプロパゲーションを採用しました。[ 33 ] : 324 NETtalkプログラムは人気を博し、Todayショーにも登場しました。[ 43 ]

1989年、ディーン・A・ポメルローはバックプロパゲーションを用いて自律走行するように訓練されたニューラルネットワークALVINNを発表しました。[ 44 ]

LeNet手書きの郵便番号を認識するために 1989 年に公開されました。

1992年、TD-Gammonはバックギャモンにおいて人間と同等の成績を達成しました。これは、バックプロパゲーションによって学習された2層ニューラルネットワークを備えた強化学習エージェントでした。[ 45 ]

1993年、エリック・ワンはバックプロパゲーションによる国際パターン認識コンテストで優勝した。[ 46 ] [ 47 ]

バックプロパゲーション後

2000年代には人気が下がったものの、2010年代に安価で高性能なGPUベースのコンピューティングシステムの恩恵を受けて復活しました。特に、音声認識マシンビジョン自然言語処理、言語構造学習(第一言語[ 48 ]および第二言語学習に関連する様々な現象を説明するために用いられてきました。[ 49 ][ 50 ]の分野で顕著です。

エラーバックプロパゲーションは、 N400P600のような人間の脳の事象関連電位(ERP)成分を説明するために提案されている。[ 51 ]

2023年には、スタンフォード大学のチームによってフォトニックプロセッサ上にバックプロパゲーションアルゴリズムが実装されました。[ 52 ]

参照

注記

  1. ^損失関数に使用して層の数に使用できるC{\displaystyle C}L{\displaystyle L}
  2. ^これはNielsen (2015)に従っており、(左)行列による乗算はレイヤーの出力値をレイヤーの入力値に。列は入力座標に対応し、行は出力座標に対応します。Wl{\displaystyle W^{l}}l1{\displaystyle l-1}l{\displaystyle l}
  3. ^このセクションは主にニールセン(2015)を踏襲し、要約したものです。
  4. ^損失複数の変数のスカラー値関数であるため、損失関数の導関数は共ベクトルです。
  5. ^活性化関数は各ノードに個別に適用されるため、導関数は各ノードにおける導関数の対角行列となります。これはしばしば、 と で表される導関数のベクトルとのアダマール積として表されます。これは数学的には同一ですが、対角行列ではなくベクトルとして導関数の内部表現とよりよく一致します。(fl){\displaystyle (f^{l})'\odot }
  6. ^行列の乗算は線形なので、行列による乗算の導関数は行列そのものです:。(Wx)=W{\displaystyle (Wx)'=W}
  7. ^多層ニューラルネットワークは非線形活性化関数を用いるため、線形ニューロンの例は分かりにくいと思われるかもしれません。しかし、多層ネットワークの誤差曲面ははるかに複雑ですが、局所的には放物面近似できます。したがって、単純化と理解の容易さのために線形ニューロンが用いられています。
  8. ^出力ニューロンが複数存在する場合があり、その場合、誤差は差分ベクトルの 2 乗ノルムになります。
  9. ^この順序は以下のとおりである(Rumelhart、Hinton & Williams、1986a): [ 8 ]「番目の単位 から 番目の単位に変更するものである」Δwij{\displaystyle \Delta w_{i}j}i{\displaystyle i}j{\displaystyle j}

参考文献

  1. ^ a bケリー、ヘンリー・J. (1960). 「最適飛行経路の勾配理論」. ARSジャーナル. 30 (10): 947– 954. doi : 10.2514/8.5282 .
  2. ^ a b Bryson, Arthur E. (1962). 「多段階割り当てプロセスを最適化する勾配法」.ハーバード大学デジタルコンピュータとその応用に関するシンポジウム議事録, 1961年4月3日~6日. ケンブリッジ: ハーバード大学出版局. OCLC 498866871 . 
  3. ^ Goodfellow、Bengio、Courville 2016、p.  214、「このテーブル入力戦略は、動的計画法と呼ばれることもあります。」
  4. ^ Goodfellow, Bengio & Courville 2016、p.  200、「バックプロパゲーションという用語は、多層ニューラルネットワークの学習アルゴリズム全体を意味すると誤解されることが多い。バックプロパゲーションは勾配を計算する方法のみを指し、確率的勾配降下法などの他のアルゴリズムは、この勾配を使用して学習を実行するために使用される。」
  5. ^ a b Goodfellow, Bengio & Courville (2016 , p.  217 –218)、「ここで説明するバックプロパゲーションアルゴリズムは、自動微分化へのアプローチの一つに過ぎません。これは、逆モード累積と呼ばれるより広範な手法の特殊なケースです。」
  6. ^ラマチャンドラン, プラジット; ゾフ, バレット; ル, クオック V. (2017-10-27). 「活性化関数の探索」. arXiv : 1710.05941 [ cs.NE ].
  7. ^ Misra, Diganta (2019-08-23). 「Mish: 自己正規化非単調活性化関数」. arXiv : 1908.08681 [ cs.LG ].
  8. ^ a b c Rumelhart, David E. ; Hinton, Geoffrey E. ; Williams, Ronald J. (1986a). 「誤差逆伝播による表現の学習」. Nature . 323 (6088): 533– 536. Bibcode : 1986Natur.323..533R . doi : 10.1038/323533a0 . S2CID 205001834 . 
  9. ^ Tan, Hong Hui; Lim, King Han (2019). 「人工ニューラルネットワークのバックプロパゲーションにおける二次最適化手法のレビュー」 . IOPカンファレンスシリーズ:材料科学と工学. 495 (1) 012003. Bibcode : 2019MS&E..495a2003T . doi : 10.1088/1757-899X/495/1/012003 . S2CID 208124487 . 
  10. ^ a b Wiliamowski, Bogdan; Yu, Hao (2010年6月). 「Levenberg–Marquardt学習のための計算の改善」(PDF) . IEEE Transactions on Neural Networks and Learning Systems . 21 (6): 930. Bibcode : 2010ITNN...21..930W . doi : 10.1109/TNN.2010.2045657 .
  11. ^ Martens, James (2020年8月). 「自然勾配法に関する新たな知見と展望」. Journal of Machine Learning Research (21). arXiv : 1412.1193 .
  12. ^ Nielsen (2015)、「バックプロパゲーションを適用するために、コスト関数についてどのような仮定をする必要がありますか?最初の仮定は、コスト関数が個々のトレーニング例のコスト関数の平均として記述できることです。2番目の仮定は、コストがニューラルネットワークからの出力の関数として記述できることです。」
  13. ^ LeCun, Yann ; Bengio, Yoshua; Hinton, Geoffrey (2015). 「ディープラーニング」(PDF) . Nature . 521 (7553): 436– 444. Bibcode : 2015Natur.521..436L . doi : 10.1038 /nature14539 . PMID 26017442. S2CID 3074096 .  
  14. ^バックランド、マット、コリンズ、マーク (2002).ゲームプログラミングのためのAIテクニック. ボストン: プレミアプレス. ISBN 1-931841-08-X
  15. ^ライプニッツ、ゴットフリート・ヴィルヘルム・フライヘル・フォン(1920年)『ライプニッツ初期数学原稿集:カール・イマヌエル・ゲルハルト出版のラテン語テキストからの翻訳、批評的・歴史的注釈付き』(ライプニッツは1676年の回顧録で連鎖律を発表した)。オープン・コート出版会社。ISBN 978-0-598-81846-1{{cite book}}: ISBN / Date incompatibility (help)
  16. ^ロドリゲス、オマール・エルナンデス;ロペス・フェルナンデス、ホルヘ・M. (2010)。「連鎖規則の教訓に関する記号論的考察」数学愛好家7 (2): 321–332土井: 10.54870/1551-3440.1191S2CID 29739148 2019年8月4日に取得 
  17. ^ローゼンブラット、フランク(1962). 『神経力学の原理』 スパルタン、ニューヨーク、pp.  287– 298.
  18. ^ LeCun, Yann, et al. 「バックプロパゲーションの理論的枠組み」 1988年コネクショニストモデルサマースクール議事録第1巻 1988年。
  19. ^ヘクト=ニールセン、ロバート (1990).ニューロコンピューティング. インターネットアーカイブ. マサチューセッツ州レディング: アディソン・ウェズリー出版. pp.  124– 125. ISBN 978-0-201-09355-1
  20. ^ a b Robbins, H. ; Monro, S. (1951). 「確率的近似法」 .数理統計年報. 22 (3): 400. doi : 10.1214/aoms/1177729586 .
  21. ^ドレイファス, スチュアート (1962). 「変分問題の数値解法」 .数学解析応用ジャーナル. 5 (1): 30– 45. doi : 10.1016/0022-247x(62)90004-5 .
  22. ^ Dreyfus, Stuart E. (1990). 「人工ニューラルネットワーク、バックプロパゲーション、そしてKelley-Bryson勾配法」. Journal of Guidance, Control, and Dynamics . 13 (5): 926– 928. Bibcode : 1990JGCD...13..926D . doi : 10.2514/3.25422 .
  23. ^水谷英治、スチュアート・ドレイファス、西尾健一 (2000年7月). 「Kelley-Bryson最適制御勾配式からのMLPバックプロパゲーションの導出とその応用について」(PDF) . IEEE International Joint Conference on Neural Networks Proceedings.
  24. ^ Dreyfus, Stuart (1973). 「時間遅れを伴う最適制御問題の計算解」. IEEE Transactions on Automatic Control . 18 (4): 383– 385. doi : 10.1109/tac.1973.1100330 .
  25. ^ a b Schmidhuber, Jürgen (2022). 「現代AIとディープラーニングの注釈付き歴史」. arXiv : 2212.11279 [ cs.NE ].
  26. ^天理俊一(1967). 「適応型パターン分類器の理論」. IEEE Transactions . EC (16): 279–307 .
  27. ^ Linnainmaa, Seppo (1970).アルゴリズムの累積丸め誤差の局所丸め誤差のテイラー展開による表現(修士論文)(フィンランド語). ヘルシンキ大学. pp.  6– 7.
  28. ^ Linnainmaa, Seppo (1976). 「累積丸め誤差のテイラー展開」BIT Numerical Mathematics . 16 (2): 146– 160. doi : 10.1007/bf01931367 . S2CID 122357351 . 
  29. ^ Griewank, Andreas (2012). 「逆微分法を発明したのは誰か?」最適化物語. Documenta Mathematica, Extra Volume ISMP. pp.  389– 400. S2CID 15568746 . 
  30. ^ Griewank, Andreas; Walther, Andrea (2008). 『微分評価:アルゴリズム的微分化の原理と手法』第2版. SIAM. ISBN 978-0-89871-776-1
  31. ^ Werbos, Paul (1982). 「非線形感度解析における進歩の応用」(PDF) .システムモデリングと最適化. Springer. pp.  762– 770. 2016年4月14日時点のオリジナルよりアーカイブ(PDF) . 2017年7月2日閲覧
  32. ^ワーボス、ポール・J. (1994). 『バックプロパゲーションのルーツ:順序付き微分からニューラルネットワーク、そして政治予測まで』 ニューヨーク:ジョン・ワイリー・アンド・サンズ. ISBN 0-471-59897-6
  33. ^ a b c dアンダーソン, ジェームズ・A.、ローゼンフェルド, エドワード編 (2000). Talking Nets: An Oral History of Neural Networks . MIT Press. doi : 10.7551/mitpress/6626.003.0016 . ISBN 978-0-262-26715-1
  34. ^ PJ Werbos、「時間経過によるバックプロパゲーション:その機能と実行方法」、IEEE紀要、第78巻、第10号、pp. 1550–1560、1990年10月、 doi : 10.1109/5.58337
  35. ^オラザラン・ロドリゲス、ホセ・ミゲル.ニューラルネットワーク研究の歴史社会学. 博士論文. エディンバラ大学, 1991年.
  36. ^ Rumelhart; Hinton; Williams (1986). 「誤差逆伝播による表現の学習」(PDF) . Nature . 323 (6088): 533– 536. Bibcode : 1986Natur.323..533R . doi : 10.1038/323533a0 . S2CID 205001834 . 
  37. ^ルメルハート, David E. ;ヒントン, Geoffrey E. ;ウィリアムズ, Ronald J. (1986b). 「8. エラー伝播による内部表現の学習」 .ルメルハート, David E. ;マクレランド, James L. (編). 『並列分散処理:認知の微細構造の探究』 第1巻:基礎編. ケンブリッジ: MITプレス. ISBN 0-262-18120-7
  38. ^ Alpaydin, Ethem (2010).機械学習入門. MIT Press. ISBN 978-0-262-01243-0
  39. ^ Parker, DB (1985). 「学習ロジック:人間の脳皮質をシリコンに鋳造する」. 経済・経営科学計算研究センター(報告書). マサチューセッツ州ケンブリッジ:マサチューセッツ工科大学. 技術報告書 TR-47.
  40. ^ハーツ, ジョン (1991).神経計算理論入門. クロー, アンダース, パーマー, リチャード・G. レッドウッドシティ, カリフォルニア州: アディソン・ウェスレー. p. 8. ISBN 0-201-50395-6. OCLC  21522159 .
  41. ^ヤン・ル・カン (1987). Modeles connexionnistes de l'apprentissage (博士論文)。フランス、パリ: ピエール・エ・マリー・キュリー大学。
  42. ^ 「2024年ノーベル物理学賞」NobelPrize.org . 2024年10月13日閲覧
  43. ^ Sejnowski, Terrence J. (2018). 『ディープラーニング革命』 ケンブリッジ(マサチューセッツ州) ロンドン(イギリス): MITプレス. ISBN 978-0-262-03803-4
  44. ^ Pomerleau, Dean A. (1988). 「ALVINN:ニューラルネットワークによる自律走行車」 .ニューラル情報処理システムの進歩. 1. Morgan-Kaufmann.
  45. ^ Sutton, Richard S.; Barto, Andrew G. (2018). 「11.1 TD-Gammon」 .強化学習入門(第2版). マサチューセッツ州ケンブリッジ: MIT Press.
  46. ^ Schmidhuber, Jürgen (2015) . 「ニューラルネットワークにおけるディープラーニング:概要」. Neural Networks . 61 : 85–117 . arXiv : 1404.7828 . doi : 10.1016/j.neunet.2014.09.003 . PMID 25462637. S2CID 11715509 .  
  47. ^ Wan, Eric A. (1994). 「内部遅延線を備えたコネクショニストネットワークによる時系列予測」. Weigend, Andreas S. ; Gershenfeld, Neil A. (編).時系列予測:未来予測と過去理解. NATO時系列比較分析先端研究ワークショップ議事録. 第15巻. 参考文献: Addison-Wesley. pp.  195– 217. ISBN 0-201-62601-2. S2CID  12652643 .
  48. ^フランクリン・チャン;ゲイリー・S・デル;キャサリン・ボック(2006年)「統語的になる」心理学評論. 113 (2): 234– 272. doi : 10.1037/0033-295x.113.2.234 . PMID 16637761 . 
  49. ^ Janciauskas, Marius; Chang, Fr​​anklin (2018). 「第二言語学習におけるインプットと年齢依存的変動:コネクショニストによる考察」 .認知科学. 42 (Suppl Suppl 2): 519– 554. doi : 10.1111/cogs.12519 . PMC 6001481. PMID 28744901 .  
  50. ^ 「バックプロパゲーションの威力を解き明かす:高度なニューラルネットワーク技術の深掘り」 janbasktraining.com 2024年1月30日。
  51. ^ Fitz, Hartmut; Chang, Fr​​anklin (2019). 「言語ERPは予測誤差伝播を通じた学習を反映する」.認知心理学. 111 : 15– 52. doi : 10.1016/j.cogpsych.2019.03.002 . hdl : 21.11116/0000-0003-474D-8 . PMID 30921626. S2CID 85501792 .  
  52. ^ 「フォトニックチップがAIトレーニングのエネルギー需要を抑制 - IEEE Spectrum」 IEEE 2023年5月25日閲覧

さらに読む

「 https://en.wikipedia.org/w/index.php?title=バックプロパゲーション&oldid =1328447875」より取得