目录
摘要
接着上周学习率在训练中的影响,本周对深度学习常见的几种优化算法做了总结,着重分析Adam算法的优缺点和具体步骤;接着又深入学习了分类器的用法,以宝可梦和数码宝贝为例,提出了数据收集不全的问题并提出了解决方案;最后较浅层次的了解了卷积神经网络中卷积层的运作方式,以及一些常用术语。
Abstract
Following last week's impact of learning rate in training, this week's summary of several common optimization algorithms for deep learning, focusing on the strengths and weaknesses of Adam's algorithm and specific steps; followed by an in-depth study of the use of classifiers, with Pokémon and Digimon as examples of the incomplete collection of data and proposed solutions; and finally, a more superficial level of understanding of the workings of the convolutional layer in the convolutional neural networks, the and some common terms.
一、深度学习的优化算法
1、SGD
SDG是随机梯度下降法,是梯度下降法的其中一种。该算法的优点就是收敛效果较好,一般都能够降到最低点;缺点是收敛速度较慢,因为每一步都要计算各个方向的梯度,而且可能会出现震荡的情况,会导致停在local minima处。
2、SGDM
SGDM是带有动量的梯度下降法。加入动量后,梯度下降的方向还由上一次移动的方向和大小决定与梯度共同决定,解决了卡在local minima出不来的情况。
3、Adagrad
Adagrad 是自适应学习率算法。通过所有梯度历史平方值之和的平方根,从而使得步长单调递减。它根据自变量在每个维度的梯度值的大小来调整各个维度上的学习率,从而避免统一的学习率难以适应所有维度的问题。
该算法存在一个问题:如果刚开始的梯度非常大,那么学习率就会很小,梯度不断累加导致走几步就可能出现stuck的情况(学习率很小几乎为零)。
4、RMSProp
RMSProp 算法使用了小批量随机梯度 按元素平方的指数加权平均来调整学习率。
能够看出RMSProp算法与Adagrad算法的计算不同点在学习率下边的分母,前者是之前所有的梯度和,后者是融入动量思想加权平均(只关注前一段梯度)。后者解决了由于学习率小导致stuck的情况。
但是该算法也存在一个问题:没有使用SGDM,所以没有解决stuck在local minima的情况。
5、Adam算法
Adam(Adaptive Moment Estimation):就是将SGDM算法和Adagrad算法结合。是深度学习中常用的优化算法。Adam算法的核心思想是利用梯度的一阶动量和二阶动量来动态调整学习率,既保持了动量法的优点,又结合了RMSProp的自适应学习率特性。
从上图算法中可以看出,是梯度更新的步长,是第次梯度大小和方向,、分别是一阶动量和二阶动量,、分别是、的偏置矫正,则是需要更新的所有未知参数的集合。
Adam算法的具体步骤:
step1 计算梯度
step2 计算指数加权平均值及其平方的指数加权平均值
step3 对和进行修正
step4 用修正后的、值对参数进行更新
指数加权平均?
使得数据更加平滑,减少噪声。在距离预测数据更远的数据影响小,距离较近的影响较大。公式如下:、
修正?
若是处理数据序列足够长,那么指数加权平均可以使得数据光滑;但是若处理数据序列较短,学习的步长过小,就会导致训练的效果不佳,所以要进行修正。公式如下:、
L2正则化和权重衰减?
在AdamW算法中,它将"权重衰减"引入了更新参数的方法中,而在Adam算法中更新参数是L2正则化方法。
参考文章1:5分钟快速掌握 Adam 优化算法
参考文章2:深度学习中的Adam优化算法详解_adam完整公式及参数-CSDN博客
参考论文: http://arxiv.org/pdf/1412.6980
warm-up?
在深度学习训练初期,梯度较大,希望学习率小一些,防止出现stuck在local minima或者梯度爆炸,这个时期称为warm-up期;度过warm-up期后,希望学习率增大一些,加快训练效率,该时期称为中期;最后需要学习率不断下降直至结束,该时期称为learning rate decay期。
参考文章:https://www.cnblogs.com/chentiao/p/16778453.html
二、分类器
案例:宝可梦和数码宝贝分类
step1 带有未知参数的function
step2 选定损失函数
从上图可以看出总的损失函数的计算方式,其中是指分界参数(该特征中用来区分宝可梦和数码宝贝),是指数据集中的数据。
也可以用交叉熵!!!
**问题:**数据全部收集齐全很困难
**解决:**选取一些范例(假设是在完整数据集中选出来的),并假设范例之间独立同分布
上图中的计算是在搜集到了完整数据集 的理想状态下得出的,而是在搜集了一部分数据集的现实状态下得到的。
前面在计算中可以得出,中最好的是,中最好的是。但是是否是最好的仍存疑。
现在需要比较和在同一数据集上的差距。比较好的情况是希望二者很接近。
从直观角度看,左边表现较好,使得"理想"与"现实"很接近;右边表现较差,舍得"理想"与"现实"不太接近。 如何衡量是否二者比较接近,如下:
下面的式子是大前提(一直成立),也就是无论在完整数据集还是部分选取数据集上,得出的都使得损失值比较接近。现在就要逐步推导出"现实"与"理想"的差距。也就是下面的式子成立的条件下,上面的式子也成立。推导如下:
**问题:**理想和现实差距较大的概率怎么计算?如何让其概率降低?
解决1:
假设、 、分别使得一部分数据集fail,那么总数据集fail的概率就是各个h的fail率之和。
**解决2:**N增大,或者h减小
h的减小会导致一些矛盾(next lecture)
三、卷积神经网络
**卷积神经网络(Convolutional Neural Networks, CNN)**是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。卷积神经网络具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类。
影像分类
一张图片可以分为3维的向量,分别是长、宽、通道数(RGB)。长、宽决定了图片的像素,通道数决定了图片的颜色。
问题1
获取观察图片的一小部分,而不是全部。如下图:
每一个neural都着重关注一个pattern,各司其职
简化1
每个neural只负责一个receptive field(感受野),将3*3*3的感受野拉直为27个input作为下图蓝色neural的输入。可以人为设定每个neural负责的区域。
不同neural负责的receptive field可以相互重叠,而且不同的neural可以负责相同的receptive field
如何调整不同的感受野?滑动窗口的方式,如下:
首先需要选定滑动的步长stride,从左至右滑动或从上至下滑动。若是滑动到边界,有一部分超出边界时,需要padding进行填充(填充为0或者其他方式均可)。
问题2
相同的部分却出现在不同图片的不同位置,比如下图"鸟嘴"的位置不相同,但是负责它们的neural是一致的:
简化2
既然不同neural的是负责同一件事情,那么可以ichu参数共享的概念,如下:
共享参数,两个在不同图像中相同的pattern,可以让处理该pattern的neural共享参数filter
卷积层
以上两个问题的提出和解决,实际上就是卷积操作的两个步骤。首先是将图像分为N*N个pattern,接着需要选定给卷积核,也就是共享参数n*n的filter,然后将它从左至右、从上至下与receptive field进行计算,得到特征图。
step1 filter1与红框中的receptive field对应元素进行相乘加和
step2红框向右按照stride大小移动
step3 重复上述,直至图像的所有部分都被扫完一遍
step4 若是filter不止一个,那么就再次用filter2与原图像进行计算,得到好几个channel。
注:其中步长stride、filter数量、receptive fiel大小都是根据实际情况而定的。
问题3
下采样(池化)为了减少运算量,但是不会影响物体本身
简化3
下采样pooling实际上就是缩小图片,一般是在卷积以后进行依次pooling。方法有max pooling、mean pooling等。
以max pooling为例,步骤如下:
step1 将卷积后的特征图分为几个相同大小的部分(如上图4个红框)
step2 找出每个部分最大的特征值(如上图红框中的黑框)
总结
本周学习主要分为以下三个部分:第一是深度学习的常用优化算法,一方面复习了前面的内容和总对所学优化算法的总结,另一方面学到了Adam算法解决了梯度下降的stuck问题(卡在local minima或者震荡不往前走);第二是针对分类任务时数据集收集不完整做出了解决;第三是初识卷积神经网络。接下来,我会更深入的了解分类器中的矛盾问题并学习如何解决,在CNN学习完后将进行案例代码实践。