范叶亮写智能体、模型和数据系统时,习惯先把定义和边界钉死。把「深度学习优化算法」整理成可落地的中文笔记:问题在哪、默认做法会踩什么坑、该怎么选。原站导航和广告已去掉。

梯度下降

在构建神经网络模型的时候,除了网络结构设计以外,选取合适的优化算法也对网络起着至关重要的作用,本文将对神经网络中常用的优化算法进行简单的介绍和对比,本文部分参考了 Ruder 的关于梯度下降优化算法一文 1 。首先,我们对下文中使用的符号进行同意说明:网络中的参数同一表示为 $\theta$ ,网络的假设函数为 $h_{\boldsymbol{\theta}}\left(\boldsymbol{x}\right)$ ,网络的损失函数为 $J\left(\boldsymbol{\theta}\right)$ ,学习率为 $\alpha$ ,假设训练数据中共包含 $m$ 个样本,网络参数个数为 $n$ 。

在梯度下降算法中,常用的主要包含 3 种不同的形式,分别是批量梯度下降 (Batch Gradient Descent, BGD),随机梯度下降 (Stochastic Gradient Descent, SGD) 和小批量梯度下降 (Mini-Batch Gradient Descent, MBGD)。一般情况下,我们在谈论梯度下降时,更多的是指小批量梯度下降。

BGD

$$ J \left(\boldsymbol{\theta}\right) = \dfrac{1}{2m} \sum_{i=1}^{m}{\left(h_{\boldsymbol{\theta}}\left(x^{\left(i\right)}\right) – y^{\left(i\right)}\right)} $$

$$ \nabla_{\theta_j} = \dfrac{\partial J\left(\boldsymbol{\theta}\right)}{\partial \theta_j} = – \dfrac{1}{m} \sum_{i=1}^{m}{\left(y^{\left(i\right)} – h_{\boldsymbol{\theta}} \left(x^{\left(i\right)}\right)\right) x_j^{\left(i\right)}} $$

SGD

$$ \theta_j = \theta_j + \alpha \left[\dfrac{1}{m} \sum_{i=1}^{m}{\left(y^{\left(i\right)} – h_{\boldsymbol{\theta}} \left(x^{\left(i\right)}\right)\right) x_j^{\left(i\right)}}\right] $$

\begin{algorithm} \caption{BGD 算法} \begin{algorithmic} \FOR{$epoch = 1, 2, …$} \FOR{$j = 1, 2, …, n$} \STATE $J \left(\boldsymbol{\theta}\right) = \dfrac{1}{2m} \sum_{i=1}^{m}{\left(h_{\boldsymbol{\theta}}\left(x^{\left(i\right)}\right) – y^{\left(i\right)}\right)}$ \STATE $\theta_j = \theta_j – \alpha \dfrac{\partial J\left(\boldsymbol{\theta}\right)}{\partial \theta_j}$ \ENDFOR \ENDFOR \end{algorithmic} \end{algorithm} 从上述算法流程中我们可以看到,BGD 算法每次计算梯度都使用了

MBGD

SGD 相比于 BGD,其最主要的区别就在于计算梯度时不再利用整个数据集,而是针对单个样本计算梯度并更新权重,因此,其损失函数定义如下:

$$ J \left(\boldsymbol{\theta}\right) = \dfrac{1}{2} \left(h_{\boldsymbol{\theta}}\left(x^{\left(i\right)}\right) – y^{\left(i\right)}\right) $$

Momentum

\begin{algorithm} \caption{SGD 算法} \begin{algorithmic} \FOR{$epoch = 1, 2, …$} \STATE Randomly shuffle dataset \FOR{$i = 1, 2, …, m$} \FOR{$j = 1, 2, …, n$} \STATE $J \left(\boldsymbol{\theta}\right) = \dfrac{1}{2} \left(h_{\boldsymbol{\theta}}\left(x^{\left(i\right)}\right) – y^{\left(i\right)}\right)$ \STATE $\theta_j = \theta_j – \alpha \dfrac{\partial J\left(\boldsymbol{\theta}\right)}{\partial \theta_j}$ \ENDFOR \ENDFOR \ENDFOR \end{algorithmic}

针对 BGD 和 SGD 的问题,MBGD 则是一个折中的方案,在每次更新参数时,MBGD 会选取 $b$ 个样本计算的梯度,设第 $k$ 批中数据的下标的集合为 $B_k$ ,则其损失函数定义如下:

NAG

$$ \nabla_{\theta_j} = \dfrac{\partial J\left(\boldsymbol{\theta}\right)}{\partial \theta_j} = – \dfrac{1}{|B_k|} \sum_{i \in B_k}{\left(y^{\left(i\right)} – h_{\boldsymbol{\theta}} \left(x^{\left(i\right)}\right)\right) x_j^{\left(i\right)}} $$

\begin{algorithm} \caption{MBGD 算法} \begin{algorithmic} \FOR{$epoch = 1, 2, …$} \FOR{$k = 1, 2, …, m / b$} \FOR{$j = 1, 2, …, n$} \STATE $J \left(\boldsymbol{\theta}\right) = \dfrac{1}{|B_k|} \sum_{i \in B_k}{\left(y^{\left(i\right)} – h_{\boldsymbol{\theta}} \left(x^{\left(i\right)}\right)\right) x_j^{\left(i\right)}}$ \STATE $\theta_j = \theta_j – \alpha \dfrac{\partial J\left(\boldsymbol{\theta}\right)}{\partial \theta_j}$ \ENDFOR \ENDFOR \ENDFOR

