解决方案
2015 年,普遍观点认为循环神经网络难以训练,使用它们的论文也艰深难读,满是方程和基准表格,读者很难从中感受到网络究竟学到了什么。Andrej Karpathy 在自己关于图像描述的工作中发现了相反的情况:一个小型、随意配置的模型在几分钟内就产出了出奇好的描述,于是他着手说明这些模型为何值得关注。
他的文章把 RNN 讲成一个带状态的阶跃函数,并在此基础上构建了一个预测文本下一个字符的字符级语言模型。文章包含一个 100 行的 numpy 最小实现,以及一个 MIT 许可的 Torch/Lua 代码库 char-rnn,读者只需输入一个大文本文件,就能复现每一个实验。
这些演示让学习过程变得可读。训练后采样显示出莎士比亚式对白、带有正确嵌套 XML 和括号的维基百科 markdown、几乎能编译成伪代数几何的 LaTeX,以及花括号配对、注释合理的 Linux 内核 C 代码。一个《战争与和平》模型从第 100 次迭代时的随机乱码,进步到第 2000 次迭代时拼写正确的句子;神经元可视化还发现了学会追踪文本是否位于 URL、引号或 wiki 链接之内的单元,而不是死记字符串。
文章末尾附上的编辑记录列出了各方回应:Reddit 讨论、在伦敦深度学习聚会的演讲、Yoav Goldberg 与 n-gram 基线的对比,以及社区复现——用烹饪食谱、Eminem 歌词、奥巴马演讲、爱尔兰民乐、ABC 记谱音乐和《圣经》训练 char-rnn。这篇文章于 2019 年 2 月 3 日再次出现在 Hacker News 上,获得 161 分和 51 条评论。
它取得了什么
让学习过程实时可见:每个语料一个字符模型,附代码和神经元图
为什么有效
一个 100 行的 numpy 实现加上已发布的代码库,使这一主张可被证伪:任何读者都能训练同样的模型,而不必相信作者的截图。
熟悉的语料免费完成了说明工作——莎士比亚、维基百科、LaTeX 和 Linux 源码——因为读者无需任何机器学习专业知识,就能判断采样输出看起来是否正确。
展示第 100、300、700 和 2000 次迭代的样本,把“网络在学习”这一抽象说法替换为结构逐渐浮现的可见过程:从空格到拼写再到语法。
神经元激活图回应了关于黑箱的怀疑,显示出仅凭原始字符就学会了引号检测、URL 追踪和括号计数的单元。
MIT 许可让衍生项目把这一技术传播到食谱、音乐和政治演讲中,一篇博客文章就这样播下了一个可见的生态。
可以应用什么
当一项技术因内部不可见而受到怀疑时,发布最小的可用版本,并展示学习过程的发生;读者能重跑的证据胜过“这太难了”的说法。
后续
文章附上的编辑记录列出了紧随其后的进展:r/machinelearning 和 r/programming 上的讨论、伦敦深度学习聚会的演讲、Yoav Goldberg 的 n-gram 基线对比,以及用烹饪食谱、Eminem 歌词、奥巴马演讲、爱尔兰民乐和《圣经》训练的社区模型,另有一个预装 char-rnn 的 Terminal.com 快照。这篇文章于 2019 年 2 月 3 日再次出现在 Hacker News 上,获得 161 分和 51 条评论,此时距它所推广的底层 LSTM 工作发表已过去多年。
追溯依據
參考來源
- The Unreasonable Effectiveness of Recurrent Neural Networks Andrej Karpathy · karpathy.github.io ·
- The Unreasonable Effectiveness of Recurrent Neural Networks — Hacker News discussion Hacker News · news.ycombinator.com ·