【深度学习】1、优化方法原理与实践对比——非常详细与全面(二)

简介: 【深度学习】1、优化方法原理与实践对比——非常详细与全面(二)

6、Adadelta


   Adadelta考虑了一些更新量“单位”的问题。为了让“单位”匹配,Adadelta选择在分子上再增加一个项目,于是方法的概念公式变成:

f616ca74012ba38f8e23f12dbc91c13e.png

其中RMS表示Root Mean Square,也就是“均方根”的意思。分母中的RMS[g]t展开与RMSProp相同:

395b59216f11a8c81f39b7e2deaa16b7.png

分子采取类似的方法,展开后可以得:

ddc3bf306d0531de1f52a82a7990036f.png

426a10f9506ce9c70c2ea330fddb3f9e.jpg


7、Adam


   Adam算法的全称是Adaptive Moment Estimation,这种方法结合了上面提到的两类算法:基于动量的算法和基于自适应的算法。基于动量的算法有动量法和NAG法,这两种方法都基于历史梯度信息进行参数更新。基于自适应学习率的算法有Adagrad、RMSProp、Adadelta,它们通过计算梯度的累计信息量来调整不同参数的更新量。Adam算法记录了梯度的一阶矩(梯度的期望)和二阶矩(梯度平方的期望):

077119e8de05d58487811240482690f4.png

为了确保两个梯度累积量能够良好的估计梯度的一阶矩和二阶矩,两个累积量还需要乘以一个偏置纠正的系数:

bd2b02d89f0849be328ef77c3dbeb086.png

然后再使用两个累积量进行参数更新:

e5579d7b924c0e322079c0dffeb1421b.png

完整伪代码:

60b9e0722cc09b030a1c498fb6107926.jpg


8、AdaMax


   AdaMax算法主要是针对Adam算法进行了修改,而修改的位置在二阶矩v这里。AdaMax将二阶矩修改为无穷矩,这样在数值上更加稳定:

5ab7666dbfa61fdc31fc2fbe514a9f78.png

将vt替换为ut后,最终的更新变为:

ff2096f5c5aaf53b7c35ff8b6fa9c818.png

此时的无穷矩估计不再是有偏的,因此也不需要再做纠正。最终的伪代码如下:

04bc39616e69fd2216683962900bd596.jpg


9、Nadam


   与AdaMax具有类似的思想,Nadam算法修改的是一阶矩的估计值,将Nesterov算法和Adam算法的结合,形成了Nadam(Nesterov-Accelerated Adaptive Moment Estimate)算法。

NAG算法的计算公式为:

e82c7bbe126adb1cdac684ef2b54155f.png

Adam更新的公式可以展开为:

可以看出,公式形式和NAG很接近,为了体现Nesterov的效果,只需将公式中的mt-1修改为mt即可。


10、优化算法的使用


   优化算法分为两类:其中一类是以动量为核心的算法;另一类以自适应为核心的算法


   以动量为核心的算法更容易在山谷的优化曲面中找到最优解,如果优化曲面在某个地方振荡严重,而在另外一些方面趋势明显,那么基于动量的算法能够把握这种趋势,让又趋势的方向累积能量,同时让振荡的方向相互抵消;基于动量的方法如果遇到趋势不明显的情况,那么优化参数的路径必然会存在一些绕弯的情况;


   以自适应为核心的算法容易在各种场景下找到平衡,对于梯度较大的一些场景,它会适当地减少更新量;而对于梯度较小的一些场景,它会适当增加更新量,所以实际上是对优化做了一定的折中。当然,对于一些复杂且难以优化的问题来说,这样的限制实际上阻碍了优化的快速进行。


   当然,理论上结合两者的算法效果应该更好,因此Adam以及它的一些改进算法的效果通常不错,但是其计算量也会增加,这一点在使用时要权衡考虑。


11、训练笔记


(1)对于稀疏数据,尽量使用学习率可自适应的优化方法,不用手动调节,而且最好采用默认值;


(2)SGD通常训练时间更长,但是在好的初始化和学习率训练方案下,结果更加可靠;


