神经网络的工程基础(三)——更优化的最优化算法

相关说明

这篇文章的大部分内容参考自我的新书《解构大语言模型:从线性回归到通用人工智能》,欢迎有兴趣的读者多多支持。

本文将讨论更优化的最优化问题算法。

关于大语言模型的内容,推荐参考这个专栏

内容大纲

一、概述

回顾一下随机梯度下降法的设计思路。虽然这个方法放弃了严格的数学严谨性,只采用小批量数据的平均梯度来近似数学上严格定义的梯度,但在实际应用中取得了显著的效果。在学术界,这种算法被称为标准随机梯度下降法(Vanilla SGD)。事实上,我们可以延续这一思路,在标准随机梯度下降法的基础上对梯度进行更深入的处理,以进一步提升算法的性能,如图1所示。


图1

二、算法细节

图1展示了3种不同的梯度深加工的思路,分别是直接使用、动量因素和梯度"归一化"。

  1. 直接使用:它代表了标准随机梯度下降法的基本形式,即直接使用小批量数据的平均梯度来更新模型参数。
  2. 动量因素:在物理世界中,动量是指物体在运动方向上保持运动的趋势。类比到优化中,动量随机梯度下降法引入了动量项,允许模型参数在更新时累积之前的梯度信息(具体的公式如图2所示)。这种方法有助于跳出局部最小值,加速收敛到全局最小值,代表性算法包括Momentum SGD和Nesterov Momentum。
  3. 梯度"归一化":之前的方法都是全局地使用相同的学习速率,这可能导致不同参数的收敛速度不一致。为了解决这个问题,可以在算法中直接对梯度做类似归一化的处理,从而更好地平衡各个参数的更新效率。这类算法的代表有Adagrad和RMSprop。


图2

将动量因素和梯度归一化这两种优化思路相结合,就得到了一种强大的优化算法------Adam(Adaptive Moment Estimation)。Adam优化算法在实际应用中十分常见,尤其在深度学习领域广泛应用。它的独特之处在于综合了动量因素和梯度归一化的思想,以及自适应地调整学习速率和动量参数,从而在模型训练过程中更高效地更新模型参数。然而,该算法的细节相当烦琐,在此不深入讨论。

相关推荐
曦月逸霜26 分钟前
第34次CCF-CSP认证真题解析(目标300分做法)
数据结构·c++·算法
红衣小蛇妖1 小时前
神经网络-Day44
人工智能·深度学习·神经网络
海的诗篇_2 小时前
移除元素-JavaScript【算法学习day.04】
javascript·学习·算法
大写-凌祁2 小时前
论文阅读:HySCDG生成式数据处理流程
论文阅读·人工智能·笔记·python·机器学习
自动驾驶小卡2 小时前
A*算法实现原理以及实现步骤(C++)
算法
Unpredictable2222 小时前
【VINS-Mono算法深度解析:边缘化策略、初始化与关键技术】
c++·笔记·算法·ubuntu·计算机视觉
编程绿豆侠2 小时前
力扣HOT100之多维动态规划:1143. 最长公共子序列
算法·leetcode·动态规划
柯南二号2 小时前
深入理解 Agent 与 LLM 的区别:从智能体到语言模型
人工智能·机器学习·llm·agent
珂朵莉MM2 小时前
2021 RoboCom 世界机器人开发者大赛-高职组(初赛)解题报告 | 珂学家
java·开发语言·人工智能·算法·职场和发展·机器人