神经网络与深度学习笔记——第2章 反向传播算法

第2章 反向传播算法

为什么反向传播算法这么流行,这么多人在使用?
因为反向传播算法比传统的方法更快。

反向传播算法的核心是一个对代价函数关于任何权重(或者偏置)的偏导数的表达式。这个表达式告诉我们,在改变权重和偏置时,代价函数变化的快慢。
反向传播不仅仅是一种学习的快速算法。实际上它让我们细致领悟如何通过改变权重和偏置来改变整个网络的行为。因此,这也是学习反向传播细节的重要价值所在。

热身:神经网络中使用矩阵快速计算输出的方法

alj=σ(kwljkal1k+blj)

关于代价函数的两个假设

反向传播的目标是计算代价函数关于权重和偏置的偏导数。

反向传播的四个方程

δL=aCσ(zL)

δl=((wl+1)Tδl+1)σ(zl)

Cblj=δlj

Cwljk=al1kδlj

如果输出神经元处于或者低于激活值,或者高于激活值时,最终层的权重学习缓慢。这样的情形,我们常常称神经元已经饱和了,并且,权重学习也会终止(或者学习非常缓慢)。类似的结果对于输出神经元的偏置也是成立的。
四个基本方程也其实对任何的激活函数都是成立的。所以,我们可以使用这些方程来设计有特定学习属性的激活函数。我们准备选择一个(非 S 型)激活函数 σ 使得 σ 总是正数,并且不会趋近 0。这会防止在原始的 S 型神经元饱和时学习速度下降的情况出现。

四个基本方程的证明

第一个方程的证明:

δLj=CzLj=kCaLkaLkzLj=CaLjaLjzLj=CaLjσ(zLj)

第二个方程式的证明:
以下一层误差 δl+1 的形式表示误差 δl
δlj=Czlj=kCzl+1kzl+1kzlj=kzl+1kzl+1kδl+1k

由于:
zl+1k=jwl+1kjalj+bl+1k=jwl+1kjσ(zlj)+bl+1k

zl+1kzlj=wl+1kjσ(zlj)

讲上述两个式子代入,得到
δlj=kwl+1kjδl+1kσ(zlj)

第三个方程式的证明:
Cblj=Czljzljblj=δlj(kwlkjal1j+blj)blj=δlj

第四个方程式的证明:
Cwlkj=Czljzljwlkj=δlj(kwlkjal1j+blj)wlkj=al1kδlj

随机梯度下降的一个小的改进

在一个小批量数据上的反向传播的全矩阵方法:
一般随机梯度下降是对一个小批量数据中的所有样本进行梯度计算,所以我们可以更改反向传播算法使得它同时对一个小批量数据中的所有样本进行梯度计算。意思就是我们可以用一个矩阵表示一个小批量数据来进行计算,而不是单个的输入向量。

反向传播算法为什么快

求解偏导数有两种方法,一种是直接使用微积分来计算偏导数(数值解),另一种就是反向传播算法。
使用微积分计算偏导数运行起来非常缓慢。如果网络中有一百万个权重,对每个不同的权重,我们需要计算 C(w+ϵej) 来计算 Cwj 。所以,为了计算梯度,我们需要计算代价函数一百万次,需要一百万次前向传播(对每个样本)。我们同样给需要计算 C(w) ,总共是一次网络传播需要一百万零一次。
反向传播可以同时计算所有的偏导数,仅仅使用一次前向传播,加上一次后向传播。所以,即使反向传播看起来比较复杂,但实际上更快。

权重(和偏置)微小变化的传播,会最终传播影响到输出层。实际上,反向传播算法就是追踪权重(和偏置)的这种微小的变化是如何影响到代价函数的技术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值