损失函数结果不理想解决方案——机器学习

如何得到更好的训练结果

Tips for training.

在这里插入图片描述

Model bias

The model is too simple.

Solution: redesign your model to make it more flexible.

Optimization

Optimization fails because of critical point(微分为0的点,包括 local minamasaddle point 马鞍面的鞍点)

说明:

  • 每多一个参数,维度就会升高一个,就更容易产生 saddle point,而不是 local minima。

  • 从经验上看起来,local minima 并没有那么常见,因此很多情况下,是可以使用 saddle point 来对 less 做优化的。

  • 下面通过 saddle point 继续减少 Less 的值。

Hessian 矩阵法优化

在这里插入图片描述

当走到 critical point 时,梯度为0,则绿的的这一项为0。

在这里插入图片描述

H 可以告诉我们参数更新的方向:
在这里插入图片描述

如果遇到了 Saddle point,可以使用 Hessian 矩阵中为负的特征值,找出它对应的特征矩阵 μ,θ - θ = μ,则 θ = θ - μ,就可以降低 L(θ) 的值。

但是这种方法需要计算 Hessian 矩阵,涉及二阶导数,还需要求出矩阵的特征值,特征矩阵,计算量是很大的,所以一般实际操作中不使用这种方法。

Small Batch

小的 batch 往往会得到比大的 batch 更好的结果。

  • 当一次梯度下降被卡住时,换一个 batch,可能就不会被卡住了,避免了掉入 local minama 跳不出来的问题,这就是 batch 比较多的优势。
    在这里插入图片描述

Gradient Descent + Momentum

模拟物理中的惯性的思想:使运动的方向不仅仅取决于梯度的方向,还取决于上一步运动的方向。

Movement = movement of last step minus gradient at present.

  • 这样可以一定程度上避免掉入 local minama 跳不出来的问题。

在这里插入图片描述

根据迭代,每次的 movement mi 可以用前 i - 1 次的梯度来表示:

在这里插入图片描述

Adaptive Learning Rate

当 loss 不再下降时,gradient 不一定真的变得很小。

因此需要对每个参数有特制化的 learning rate 。

请添加图片描述
可能是卡在 误差曲面 如左图所示的山谷中,由于 learning rate 固定,所以 less 无法再下降。

因此,直接把 learning rate 调小一点不就可以解决问题了吗?

但是,直接把 learning rate 调小一点,或许可以使训练进入“山谷”里面,但是在较平滑的地方,由于 learning rate 太小了,就难以使训练前进。

因此希望:

  • 在较平滑的地方 learning rate 大。
  • 在较陡峭的地方 learning rate 小。

解决方案:

​ 在原来的 learning rate 上除以一个 σ。

在这里插入图片描述

一般有两种计算 σ 的方法

  • Root Mean Square
  • RMSProp
  • Adam

Root Mean Square

σ 为之前训练得到的 gradient 平方和开根号。

之前的每个 gradient 对 σ 贡献度相同。

在这里插入图片描述

假设了同一个参数的 learning rate 就是差不多同样的一个值,但是同一个参数的 learning rate 也会随时间而改变。使用 RMSProp 方法就可以避免这个弊端。

RMSProp

σ 受最近的 gradient 影响大,受过去的 gradient 影响小。

在这里插入图片描述
在这里插入图片描述

Adam

RMSProp + Momentum

最常使用的 optimization 的方法,Pytorch 中有实现好的套件。

在这里插入图片描述

Learning Rate Scheduling

当训练在比较平滑的地方不断积累时, σ 的值会比较小,使得一次的移动的步幅较大,所以一旦出现误差,就容易出现以下情形:

在这里插入图片描述

可以通过 Learning Rate Scheduling 来使 Learning Rate 的大小也随时间变化,从而消除这种误差:

在这里插入图片描述

有两种 Learning Rate Scheduling 的方法:

  • Learning Rate Decay
  • Warm Up:在一些远古的论文中经常会看到 Warm Up 的方法,由于 σ 是一个统计得来的数据量,所以一开始是不精准的。所以开始时,令 learning rate 比较小,等 σ 统计的更精准之后,再增大 learning rate 。

在这里插入图片描述

Loss

Loss function 的选择会影响 Optimization 的难度。

例如:在分类问题中,Cross-entropy 比 Mean Square Error(MSE)效果更好,因此更常用。

在这里插入图片描述

由上图可以看出,Mean Square Error 在 Loss 比较大的地方,梯度较小,因此训练可能会停在里面出不来。而 Cross-entropy 在 Loss 比较大的地方,梯度也较大,方便训练。

Summary of Optimization

在这里插入图片描述

Overfitting

在 training data 上效果好,在 testing data 上效果差。

More training data——最有效的解决方案

  • 收集新的资料。

  • Data augmentation:根据自己对资料的理解,对原始资料做变换,增加训练资料数量(对图片左右翻转、放大缩小)

减少模型的弹性

  • Less parameters, sharing parameters

  • Less features

  • Early stopping

  • Regularization

  • Dropout

Mismatch

  • Your training and testing data have different distributipns.

  • Be aware of how data is generated.

猜你喜欢

转载自blog.csdn.net/qq_61539914/article/details/127550290