Andrew Ng机器学习课程笔记--week5(上)

xiaoxiao2021-02-28  86

Neural Networks: Learning 内容较多,故分成上下两篇文章。

一、内容概要

Cost Function and Backpropagation Cost FunctionBackpropagation AlgorithmBackpropagation Intuition

Backpropagation in Practice

Application of Neural Networks

二、重点&难点

1.Cost Function and Backpropagation

1) Cost Function

首先定义一下后面会提到的变量

L: 神经网络总层数 Sl:l层单元个数(不包括bias unit) k:输出层个数

回顾正则化逻辑回归中的损失函数:

J(θ)=1mi=1m[y(i) log(hθ(x(i)))+(1y(i)) log(1hθ(x(i)))]+λ2mj=1nθ2j

在神经网络中损失函数略微复杂了些,但是也比较好理解,就是把所有层都算进去了。

J(Θ)=1mi=1mk=1K[y(i)klog((hΘ(x(i)))k)+(1y(i)k)log(1(hΘ(x(i)))k)]+λ2ml=1L1i=1slj=1sl+1(Θ(l)j,i)2

2)BackPropagation反向传播

更详细的公式推导可以参考http://ufldl.stanford.edu–反向传导算法

下面给出我自己对BP算法的理解以及ufldl上的推导:

假设神经网络结构如下

- 1. FP

利用前向传导公式(FP)计算 2,3 直到 nl 层(输出层)的激活值。 计算过程如下:

- 2. BP

权值更新

首先需要知道的是BP算法是干嘛的?它是用来让神经网络自动更新权重 W 的。 这里权重W与之前线性回归权值更新形式上是一样:

那现在要做的工作就是求出后面的偏导,在求之前进一步变形:

注意 J(W,b;x(i),y(i)) 表示的是单个样例的代价函数,而 J(W,b) 表示的是整体的代价函数。

所以接下来的工作就是求出 J(W,b;x,y)Wij(l) ,求解这个需要用到微积分中的链式法则,即

J(W,b;x,y)Wij(l)=J(W,b;x,y)ai(l)ai(l)zi(l)zi(l)wij(l)=a(l)jδ(l+1)i (上面公式可以参考下面的计算过程进行理解,跳过也不影响阅读)

具体推导过程可以参考[一文弄懂神经网络中的反向传播法——BackPropagation],这篇文章详细的介绍了BP算法的每一步骤。

上面的公式中出现了 δ (误差error),所以后续的目的就是求出每层每个node的δ,具体过程如下:

计算δ

对于第 nl 层(输出层)的每个输出单元 i ,我们根据以下公式计算残差:

l=nl1,nl2,,3,2的各个层,第 l 层的第 i 个节点的残差计算方法如下:

将上面的结果带入权值更新的表达式中便可顺利的执行BackPropagation啦~~~

但是!!!需要注意的是上面式子中反复出现的 f(z(l)i) ,表示激活函数的导数。这个在刚开始的确困惑到我了,因为视频里老师在演示计算 δ 的时候根本就乘以这一项,难道老师错了?其实不是的,解释如下: 常用的激活函数有好几种,但使用是分情况的:

在线性情况下:f(z) = z 在非线性情况下:(只举一些我知道的例子) sigmoid tanh relu

所以这就是为什么老师在视频中没有乘以 f(z(l)i) 的原因了,就是因为是线性的,求导后为1,直接省略了。

另外sigmoid函数表达式为 f(z)=11+ez ,很容易知道 f(z)=ez(1+ez)2=f(z)(1f(z)) 这也就解释了Coursera网站上讲义的公式是这样的了:


所以现在总结一下BP算法步骤:

进行前馈传导计算,利用前向传导公式,得到 L2,L3, 直到输出层 Lnl 的激活值。对输出层(第 nl 层),计算: δ(nl)=(ya(nl))f(z(nl)) 对于 l=nl1,nl2,nl3,,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

转载请注明原文地址: https://www.6miu.com/read-40565.html

最新回复(0)