老规矩,不讲过多难懂的理论,目的是讲要点用更形象的语言总结,其实主要也是总结给自己理解的hhh
在之前的内容里主要讲述了鞍点和局部最小值的问题,我们对模型优化往往希望能避开这两者。但是整个梯度下降过程中,有的时候当我们碰到一个“浅坑”时,梯度就不往下走了,因为这个时候碰到了局部最小值,但是我们会误以为到了最低误差的点
于是有一个解决方案是引入动量的方法,在物理学中,一个物体从高处滚下来会因为具有动量而具备惯性,也就是说,在模型优化过程里,先前的梯度下降如果很快,我们期望也能像物理世界的球一样具备惯性,使得梯度下降的时候不会落到第一个“坑”就不动了,所以参数更新时,我们加入动量的概念,帮助模型更容易找到全局最小值
学习率相当于步长,就像你从山上走下来,想走到最深的那个坑,如果你的学习率很高,就好比你走一步就是十米,可是这个坑可能一共才半米宽,那你怎么才能走到这个坑里去呢?
但如果你的学习率很低,那你从高坡下山的效率就会很低,所以我们期望学习率要是可以在梯度下降的过程中自己变化就好了,刚下坡的时候一步十米,走着走着一步五米,最好可以慢下来,那么我们就引入了自适应学习率这个概念。
自适应学习率有三种方法,分别是AdaGrad,RMSProp和Adam优化器,这三种方法都引入了均方根的思想来对学习率的大小进行改变
还有一个问题是说在梯度下降过程中,如果引入自适应学习率,那么在下坡的时候,也就是梯度变化大的时候学习率比较慢,走得很稳,但如果在梯度变化小的情况下,快接近终点时会产生梯度爆炸,所以我们需要学习率调度,保证随着时间流逝,参数不断更新,学习率不断减少
我们最后将动量和均方根结合来优化模型,θit+1 ← θit −ηtσitmit(3.27)其中 mit 是动量。这个版本里面有动量,其不是顺着某个时刻算出的梯度方向来更新参数,而是把过去所有算出梯度的方向做一个加权总和当作更新的方向。接下来的步伐大小为 mitσit。最后通过 ηt来实现学习率调度。
最后讲一个分类问题,区别于传统的回归问题,我们期望一个分类模型能够给出固定的几个类型的答案,但是,问题在于模型给出的答案往往是连续的,我们怎么才能知道模型给出的答案固定在几个类型呢?所以我们用softmax函数,同时标签里的y写成独热向量,通过softmax回归保证模型输出的数在0到1之间,然后再与独热向量计算相似度。