背景:随着参数更新,training loss
没有下降到足够小或者压根没有下降趋势。人们推测是走到的这些地方参数对loss
的微分为零时,梯度下降无法再updata参数。
gradient
为零的两种情况(统称为临界点)
局部最小值:local minima
,卡在此处,无路可走
鞍点:saddle point
,卡在此处,有路可循
如何分析得出是卡在局部最小值还是卡在鞍点
泰勒多项式
简单理解就是损失函数的泰勒展开式和梯度(具有一次微分的项目)、海塞矩阵(具有二次微分的项目)有关。
当gradient
为0时,我们可以根据点的分布来判断当前点的位置
可能情况
算出一个Hession
,不需要将其和所有的v
相乘。只需要看这个Hession
的所有特征值都是整的,就代表这个条件成立。
卡在saddle point
Hession
不仅可以判断当前卡住的位置是不是在saddle point
,还可以指出了参数可以更新的方向。
当gradient
已经无法判断参数更新方向的时候
利用batch
进行优化
data
分为一个个的batch
。每次更新参数就会使用一笔batch
。所有的batch
都进行一遍叫做一个epoch
batch
的过程叫做Shuffle
,每次epoch
开始之前会切分一次batch
,所以每一个epoch
对应的batch
都不一样。为什么要使用batch
进行batch
和不进行batch
情况的比较
batch
的情况冷却时间较长,但一步走的较为稳健(Powerful)。右边进行batch
的情况冷却时间较短,但每一步走的不稳定(Noisy)。GPU
可以进行并行运算的关系,所以batch size
可能对花费时间的影响非常小。size
大小对Batch
的影响
size
的大小越大,需要参数更新的次数就越小,可能batch size
大的batch
进行一个epoch
的时间更短。batch
不一定冷却时间比进行batch
花费时间长小Batch
与大Batch
的比较
Noisy
的梯度下降反而可以帮助training
full Batch
,在遇到local minimum
或者saddle point
的时候参数更新就会停止。而如果是Small Batch
,每一次使用的损失函数会有略微区别,使得遇到上述情况的时候可以继续进行下去。除了可以帮助training
,较小的batch
还可能可以帮助testing
。
Training Loss
和Testing Loss
之间有不匹配的地方,即两者的Loss
函数不同(选取的样本不一样)。这样在testing
的损失函数上,local minimum
较平缓的最小值点比较陡峭的最小值点在training
和testing
的差别更小。大的batch size
会让我们倾向于较为陡峭的最小值点,小的batch size
会让我们倾向于较为平缓的最小值点。Batch size
是不得不去调整的超参数Momentum
背景:将Loss函数假象为真正的斜坡,参数想象成小球,在真实的物理世界中小球下降不一定会收到saddle point
和local minimum
的阻拦。
一般的梯度下降
梯度下降加上动量
传统的梯度下降是向梯度的反方向移动参数。此时需要向梯度的反方向加上前一步移动的方向去移动参数。
updata
的方向不是考虑当前的梯度方向而是考虑过去所有的梯度总和
当Loss不再下降的时候,不一定卡在Local minimum
和saddle minimum
,只是梯度确实无法继续下降了。
学习率产生的影响
local minimum
。改变梯度下降的公式,变为Adagrad
,当坡度小的时候,学习率就增大。坡度大的时候,学习率减小。原因:梯度小,对应均方根小,对应的学习率就变大。
RMSProp
(动态调整学习率)
Adam: RMSProp + Momentum
使用Adagrad
的表现:
原因:在多个小均方根累积后会出现井喷式增长,但到梯度较大的地方又会返回。
解决方案:Learning Rate Scheduling
,将学习率预设为与时间有关。
Learning Rate Decay
:随着时间不断地进行,让学习率越来越小。
Warm Up
:让学习率先变大后变小。
首先学习率较小,先收集有关均方根的数据,再让学习率爬升。
进一步了解WarmUP
总结
分类
分类标签标识的常见做法:将类别用one-hot vector
表示。
output
如何输出成vector
形式
回归得到的y
是数值型,而分类得到的y
是一个向量,向量通过softmax
得到最后的label
。softmax
就是将y
(可以取任何值)的值限定于范围0到1之间
softmax
的内部原理
分类问题损失函数的计算
maximizing likelihood = minimizing cross-entropy
最大似然估计和最小交叉熵是一件事
最小交叉熵比均方根更加适合用在分类问题上。
MSE
在Loss
较大的地方,梯度趋近于零,所以如果其初始位置在左上角,就很难通过梯度下降到达右下角。所以就算是损失函数的定义都可能影响training
的过程。
背景:想要直接改变error surface
的landscape
,需要将特征值限定于相同的范围内,使得training
过程更加容易。
Feature Normalization
做法:
针对深度学习:通过相应层数之后的数值也需要进行标准化,在激活函数之前做还是在激活函数之后都可以。
由于现在x
决定z
,z
又决定a
,可谓牵一发而动全身,所以当前需要将所有经历了标准化的变量过程当作network
的一部分
GPU
内存此时无法加载所有的data
,所以在实践的时候只会考虑一个batch
中的数据下一步,β
和γ
是另外被取出来的,是network
的参数。原因是z~
的平均值为0会对网络产生一些限制。
DataWhale八月组队学习-李宏毅深度学习Task05-网络设计的技巧
原文:https://www.cnblogs.com/MurasameLory-chenyulong/p/15201196.html