神经网络常见名词小结

作者:u013599693

若发现有违反侵权地方,请通知我删除!谢谢

Preprocess_data(数据预处理)

数据预处理具有很重要的意义,由于直接得到的数据具有很大差异性,数据的归一化有利于算法达到最优的效果。不同的数据具有不同的数据特性,其预处理技术也不一样。以图片为例,会对图像进行平均归一化处理。常用的有mean image(图像均值法)和mean channel(通道均值法)。Mean image: 对所有图片求平均值得到mean image,再利用每张图片减去均值图像进行中心化处理。优点:图片整体数据归一化。缺点:当图片数量过大,存在溢出的风险,且计算量较大。(AlexNet 采用过此方法)Mean channel:每张图片的三通道分别求通道平均值得到一个(x’,y’,z’),使该图片每个像素点减去该值得到一副处理后的图像。优点:计算量小,不存在计算溢出,图像处理主流预处理方法。缺点:整体归一化不如Mean image,但对实验结果几乎没有影响。(VGGNet 采用)。


Weights and Bisas Initialization(权值的初始化)

权值初始化的好坏直接影响到模型训练的好坏。一个坏的权值设置可能会导致网络不收敛。权值设置是一个经验问题,一般来说,权值的设定不能太大,太大容易导致参数爆炸(深层网络时层层累加最后结果会boom),这个问题在sigmoid,tan(h(x))等激活函数中还会导致网络不收敛。详细参考激活函数。权值也不能设置全相同或全0。这样会导致输出的网络中每个神经元得到相同的梯度。常规的做法是采用Xavier init,即通常采用(0,1)之间较小的元素来初始化权值。 权值矩阵通常为: W = 0.01*np.random.randn(D,H);其中randn()表示产生标准的正太分布随机数,D,H为矩阵表示矩阵的大小D。这样使得每个神经元的权重向量被初始化为多维的高斯随机抽样向量,所以,神经元在输入空间中指向具有随机性,具有更好的鲁棒性。当然这不是最好的权值初始化方法,在不同的学习特征和激活函数中,权值的初始化方法也不同。偏置矩阵b的设置,在一般的过程设置中经常把b初始化为0.原因是在权重初始化中提供了权重的对称性。但是在人们使用relu激活函数,为了确保不使大量的神经元初始化后输出为0经常将b初始化为0.01。


activeFunction(激活函数)从网络结构方面来讲,激活函数的作用是引入非线性的作用来使数据可分,没有激活函数网络仅是一个线性分类器。从数据角度来讲:激活函数的作用是把数据映射到高维的空间中进而使数据变得线性可分。激活函数的目的不是为了想去激活什么,重点在函数,函数即映射,而是如何把激活的神经元的特征通过函数的特征把其映射出来(保留需要的特征)它是神经元处理非线性可分数据的关键。下图是神经元基本结构。设输入为矩阵X(x0,x1,x2…xn),权值矩阵为W(w0,w1,w2….wn),所以神经元本体的输入值为矩阵


经过激活函数f得到其输出值为f(T)。


  再简单举个实例来了解下激活函数的功能,如下图二所示,下面数据不能线性可分。为了能把它分开,设计一个激活函数其中a是激活阈值。同时设计一个网络如图3所示。


分别将A,B,C,D四个点的坐标输入进去,我们可以得到如下的表

因此,从第三层的输入,这样我们可以在空间上将其表示出来。从图4可以看到,我们很容易找出一个平面将ABCD分为BC 和 AD两部分。从这个角度看激活函数是一种映射,是非线性的因素变得线性可分。

从第三层的输出来看,这就是所说的分类了,bc分为0类,ad分为1类,其在平面上的表示如图所示。从这方面可以看出,激活函数是提供非线性因素。使分离面拟合分类数据。


下面介绍几种经典的激活函数:


此函数值域处于(0,1)之间,并不中心对称。且两段趋于平滑,函数处于饱和状态。当值处于两段时,梯度趋于0,很难下降。会造成梯度消失。由于映射趋于过于饱和,导致信息会丢失。

2.改进的Sigmoid:tan(h(x)),这个函数处于(-1,1)之间,且中心对称。但是仍旧没有解决饱和问题,收敛速度较慢。

3.Relu:较常使用的激活函数,也是现在主流的激活函数。其数学表达式为:f(x) = max(0,x);如下图所示:



优点:

收敛较快,只有梯度为0和1两种情况;在正半轴方向没有饱和区域。梯度不会消失。

缺点:

不是中心对称,不是理想的模型,输出均值不接近零。

2.    前向传播时没有被激活的神经元在bp时,它会被kill掉。不会进行参数的调整。

