“大多数开发者以为大语言模型最初是为了预测下一个词而建的。其实不是——至少一开始不是。”
如果你回到2010年代早期,AI领域最难的问题不是写诗,也不是生成代码。真正的硬骨头是:把英语翻译成法语、把语音转成文字、把文档浓缩成摘要。这些问题都指向同一个挑战——序列转导。
这个词在Transformer论文的开篇段落里几乎是被随口一提:“语言建模和机器翻译等序列建模与转导问题”。今天几乎所有人都知道Transformer,但没几个人记得它到底是为解决什么问题而被发明的。讽刺的是,解决序列转导这件事,恰恰成了现代大语言模型后来得以冒出来的地基。
到底什么是序列转导?用工厂的场景来想。序列建模问题问的是:“根据目前为止发生的所有事情,接下来会出现什么?”就像预测传送带上下一个滚下来的产品。“猫坐在___” → 补上“垫子”。这是语言建模。
序列转导的思路比这大一号。你不是去猜一个缺失的片段,而是把一整条序列彻底转换成另一条。英语“天气不错”转成法语“Il fait beau”,音频波形转成文字“欢迎各位”,有bug的代码转成正确的代码。输入不一样,输出不一样,长度也常常不同。模型必须先吃透整个源序列,然后才能生成目标。
回头看,现代AI助手几乎把所有时间都花在做序列转导上了:翻译语言、归纳报告、生成SQL、把Python转成Rust、解释堆栈错误、写提交信息、整理文档。这些任务全都可以归结为一件事——输入序列转成输出序列。
这事儿为什么以前那么难搞?人类常常低估翻译到底需要动用多少记忆。拿“委员会在审查了几个月里的多份提案后,终于批准了预算”这句话来说,如果你要把它翻成德语,动词可能被推到句子最末尾才出来。要想翻对,模型必须记住谁干了动作、什么时态、单复数、语法结构,以及隔了几十个词远的依赖关系。
早期的神经网络是一个词一个词地吞文本。词1转成隐藏状态,传给词2再转隐藏状态,词3继续往下传。所有信息都必须被压缩进一个隐藏向量里。这就像让一个人用一张便利贴总结一部小说,信息迟早消失。这个缺陷后来被叫做长程依赖问题。
在1980年代末到1990年代期间,研究者们捣鼓出了循环神经网络,也就是RNN。这些网络带着一个循环连接,理论上可以把信息从序列的一头传到另一头,实际跑起来却很难抓稳远距离的依赖。梯度要么炸掉要么消散,相隔太远的词之间的关系在网络里走不远。
长短期记忆网络LSTM在1997年被提出来,用门控机制给信息开了条缓行道,总算让模型能记住更长的上下文。但这套方案依然是一步一步地处理序列,没法并行,训练慢得要命。而且遇到跨段落甚至跨页的依赖,LSTM也还是磕磕绊绊。序列转导这个老问题,就等着一个能同时扫视整条序列的新思路来接手。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.