2015年,普遍观点认为递归神经网络难以训练,相关论文晦涩难懂,满是方程式和基准表格,读者很难了解网络到底学到了什么。Andrej Karpathy在自己的图像字幕工作中却发现相反的情况:一个小型、任意配置的模型能在几分钟内产生令人惊讶的好字幕,他于是着手展示为什么这些模型值得关注。

他的文章把RNN讲成一个有状态的单步函数,然后在此基础上构建了一个字符级语言模型,预测文本的下一个字符。文章包含了一个100行的numpy最小实现和一个MIT许可的Torch/Lua代码库char-rnn,让读者可以输入一个大型文本文件来重现每个实验。

演示让学习过程清晰可见。训练后的采样显示了莎士比亚风格的对话、正确嵌套的XML和括号的维基百科标记、几乎能编译的伪代数几何LaTeX,以及括号匹配和注释合理的Linux内核C代码。一个战争与和平模型从第100次迭代的随机乱码提升到第2000次迭代的正确拼写句子,神经元可视化发现有些细胞学会了跟踪文本是否在URL、引号或维基链接内,而不是记忆字符串。

文章末尾的编辑列表记录了反响:Reddit讨论、伦敦深度学习聚会上的演讲、Yoav Goldberg对比n-gram基线的分析,以及社区用char-rnn在烹饪食谱、Eminem歌词、奥巴马演讲、爱尔兰民间音乐、ABC记谱音乐和圣经上训练的复制实验。这篇文章于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工作发表已数年。

从这里,追溯依据

参考来源

  1. The Unreasonable Effectiveness of Recurrent Neural Networks karpathy.github.io
  2. The Unreasonable Effectiveness of Recurrent Neural Networks — Hacker News discussion news.ycombinator.com