反向传播和梯度消失

注:最近想把以前写的笔记拿出来整理一下,因为是直接从蚂蚁笔记复制粘贴过来的,所以格式上可能有些不规范,将就着看看吧,懒得再改了……

一、经验风险最小化

统计机器学习算法由模型、策略和算法三个要素构成,当选择了一种算法模型后,下一步就要考虑选择什么样的策略或准则来最优化模型

损失函数是机器学习中用于衡量模型一次预测结果好坏的目标函数

常用的损失函数有:
1、0-1损失函数:非凸函数,只关心预测值和真实值是否相同,没有关系他们之间的距离或误差,有很多不足
2、平方损失函数:线性回归模型常用的最优化目标函数,L(y,f(x))=(y-f(x))^2
3、对数损失函数:分类模型常用的最优化目标函数,L(y,f(x))=-lnp(y|x)
4、Hinge损失函数:最大间隔目标函数,是SVM采用的最优化目标函数,L(y,f(x))=max(0,1-y*f(x))
对于任意给定的损失函数,可以求得平均意义下的期望损失函数,期望损失函数也称为期望风险函数
Rexp(f)=E(L(y,f(x)))=∫L(y,f(x))P(x,y)dxdy

机器学习的目标就是使期望风险函数最小,但由于联合分布函数P(x,y)是不知道的,因此在实际应用中,通常的优化目标是经验风险最小化。
例如,给定训练数据集:T={(x1,y1),(x2,y2),(x3,y3),……(xn,yn)}
模型f(x)关于训练数据集T的经验风险函数为:Remp(f)=1/N*∑L(yi,f(xi))
由大数定理可知,当N趋于无穷大时,有lim Remp(f)=Rexp(f)
为防止过拟合,通常会引入正则项,这样经验风险函数就变为结构风险函数,记为:Rstruct(f)=1/N*∑L(yi,f(xi))+λ*π(θ)

因此,神经网络的最优化目标就是将结构风险函数最小化

对于多分类模型,损失函数一般采用对数损失,即为:L(yi,f(xi))=-lnp(yi|xi)=-lnf(xi)*yi

故该多分类模型最优化目标为:min -1/N*∑lnf(xi)yi+λπ(W,b)

二、深度学习训练难点

1、欠拟合——梯度消失

梯度为何会消失?——激活函数的原因。若激活函数为sigmoid,值域在[0,1],其导数为f’(x)=f(x)*(1-f(x)),值域在[0,1/4],意味着下一层的网络值都要比上一层减少1/4,可以想象梯度的值随着网络的加深呈指数级的递减趋势。当网络到达一定程度的深度之后,梯度可能消失,即网络中的参数不再得到更新。
为了防止梯度消失,通常采用以下方法:
1)采用更加合理的激活函数,如Relu、Maxout来代替传统的sigmiod
来详细谈谈Maxout激活函数。

2)Batch Normalization:是google在2015年提出来的一种改进SGD算法的优化策略,使得预输出的每一个维度先服从均值为0标准差为1的标准正态分布,再经过scale和shift操作,使得新的输出具有任意的均值和方差,这样梯度消失和非线性激活不再是一组矛盾的关系。
BN公式:f*(x*w+b)=α{f(x*w+b)-μ)/sqrt(α^2+ε)}+β,其中μ是均值,α是标准差

2、过拟合

过拟合是指模型训练时参数过多,导致模型对训练数据的预测很好而对测试数据的预测很差。
为了防止过拟合,通常采用以下方法:
1)正则化:L1正则化、L2正则化
2)Dropout:是Hinton在2014年提出,详细参见下下章。

猜你喜欢

转载自blog.csdn.net/qq_31425127/article/details/80569883
今日推荐