别只会调包跑模型!一文讲透大模型训练底层的“递推、递归、三明治”三重逻辑

很多人学习机器学习,只懂"调模型、跑训练",却不懂大模型训练背后的三层底层数学逻辑:递推负责运行、递归负责拆解、三明治定理负责收敛兜底。

三者各司其职,构成深度学习迭代优化的完整理论骨架。本文结合梯度下降训练逻辑,一次性彻底讲透三者区别与内在关联,帮你跳出"只会调参、不懂原理"的浅层认知。

一、 递推:梯度下降的真实运行逻辑(负责"怎么跑")

一句话定义递推:走一步、算一步,步步有确定值,向前推进,无回溯。

机器学习最核心的梯度下降,在数学本质上就是一个一阶递推公式(纯文本形式):

text 复制代码
// 梯度下降的一阶递推公式

θ(k+1) = θ(k) - η * ∇L(θ(k))

// 参数说明:

// θ(k) : 第 k 步的模型参数

// η : 学习率

// ∇L : 损失函数 L 在 θ(k) 处的梯度

递推的特征非常纯粹:

  1. 不需要拆解子问题、不需要钻到最底层、不需要存栈回溯。

  2. 只要拿到当前第 k 步的参数,就能直接算出第 k+1 步的新参数。

  3. 训练全过程是典型的线性向前迭代:初始化参数 → 算梯度 → 更新参数 → 再算梯度 → 持续逼近最优解。

所有深度学习框架、所有大模型预训练,在工程层面的底层执行全部是递推迭代。递推的核心价值是「可落地、可循环、可数值计算」。GPU能跑模型,本质就是GPU极其擅长高速执行这种大规模并发的"递推循环"。

二、 递归:层层拆解到底,触底再返回(负责"怎么拆")

一句话定义递归:先向下拆解到最底层基线,拿到基础值,再逐层回溯计算。

递推和递归的最大区别在于:递推是向前走,递归是向下钻。

递归的逻辑是:

问题不能直接求解,必须拆成同结构的子问题,一直拆到最小基线条件出现,产生唯一确定值,再从底向上回代得到结果。

在机器学习中,递归极少用于梯度下降的训练主流程,它只用于特定结构:

· 递归神经网络**(RNN)

· 树模型

· 图网络

· 动态规划优化

为什么大模型主训练不用递归?

原因很简单:递归需要栈空间、需要回溯、计算链路太深,无法做大规模并行迭代。递归深度一旦过深,极易导致栈溢出**(Stack Overflow)。

📌 极简区分:

· 递推:一步一更新,持续向前跑(训练主逻辑)

· 递归:一拆再拆解,触底再回溯(结构拆解逻辑)

三、 三明治定理**:大模型收敛的隐形数学兜底(负责"收不收得住")

很多人不知道:梯度下降在工程上能收敛、大模型能在一定程度上拟合,其底层的理论证明高度依赖于三明治(夹逼)定理的思想。

三明治(夹逼)定理核心:

若 g(x) <= f(x) <= h(x),且上下界的极限相同,则中间函数 f(x) 必然收敛。

放到机器学习场景,逻辑完美契合:

我们无法直接精准求解损失函数迭代序列 L(θ(k)) 的极限。真实模型的损失曲线波动复杂、非线性、极难直接分析。

数学家和优化理论的通用做法就是"三明治夹逼":

  1. 构造一个可控下界序列 g(θ(k))

  2. 构造一个可控上界序列 h(θ(k))

  3. 证明上下界在迭代中持续收敛到同一数值(例如零)

  4. 推出:中间的真实损失序列 L(θ(k)) 必须跟着收敛。

换言之:

大模型看似自由拟合、梯度自由更新,但本质上是被上下界"夹住",被数学锁死在收敛区间内。

注:在非凸优化(如大模型训练)中,这通常用于证明梯度会趋近于零(到达局部极小值)或保证在特定约束下不会发生梯度爆炸**。它是收敛性分析的"数学保险丝"。

梯度下降是递推运行,三明治定理是收敛保障。

四、 三者完整闭环(机器学习终极底层逻辑)

  1. 递推:负责「怎么跑」

梯度下降迭代更新,是模型训练的工程本体,决定了模型更新的速度与方向。

  1. 递归:负责「怎么拆」

复杂结构问题拆解(如RNN、决策树),不参与主训练迭代,负责处理模型的局部子结构。

  1. 三明治定理:负责「收不收得住」

给递推迭代提供收敛理论兜底,保证无限迭代不会发散、不会失控。

结语

用最通俗的话总结:

递归是往下挖,递推是往前走,三明治是左右夹住、锁定终点。

大模型之所以能训练成功,绝不仅仅是靠算力暴力堆砌,而是三层数学逻辑的完美配合:

递推实现持续迭代优化,递归处理复杂子结构,三明治定理提供全局收敛稳定的理论支撑。

看懂这三层,才算真正看懂机器学习的底层骨架。尤其是当你遇到模型Loss不下降、梯度爆炸、或者网络结构设计瓶颈时,回头想想这三层,往往能帮你跳出思维死胡同。

相关推荐
成旭先生1 小时前
银行卡识别 API:一张照片读出卡号、BIN 与发卡行
人工智能·算法·ocr·api接口·金融科技·银行卡识别·支付风控
陌上花开缓缓归以2 小时前
mebdlts3.4.1安全启动全流程
服务器·算法
Nebula_g2 小时前
JavaSE拓展:可变参数
java·开发语言·算法·安全·javase·可变参数
129Lab2 小时前
BMS 核心算法:SOC 估算从安时积分到 LSTM-UKF 串级融合的 30 年演进(附 Python 实现)
python·算法·lstm·python3.11·bms·soc估算
kgkg2 小时前
我通过逆向学到了douyin的美颜算法
算法
anew___2 小时前
《从零手写操作系统 (30):环境变量与进程上下文——export/unset与继承语义》
java·开发语言·网络·jvm·算法
垆边人似月.2 小时前
城市连通性(200分 / 并查集)
数据结构·算法·图论
Gust of wind3 小时前
串与KMP模式匹配:存储结构、基本操作、next数组手算
c语言·数据结构·后端·算法
Navigator_Z3 小时前
LeetCode //C - 1283. Find the Smallest Divisor Given a Threshold
c语言·算法·leetcode