task2主要是对自适应学习率的了解。在梯度较小,较为平缓时,学习率太小会影响学习速率;在梯度较大,较为陡峭时,学习率太大会使迭代结果不收敛。因此自适应学习率是非常有必要的。
3.3自适应学习率
AdaGrad
AdaGrad是典型的自适应学习率方法,其能够根据梯度大小自动调整学习率。AdaGrad 可以做到梯度比较大的时候,学习率就减小,梯度比较小的时候,学习率就放大。
这个算法每次更新的部分为学习率乘以当前梯度再除以之前每次更新的梯度的平均2-范数。
RMSDrop
RMSDrop大致与AdaGrad相同,唯一改动的地方是赋予了之前所有梯度和当前梯度不同的权重,通过调整这个权重,可以使更新的部分更偏向当前梯度或更偏向之前所有的梯度。
Adam
Adam即RMSDrop加上之前所讲的动量,能更好的摆脱鞍点。
3.4学习率调度
上面更多的是利用梯度对更新进行干预,这里是通过改动学习率这个超参数来干预更新的部分。例如退火方法:随着参数的更新,让学习率越来越小,可以让迭代更加平稳。
3.5优化总结
最终进化完全的更新迭代方式就是像下图一样,其中学习率随迭代变化,更新方向为之前梯度的加权和。
3.6分类
分类任务在最后输出结果时常用softmax函数转化结果,这样可以将输出的结果压缩在0到1之间,可用于判断分类准确的概率。
回归的损失常用均方差,而分类的损失更常用交叉熵。交叉熵可以表示两个不同分布之间的差异。
实践任务
在运行的过程中有报错,但是在没有修改的情况下关闭服务器再重新从头运行就没有再报错。经过查阅资料以及检索发现原代码确实没有问题。这样就初步了解了深度学习问题的基本流程。