范叶亮写智能体、模型和数据系统时,习惯先把定义和边界钉死。把「循环神经网络」整理成可落地的中文笔记:问题在哪、默认做法会踩什么坑、该怎么选。原站导航和广告已去掉。
发展史
文章部分内容参考了 Christopher 的博客 Understanding LSTM Networks ,内容翻译和图片重绘已得到原作者同意。
循环神经网络 (Recurrent Neural Network, RNN) 一般是指时间递归神经网络而非结构递归神经网络 (Recursive Neural Network),其主要用于对序列数据进行建模。Salehinejad 等人 1 的一篇综述文章列举了 RNN 发展过程中的一些重大改进,如下表所示:
RNN
不同于传统的前馈神经网络接受特定的输入得到输出,RNN 由人工神经元和一个或多个反馈循环构成,如下图所示:
其中, $\boldsymbol{x}_t$ 为输入层, $\boldsymbol{h}_t$ 为带有循环的隐含层, $\boldsymbol{y}_t$ 为输出层。其中隐含层包含一个循环,为了便于理解我们将循环进行展开,展开后的网络结构如下图所示:
网络结构
对于展开后的网络结构,其输入为一个时间序列 $\left\{\dotsc, \boldsymbol{x}_{t-1}, \boldsymbol{x}_t, \boldsymbol{x}_{t+1}, \dotsc\right\}$ ,其中 $\boldsymbol{x}_t \in \mathbb{R}^n$ , $n$ 为输入层神经元个数。相应的隐含层为 $\left\{\dotsc, \boldsymbol{h}_{t-1}, \boldsymbol{h}_t, \boldsymbol{h}_{t+1}, \dotsc\right\}$ ,其中 $\boldsymbol{h}_t \in \mathbb{R}^m$ , $m$ 为隐含层神经元个数。隐含层节点使用较小的非零数据进行初始化可以提升整体的性能和网络的稳定性 2 。隐含层定义了整个系统的状态空间 (state space),或称之为 memory 1 :
$$ \boldsymbol{h}_t = f_H \left(\boldsymbol{o}_t\right) $$
梯度弥散和梯度爆炸
$$ \boldsymbol{o}_t = \boldsymbol{W}_{IH} \boldsymbol{x}_t + \boldsymbol{W}_{HH} \boldsymbol{h}_{t-1} + \boldsymbol{b}_h $$
$f_H \left(\cdot\right)$ 为隐含层的激活函数, $\boldsymbol{b}_h$ 为隐含层的偏置向量。对应的输出层为 $\left\{\dotsc, \boldsymbol{y}_{t-1}, \boldsymbol{y}_t, \boldsymbol{y}_{t+1}, \dotsc\right\}$ ,其中 $\boldsymbol{y}_t \in \mathbb{R}^p$ , $p$ 为输出层神经元个数。则:
长期依赖问题
$$ \boldsymbol{y}_t = f_O \left(\boldsymbol{W}_{HO} \boldsymbol{h}_t + \boldsymbol{b}_o\right) $$
其中 $f_O \left(\cdot\right)$ 为隐含层的激活函数, $\boldsymbol{b}_o$ 为隐含层的偏置向量。
LSTM
$$ \tanh \left(x\right) = \dfrac{e^{2x} – 1}{e^{2x} + 1} $$
$$ \sigma \left(x\right) = \dfrac{1}{1 + e^{-x}} = \dfrac{\tanh \left(x / 2\right) + 1}{2} $$
值得单独记下的点
- 当 $t$ 较大时, $\prod_{j=k+1}^{t}{f'_H \left(h_{j-1}\right) \boldsymbol{W}_{HH}}$ 趋近于 0,则会产生 梯度弥散 问题。
- 当 $\boldsymbol{W}_{HH}$ 较大时, $\prod_{j=k+1}^{t}{f'_H \left(h_{j-1}\right) \boldsymbol{W}_{HH}}$ 趋近于无穷,则会产生 梯度爆炸 问题。
- Salehinejad, H., Sankar, S., Barfett, J., Colak, E., & Valaee, S. (2017). Recent Advances in Recurrent Neural Networks. arXiv preprint arXiv:1801.01078. ↩︎ ↩︎
- Sutskever, I., Martens, J., Dahl, G., & Hinton, G. (2013). On the importance of initialization and momentum in deep learning. In International Conference on Machine Learning (pp. 1139–1147). ↩︎
- Bengio, Y., Simard, P., & Frasconi, P. (1994). Learning long-term dependencies with gradient descent is difficult. IEEE Transactions on Neural Networks, 5(2) , 157–166. ↩︎
- Hochreiter, S., & Schmidhuber, J. (1997). Long short-term memory. Neural Computation, 9(8), 1735–1780. ↩︎
- Greff, K., Srivastava, R. K., Koutník, J., Steunebrink, B. R., & Schmidhuber, J. (2017). LSTM: A Search Space Odyssey. IEEE Transactions on Neural Networks and Learning Systems, 28(10) , 2222–2232. ↩︎
- Ha, D., & Eck, D. (2017). A Neural Representation of Sketch Drawings. arXiv preprint arXiv:1704.03477 ↩︎
落地时建议先做的 5 件事
- 先写清任务能不能被自动验证:能验证的交给系统和评测,不能验证的留给人审。
- 本地部署先算显存、延迟和失败回滚,不要只看能跑通一次。
- 多智能体只在单智能体触到上下文或专业边界时再拆。
- Token、微调和压缩都要有对照数字,避免口号式优化。
- 结论写成可检查清单:接口、超时、评测集、回滚版本。
和智能体产品怎么接
龙虾PRO做 OpenClaw 落地时,最该拿走的是「单智能体先做好工具和提示,再谈编排」。数字员工、技能市场和网关应共用同一套评测与权限,而不是各写一套角色人设。
本文侧重全链路风控方法论。落地时请用自身业务单据做回放验证,不要把示例阈值直接当生产策略。 相关:风控体检 · 方案资源
常见问题 FAQ
什么是AI智能系统?
「AI智能系统」可概括为:文章部分内容参考了 Christopher 的博客 Understanding LSTM Networks ,内容翻译和图片重绘已得到原作者同意。 本文从定义、方法与实践要点展开说明。
为什么要关注AI智能系统?
关注AI智能系统,是因为它直接影响效率、风险与可复制性。文中指出:文章部分内容参考了 Christopher 的博客 Understanding LSTM Networks ,内容翻译和图片重绘已得到原作者同意。
如何落地AI智能系统?有哪些关键步骤?
建议按以下路径推进AI智能系统:1) 当 $t$ 较大时, $\prod_{j=k+1}^{t}{f'_H \left(h_{j-1}\right) \boldsymbol{W}_{HH…;2) 当 $\boldsymbol{W}_{HH}$ 较大时, $\prod_{j=k+1}^{t}{f'_H \left(h_{j-1}\right) …;3) Hochreiter, S., & Schmidhuber, J. (1997). Long short-term memory. Neural Co…;4) Ha, D., & Eck, D. (2017). A Neural Represent…
AI智能系统适合哪些人或团队?
AI智能系统更适合:产品/技术负责人、运营与增长团队、需要落地智能体或自动化的中小团队、关注「AI智能系统」方向的读者。若你只需要单次聊天式问答,可先读概念;若要上生产,请重点看步骤、权限与风控相关段落。
关于「发展史」,本文给出了什么结论?
在「发展史」部分,要点是:),其主要用于对序列数据进行建模。Salehinejad 等人 1 的一篇综述文章列举了 RNN 发展过程中的一些重大改进,如下表所示: RNN 不同于传统的前馈神经网络接受特定的输入得到输出,RNN 由人工神经元和一个或多个反馈循环构成,如下图所示: 其中, $\boldsymbol{x}_t$ 为输入层, $\boldsymbol{h}_t$ 为带有循环的隐含层, $\boldsymbol{y}_t$ 为输出层。其中隐含层包含一个循
关于「RNN」,本文给出了什么结论?
在「RNN」部分,要点是:symbol{y}_t$ 为输出层。其中隐含层包含一个循环,为了便于理解我们将循环进行展开,展开后的网络结构如下图所示: 网络结构 对于展开后的网络结构,其输入为一个时间序列 $\left\{\dotsc, \boldsymbol{x}_{t-1}, \boldsymbol{x}_t, \boldsymbol{x}_{t+1}, \dotsc\right\}$ ,其中 $\boldsymbol{x}_t \in \mathbb{R}^n