反向传播算法的推导

如图为2-layers CNN,输入单元下标为i,数量d;隐层单元下表j,数量\(n_H\);输出层下表k,单元数量c

1.目标

调整权系数\(w_{ji}\),\(w_{kj}\),使得输出\((x_i,z_i)\)尽可能等于样本\((x_i,t_i)\)
即定义误差函数\(J(w)\)最小
\[
J(w)=\sum_{x} J_x(w)
\\
J_x(w)=\frac{1}{2} \sum _{k=1}^c(t_k-z_k(x))^2
\]

2.节点表示

对于隐层中的节点,定义权值和为\(net_j\),则
\[
net_j=\sum _{i=1}^d w_{ji}x_i+w_{j0}
\]
同理,则输出层的节点权值和为\(net_k\),有
\[
net_k=\sum _{j=1}^{n_H} w_{kj}y_j+w_{k0}
\]
对于隐层节点输出\(y_j=f(net_j)\),输出层节点输出\(z_k=f(net_k)\)

3.权系数的调整方法

按照梯度下降的方法,对误差函数$J(w)求导,调整 $ $\frac {\partial J} {\partial w_{kj} } $和 $ \frac{\partial J} {\partial w_{ji}} $
\[
w_{kj} \to w_{kj}-\eta \frac{\partial J} {\partial w_{kj} }
\\
w_{ji} \to w_{ji} - \eta \frac{\partial J} {\partial w_{ji}}
\]
其中\(\eta\)控制下降速率

3.1对输出层权系数的微分

\[
\frac{\partial J}{\partial w_{kj}}=\frac{\partial J}{\partial net_k} \frac{\partial net_k}{\partial w_{kj}}
\\
其中\frac{\partial J}{\partial net_k}=\frac{\partial J}{\partial z_k} \frac {\partial z_k}{\partial net_k}=-(t_k-z_k)f'(net_k)
,\quad
\frac{\partial net_k}{\partial w_{kj}}=y_j
\]

通常令\(\frac{\partial J}{\partial net_k}=\delta_k\),则\(\frac {\partial J}{\partial w_{kj}}=\delta_k y_j\)

3.2对隐层权系数的微分

\[
\frac{\partial J}{\partial w_{ji}}=\frac{\partial J}{\partial net_j} \frac{\partial net_j}{\partial w_{ji}}
\\
其中\frac{\partial J}{\partial net_j}=\frac{\partial J}{\partial y_j} \frac {\partial y_j}{\partial net_j}=\sum _{k=1}^c \delta _k w_{kj}f'(net_j)
,\quad
\frac{\partial net_j}{\partial w_{ji}}=x_i
\]

同样令\(\frac{\partial J}{\partial net_j}=\delta_j\),则\(\frac {\partial J}{\partial w_{ji}}=\delta_j x_i\)

关于\(\frac{\partial J}{\partial y_j}\)的推导如下:
\[
\frac{\partial J}{\partial y_j}=\sum_{k=1}^c \frac{\partial J}{\partial net_k} \frac{\partial net_k}{\partial y_j}=\sum_{k=1}^c\delta_k w_{kj}
\]
故对权系数的调整变为
\[
w_{kj} \to w_{kj}-\eta \frac{\partial J} {\partial w_{kj} }= w_{kj}-\eta \delta_k y_j
\\
w_{ji} \to w_{ji} - \eta \frac{\partial J} {\partial w_{ji}}= w_{ji}-\eta_j\delta x_i
\]

反向传播算法

(1)对于给定的样本集$ D={(x,t)} $,初始化网络结构 $d * n_H * c $。初始化权系数 \(w\),学习速率 \(\delta\),阈值\(\theta\),变量k=1

(2)从D中取出第\(k\)个样本$(x,t) $,根据该样本更新权系数 \(w\):

(3)\(k=k+1\),如果 \(k>n\),令k=1。转第2步继续进行循环。退出条件:在给定样本集上的平均误差足够小。

最新文章

  1. 说说css3布局
  2. 《高性能javascript》读书笔记:P1减少跨作用域的变量访问
  3. OSPF_Network-type
  4. VCRedist.exe静默安装方法(转)
  5. 京东商城招聘自动调价系统架构师 T4级别
  6. Android View架构总结
  7. python机器可读数据-csv
  8. hadoop -- fsck
  9. dblogin userid ogg ERROR: Unable to connect to database using user ogg
  10. js多次触发事件,在一定延迟内只执行一次 (事件累加)
  11. nodejs爬虫设置动态userAgent
  12. 在Ubuntu 13.10 中安装配置 Hadoop 2.2.0
  13. BZOJ.1007.[HNOI2008]水平可见直线(凸壳 单调栈)
  14. 源代码解析Android中View的layout布局过程
  15. 网摘Android调用WebService
  16. bitset与取数凑数类问题
  17. linux -- 终端执行可执行文件
  18. P1757 通天之分组背包 / hdu1712 ACboy needs your help (分组背包入门)
  19. 洛谷 P3345 [ZJOI2015]幻想乡战略游戏 解题报告
  20. bzoj 2115 线性基

热门文章

  1. LeetCode OJ:Pow(x, n) (幂运算)
  2. 简单使用JDOM解析XML
  3. FlashDevelop安装配置
  4. pip国内镜像(清华大学镜像)
  5. libwebsockets libwebsockets-webserver.c hacking
  6. Sapnco3 RfcTable Structure
  7. fn project Message Queues 配置
  8. 百度分享和bshare
  9. 在idea下两个项目之间的maven父子级项目依赖
  10. retful上传文件php的实现