为了修正Relu失活问题,减少神经元在训练中不被激活的情况,有设计出了Leaky-Relu和PRelu,前者是后者的特例,PRelu 的数学表达式如下。

4.PRelu : f(x) =max(ax,x); 其中a处于(0,1),当a = 0.01时是leakyRelu.。

其中不同层之间的a可以不同,a的值也是出于动态更新的。其更新公式如下所示:

其中u为动量,e为学习率

不断更新a,会把a推向于0。但有实验表明,PRelu和Relu的实验结果几乎没有啥影响。

5.ELU 这更是一个比较神奇的激活函数。其激活函数数学表达式如下所示:


其函数图像:

图 ELU激活函数图

右侧现行部分是ELU能缓解梯度消失,左侧软饱和让ELU对输入变换和噪声变得更有鲁棒性,ELU的输出均值为0.接近于理想模型,收敛更快。

以上只是提出的集中较为常见的激活函数,其它激活函数还有maxout,cRelu等等。激活函数的选取对网络是否收敛有着重大影响,因此要慎重选择。


Gradient descent(梯度下降)

梯度下降是一个最优化算法,梯度下降目的是寻找函数的极小值点。能找到极小值点的原因是负梯度方向是函数值下降最快的方向(泰勒公式展开),这里涉及到一个求凸函数的最小解的问题。值得注意的是,并非所有的数据集我们都能求得最优解,即达到损失函数最少的那个解。现在的梯度下降方法只是在求一个最优化的近似解。且不断提升其下降收敛的速度。这里介绍几种常见的梯度下降的方法。

Batch gradient descent(整体梯度下降):每一次参数的更新都要利用全部的训练数据集来计算损失函数的梯度。当数据样本够大时,整体梯度下降会变得十分缓慢。

Stochastic gradient descent(随机梯度下降):SGD,它在执行梯度下降时只随机从训练样本中挑选部分来参与到损失函数的梯度计算中。这是一种抽样思想,以部分代替整体。但可能会造成造成局部最优的解。其数学表达式如下:

 其中 u为学习率(learning_rate),为在t时刻的梯度, 为调整的方向大小,为t时刻的向量。
 注意:针对SGD的局部最优问题其实在拥有大量数据集的网络中中这个问题不会出现的很明显。梯度图出现的将不再是沟壑,而更像是一个碗,虽然这个碗的底部并非是圆滑的,存在多个局部最优值,但其得到的最后的损失函数值是相近的。因此局部最优影响不大。

Momentum(动量法):SGD存在一个缺点,更新的方向是完全依赖于当前的选取的样本batch的方向。因此会存在反复的震荡,Momentum是对SGD的算法的一个优化,即在上一次梯度下降的方向基础上进行梯度方向的微调整。其数学表达式如下所示。

其中mu是一个超参数,一般设置为0.9左右, 为t时刻的梯度方向,d 为此刻batch的梯度方向。这个表达式可以用物理来理解:假设有一个钟摆,其运动有惯性,来回摆动,但是在摆动过程中存在有摩擦力。其摩擦系数为mu,同时为了使其停下来,对其施加一个的力,其造成的加速度为learning_rate。所以我们可以理解这是在最初选取的样本的方向上增加一个便宜的加速度用来修正其下降方向。

此外还存在AdaGrad, AdaDelta ,牛顿法,RMSProp等梯度下降的方法。

Dropout

Dropout的思想是在每层的反馈中随机的灭活一些神经元参与本轮的权值参数的调整。这样做的目的是防止过拟合。实验者在研究中发现,表示一个图像的特征其实并不需要所有的神经元来表示,同时本轮灭活一些神经元参与进梯度的求和可以减少网络对本张图像特征的依赖,进而可以学习更多的特征来表示目标物体。换个角度看,我们也可以发现随机灭活一些神经元相当于对每张图片构建了一个各自的小的学习网络。我们的网络其实就是有这些小的网络组成的大的网络。Dropout的使用大大的提高了网络的泛化性和鲁棒性。


Batch Normalization

思想:在网络的每一层输入的时候,又插入了一个归一化层(均值为0,方差为1),也就是先做一个归一化处理,然后再进入网络的下一层。

但这样在A中所学习到的特征,被强制归一化处理,标准差限制在1内后被破坏,于是为了能保留所在本层所学习到的特征,作者引入了可学习参数 ,其公式如下所示:


这样每个神经元都存在一对参数。其中

Batch Normalization的前向传导公式就是:


BN处理后的层,在training过程中存在mini-batch的概念,但是在测试阶段我们一般只有一个样本,在测试样本中,前向传导的标准差和均值呀从哪里选取。其实网络训练完之后,标准差和方差都是固定的。我们可以采用这些数值来作为测试样本所需要的均值、标准差,于是最后测试阶段的u和σ 计算公式如下:


