python神经网络自动优化_《python深度学习》笔记---2.4、神经网络的“引擎”:基于梯度的优化...

《python深度学习》笔记---2.4、神经网络的“引擎”:基于梯度的优化

一、总结

一句话总结:

其实真的比较简单,就是损失函数,然后前向传播,反向传播

1、随机初始化(random initialization)?

较小随机数:一开始,这些权重矩阵取较小的随机值,这一步叫作随机初始化(random initialization)。

2、训练循环(training loop)过程?

提取数据:抽取训练样本 x 和对应目标 y 组成的数据批量

前向传播:在 x 上运行网络[这一步叫作前向传播(forward pass)],得到预测值 y_pred。

计算损失:计算网络在这批数据上的损失,用于衡量 y_pred 和 y 之间的距离。

反向传播:更新网络的所有权重,使网络在这批数据上的损失略微下降。

3、前向传播和后向传播的理论基础?

网络运算可微:一种更好的方法是利用网络中所有运算都 是可微(differentiable)的这一事实,计算损失相对于网络系数的梯度(gradient),然后向梯度 的反方向改变系数,从而使损失降低。

4、张量运算的导数:梯度 ?

梯度(gradient)是张量运算的导数:它是导数这一概念向多元函数导数的推广。多元函数 是以张量作为输入的函数。

5、随机梯度下降 中的随机是什么意思?

术语随机(stochastic)是指每批数据都是随机抽取的(stochastic 是random 在科学上的同义词)

6、小批量SGD 算法?

小批量SGD是每次选一个样本:小批量SGD 算法的一个变体是每次迭代时只抽取一个样本和目标,而不是抽取一批 数据。这叫作真 SGD(有别于小批量 SGD)。

批量SGD是每次选全部数据:还有另一种极端,每一次迭代都在所有数据上 运行,这叫作批量 SGD。这样做的话,每次更新都更加准确,但计算代价也高得多。

合理选择批的大小:这两个极 端之间的有效折中则是选择合理的批量大小。

7、但你不可能将神经网络的实际训练过程可视化,因为你无法用人类可以理解的 方式来可视化 1 000 000 维空间?

低维直觉在实践中不一定准确:因此最好记住,在这些低维表示中形成的直觉在实践中不一定 总是准确的。这在历史上一直是深度学习研究的问题来源。

8、SGD 还有多种变体,其区别在于计算下一次权重更新时还要考虑上一次权重更新, 而不是仅仅考虑当前梯度值,比如带动量的SGD、Adagrad、RMSProp 等变体?

动量解决了SGD 的两个问题:收敛速度和局部极小点。

9、使用动量方法可以避免局部最小值?

动量够大不会卡局部最小值:有一种有用的思维图像, 就是将优化过程想象成一个小球从损失函数曲线上滚下来。如果小球的动量足够大,那么它不会 卡在峡谷里,最终会到达全局最小点。

考虑速度:动量方法的实现过程是每一步都移动小球,不仅要考虑当 前的斜率值(当前的加速度),还要考虑当前的速度(来自于之前的加速度)。

考虑上次w的更新:这在实践中的是指, 更新参数 w 不仅要考虑当前的梯度值,还要考虑上一次的参数更新

10、轮次(epoch)?

在所有训练数据上迭代一次叫作一个轮次(epoch)

二、内容在总结中

博客对应课程的视频位置:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值