首页
Ilya 推荐书单系列
RNN 的惊人有效性
循环神经网络的惊人有效性
The Unreasonable Effectiveness of Recurrent Neural Networks · Andrej Karpathy · 2015 · 博文
本页目录
论文名片
Ilya 为什么选它
从生活说起
核心思想拆解
动手算一算
它改变了什么
术语小词典
原文与代码
论文名片
速览
题目: The Unreasonable Effectiveness of Recurrent Neural Networks(循环神经网络的惊人有效性)。
作者与形式: Andrej Karpathy,2015 年长篇博文,配套开源代码 char-rnn。
它做的事: 训练字符级语言模型(character-level language model) ——不给模型词典、语法书和任何规则,只让它反复做一件事:看完前文,预测下一个字符。模型本体是循环神经网络(Recurrent Neural Network,RNN) 。
它展示的事: 分别用莎士比亚剧本、维基百科、Linux 源码、LaTeX 论文做训练,生成的假文本连括号配对、章节结构都像模像样。
一句话定位:这是让一代人第一次看见 神经网络会「写作文」的文章。
Ilya 为什么选它
这份书单里大多是论文,这篇却是博文。选它,是因为它承担着一个替代不了的角色:示范 。在 2015 年,语言模型对多数人来说只是排行榜上的一个分数;这篇博文让人亲眼看到,一个只会「猜下一字符」的模型,居然能写出格式严谨的假代码、假论文。直观印象一旦建立,后面所有关于语言模型的技术讨论都有了抓手。
更深一层,这篇博文是后来 GPT 路线的种子。「预测下一个字符」这个目标看起来笨拙,却蕴含语法与结构知识;既然如此,把模型做大、把数据做多的路线就是成立的。本系列后面讲注意力机制(见 注意力机器翻译 )与 Transformer 的文章,本质上都在回答同一个问题:这台「接龙机器」还能变得多强。
从生活说起
想想成语接龙的高手。他没有背过《接龙大全》,但玩得多了,你说一个「马」,他自然接出「马到成功」;你再给一个「功」,他又接得又快又顺,甚至带着你说话的腔调。没有人教过他规则,规则长在成千上万次「你一句、我一句」的练习里。
再想想常听歌的人。一首歌的前奏刚起,他嘴里已经哼出了下一句的调子。他并不是「推理」出了这个调子,只是前文给出的线索太充分,下一句几乎是自然涌出来的。
手机输入法也是同一回事:打出「你好」,它就联想「吗」「呀」;打出「明天」,它就联想「见」。联想背后正是一台微型的「预测下一个字符」机器。Karpathy 这篇博文做的事情,就是把这台小机器认真放大、认真训练,然后展示它能走多远。
核心思想拆解
任务只有一个。 字符级语言模型只做一件事——看完前文,预测下一个字符。训练材料是一大段连续文本:可能是莎士比亚剧本,可能是维基百科,可能是 Linux 源码,也可能是 LaTeX 写成的论文。模型每次猜完就对照原文,猜错了调整自己,如此循环往复。
生成就是反过来接龙。 训练好后,给模型一个开头,它就一个字符一个字符往下写。精妙之处在于:要猜得准,模型必须自己悟出各种「隐形规则」——引号开了要关、括号开了要配对、C 语言的函数有固定骨架、LaTeX 的文章有章节结构。没有人把这些规则写给它,是「猜下一字符」这个目标逼着它学出来的。
结果有多像样? 用莎士比亚训练,产出带人名与台词格式的仿剧本;用维基百科训练,产出带词条结构的假百科;用 Linux 源码训练,产出的假 C 代码连括号配对都大体正确;用 LaTeX 论文训练,产出的假论文有章节、有公式环境、有图表引用。假文本连括号配对、章节结构都像模像样——这正是标题里「惊人有效性」的含义。
关键洞察: 「预测下一字符」这个看似简单的小目标,蕴含语法与结构知识。目标可以极简,学到的东西却可以极深——这个信念支撑了此后十年的语言模型路线。
动手算一算
本节算术为教学演示,帮助建立直觉,不是论文里的实验数字。
演示一:旧记忆会打折扣
假设开头字符的影响,每往后续写一步就打九折(乘 0.9)。1 步之后剩 0.9;10 步之后是 0.9 的 10 次方,约 0.35;50 步之后是 0.9 的 50 次方,约 0.005——只剩千分之五。也就是说,写到第 50 个字符时,开头是什么几乎已经影响不到模型。这解释了普通循环网络「记性有限」的毛病,也给下一篇的改进埋下伏笔。
演示二:候选池有多大
英文字符表(字母、数字、标点、空格)大约百来个;中文常用字有几千个。同样是猜一个字符,前者是在百来个候选里挑,后者是在几千个候选里挑,规模差几十倍。候选池小、语料好找,字符级模型在英文上演示起来成本低、效果又直观,这类演示多用英文语料是顺理成章的事。
它改变了什么
它把语言模型从「评分指标」变成了「舞台主角」。 在这篇博文之前,语言模型更多是学术评测里的一个数字;之后,「看看模型生成了什么」成了最直观的能力展示,深度学习社区第一次集体直观感受到:机器生成文字是做得到的事。
它暴露了短板,也指明了路线。 演示一里「记忆打折」的问题,引出两条改进线:一条把记忆本身修好,见 理解 LSTM ;另一条干脆不依赖内部记忆,让模型随时回看原文,见 注意力机器翻译 ,其思想最终长成 Attention Is All You Need 。而「预测下一字符」这个目标本身一路未改,成了今天大语言模型的训练内核。