简单对于均值来说直接计算所有batch u值的平均值;然后对于标准偏差采用每个batch σB的无偏估计。


Liner Classifier  Softmax /svm

Svm和softmax分类器的划分其实是根据其损失函数的不同来划分的。采用折叶函数作为损失函数的成为SVM,使用交叉熵损失作为分类器的成为softmax分类器。

Svm:svm获取每个label的评分值:其评分计算公式为:


并且希望正确分类的label评分值要大于其它类评分至少一个Delta。其损失函数的表达式如下 :


其中:是第i类的损失值,是正确分类的第i类,j是错分为 类的第j个分错的样本; 分别表示其错误样本和正确样本的得分(正确样本中的最高,平均,最低得分);是超参数,可以设置,这里假设为0;

在上述函数中,我们可以得到,当分错类的样本的评分小于正确样本的评分距离小于 时,SVM不对予理会,其损失为零。当分错类的样本的得分 大于正确分类样本得分 的评分距离大于或等于 时,其损失为才会对其处理。


图 支持向量机损失函数处理图

注意:这里正对每一个类的评分标准都是不一样的。不同的类的划分其W是不一样的。得分最高只是在该类分类标准下才实现的。如下图所示(图来自cs231n lessons)。

图多SVM分类示意图

当存在多个分类是时,其损失函数如下所示:


在这里我们要考虑一个问题,肯定存在多个不同的W使得分类函数的损失最小,同时对于线性分类器来说,线性扩大其w是不会影响其分类结果的,因此通过添加正则化惩罚R(w),可以限制W的大小。 其表达式如下。


这里R(w)函数的设置可以根据实际情况来,不过实验表明一般设置为w平方较好。所以完整的多svm分类器的损失函数为:


Softmax: 线性分类器,其思想是最大化每类分类的概率,详细推导过程可以查看:http://blog.csdn.net/statdm/article/details/7585153中线性分类器。这里面涉及到信息论和概率论的知识。

其中是对图片给予其i标签的正确概率。其目标好似在调整参数W,使得正确分类对应的概率最大化。

交叉熵损失函数:

其中和上面的是一样的,也类似。这里最大化概率对数,则要最小化其负的概率对数。

总结:SVM注重局部的点,对分类边界的数据较为敏感。而Softmax分类更加注重整体,且能提供这个标记属于每一类的直观概率性。

Regress/classifer

回归问题和分类问题在我看来是同一个问题的不同方面,各自的侧重点不同。这两个是相似的。且在一定情况下可以将回归问题转换成分类问题。


图 回归和分类图

分类问题:即将目标打上几类标签,其值一般是离散的[1]。如上图所示。其中的点划分为蓝色和红色的,其值离散的为蓝红。从其网络结构上讲,分类问题一般在网络的最后一层会添加分类器如softmax,svm等。其最终的结果只有一个,对或错,没有相近的概念。

回归问题:说回归,不如说是数据拟合更直观。回归是利用已有的数据进而找去其数据背后的规律(函数),回归分为线性回归和非线性回归。回归是输出的结果是一个连续的值。上图所示的直线l是一个线性回归,大致的拟合数据点。其值是一种逼近的预测。在其最后的网络结构中是不需要添加分类器的。其可以用来做目标检测,天气,房价预测等。


参考文献:

[1] Yann LeCun, Yoshua Bengio,Geoffrey Hinton. Deep learning [J].Nature 521,436-444(28 May 2015)

[2] Ioffe S, Szegedy C. Batch Normalization: Accelerating Deep NetworkTraining by Reducing Internal Covariate Shift[J]. Computer Science, 2015.

[3] Fei-Fei Li, Andrej Karpathy,Justin Johnson, etc. CS231n: Convolutional Neural Networks forVisual Recognition[V].2015

[4] Sebastian Ruder. An overview of gradient descentoptimization algorithms [Blog].

http://sebastianruder.com/optimizing-gradient-descent/index.html#fn:16 ,2015

还有csdn,知乎一些论坛博客。

 




发表评论

0个评论

我要留言×

技术领域:

我要留言×

留言成功,我们将在审核后加至投票列表中!

提示x

机器翻译知识库已成功保存至我的图谱现在你可以用它来管理自己的知识内容了

删除图谱提示×

你保存在该图谱下的知识内容也会被删除,建议你先将内容移到其他图谱中。你确定要删除知识图谱及其内容吗?

删除节点提示×

无法删除该知识节点,因该节点下仍保存有相关知识内容!

删除节点提示×

你确定要删除该知识节点吗?