神经网络与深度学习 笔记2 梯度下降

1.梯度下降

定义一个二次代价函数C:

C(w,b)12nxy(x)a2.

这里 w 表示所有的网络中权重的集合,b 是所有的偏置,n 是训练输入数据的个数,a 是表示当输入为 x 时输出的向量,求和则是在总的训练输入 x 上进行的。输出 a 取决于 x, w和 b。采用梯度下降的算法来找到能最小化二次代价函数 C(w, b) 的权重和偏置。


假设 C 是一个有 变量 v 1 ,  v 2 的二元函数,在 v1 和 v2 方向分别移动一个很小的量,即 ∆v1 和 ∆v2 时,

ΔCCv1Δv1+Cv2Δv2.


我们要寻找一种选择 ∆v 1 和 ∆v 2 的方法使得 ∆C 为负,定义 ∆v 为 v 变化的向量,∆v ≡ (∆v 1 , ∆v 2 ) T,用 ∇C 来表示梯度向量

C(Cv1,Cv2)T.


∆C 的表达式可以被重写为:

ΔCCΔv.


如何选取 ∆v 才能让∆C 为负数。假设我们选取:

Δv=ηC,

这里的 η 是个很小的正数(称为学习速率)。

∆C ≈ −η∇C ·∇C = −η∥∇C∥ 2 。由于 ∥∇C∥ 2 ≥ 0,这保证了 ∆C ≤ 0,则C 会一直减小,不会增加。


更新规则:

vv=vηC.

可以把这个更新规则看做定义梯度下降算法


将用权重和偏置代替变量 v j 。也就是说, 现在变量由两个分量组成:w k 和 b l ,而梯度向量 ∇C 则有相应的分量 ∂C/∂w k 和 ∂C/∂b l 。用这些分量来写梯度下降的更新规则,我们得到:

wkblwk=wkηCwkbl=blηCbl.


2. 随机梯度下降

代价函数有着这样的形式 C=1nxCx, 它是遍及每个训练样本代价 Cxy(x)a22 的平均值。为了计算梯度C, 我们需要为每个训练输入 x 单独地计算梯度值  Cx 然后求平均值,C=1nxCx. 当训练输入的数量过大时会花费很⻓时间,这样会使学习变得相当缓慢。


随机梯度下降通过随机选取小量的 m 个训练输入来工作。我们将这些随机的训练输入标记为 X 1 , X 2 , . . . , X m ,并把它们称为一个小批量数据(mini-batch)。假设样本数量m 足够大,我们期望 ∇C X j 的平均值大致相等于整个 ∇C x 的平均值,即

mj=1CXjmxCxn=C,


这里的第二个求和符号是在整个训练数据上进行的。交换两边我们得到

C1mj=1mCXj,


假设 w k 和 b l 表示我们神经网络中权重和偏置

wkblwk=wkηmjCXjwkbl=blηmjCXjbl,

其中两个求和符号是在当前小批量数据中的所有训练样本 X j 上进行的。然后我们再挑选另一随机选定的小批量数据去训练。直到我们用完了所有的训练输入,这被称为完成了一个训练迭代期(epoch)。然后我们就会开始一个新的训练迭代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值