计算机算法运用是极为常见的,在算法应用过程中有着很多内容和知识是需要掌握的,进行系统的学习是全面掌握知识点的关键所在,为大家带来走心整理——十个常用深度学习算法,希望对你有所帮助。
1、反向传播
反向传播是一种计算函数偏导数(或梯度)的简单方法,它的形式是函数组合(如神经网络)。在使用基于梯度的方法求解较优化问题(梯度下降只是其中之一)时,需要在每次迭代中计算函数梯度。
对于一个神经网络,其目标函数是组合形式。那么应该如何计算梯度呢?有2种常规方法:
(1)微分解析法。函数形式已知的情况下,只需要用链式法则(基础微积分)计算导数。
(2)有限差分法近似微分。这种方法运算量很大,因为函数评估的数量级是O(N),其中N是参数的个数。与微分解析法相比,这种方法运算量更大,但是在调试时,通常会使用有限差分验证反向传播的效果。
2、随机梯度下降
梯度下降的一个直观理解就是想象一条源自山顶的河流。这条河流会沿着山势的方向流向山麓的较低点,而这也正是梯度下降法的目标。
我们所期望的较理想的情况就是河流在到达较终目的地(较低点)之前不会停下。在机器学习中,这等价于我们已经找到了从初始点(山顶)开始行走的全局较小值(或较优值)。然而,可能由于地形原因,河流的路径中会出现很多坑洼,而这会使得河流停滞不前。在机器学习术语中,这种坑洼称为局部较优解,而这不是我们想要的结果。有很多方法可以解决局部较优问题。
因此,由于地形(即函数性质)的限制,梯度下降算法很容易卡在局部较小值。但是,如果能够找到一个特殊的山地形状(比如碗状,术语称作凸函数),那么算法总是能够找到较优点。在进行较优化时,遇到这些特殊的地形(凸函数)自然是较好的。另外,山顶初始位置(即函数的初始值)不同,较终到达山底的路径也完全不同。同样,不同的流速(即梯度下降算法的学习速率或步长)也会导致到达目的地的方式有差异。是否会陷入或避开一个坑洼(局部较小值),都会受到这两个因素的影响。
3、学习率衰减
调整随机梯度下降优化算法的学习速率可以提升性能并减少训练时间。这被称作学习率退火或自适应学习率。训练中较简单也较常用的学习率自适应方法就是逐渐降低学习率。在训练初期使用较大的学习率,可以对学习率进行大幅调整;在训练后期,降低学习率,以一个较小的速率更新权重。这种方法在早期可以学习获得较好的权重,并在后期对权重进行微调。
两个流行而简单的学习率衰减方法如下:
线性地逐步降低学习率
在特定时点大幅降低学习率
4、Dropout
拥有大量参数的深度神经网络是非常强大的机器学习系统。然而,在这样的网络中,过拟合是一个很严重的问题。而且大型网络的运行速度很慢,这就使得在测试阶段通过结合多个不同的大型神经网络的预测来解决过拟合问题是很困难的。Dropout方法可以解决这个问题。
其主要思想是,在训练过程中随机地从神经网络中删除单元(以及相应的连接),这样可以防止单元间的过度适应。训练过程中,在指数级不同“稀疏度”的网络中剔除样本。在测试阶段,很容易通过使用具有较小权重的单解开网络(single untwined network),将这些稀疏网络的预测结果求平均来进行近似。这能有效地避免过拟合,并且相对于其他正则化方法能得到更大的性能提升。Dropout技术已经被证明在计算机视觉、语音识别、文本分类和计算生物学等领域的有监督学习任务中能提升神经网络的性能,并在多个基准数据集中达到较的效果。
5、较大池
较大池是一种基于样本的离散化方法。目标是对输入表征(图像、隐藏层输出矩阵等)进行下采样,降低维度并且允许对子区域中的特征进行假设。
通过提供表征的抽象形式,这种方法可以在某种程度上解决过拟合问题。同样,它也通过减少学习参数的数目以及提供基本的内部表征转换不变性来减少计算量。较大池是通过将较大过滤器应用于通常不重叠的初始表征子区域来完成的。