(3)如果在意更快收敛,并且需要训练较复杂的网络时,尽量使用自适应的优化方法;


(4)Adadelta、RMSProp、Adam是比较相近的算法,在相似的情况下表现差不多;


(5)在想使用动量的RMSProp或者Adam的地方,大多可以使用Nadam取得更好的效果。


优化实践对比

执行结果:

相关文章
|
29天前
|
机器学习/深度学习 传感器 数据采集
深度学习在故障检测中的应用:从理论到实践
深度学习在故障检测中的应用:从理论到实践
126 5
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的原理与应用:开启智能时代的大门
深度学习的原理与应用:开启智能时代的大门
103 16
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
揭秘人工智能:深度学习的奥秘与实践
在本文中,我们将深入浅出地探索深度学习的神秘面纱。从基础概念到实际应用,你将获得一份简明扼要的指南,助你理解并运用这一前沿技术。我们避开复杂的数学公式和冗长的论述,以直观的方式呈现深度学习的核心原理和应用实例。无论你是技术新手还是有经验的开发者,这篇文章都将为你打开一扇通往人工智能新世界的大门。
|
1月前
|
机器学习/深度学习 算法 TensorFlow
深度学习中的自编码器:从理论到实践
在这篇文章中,我们将深入探讨深度学习的一个重要分支——自编码器。自编码器是一种无监督学习算法,它可以学习数据的有效表示。我们将首先介绍自编码器的基本概念和工作原理,然后通过一个简单的Python代码示例来展示如何实现一个基本的自编码器。最后,我们将讨论自编码器的一些变体,如稀疏自编码器和降噪自编码器,以及它们在实际应用中的优势。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
揭秘AI:深度学习的奥秘与实践
本文将深入浅出地探讨人工智能中的一个重要分支——深度学习。我们将从基础概念出发,逐步揭示深度学习的原理和工作机制。通过生动的比喻和实际代码示例,本文旨在帮助初学者理解并应用深度学习技术,开启AI之旅。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
深入浅出深度学习:从理论到实践的探索之旅
在人工智能的璀璨星空中,深度学习如同一颗耀眼的新星,以其强大的数据处理能力引领着技术革新的浪潮。本文将带您走进深度学习的核心概念,揭示其背后的数学原理,并通过实际案例展示如何应用深度学习模型解决现实世界的问题。无论您是初学者还是有一定基础的开发者,这篇文章都将为您提供宝贵的知识和启发。
55 5
|
1月前
|
机器学习/深度学习 存储 人工智能
探索深度学习的奥秘:从理论到实践的技术感悟
本文深入探讨了深度学习技术的核心原理、发展历程以及在实际应用中的体验与挑战。不同于常规摘要,本文旨在通过作者个人的技术实践经历,为读者揭示深度学习领域的复杂性与魅力,同时提供一些实用的技术见解和解决策略。
31 0
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的注意力机制:原理、应用与未来展望
探索深度学习中的注意力机制:原理、应用与未来展望
|
21天前
|
机器学习/深度学习 网络架构 计算机视觉
深度学习在图像识别中的应用与挑战
【10月更文挑战第21天】 本文探讨了深度学习技术在图像识别领域的应用,并分析了当前面临的主要挑战。通过研究卷积神经网络(CNN)的结构和原理,本文展示了深度学习如何提高图像识别的准确性和效率。同时,本文也讨论了数据不平衡、过拟合、计算资源限制等问题,并提出了相应的解决策略。
79 19
|
21天前
|
机器学习/深度学习 传感器 人工智能
探索深度学习在图像识别中的应用与挑战
【10月更文挑战第21天】 本文深入探讨了深度学习技术在图像识别领域的应用,并分析了当前面临的主要挑战。通过介绍卷积神经网络(CNN)的基本原理和架构设计,阐述了深度学习如何有效地从图像数据中提取特征,并在多个领域实现突破性进展。同时,文章也指出了训练深度模型时常见的过拟合问题、数据不平衡以及计算资源需求高等挑战,并提出了相应的解决策略。
74 7