美文网首页深度学习的基本概念
深度模型中的优化(一)

深度模型中的优化(一)

作者: 梅八哥 | 来源:发表于2018-05-17 16:28 被阅读0次

    1、学习和纯优化的不同

            在大多数机器学习问题中,我们关注某些性能度量P,其定义于测试集上并且可能是不可解的,因此我们只是间接地优化P(比如说人脸的检测率啊,IOU啊都没法解)。机器学习算法的目标是降低期望泛化误差,这个数据量被称为风险。但由于很难知道数据的真实分布,而只能用经验分布来代替真实分布,也就只能去最小化经验风险

            因为对训练集上的所有样本计算代价函数的期望值得计算代价非常大,所以在深度学习中常用小批量随机方法(minibatch stochastic)来训练。这里,更大的批量会计算更精确的梯度估计,但是回报却是小于线性的。同时由于内存资源的限制,同样也很难选择非常大的批量。而泛化误差通常在批量大小为1时最好。

            小批量的随机抽取式非常重要的,从一组样本中计算出梯度期望的无偏估计要求这些样本是独立的,也希望两个连续的梯度估计是相互独立的,因此两个连续的小批量样本也应该是彼此独立的。也就是说在训练前,应该对样本顺序进行打乱。

    2、神经网络优化中的挑战

    2.1  病态

    病态问题一般被认为存在于神经网络训练过程中,病态体现在随机梯度下降会卡在某些情况,此时即使很小的更新步长也会增加代价函数。也就是说卡无法优化到代价函数更小的参数了。根据代价函数的二阶泰勒级数展开:

    展开中含有梯度的部分大于0时,梯度的病态会成为问题。为了判断病态是否不利于神经网络训练任务,我们可以监测平方梯度范数gg和gHg,在很多情况中,梯度范数不会在训练中显著缩小,但gHg的增长会超过一个数量级。其结果是尽管梯度很强,学习却会变得非常缓慢。

    2.2  局部极小值

    由于神经网络的不可辨认性,神经网络代价函数具有非常多甚至不可数无限多的局部极小值。然而,所有这些由于不可辨识性问题而产生的局部极小值都有相同的代价函数值,因此,这些局部极小值并非是非凸所带来的问题。但如果局部极小值相比全局最小点拥有很大的代价,局部极小值会带来很大的隐患。Goodfellow的猜想:对于足够大的神经网络而言,大部分局部极小值都具有很小的代价函数,我们能不能找到真正的全局最小点并不重要,而是需要在参数空间中找到一个代价很小(但不是最小)的点。

    2.3  高原、鞍点和其他平坦区域

    鞍点附近某些点比鞍点有更大的代价,而其他点则有更小的代价。局部极小值和鞍点的梯度都为0,Hessian矩阵在局部极小点处只有正特征值,在鞍点处同时具有正负特征值。

    2.4  悬崖和梯度爆炸

    多层神经网络通常存在像悬崖一样的斜率较大区域,这是由于几个较大的权重相乘导致的。遇到斜率极大的悬崖结构时,梯度更新会很大程度地改变参数值,通常会完全跳过这类悬崖结构。

    我们可以使用梯度截断来避免其严重的后果。当传统的梯度下降算法提议更新很大一步时,启发式梯度截断会干涉来减小步长。

    2.5  长期依赖

    当计算图变得极深时,神经网络优化算法会面临的另一个难题就是长期依赖问题,由于变深的结构使模型丧失了学习到先前信息的能力,让优化变得极其困难。例如,假如某个计算图中包含一条反复与矩阵W相乘的路径,那么t步以后

    就会出现梯度爆炸和梯度消失的问题。

    2.6  非精确梯度

    主要是在设计损失函数的时候采用比真实损失函数更容易估计的代理损失函数来避免这个问题。

    2.7  局部和全局结构间的弱对应

    现在主要的方法都是基于局部较小更新,在求解具有困难全局结构的问题时,可能在局部改进很大,但并没有指向代价低得多的遥远区域,那么即使在局部克服了所有的困难,但仍然表现不佳。同时,大多数优化研究的难点集中于训练是否找到了全局最小点、局部极小点或者鞍点,但在实践中神经网络并不会到达任何一种临界点。

    现有的研究方法在解决困难全局结构时,通常旨在寻求良好的初始点,而不是开发非局部范围的更新算法。

    相关文章

      网友评论

        本文标题:深度模型中的优化(一)

        本文链接:https://www.haomeiwen.com/subject/etbbdftx.html