您的位置:首页 > 理论基础 > 计算机网络

[读书笔记]后向传播算法原理

2017-01-12 14:06 267 查看

[读书笔记]后向传播算法原理



k:输入层神经元

j:隐藏层神经元

i:输出层神经元

t,b: 偏置项(并未具体指定t,b是哪一层的偏置项)

以三层网络为例,推导出神经网络后向传播算法的一般规律。

首先,总体误差为:

E=12∑ζ,i(dζi−oζi)2

ζ:训练样本

dζi: 样本ζ在第i个神经元的标准值

oζi: 样本ζ在第i个神经元的预测值

后向传播细节

计算隐藏层-加权和

netζj=∑kwkjoζk+bj

计算隐藏层-激励值

oζj=f(netζj)=f(∑kwkjoζk+bj)

计算输出层-加权和

netζi=∑kwjioζj+bi=∑jwji⋅f(∑kwkjoζk+tj)+bi

计算输出层-激励值

oζi=f(netζi)=f(∑jwjioζj+bi)=f(∑jwji⋅f(wkjoζk+tj)+bi)

所有公式代入E

E=12∑ζ,i[dζi−f(∑jwji⋅f(∑kwkjoζk+tj)+bi)]2

计算输出层和隐藏层的权重梯度

计算ΔWji

∂E∂wji=∂E∂oζi⋅∂oζi∂netζi⋅∂netζi∂wji=−∑ζ(dζi−oζi)⋅f′(netζi)⋅oζj=−∑ζδζi⋅oζjΔwji=−η⋅∂E∂wji=η⋅∑ζδζi⋅oζj

where

δζi=(dζi−oζi)⋅f′(netζi)

for output neuron

Δwkj

∂E∂wkj=∂E∂oζj⋅∂oζj∂netζj⋅∂netζj∂wkj=−∑ζ,i(dζi−oζi)⋅f′(netζi)⋅wji⋅f′(netζj)⋅oζk=−∑ζ,iδζi⋅wji⋅f′(netζj)⋅oζk=−∑ζδζj⋅oζkΔwkj=−η⋅∂E∂wkj=η⋅∑ζδζj⋅oζk

where

δζj=f′(netζj)⋅∑iwji⋅δζi

for hidden neuron

一般地,对于一条权边p→q:

Δwpq=η⋅∑ζδq⋅opwnewpq=woldpq+Δwpq

其中,

o为激励值,

δ若于输出层,则为公式7;若于隐藏层,则为公式8.

sigmoid函数求导技巧

oζl=f(netζl)=11+e−netζlf′(netζl)=e−netζl(1+e−netζl)2=oζl⋅(1−oζl)

所以前面公式可以改写为:

for output neuron

δζi=(dζi−oζi)⋅oζi⋅(1−oζi)Δwji=η⋅∑ζ(dζi−oζi)⋅oζi⋅(1−oζi)

for hidden neuron

δζj=oζj⋅(1−oζj)⋅∑iwji⋅δζiΔwkj=η⋅∑ζδζj⋅oζk=η⋅∑ζoζj⋅(1−oζj)⋅∑iwji⋅δζi⋅oζk

后向传播总结

Repeat until termination criterion satisfied

 1.forward pass

 calculate actual output for every layer:o

 2.backward pass

 wpq(t+1)=wpq(t)+Δwpg

 Δwpq=η⋅δq⋅op 

 δi=(di−oi)⋅oi⋅(1−oi) 

 δj=oj⋅(1−oj)⋅∑iwji⋅δi 

 

 

参考: http://sydney.edu.au/engineering/it/courses/comp4302/ann4-6s.pdf/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息