一文搞懂机器学习中的优化方法!

推荐直接网站在线阅读:aicoting AI算法面试学习在线网站

在机器学习中,模型的训练本质上是一个优化问题:我们希望找到一组参数,使得模型在给定数据上的损失最小化(或目标函数最大化)。优化方法提供了一套系统的数学工具,用于高效、稳定地寻找最佳参数。

优化方法部分我们来看一下最经典的梯度下降,并且为大家简单的介绍一下凸优化和约束优化,前面说过这部分其实是研究生课程,不用担心,我写的是简单内容,大家应该都能看懂!

梯度下降及其变体

在机器学习中,梯度下降(Gradient Descent, GD)是优化模型参数最核心的方法。通过沿着损失函数的梯度反方向更新参数,梯度下降可以找到使损失最小的参数组合。

基本梯度下降(Batch Gradient Descent, BGD)

原理

BGD 每次使用整个训练集计算梯度,更新参数:

θt+1=θt−η∇θL(θt)

  • θt:当前参数
  • η:学习率
  • ∇θL(θt):损失函数对参数的梯度

优缺点

基本梯度下降方法梯度稳定,更新方向准确,收敛稳定,不容易跳出局部极小值(凸问题除外)。

但是大数据集计算成本高,不适合在线学习或实时训练。

应用场景

  • 小型数据集或需要精确优化的线性模型(如线性回归)

随机梯度下降(Stochastic Gradient Descent, SGD)

原理

SGD 每次只使用一个样本计算梯度:

  • :当前样本
  • :学习率

优缺点

随机梯度下降计算效率高,适合大规模数据,梯度噪声有助于跳出局部极小值。

但是梯度震荡,收敛不稳定,可能需要更多迭代次数。

应用场景

  • 在线学习、深度神经网络训练
  • 推荐系统或大规模数据流处理

Mini-batch 梯度下降

原理

  • 每次使用小批量样本(如 32 或 128 个)计算梯度
  • 参数更新公式:
  • m为批量大小

优缺点

Mini-batch 梯度下降兼顾了 SGD 的效率和 BGD 的稳定性,可利用 GPU 并行计算。

但是批量大小需要调优,批量过小可能震荡,过大降低效率。

应用场景

  • 深度学习训练中的默认选择
  • CNN、RNN 等大规模模型训练

动量法(Momentum)

原理

  • 引入"惯性",累积历史梯度,减少震荡,加快收敛:
  • 为动量系数(通常 0.9)

优缺点

动量法可以加快收敛速度,减少梯度方向震荡。

但是需要调节动量系数,可能对非凸损失函数过冲。

应用场景

  • 深度神经网络
  • CNN、RNN 等梯度震荡明显的网络

自适应学习率方法

1.AdaGrad 原理

  • 为每个参数使用不同的自适应学习率:
  • 为梯度平方累积
  • 优点:适合稀疏特征
  • 缺点:学习率随迭代不断衰减,可能过早停止

2.RMSProp 原理

  • 改进 AdaGrad,使用梯度平方的指数衰减平均:
  • 优点:解决 AdaGrad 学习率过快衰减问题

3.Adam(Adaptive Moment Estimation) 原理

  • 结合动量和自适应学习率
  • 优点:
  • 收敛快,适合大多数深度学习任务
  • 自动调节学习率
  • 缺点:
  • 对超参数敏感
  • 内存占用较高

应用场景

  • CNN、RNN、Transformer 等深度网络
  • 高维稀疏特征优化

学习率策略

1.固定学习率:简单但不灵活

2.学习率衰减:随训练轮数降低

3.循环学习率(Cyclic LR):周期性调整学习率,如从低到高再到低

4.自适应优化算法(Adam、RMSProp):自动调节学习率,无需手动调整

凸优化与约束优化

在机器学习中,优化问题无处不在。无论是训练线性回归、支持向量机,还是深度神经网络,核心目标都是通过优化方法找到最优参数。为了更高效地求解这些问题,凸优化(Convex Optimization)与约束优化(Constrained Optimization)提供了理论基础和方法支持。

凸优化(Convex Optimization)

定义

一个优化问题称为凸优化问题,如果其目标函数是凸函数,且约束条件是凸集合。形式化表示为:

  • f(θ)为凸函数,即满足:
  • 为凸集合 直观点理解就是凸函数形状像碗,任何两点连线都在函数曲面之上。凸优化问题只有一个全局最优点,没有局部极小值困扰。

添加图片注释,不超过 140 字(可选)

常见凸优化问题

  1. 线性回归:
  2. 支持向量机(SVM)凸优化:
  3. Lasso 回归(带 L1 正则):

凸优化求解方法包括梯度下降(Gradient Descent)、牛顿法(Newton's Method)、拟牛顿法(BFGS)、内点法(Interior Point Method),这些方法理论保证收敛到全局最优解,算法稳定高效。

约束优化(Constrained Optimization)

定义

约束优化问题是指优化目标受约束条件限制,形式化表示为:

  • :不等式约束
  • :等式约束 也就是优化的解必须同时满足"边界条件",比如权重非负、概率和为 1。

求解方法

  1. 拉格朗日乘子法(Lagrange Multiplier)
  • 构造拉格朗日函数:
  • 求解一阶条件(KKT 条件)得到最优解
  1. 投影梯度法(Projected Gradient Descent)
  • 每次梯度更新后,将参数投影到可行集合内:
  1. 罚函数法(Penalty Method)
  • 将约束转化为损失函数的一部分:

约束优化的应用场景包括支持向量机(保证分类间隔约束)、概率模型(保证概率和为 1)、资源分配问题(权重或预算限制)等等。

但是在许多机器学习问题中,凸优化和约束优化往往结合使用,SVM 是典型例子:凸目标函数 + 不等式约束,Lasso 回归也可看作带约束的凸优化问题(L1 范数约束)。

最新的文章都在公众号aicoting更新,别忘记关注哦!!!

相关推荐
千金裘换酒15 小时前
LeetCode 链表两数相加
算法·leetcode·链表
Sammyyyyy15 小时前
Rust 1.92.0 发布:Never Type 进一步稳定
java·算法·rust
alonewolf_9915 小时前
深入解析G1与ZGC垃圾收集器:原理、调优与选型指南
java·jvm·算法
数据大魔方16 小时前
【期货量化实战】螺纹钢量化交易指南:品种特性与策略实战(TqSdk完整方案)
python·算法·github·程序员创富·期货程序化·期货量化·交易策略实战
千金裘换酒16 小时前
LeetCode 删除链表的倒数第N个结点
算法·leetcode
SweetCode16 小时前
【无标题】
开发语言·c++·算法
shughui17 小时前
Python基础面试题:语言定位+数据类型+核心操作+算法实战(含代码实例)
开发语言·python·算法
王老师青少年编程17 小时前
信奥赛C++提高组csp-s之拓扑排序详解
c++·算法·拓扑排序·csp·信奥赛·csp-s·提高组
kaikaile199517 小时前
matlab计算流场
人工智能·算法·matlab