深度学习中的优化不同于一般优化算法

来源:互联网 发布:质量好的衣服淘宝店铺 编辑:程序博客网 时间:2024/05/17 02:55

一、经验风险最小化

1、机器学习中我们关注某些性能度量P,其定义在测试集上并且可能不可解。我们需要间接优化P。我们通过降低代价函数J(θ)来提高P。
通常代价函数可写为训练集上的平均,如:

J(θ)=E(x,y)p^dataL(f(x;θ),y)(1)

L是每个样本的损失函数,f是输入x所预测的输出,p^data是经验分布。
通常我们更希望最小化取自数据生成分布pdata的期望,而不是仅仅在有限训练集上的对应目标函数:
J(θ)=E(x,y)pdataL(f(x;θ),y)(2)


2、 机器学习算法的目标是降低(2)中的期望泛化误差,我们将之称为风险。我们注意这里强调它取自真实的潜在分布pdata。如果我们知道了真实分布,那么最小化风险变成了一个可以被优化算法解决的问题,遗憾的是我们不知道pdata
  我们的做法是用p^data代替pdata,去优化训练集上的期望误差,称之为最小化 经验风险

E(x,y)p^dataL(f(x;θ),y)=1mi=1mL(f(x(i);θ),y(i))(3)


3、 然而、经验风险最小化很容易过拟合,高容量的模型会记住训练集。在很多情况下,其并非可行。最有效的优化方法是基于梯度下降的,但是有的损失函数如 0-1 损失,没有有效的导数(要么为0,要么没定义)。这两个问题说明深度学习中我们很少用到经验风险最小化。反之,会使用稍有不同的方法,真正优化的目标会更加不同于我们希望优化的目标。


二、代理损失函数和提前终止

当我们关心的损失函数无法高效优化时,通常会选择去优化代理损失函数。例如:正确类别的负对数似然通常作为 0-1 损失的替代。负对数似然允许模型估计给定样本的类别的条件概率,如果该模型效果好,那么它能够输出期望最小分类误差所对应的类别。
机器学习用于训练的算法通常不会停止在局部极小点。通过优化代理损失函数,但是基于提前终止的收敛条件满足时停止。提前终止使用的是真实潜在损失函数,在过拟合发生前执行。


三、批量算法和小批量算法

与一般优化算法相比,机器学习算法的目标函数通常可以分解成训练样本上的求和。机器学习中的优化算法在计算参数的每一次更新时通常仅使用在整个代价函数中一部分项来估计代价函数的期望。
例如,最大似然估计问题可以在对数空间中分解成各个样本的总和:

θML=argmaxθi=1mlogpmodel(x(i),y(i);θ)(4)

最大化这个总和等价于最大化训练集在经验分布上的期望:
J(θ)=E(x,y)p^datalogpmodel(x,y;θ)(5)

准确计算这个期望代价很大,需要在每个样本上评估模型。实践中,随即采样少量样本,然后计算它们的均值。n个样本均值的标准差是σ/nσ是真实样本的标准差。分母表明使用更多样本计算梯度的回报是低于线性的。
另一个促使我们从小数目样本中获得梯度的统计估计的动机是训练集的冗余。最坏情况下,训练集的m个样本都是彼此的拷贝,我们只需要单个样本即可得出正确梯度。实践中,可能大量样本对梯度的贡献做了非常相似的贡献。
使用全部训练集的算法称作批量,使用单个样本的算法叫做随机或在线,介于之间的我们称之为小批量