拆开一个 11 万参数的 AI,看清大模型的本质 · @WeiDemin · TwKit
@WeiDemin
下面这段莎士比亚,是一个 11 万参数的模型写的。训练花了 75 秒,在一台没有显卡的笔记本上,我没教过它任何语法。 它的权重存成一个文件,433 KB,比一张手机照片还小。 它自己发明了一个角色,叫 FROMARD。DUKE 在原文里是真的,VINBOLIUS 和 FROMARD 一次都没出现。 它不知道自己在写什么,但它看起来太像知道了。 它一开始写的是乱码 训练之前,同一个网络,输出是这样的: 随机初始化的网络,从 65 个字符里等概率乱抓。75 秒之后,它写出来的就是开头那种东西。 语料是莎士比亚全集,1,115,394 个字符。模型 108,352 个参数,两层 Transformer,4 个注意力头,64 维隐藏层。任务只有一个:看前 64 个字符,猜下一个字符是什么。 中间只有四步 把 111 万个字符切成一段段,每段 64 个字符当输入,往后错一位当标准答案。 模型猜每个位置的下一个字符是什么,猜完跟答案对一遍。 猜错了,用梯度下降把所有参数往「下次更容易猜对」的方向挪一点点。 重复 4000 次。 没有一行代码告诉它主语是什么,台词是什么,角色是什么。 判断它学没学会的指标叫 loss,可以粗暴理解成「猜错的程度」。训练前是 4.19,差不多就是瞎猜的分数,65 个字符均匀猜,理论值是 ln(65) ≈ 4.17。4000 步之后掉到 1.81。 格式比意义好学 看这段输出,最奇怪的其实不是它写出了古英语,是它知道了剧本长什么样。 角色名,冒号,换行,台词。空行。另一个名字,冒号。 语料里这样的说话人标签有 7,242 个,331 个不同的名字。同一个排版重复七千次,规律性强到不需要理解就能预测。 它在不懂「戏剧」是什么的情况下,学会了剧本的排版。 意义不是这样。「公爵」指的是什么,文本里没有一条写明,只能从它出现在哪些句子、跟谁一起出现里推。模型学到的是那些共现本身,不是共现指向的东西。 这也解释了为什么 AI 的东西经常先像、后对。语气、结构、排版、起承转合,最容易被统计出来;事实、逻辑、判断,要难得多。 所以它写的东西经常一眼看上去很专业。这个「一眼」,正好是它的强项。 两条线后来分开了 图上有两条线。 一条是训练集,它反复练过的 100 万个字符:从 4.1889 出发,在 3600 步见底,1.7910。 另一条是验证集,我扣下来的 11 万个字符,它一次都没见过:同样 4.1888 起步,同样在 3600 步见底,1.8844。 两条线前 1800 步几乎重合,差基本在 0.05 以内。之后一路拉开,最大 0.14,最后停在 0.11。 这个差就是代价:它对见过的文本更熟,对没见过的没有进步。分数是靠「更熟」而不是「更通用」换来的,这一步叫过拟合。 它是在学规律,还是在背课文,这件事可以直接测。训练集和验证集各随机取 100 个位置,喂它 64 个字符,让它往下续 64 个,逐字符对一遍:训练集 9.5%,验证集 8.3%。 差 1.2 个百分点。有差距,但很小,它没有整句整句地背,只是对见过的文本稍微更熟一点。 而且两条线的抬头都很浅:3600 步之后验证集只涨了 0.035。每组估计只用 3 个 batch,这个幅度里混着噪声,撑不起更强的结论。 这一节的意义不在这个小模型上。真实训练里,这条线抬头是要被认真对待的。一次训练几百万到上千万美元,什么时候停机,看的就是它。 我这个模型太小、跑得太短,抬头浅到测不出「背」。但判断停手的逻辑,几千亿参数那边是一样的。 你花几千万美元买的东西,判断标准是一个数字有没有开始往回走。 那它到底懂不懂 DUKE 在训练集里出现 289 次,288 次后面跟的是 VINCENTIO 或 OF。 它学到的就是这一条:DUKE 后面该跟一个大写的名字,然后冒号,然后台词。 所以它写出了 DUKE VINBOLIUS。它学会了这个位置该出现一个人名。至于那个人是谁,它没有这个概念。 预测只需要知道「什么经常跟着什么」。理解需要知道「这些东西指向世界上的什么」。 它有前者,并且练到了极致。后者我没有在它的输出里找到任何证据。 但我不能把话说死 Ilya Sutskever 说过一句很硬的话: Predicting the next token well means that you understand the underlying reality that led to the creation of that token. It's not statistics. 想把下一个词预测好,意味着你得理解产生这个词的现实世界。这不是统计。 后半句更关键:要把这些统计压缩起来,你必须理解「世界的什么东西产生了这些统计」。 这就是「压缩即智能」的由来。逻辑很硬:预测做到极致,模型内部就不得不构建一个关于世界的压缩模型。不理解规律,就压不动。这么看,预测和理解可能不是两件事。 认知科学里还有一派理论叫预测性编码,认为人脑本身也是预测机器:我们不断预测下一秒会发生什么,再用现实修正。 如果这两边都成立,「它只是预测,所以它不是智能」里的那个「只是」,就下得太重了。 我能确定的只有两件事:没有任何证据表明它有体验;它也没有意图,因为它唯一在优化的东西,是下一个字符的概率。 它不需要知道「恭喜发财」是什么意思,也能说得字正腔圆。 至于「预测做到极致算不算另一种智能」,这个问题目前没有公认答案。 最后 这个模型和 GPT-3 之间,参数差了 161 万倍。我算这个数的时候有点恍惚:1750 亿除以 108,352。 同一种架构,同一个任务,看到的东西是同一类。差在规模、数据,以及训练完之后那套对齐。 规模变了,做的事没变。 所以用大模型的时候,心里要有一条很清楚的分界。 让它生成、起草、翻译、扩写、头脑风暴。它强得离谱,因为它见过人类几乎所有「接下来该怎么说」。 别信它的判断、结论和事实。它会用最流畅的语气,说最一本正经的谎。最麻烦的地方是,它说错的时候和说对的时候,语气一模一样,你从文本里分辨不出来。 把它当成一个读过整个互联网、什么都敢接话的同事:能力强得吓人,但每一句事实,要自己核。 代码和数据在 github.com/DW-Studio/mini-gpt,75 秒跑完,你可以自己验证一眼那条曲线怎么降下来,又怎么分开。
曝光 91 · 评论 0 · 点赞 0 · 书签 0
查看原帖