Deep Learning 学习笔记(三):神经网络反向传播算法推导
来源:互联网 发布:邮件客户端 知乎 编辑:程序博客网 时间:2024/06/03 19:01
0. 前言
茫然中不知道该做什么,更看不到希望。
偶然看到coursera上有Andrew Ng教授的机器学习课程以及他UFLDL上的深度学习课程,于是静下心来,视频一个个的看,作业一个一个的做,程序一个一个的写。N多数学的不懂、Matlab不熟悉,开始的时候学习进度慢如蜗牛,坚持了几个月,终于也学完了。为了避免遗忘,在这里记下一些内容。由于水平有限,Python也不是太熟悉,英语也不够好,有错误或不当的地方,请不吝赐教。
神经网络有非常丰富的资料,在这里只是记录自己学习的过程、内容和心得。
1. 神经网络的表示
首先用一张图来表示多层神经网络的结构,如图1。
图1 神经网络结构图
1.1 符号说明
- 输入向量
x=[x1,x2,…,xn0]T 是一个列向量。 - 标签(label)
y 未在图中表示,它和x 有相同维度。 nl 为第L层的神经节点个数。W(l)∈Rnl×nl−1 为第L层的权重矩阵。截距b(l)∈Rnl×1 未在图上表示。Z(l) 表示第L层的活动水平向量,Z(l+1)i=Σnlj=1(W(l+1)ij×a(l)j+b(l+1)i) ,a(0) 即为输入向量x Z(l+1)=W(l+1)×a(l)+b(l+1) ,矢量化表示。
f(∙) 为激活函数,可以是sigmoid、tanh等。a(l)=f(Z(l)) 为第L层的激活向量,即输出向量。- 若
l 层为输出层,定义假设函数hW,b(x)=a(l)
1.2 反向传播算法
神经网络的反向传播算法是建立在最速梯度下降基础上的,希望误差的能量函数最小。对于输入向量
我们要找到一个合适的W和b,使
使用梯度下降法:
下面通过推导求
令误差项(大部分教材中,都把误差项分配到
或矢量化形式:
其中:
若
则:
或
(12)式中的“
若
代入(6)式,有
矢量化后有
至此推导完成。
1.3 批量学习的函数形式
在上一节中
其中
代价函数:
对于梯度
和误差项
1.4 规范化
为了防止过拟合(overfiting),需要对误差函数和W梯度添加L2范式惩罚项。假定网络有L层,
2. 算法描述
重复直到收敛{
- 执行前向传播,得到各层的激活值
- 计算最后一层的
- 反向传播计算各层
- 计算各层W和b的梯度
- 使用梯度下降更新W和b
}
0 0
- Deep Learning 学习笔记(三):神经网络反向传播算法推导
- 【Deep Learning学习笔记】反向传播神经网络
- Deep Learning(深度学习)之(五)神经网络训练中的高效BP(反向传播算法)
- Deep Learning 系列(2):NN(神经网络)及反向传播算法
- 神经网络与深度学习笔记(三)python 实现反向传播算法
- Deep Learning学习笔记(二)——BP反向传播算法及其在CNN中的计算
- Neural Networks and Deep Learning学习笔记ch2 - 反向传播
- 前馈神经网络与反向传播算法(推导过程)
- 神经网络和反向传播算法推导
- 神经网络和反向传播算法推导
- 神经网络和反向传播算法推导
- 1 神经网络反向传播算法推导流程
- 神经网络反向传播算法的推导
- 神经网络和反向传播算法推导
- 神经网络中的反向传播算法推导
- 神经网络反向传播算法公式推导详解
- 神经网络的学习(Neural Networks: Learning)-反向传播算法
- 【机器学习】反向传播神经网络推导
- Android实现QQ第三方登录
- iOS8新特性
- tr的简单使用
- 1056. Mice and Rice (25)
- Java Socket编程
- Deep Learning 学习笔记(三):神经网络反向传播算法推导
- Heterogeneous Parallel Programming 随笔二
- OC 面向对象—封装
- win7下cygwin+hadoop+MyEclipse
- 初识MVC
- tftp/nfs等常用Linux配置
- UVA 10714-Ants(求花费的最大最小时间)
- 评分卡的开发过程
- 第18天: hive数据加载 从文件加载到hive表讲解和案例操作、从查询插入数据到hive表讲解和案例操作