值得单独记下的点

  • Qian, Ning. “On the momentum term in gradient descent learning algorithms.” Neural networks 12.1 (1999): 145-151. ↩︎
  • Nesterov, Yurii. “A method for unconstrained convex minimization problem with the rate of convergence O (1/k^2).” Doklady AN USSR. Vol. 269. 1983. ↩︎
  • Sutskever, Ilya. “Training recurrent neural networks.” University of Toronto, Toronto, Ont., Canada (2013). ↩︎
  • Duchi, John, Elad Hazan, and Yoram Singer. “Adaptive subgradient methods for online learning and stochastic optimization.” Journal of Machine Learning Research 12.Jul (2011): 2121-2159. ↩︎
  • Pennington, Jeffrey, Richard Socher, and Christopher Manning. “Glove: Global vectors for word representation.” Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014. ↩︎
  • Zeiler, Matthew D. “ADADELTA: an adaptive learning rate method.” arXiv preprint arXiv:1212.5701 (2012). ↩︎
  • Hinton, G., Nitish Srivastava, and Kevin Swersky. “Rmsprop: Divide the gradient by a running average of its recent magnitude.” Neural networks for machine learning, Coursera lecture 6e (2012). ↩︎
  • Kingma, Diederik P., and Jimmy Ba. “Adam: A method for stochastic optimization.” arXiv preprint arXiv:1412.6980 (2014). ↩︎

落地时建议先做的 5 件事

  1. 先写清任务能不能被自动验证:能验证的交给系统和评测,不能验证的留给人审。
  2. 本地部署先算显存、延迟和失败回滚,不要只看能跑通一次。
  3. 多智能体只在单智能体触到上下文或专业边界时再拆。
  4. Token、微调和压缩都要有对照数字,避免口号式优化。
  5. 结论写成可检查清单:接口、超时、评测集、回滚版本。

和智能体产品怎么接

龙虾PRO做 OpenClaw 落地时,最该拿走的是「单智能体先做好工具和提示,再谈编排」。数字员工、技能市场和网关应共用同一套评测与权限,而不是各写一套角色人设。

本文侧重全链路风控方法论。落地时请用自身业务单据做回放验证,不要把示例阈值直接当生产策略。 相关:风控体检 · 方案资源

常见问题 FAQ

什么是AI智能系统?

「AI智能系统」可概括为:在构建神经网络模型的时候,除了网络结构设计以外,选取合适的优化算法也对网络起着至关重要的作用,本文将对神经网络中常用的优化算法进行简单的介绍和对比,本文部分参考了 Ruder 的关于梯度下降优化算法一文 1 。首先,我们对下文中使用的符号进行同意说明:网络中的参数同一表示为 $\theta$ ,网络的假设函数为 $h_{\boldsymbol{\theta} 本文从定义、方法与实践要点展开说明。

为什么要关注AI智能系统?

关注AI智能系统,是因为它直接影响效率、风险与可复制性。文中指出:在构建神经网络模型的时候,除了网络结构设计以外,选取合适的优化算法也对网络起着至关重要的作用,本文将对神经网络中常用的优化算法进行简单的介绍和对比,本文部分参考了 Ruder 的关于梯度下降优化算法一文 1 。首先,我们对下文中使用的符号进行同意说明:网络中的参数同一表示为 $\theta$ ,网络的假设函数为 $h_{\boldsymbol{\theta}}\left(\boldsymbol{x}\right)$ ,网络的损失函数为 $J\left(\boldsymbol{\theta…

如何落地AI智能系统?有哪些关键步骤?

建议按以下路径推进AI智能系统:1) Qian, Ning. “On the momentum term in gradient descent learning algorithms.” Neu…;2) Nesterov, Yurii. “A method for unconstrained convex minimization problem with t…;3) Sutskever, Ilya. “Training recurrent neural networks.” University of Toronto, T…;4) Zeiler, Matthew D. “ADADELTA: an adaptive learni…

AI智能系统适合哪些人或团队?

AI智能系统更适合:产品/技术负责人、运营与增长团队、需要落地智能体或自动化的中小团队、关注「AI智能系统」方向的读者。若你只需要单次聊天式问答,可先读概念;若要上生产,请重点看步骤、权限与风控相关段落。

关于「梯度下降」,本文给出了什么结论?

在「梯度下降」部分,要点是:dsymbol{\theta}}\left(\boldsymbol{x}\right)$ ,网络的损失函数为 $J\left(\boldsymbol{\theta}\right)$ ,学习率为 $\alpha$ ,假设训练数据中共包含 $m$ 个样本,网络参数个数为 $n$ 。 在梯度下降算法中,常用的主要包含 3 种不同的形式,分别是批量梯度下降 (Batch Gradient Descent, BGD),随机梯度下降 (Stocha

关于「BGD」,本文给出了什么结论?

在「BGD」部分,要点是:m_{i=1}^{m}{\left(y^{\left(i\right)} – h_{\boldsymbol{\theta}} \left(x^{\left(i\right)}\right)\right) x_j^{\left(i\right)}}\right] $$ \begin{algorithm} \caption{BGD 算法} \begin{algorithmic} \FOR{$epoch = 1, 2, …$} \FOR{