Hongyi Li's Machine learning course notes

本文最后更新于:1 年前

Li's Machine-Learning

Model bias & Optimazition issue

训练过程中,先对 training dataloss 进行判定,如果,则考虑两种情况

  • 模型不够弹性(Model bias)
  • 优化器做得不够好(Optimization)

搜索范围不够广还是优化器不能达到全局最优(SVM)?

如果发生下述情况,则说明优化器做得不够好 \[ \begin{array}{|c|c|c|c|c|c|} \hline & \text { 1 layer } & \text { 2 layer } & \text { 3 layer } & \text { 4 layer } & \text { 5 layer } \\ \hline 2017-2020 & 0.28 \mathrm{k} & 0.18 \mathrm{k} & 0.14 \mathrm{k} & 0.10 \mathrm{k} & 0.34 \mathrm{k} \\ \hline \end{array} \]

优化过程中 Loss 趋于不变,\(\nabla f\to 0\),可能在 Local minima 或者 saddle point,区别方法:Hesse matrix 分别正定、既不正定也不负定 \[ L(\theta) \approx L\left(\theta^{\prime}\right)+\frac{1}{2}\left(\theta-\theta^{\prime}\right)^T H\left(\theta-\theta^{\prime}\right) \]

鞍点处往 \(\lambda <0\) 对应的特征向量方向 \(\vec{u}\) 优化,\(H\vec{u}=\lambda \vec{u}\Longrightarrow L(\theta^{\prime})<L(\theta)\),但实际中涉及二阶导和求解矩阵特征值运算,几乎不用。

维度高代表参数空间有更多的路可以走,实验给出,Hesse matrix 中特征值大于 \(0\) 的比例大多数集中在 \(0.5\) 附近,即多数情况下是卡在 saddle point

image-20230207205526588

Critical point

Batch

不用所有的训练资料计算梯度,随机混合分组,每组 Batch 更新同一组参数,能够节约时间,虽然噪声影响大,但轮数多。(Batch 大不一定计算梯度时间长,现代硬件有平行运算能力)

大的 Batch-size 往往得到比较差的模型,在 Training data 和 Test data 上正确率都比较低,这是 Optimize 问题,因为不同的 Batch 形成的噪声能更好地跨过 saddle point。小的 Batch-size 在 Test data 上也表现好(一种解释是 Small batch 更容易进入“平原”)

image-20230207204504569

Momentum

在原始梯度下降(Vanilla)中加入惯性,引入 \(m^{i}\) 为每次改变中的质量,\(g^i\) 为每次计算的梯度 \[ \begin{aligned} m^2&=\lambda m^1-\eta g^1\\ \theta^2&=\theta^1+m^2 \end{aligned} \] 容易跨过鞍点

Learning_rate

Adam means Adaptive momentum.

Root Mean Square(Adagrad)

在一个等高线椭圆狭长的优化问题上优化

image-20230207205820987

更新参数 \[ \theta_i^{t+1} \leftarrow \theta_i^{t}-\frac{\eta}{\sigma_i^t}g_i^{t} \] 对每个参数 \(i\),使用前面梯度的方均根给参数 \(\sigma_i^t\),如下 \[ \theta_i^{t+1} \leftarrow \theta_i^{t}-\frac{\eta}{\sigma_i^t} g_i^{t} \quad \sigma_i^t=\sqrt{\frac{1}{t+1} \sum_{i=0}^t\left(g_{\dot{i}}^{t}\right)^2} \] 即如果当前更新速度一直很慢的话可调大学习率,否则降低学习率

RMSProp

Google 使用的优化器

上述要求梯度基本一样,加入超参数 \(\alpha\) 表征前者调整的比例 \[ \theta_i^{t+1} \leftarrow \theta_i^{t}-\frac{\eta}{\sigma_i^t} g_i^{t} \quad \sigma_i^t=\sqrt{\alpha\left(\sigma_i^{t-1}\right)^2+(1-\alpha)\left(g_i^{t}\right)^2} \] Adam:RMSProp + Momentum

Learning Rate Scheduling

image-20230207211811638

随着训练进行,将学习率本身不断减小

Warm-up 黑科技,在训练初期逐渐增加 Learning_rate,代表初期探索

Overfitting

上述过程均检测正常,即 training dataloss 较小,但 testing dataloss 较大,一个极端的例子是

Training data: \(\left\{\left(x^1, \hat{y}^1\right),\left(x^2, \hat{y}^2\right), \ldots,\left(x^N, \hat{y}^N\right)\right\}\) \[ f(x)=\left\{\begin{array}{cl} \hat{y}^i & \exists x^i=x \\ \text { random } & \text { otherwise } \end{array} \quad\right. \] model 越大,overfitting 的概率越大(另一种为 mismatch,就算有更多的资料,训练集和测试集的分布不一样)

解决办法:

  • Data augmentation,将图片水平翻转或者放大让训练集变大

  • Constrain,让模型限制在某些函数上

  • 共用参数,限制参数 \[ \text{CNN}\in \text{Fully-Connected model} \]

  • N-fold Cross Validation,提高 private-data 准确率

L2 正则化和 weight decay 是一样的,L2 正则就是权重衰减。


Hongyi Li's Machine learning course notes
https://lr-tsinghua11.github.io/2023/02/21/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6/%E6%9D%8E%E5%AE%8F%E6%AF%85%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
作者
Learning_rate
发布于
2023年2月21日
许可协议