what is optimization about?

其实就是找参数能让loss最小,也就是y接近$\hat{y}$

按照理论上来说,我们每次看到的数据以及处理的只有一部分的loss,那么如何确定这个loss是基于整个surface area的呢?

on-line vs off-line

on line的方式是一次只看到一部分的input,off-line是一次性看到全部的input。虽然实际上训练的时候是基于batch的,也就是为了训练更快不可能看到全部资料。

但目前我们的讨论是不考虑实际情况,是在任何点都能拿到全部的input来考虑的

sgd

sgd的方法是基于gradient的方向来决定的。

sgdm

引入了momentum,方向基于gradient和之前所有的time step累加,共同决定方向。

原因是上节课说过的,在saddle point的时候为0,可是因为累加了之前的step,因此可以爬出来慢慢继续。

Adagrad

解决了在不同的地方使用不同的learning rate,平坦地方的learning rate比较大,陡峭地方的learning rate比较小。

RMSProp

解决了在最初step期间可能learning rate会过小的问题,加上了一个新的系数$\alpha$来共同决定,以保证不会因为最初step过大而导致之后就很快停止的问题。

Adam

结合了sgdm和RMSProp来解决问题。

TIme about Algorithm

  • SGD(1847)
  • SGD with momentum(1986)
  • Adagrad(2011)
  • RMSPROP(2013)
  • Adam(2015)

Optimizers:Real Application

由Adam训练出的模型有:

  • bert模型,目的是做文意理解,qa或者文章生成。

  • transformer是bert的backbone,用于翻译。

  • taotron是语音生成模型,2017年提出

  • big-gan,生成模型

  • memo:不同分类中学会共同分类方法

sgdm训练出的模型有:

  • yolo目标检测
  • mask r-cnn目标分割
  • resnet,早期影像分类

adam vs sgdm

自从2014年后,目前并没有新的optimizer可以替代它们,仍然采用的还是adam或者sgdm的方式来解决问题。原因是因为adam和sgdm的方式已经占据了第一第二的位置。

对于猫狗分类的神经网络算法,可以看到训练集,验证集,以及测试集的几个optimizaer的准确度比较。

可见adam训练的时候会较为快速,会有较大落差,而sgdm较为平稳,娇小落差,更好的convergence

combine Adam with SGDM

因为adam的优势是快速,sgdm的方式是平稳收敛,那么有研究者就想尝试将二者结合,这个算法就是swats。

这个方式就是一开始用adam,最后使用sgdm,但是为什么要这么做并没有给出详细的说明。

towards imporing adam

或者我们可以单纯的提升adam的精准率,或者可以提升sgdm的速度,因为以下方式都是论文的解释,我觉得更适合看paper后得出结论。