Andrew Ng机器学习课程笔记--week5(上)
来源:互联网 发布:手机淘宝店铺头像尺寸 编辑:程序博客网 时间:2024/06/11 21:20
Neural Networks: Learning
内容较多,故分成上下两篇文章。
一、内容概要
- Cost Function and Backpropagation
- Cost Function
- Backpropagation Algorithm
- Backpropagation Intuition
Backpropagation in Practice
Application of Neural Networks
二、重点&难点
1.Cost Function and Backpropagation
1) Cost Function
首先定义一下后面会提到的变量
L: 神经网络总层数
Sl:l层单元个数(不包括bias unit)
k:输出层个数
回顾正则化逻辑回归中的损失函数:
在神经网络中损失函数略微复杂了些,但是也比较好理解,就是把所有层都算进去了。
2)BackPropagation反向传播
更详细的公式推导可以参考http://ufldl.stanford.edu–反向传导算法
下面给出我自己对BP算法的理解以及ufldl上的推导:
假设神经网络结构如下
- 1. FP
- 利用前向传导公式(FP)计算
2,3…… 直到nl 层(输出层)的激活值。
计算过程如下:
- 2. BP
- 权值更新
首先需要知道的是BP算法是干嘛的?它是用来让神经网络自动更新权重
这里权重
那现在要做的工作就是求出后面的偏导,在求之前进一步变形:
注意
J(W,b;x(i),y(i)) 表示的是单个样例的代价函数,而J(W,b) 表示的是整体的代价函数。
所以接下来的工作就是求出
(上面公式可以参考下面的计算过程进行理解,跳过也不影响阅读)
具体推导过程可以参考[一文弄懂神经网络中的反向传播法——BackPropagation],这篇文章详细的介绍了BP算法的每一步骤。
上面的公式中出现了
- 计算δ
对于第
对
将上面的结果带入权值更新的表达式中便可顺利的执行BackPropagation啦~~~
但是!!!需要注意的是上面式子中反复出现的
f′(z(l)i) ,表示激活函数的导数。这个在刚开始的确困惑到我了,因为视频里老师在演示计算δ 的时候根本就乘以这一项,难道老师错了?其实不是的,解释如下:
常用的激活函数有好几种,但使用是分情况的:
- 在线性情况下:f(z) = z
- 在非线性情况下:(只举一些我知道的例子)
- sigmoid
- tanh
- relu
所以这就是为什么老师在视频中没有乘以
另外sigmoid函数表达式为
所以现在总结一下BP算法步骤:
- 进行前馈传导计算,利用前向传导公式,得到
L2,L3,… 直到输出层Lnl 的激活值。- 对输出层(第
nl 层),计算:
δ(nl)=−(y−a(nl))∙f′(z(nl)) - 对于
l=nl−1,nl−2,nl−3,…,2 的各层,计算:
δ(l)=((W(l))Tδ(l+1))∙f′(z(l)) - 计算最终需要的偏导数值:
∇W(l)J(W,b;x,y)=δ(l+1)(a(l))T,∇b(l)J(W,b;x,y)=δ(l+1)
使用批量梯度下降一次迭代过程:
- 对于所有
l ,令ΔW(l):=0,Δb(l):=0 (设置为全零矩阵或全零向量)- 对于
i=1 到m ,
使用反向传播算法计算∇W(l)J(W,b;x,y) 和∇b(l)J(W,b;x,y) 。
计算ΔW(l):=ΔW(l)+∇W(l)J(W,b;x,y) 。
计算Δb(l):=Δb(l)+∇b(l)J(W,b;x,y) 。- 更新权重参数:
W(l)=W(l)−α[(1mΔW(l))+λW(l)]b(l)=b(l)−α[1mΔb(l)]
3) Backpropagation Intuition
本小节演示了具体如何操作BP,不再赘述。
具体可参考Coursera讲义。
MARSGGBO♥原创
2017-8-5
- Andrew Ng机器学习课程笔记--week5(上)
- Andrew Ng机器学习课程笔记--week5(下)
- 机器学习笔记week5(Andrew NG)
- Andrew Ng机器学习课程笔记--week9(上)
- Andrew Ng 《机器学习》课程笔记
- Andrew Ng机器学习课程笔记
- Andrew Ng机器学习课程笔记--week3
- Andrew Ng机器学习课程笔记--week4
- Andrew Ng机器学习课程笔记--week6
- Andrew Ng机器学习课程笔记--week7
- Andrew Ng机器学习课程笔记--week8
- Andrew Ng机器学习课程笔记--汇总
- Andrew NG 机器学习 笔记-week5-神经网络的学习(Neural Networks:Learning)
- Coursera上Andrew Ng机器学习课程总结(一)
- Coursera上Andrew Ng机器学习课程总结(二)
- 机器学习——Andrew NG老师课程学习笔记
- Andrew Ng机器学习课程之学习笔记---牛顿方法
- Andrew Ng机器学习week5(Neural Networks: Learning)编程习题
- linux 关机与重启
- 507. Perfect Number
- 认识DOM的三大节点:元素节点,文本节点,属性节点以及nodeName,nodeType,nodeValue的区别
- 电影《战狼2》观后感
- linux grep指令
- Andrew Ng机器学习课程笔记--week5(上)
- PAT基础题 4-7 统计某类完全平方数
- 线程的简单介绍与实现
- Qt编程——信号与槽机制
- linux gem手动安装
- 笔试题判断字符串是否是回文
- 【OpenPose-Windows】运行OpenposeDemo.exe 如何保存图像运行结果及关节点信息
- Linux RubyGems介绍和使用
- 数据库常用指令