## 从提示工程到上下文工程:一种新的大型语言模型方法
随着大型语言模型(LLM)超越聊天机器人,成为复杂系统的核心组件,仅仅“提示工程”——精炼措辞——已不再足够。一种更全面的方法,**上下文工程**,正在兴起,它以有意的结构和针对性关注着馈送给LLM的*每一个*token。
LLM基于其训练数据预测序列中的下一个token,受限于固定的“上下文窗口”。早期方法侧重于文本补全,然后发展到“聊天框架”——模拟对话——允许通过“系统消息”进行指令。这促成了**上下文学习**等技术,其中LLM从上下文窗口*内*的示例中学习,整合诸如文档(通过RAG)、工具和记忆等数据。
然而,更大的上下文窗口会引入复杂性和“幻觉”等风险。上下文工程将LLM交互视为简报分析师——提供*所有*相关信息,定义任务,并利用可用工具。这种转变利用了成熟的**软件工程设计模式**(如RAG、工具调用和思维链)来实现模块化和可靠性。
未来的系统可能会采用多个专门的“代理”,通过精心设计的token序列——本质上是API契约——进行交互,以解决复杂的任务。最终,上下文工程旨在为LLM的使用带来严谨性和控制力,将它们从不可预测的预言家转变为可靠的任务解决者。
## 反向传播的“泄漏抽象”
斯坦福大学的CS231n深度学习课程有意要求学生使用NumPy从头开始实现反向传播,尽管像TensorFlow这样的框架中已经提供了自动微分。这不仅仅是智力练习,而是为了理解一种“泄漏抽象”。反向传播并非神奇的过程——仅仅堆叠层并不能保证成功。
核心问题在于,在反向传播过程中可能会出现不易察觉的微妙问题,除非对其有深入的理解。例如,sigmoid/tanh激活函数导致的梯度消失(由于饱和),ReLU神经元“死亡”(神经元陷入非激活状态),以及RNNs中的梯度爆炸。即使是看似合理的做法,例如在深度Q网络中使用梯度裁剪,如果应用不当也可能引入错误。
理解反向传播能够让开发者预测并调试这些问题,从而选择合适的初始化方法、激活函数和损失函数。忽略其底层机制会让人容易出现意外故障,并阻碍有效的网络构建和调试。虽然框架可以自动化这个过程,但对它*如何*工作有扎实的理解对于真正掌握深度学习至关重要。