微信扫一扫打赏支持

《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)

 

 

 

 

二、内容在总结中

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

 

 

 
posted @ 2020-10-04 19:39  范仁义  阅读(277)  评论(0编辑  收藏  举报