【NLP 11、Adam优化器】

祝你先于春天,

翻过此间铮铮山峦

------ 24.12.8

一、Adam优化器的基本概念

定义

Adam(Adaptive Moment Estimation)是一种基于梯度的优化算法,用于更新神经网络等机器学习模型中的参数。它结合了动量法(Momentum)和自适应学习率方法(如Adagrad和RMSProp)的优点,能够在训练过程中自适应地调整每个参数的学习率,并且利用动量来加速收敛和抑制震荡。


应用场景

广泛应用于深度学习中的各种任务,包括但不限于图像识别、自然语言处理、语音识别等。

例如,在训练卷积神经网络(CNN)进行图像分类任务时,或者在训练循环神经网络(RNN)和Transformer架构的模型用于自然语言处理任务时,Adam优化器都能有效地更新模型参数,使模型更快地收敛并获得较好的性能。


二、Adam优势:

Adam 优化算法应用在非凸优化问题中所获得的优势:

实现简单,计算高效,对内存需求少

参数的更新不受梯度的伸缩变换影响

超参数具有很好的解释性,且通常无需调整或仅需很少的微调

更新的步长能够被限制在大致的范围内(初始学习率)

能自然地实现步长退火过程(自动调整学习率)

很适合应用于大规模的数据及参数的场景

适用于不稳定目标函数

适用于梯度稀疏或梯度存在很大噪声的问题


三、基本机制

Adam 算法和传统的随机梯度下降不同。

随机梯度下降保持单一的学习率(即 alpha)更新所有的权重,学习率在训练过程中并不会改变。

而 Adam 通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率。

记录前几次梯度的值,然后第一层进行求均值,第二层进行求均值的平方,再与当下轮次的梯度进行复合,得到这一轮的loss值,这个目的就是结合一些历史数据,然后自动调节当下轮次模型参数的学习率,对于不平稳的梯度进行更新


四、手动实现Adam算法

python 复制代码
#adam梯度更新
def diy_adam(grad, weight):
    #参数应当放在外面,此处为保持后方代码整洁简单实现一步
    alpha = 1e-3  #学习率
    beta1 = 0.9   #超参数
    beta2 = 0.999 #超参数
    eps = 1e-8    #超参数
    t = 0         #初始化
    mt = 0        #初始化
    vt = 0        #初始化
    #开始计算
    t = t + 1
    gt = grad
    mt = beta1 * mt + (1 - beta1) * gt
    vt = beta2 * vt + (1 - beta2) * gt ** 2
    mth = mt / (1 - beta1 ** t)
    vth = vt / (1 - beta2 ** t)
    weight = weight - (alpha * mth/ (np.sqrt(vth) + eps))
    return weight
相关推荐
慢云智慧空间几秒前
空间智能与计算机视觉的本质差异:不止于识别,更是空间决策能力
人工智能·python·计算机视觉
java1234_小锋几秒前
YOLO26 计算机视觉 - YOLO26 模型架构解析
人工智能·yolo·计算机视觉·机器视觉·yolo26
weixin_446260851 分钟前
LLM数据智能体的追踪完整性:真实系统中可审计结构化推理的愿景
人工智能
阿龙AI日记3 分钟前
快速入门深度学习01:神经元和神经网络
人工智能·深度学习·神经网络
回眸&啤酒鸭4 分钟前
【回眸】AI新鲜事——Ox-Alpha 智能决策与场景化应用指南
人工智能
千里码aicood5 分钟前
基于CNN的音乐推荐系统设计与实现
人工智能·神经网络·cnn
2601_9662411613 分钟前
AI录音修音工具有哪些 录音修音用什么工具 AI音乐编辑器怎么选 录音修音一体的软件有哪些
人工智能
电商API_1800790524714 分钟前
自动化获取淘宝评论数据技术分享之API调用示例
大数据·运维·人工智能·自动化·网络爬虫
I Promise3416 分钟前
Fast‑BEV 完整实战教程(智驾工程视角)
深度学习·神经网络·目标检测·目标跟踪·自动驾驶
福建佰胜张工18 分钟前
西门子 ULTRAMAT23 分析仪 7MB2337‑0NH10‑3PW1 原理、调试、故障处理与现场运维全记录
大数据·运维·人工智能·自动化