目录
b站学习视频地址:李宏毅《机器学习/深度学习》2021课程(国语版本,已授权)_哔哩哔哩_bilibili
一、局部最小值(Local minima)和鞍点(Saddle point)
b站学习视频地址:李宏毅《机器学习/深度学习》2021课程(国语版本,已授权)_哔哩哔哩_bilibili
此次学习视频为李宏毅老师2021年的最新课程,相比较2019年的内容添加了很多的前沿知识。可以在学习完2019基础理论之后,进一步学习2021年的课程。
一、局部最小值(Local minima)和鞍点(Saddle point)
如何判断是局部最小值还是鞍点?
通过泰勒展开式,逐项逼近函数值。然后判断该点处的二阶导数值。
二阶导数大于0,则为局部最小值,二阶导数小于0.则为局部最大值。
如果二阶导数值有大有小,则该点为鞍点。可以通过求解对应的海塞矩阵进行判断是否为鞍点。
eg:如下图所示,在(0,0)处的海塞矩阵的特征值求解出来为2和-2,有正有负,则该点就为鞍点。
那么如果该点为鞍点,则该如何更新呢?视频中指出,可以按照对应特征值的特征向量方向进行更新。就可以让你的loss减少。 但是要求特征值小于0。
二、批次(Batch)和动量(Momentum)
左边不采用batch ,右边batch size 为1。可以看出来,左边的比较稳,蓄力时间长。右边的蓄力时间短,但是不稳定,有曲折。
如下左图所示: 因为Gpu有着平行运算的能力,所以batch size为1和1000的计算时间相差无几,但是如果你有60000个样本数据,那么如果batch size为1,则需要60000次更新才能完成一个epoch,相反如果batch size为1000。则仅需要60次更新就能完成一个epoc。对应的运行时间如下右图所示。可以看出大的batch size并没有在时间上有劣势。
但是小的batch size不容易陷入局部最优解,因为就算某一个batch size陷入了,其它的照样可以进行优化。对训练也更好。
所以batch size也成为了一个不可获取的超参数。
引入动量(Momentum),除了考虑当前梯度反方向之外,还需要考虑上一步的移动方向。简单来说就是考虑了上一步带给本次步骤的惯性因素。
三、自动调整学习率
loss下降的很低的时候,并不一定梯度为0。因此引入自动学习率,不同的参数配备不同的学习率。
不同的学习率除以不同的参数,计算方式如下图所示,即除以之前所有梯度的平方均值根。
为什么这样做有用呢?可以看出当你的梯度很小时,取平方均值根就很小,然后学习率除以它就会很大。也就是步伐更大,从而取得平衡。
四、损失函数也可能对训练有影响
一般采用one hot编码方式表示。
多分类问题采用soft max。
- softmax 会让大的值跟小的值差距更大
- softmax 的输入我们一般叫作 logit
为什么对于 classification 而言选 cross-entropy 更合适?
- 不同的 loss function 会改变训练的难度
- mse 更难训练
五、批次标准化(BN)
对特征做均值为0方差为1的归一化,有助于训练。
Batch Normalization - Training
如果每次都使用所有的输入examples进行normalization,将会是一个large network,所以考虑 a batch 是自然而然的 — Batch Normalization适用于 batchsize 比较大的时候。