に関するあなたの質問に答えますが、あなたの質問がより大きな質問のサブ質問であることを思い出してください。δ(l)i
∇(l)ij=∑kθ(l+1)kiδ(l+1)k∗(a(l)i(1−a(l)i))∗a(l−1)j
ニューラルネットワークのステップに関する注意:
ステップ1:順方向伝搬(計算)a(l)i
ステップ2a:逆伝播:エラーδ (l )iの計算δ(l)i
ステップ2b:後方伝播:勾配の計算、Jの(Θ)エラー使用δ (L + 1 )IとA (L )I、∇(l)ijΘδ(l+1)ia(l)i
ステップ3:勾配降下:勾配∇ (l )i jを使用して新しいを計算するθ(l)ij∇(l)ij
まず、理解するためにどのようなあるδ(l)i、彼らは何を表しているかと、なぜアンドリューNGそれが彼らの話を、私たちは、これらすべての計算を行う理由アンドリューが実際にそのpointandでやっているかを理解する必要があります。彼は、勾配を計算していますのθ (L )I jの∇(l)ijθ(l)ij勾配降下アルゴリズムで使用されます。
勾配は次のように定義されます。
∇(l)ij=∂C∂θ(l)ij
この式を直接解決することはできないため、2つのマジックトリックを使用して変更し、実際に計算できる式に到達します。この最終的に使用可能な式は次のとおりです。
∇(l)ij=θ(l+1)Tδ(l+1).∗(a(l)i(1−a(l)i))∗a(l−1)j
この結果に到達するための最初のマジックトリックは、δ (l ) iを使用してθ (l )i jの勾配を書き込めることです。∇(l)ijθ(l)ijδ(l)i
付 δ (L ) iは(Lのみインデックスに)定義された方法:
∇(l)ij=δ(l)i∗a(l−1)j
δ(L)i
δ(L )私= ∂C∂z(l )私
次に、他のインデックスを定義するために、δ (l ) iとδ (l + 1 ) iの間の関係を使用して、SECOND MAGIC TRICK、δ(l )私δ(l + 1 )私
δ(l)i=θ(l+1)Tδ(l+1).∗(a(l)i(1−a(l)i))
そして、私が言ったように、すべての用語を知っている式をようやく書くことができます:
∇(l)ij=θ(l+1)Tδ(l+1).∗(a(l)i(1−a(l)i))∗a(l−1)j
最初のマジックトリックのデモンストレーション: ∇(l )私はj= δ(l )私∗ a(l − 1 )j
以下を定義しました:
∇(l )私はj= ∂C∂θ(l )私はj
より高い次元のチェーンルール(チェーンルールのこのプロパティを実際に読み取る必要があります)を使用すると、次のように記述できます。
∇(l )私はj= ∑k∂C∂z(l )k∗ ∂z(l )k∂θ(l )私はj
ただし、次のように:
z(l )k= ∑メートルθ(l )km∗a(l−1)m
次に、次のように書きます。
∂z(l)k∂θ(l)ij=∂∂θ(l)ij∑mθ(l)km∗a(l−1)m
微分の線形性 [(u + v) '= u' + v ']のため、次のように書くことができます。
∂z(l)k∂θ(l)ij=∑m∂θ(l)km∂θ(l)ij∗a(l−1)m
有する:
ifk,m≠i,j, ∂θ(l)km∂θ(l)ij∗a(l−1)m=0
ifk,m=i,j, ∂θ(l)km∂θ(l)ij∗a(l−1)m=∂θ(l)ij∂θ(l)ij∗a(l−1)j=a(l−1)j
次に、k = iの場合(そうでない場合、明らかにゼロに等しくなります):
∂z(l)i∂θ(l)ij=∂θ(l)ij∂θ(l)ij∗a(l−1)j+∑m≠j∂θ(l)im∂θ(l)ij∗a(l−1)j=a(l−1)j+0
∂z(l)i∂θ(l)ij=a(l−1)j
∇(l)ij
∇(l)ij=∂C∂z(l)i∗∂z(l)i∂θ(l)ij
これは次と同等です:
∇(l)ij=∂C∂z(l)i∗a(l−1)j
または:
∇(l)ij=δ(l)i∗a(l−1)j
δ(l)i=θ(l+1)Tδ(l+1).∗(a(l)i(1−a(l)i))
δ(l)=θ(l+1)Tδ(l+1).∗(a(l)(1−a(l)))
私たちが提起したことを覚えておいてください:
δ(l)=∂C∂z(l) and δ(l)i=∂C∂z(l)i
繰り返しますが、より高い次元のチェーンルールにより、次のように記述できます。
δ(l)i=∑k∂C∂z(l+1)k∂z(l+1)k∂z(l)i
∂C∂z(l+1)kδ(l+1)k
δ(l)i=∑kδ(l+1)k∂z(l+1)k∂z(l)i
∂z(l+1)k∂z(l)i
z(l+1)k=∑jθ(l+1)kj∗a(l)j=∑jθ(l+1)kj∗g(z(l)j)
z(i)k
∂z(l+1)k∂z(l)i=∂∑jθ(l)kj∗g(z(l)j)∂z(l)i
導出の線形性のため、次のように書くことができます。
∂z(l+1)k∂z(l)i=∑jθ(l)kj∗∂g(z(l)j)∂z(l)i
≠∂θ(l)kj∗g(z(l)j)∂z(l)i=0
結果として:
∂z(l+1)k∂z(l)i=θ(l)ki∗∂g(z(l)i)∂z(l)i
その後:
δ(l)i=∑kδ(l+1)kθ(l)ki∗∂g(z(l)i)∂z(l)i
g '(z)= g(z)(1-g(z))なので、次のようになります。
δ(l)i=∑kδ(l+1)kθ(l)ki∗g(z(l)i)(1−g(z(l)i)
g(z(l)i=a(l)i
δ(l)i=∑kδ(l+1)kθ(l+1)ki∗a(l)i(1−a(l)i)
そして最後に、ベクトル化された表記を使用します。
∇(l)ij=[θ(l+1)Tδ(l+1)∗(a(l)i(1−a(l)i))]∗[a(l−1)j]