RNN 的不讲道理的有效性:一篇博客带火了字符级语言模型
// TL;DR
- 字符级 RNN 逐字符预测下一个字符,就能学会拼写、语法、缩进甚至 LaTeX 结构。
- 生成的莎士比亚戏剧、C 代码似是而非,但结构惊人地正确。
- “预测下一个 token”这个朴素目标可能比我们以为的强大得多。
一篇博客的含金量
Karpathy 这个月发的博客在圈子里刷屏了。内容其实很简单:训练一个字符级的 RNN(LSTM),任务只有一个——预测下一个字符。然后喂它不同的语料:莎士比亚全集、Linux 内核源码、代数几何教材的 LaTeX 源文件。
结果好玩极了。喂莎士比亚,它生成的“戏剧”有角色名、有对白格式、用词古雅;喂 C 代码,它会正确地写出花括号配对、缩进、甚至像模像样的注释;喂 LaTeX,它生成的“论文”能差点编译通过。当然,内容本身是胡说八道——但结构全对。
胡说八道里的信号
很多人把这当个乐子看,我倒觉得里面有个值得记住的信号:“预测下一个字符”这么笨的目标函数,居然能逼着模型学会拼写、语法、配对、长程依赖。它没有任何关于“什么是单词”“什么是函数”的先验,全是从预测任务里自己挤出来的。
如果一个这么小的模型、这么朴素的目标能学到这些,那把模型放大一万倍、语料换成整个互联网会发生什么?这个问题现在没人能回答,但我打算把它记在这儿,过几年回来看。