生成式语言大模型(Generative Pretraining Transformer简称GPT-LLM)如此火爆,可是它是如何通过学习海量数据变得如此强大? 而生成式模型的训练,和人类学习中常用的”费曼技巧“之间有什么关联? 我们通过将两个似乎无关的概念联系在一起,看看能有什么启发。
先说费曼技巧
费曼的全名叫理查德·费曼。他是非常著名的理论物理学家,“费曼技巧”就是他提出来的一种学习方法。
费曼技巧,并不复杂。就是用自己的语言把所学进行重新表述和整合,写作,或是讲给别人听。进而逼迫你自觉,有意识地主动学习。因为如果没有真正理解,必然给别人讲不清楚,别人一问问题,就瞬间蒙圈了。
费曼技巧通常分成四个步骤:
学习:选择目标领域,大量阅读,将所有的概念厘清
反馈:向别人复述讲解,并在其中发现理解的缺点和不足
更新: 带着刚才的问题继续学习,巩固并复述
提炼:将问题和答案进行精简,力图准确简洁地表达知识。
表面上你是在教别人,其实你是在以教的方式“逼”自己查漏补缺。
再谈谈生成式大模型
什么是生成式模型?算法工程师面试题里,最常见的问题是:判别式和生成式模型的区别。
从数学上来说,判别模型基于条件概率P(Y|X),即已知X求Y,Y属于多个分类里的一种。 为保证模型的可控输出,它几乎不给算法决策空间,而将其嵌入在具体的业务逻辑中,比如预测点击率,判断贷款逾期。只求结果,难求原因,把模型纯当工具人。
生成式模型则是建模联合概率P(X,Y),可以理解为学习出如何“生成”概率分布P(X,Y)的样本。生成式方法更基本,因为它通过条件就能转化为判别方法, 而反过来则不然,还能生成新的数据,但需要大量的训练数据。典型的例如贝叶斯方法,生成对抗网络(GAN)和GPT等等。
在LLM中,面对海量的无标注文本训练数据,核心就是让模型学一件事:“预测下一个字符(Token)是什么”, 即Next Token Prediction(NTP)。 比如“你是一个好?”,脱口而出“人”。 想想,就这么简单粗暴的任务,迫使模型不断地预测下一个字符,直到输出完整的句子。 好像和小学生摇头晃脑背课文没什么区别。 可是,刨去训练的细节,GPT模型结构本身并不复杂,再加上这么简单的任务,却让大模型学会了跟人闲聊,做游戏,做逻辑推理,有那么令人惊叹的涌现能力! 让人感叹“大道至简”!
GPT本身的模型结构并不复杂
在GPT类模型兴起之前,判别式模型在工业界举足轻重。然而在2022年之后,生成式AI在AIGC和NLP领域火得一塌糊涂。 在算力和数据达到一定规模后,生成式模型似乎瞬间反超,一飞冲天。这里面有什么玄机吗?
两者的共性是什么呢?
生成式大模型通过Next Token Prediction生成内容,而费曼技巧,要点则是高质量的分享和表达出来。尽管深度学习模型和人脑工作方式有巨大的差异,但不妨碍去做类比,将其拆解为四个阶段:
学习:为了获得大量的知识,我们必须查阅大量资料;为了做到逻辑自洽,就必须先自己理解内容。同样的,大模型同样需要阅读万亿级token,高质量的语料对于训练效果至关重要,数据直接决定了上限。
反馈:为了理解概念中的不足,我们把知识和想法给同伴分享。在表达时,会发现自己讲不清楚的地方,或者同伴会提出来很多问题。 同样的,在训练集的Token预测错误时,LLM就会产生交叉熵损失(loss),用于衡量生成文本与真实文本之间的差异。
更新: 为了给别人讲清楚,就必须非常清晰地理解概念,为此我们逐步探查之前思维的漏洞,查漏补缺。同样的,通过NTP的经验风险最小化,反向梯度回传,层层接力,大模型优化模型权重 。反复迭代降低测试集损失,就是模型训练千方百计做的事情。
无损压缩:为了使得回答简洁明快,就必须不断地压缩重构。人是记不住那么多复杂细节的,就必须知道什么是重点,哪些只是枝杈。在人类视角即“抽象”,在机器学习视角即“泛化”。 所谓泛化,就是如何从已经观察到的数据中,了解到关于可观察数据外数据的规律。
在整体上,根据一篇讨论涌现原理的论文[8],模型在训练中也能够分为四个明显阶段:
记忆化(memorization):第一阶段,训练loss迅速下降,而验证loss甚至稍有上涨,主要进行记忆,可类比于学习阶段。
回路竞争(circuit formation):在训练的第二阶段,模型产生相变,验证集loss和正则化(restricted loss)开始下降。模型开始进入压缩泛化阶段。 可以想象模型在复杂的迷宫中,寻找正确的规律和路径。这一点在下一节会展开。
清理(cleanup): 验证集和评估loss显著降低,压缩关键时期,泛化性大幅度提升,产生所谓涌现性。
稳定期(stable phrase): 压缩泛化基本结束。
图来源:论文[8]
读者这里就能看到费曼技巧和生成式模型的联系了:
如果只是简单的判断一个事情的结果,如同判别式模型,如同只需谈论对错,虽然看似很容易,下限却很低,至于为什么这么判断就是黑盒,看似简单快速,可是浮于表面,那些真正重要的,深层次的认知,反而被忽略了。因此,知道的不代表理解,理解不代表领悟,而领悟又不代表行动。 理解的概念形不成通路,就难于发挥应有的作用。
孩子画画,我们写作,给别人分享想法,都是生成的过程。生成和复述看似很难,需要更多的数据和算力,但却提供了高得多的上限。为什么生成式方法弯道超车,是因为上限高,才能获得涌现的能力。
但笔者认为,GPT生成式方法的关键问题之一,在本文的下一部分。
那为什么要强调无损?
2023年2月28日,OpenAI 的核心研发人员 Jack Rae在一次斯坦福的分享[7]中提出两个重要的观点: 压缩即智能,而LLM的NTP本质就是做无损压缩。 越聪明,你需要记住的东西就越少。
聪明的你肯定会问,所谓的“学习-反馈-更新-压缩”循环,判别式模型也是有的啊? 生成式模型的关键区别在哪里呢? 其关键在于“无损”。 Next Token Prediction看似简单,但是却可以用压缩理论完美地解释,要想NTP学得好,就必须无损! 同时,压缩理论也印证了,为什么 BERT 的 “预测中间词” 从最终应用效果上比不上 GPT 系列始终坚持的“预测下一个词”[7]+ 自回归。
那为什么BERT的MLM就不是无损压缩呢?这个问题太难了。一方面它不像GPT的NTP负对数求和那样有漂亮的理论解释; 同时笔者猜测,MLM能看到序列的两边,是双向的,其任务难度还是要比“单向的,只能看到前面,自回归且能对句子建模”的GPT容易很多。“风浪越大,鱼越贵”。
什么是无损?为什么强调无损? 就是必须发现其本质的规律,有损方法千千万,而无损规律屈指可数。如果规律稍微有错,是不可能做到无损压缩的!
Huffman编码是无损压缩,因为它已经先验的知道了每个n-gram的频率,并将这种频次组成了二叉树。树构造得稍有不对,结果全错。
42+10=52, 41-32=9, 12+3=15... 在较少的存储单元下,还能记住海量类似这样的式子的结果,就必须知道四则运算的定义,并真正透彻的理解它,否则结果全错。
Python,C#,JAVA代码数亿行。而关键的语法规则,却只有几页纸。一个NB的程序员,看一小会儿几百个文件的框架代码,就能基本实现出来。这也是基本上是无损压缩!
各行各业的知识与概念,不同个体的情感模式,但总能抽象出基本规律。“大道至简”四个字描述了多少道理。只要摸透了网文小说的模式,再写一个类似的轻轻松松。
从上面的四个例子,逐级递进。可见规律是有层级的,越是本质的规律,其压缩和泛化能力越强!
同样的,根据目前论文[9]的一些研究,大模型底层更多是多语义神经元,阐述多样性和细节,分配给不重要特征。上层是单语义神经元,强调抽象性和压缩,如前文提到的加减法。 为了让模型尽快地降低loss, 模型倾向于将最重要的特征分配给单语义神经元, 模型必须“强迫”自己学到最本质的规律。 当然,为什么现在大模型依然在常识问题上漏洞百出,因为它还没达到理想的“无损压缩”。
我们收获了什么?
生成式大模型对我们的学习工作有什么启发吗?这里的关键就是:分享和压缩。 为了获得自身和他人的反馈并及时修正,就需要分享,如写作或讲述,即"NTP"; 而语言本身有长度限制,我们也无法记住那么多细节,那就必须压缩和提炼,从中我们发现了概念间的联系,进一步深挖其本质。真正理解,才是创新创造的基础。
因此,写作YYDS!GPT YYDS!
最后的一些个人碎碎念:有这个想法,不代表会写这个文章。虽然我可以用三秒钟判别式地回答: 生成式模型和费曼技巧有联系!但这是一定肤浅的。
为了"生成"这篇文章,我不得不反复阅读了所有的参考文献,意识到了大量之前有所忽略的问题, 试图找出它们内在的关系,并思考怎么更好地表达,删除那些复杂的公式,让没有背景的人也能理解核心观念,前前后后花了20个小时。
但本文依然是非常肤浅的。因为大模型的原理,到现在我都只是研究了个皮毛,也是笔者特别感兴趣的方向,后续会再写一系列文章。 这里会包含:
大模型中的回路竞争策略[3]究竟如何? 不同于MOE的专家选择层,复杂模型中其策略函数究竟如何? 一旦能搞清楚,就能更好地指导prompts的设计,帮助大模型实现稀疏化,甚至“缓存”执行上下文,避免ICL(in context learning)重启后需要重新学习。
大模型运行原理和图灵机和CPU的区别?CPU通过缓存和内存实现堆栈,通过PC(指令计数器)指定下一步执行位置,而大模型ICL中的运行时信息,是存储在模型何处呢?又如何控制大模型实现循环,递归,和回退等概念呢?
涌现的本质是什么? 它有哪些的必要条件?
通信领域的信道编码,也是去做无损压缩。而新一代的信道编码则会考虑语义,即语义通信。 因此“压缩即智能”,在AI领域可能如醍醐灌顶,但在通信界可能接受度已经很高了。大模型会在语义通信中起到怎样的作用呢?
关于写作,沙漠君还有之前的一些文章:
参考文献
[1] Dissecting Recall of Factual Associations in Auto-Regressive Language Models [2] Language models can explain neurons in language models [3]: 世界的参数倒影:为何GPT通过Next Token Prediction可以产生智能 https://zhuanlan.zhihu.com/p/632795115
[4] In-context Learning and Induction Heads [5] OpenAI前核心员工揭开注意力头协同工作机理,破解Transformer https://hub.baai.ac.cn/view/23587
[6] Emergent Abilities of Large Language Models
[7] Compression for AGI - Jack Rae | Stanford MLSys #76 [https://www.youtube.com/@StanfordMLSysSeminars]
[8] PROGRESS MEASURES FOR GROKKING VIA MECHANISTIC INTERPRETABILITY
[9] Toy Models of Superposition