为什么大语言模型已经理解语言

Simplicity is the ultimate sophistication - Leonardo da Vinci

简单是终极的复杂 - 列奥纳多·达·芬奇

目录

背景

最近在听四年前Ilya Sutskever在Lex Fridman的PodCast上提到了一个观点. Lex问Ilya.

Lex: Do you think neural networks can be made to reason?

Ilya: Why not?

Lex: 你认为神经网络可以被设计成具备推理能力吗?

Ilya: 为什么不能?

与之类似的是Andrej Karpathy在Lex Fridman的PodCast上的观点:

Lex: What's your sense of where we stand with language models? Does it feel like the beginning, the middle, or the end?

Andrej: The begining. 100 percent.

Lex: 你对语言模型的发展现状有何看法?你觉得我们是处于起步阶段、中间阶段还是末期阶段?

Andrej: 刚刚开始, 百分之百.

写这篇文章的初衷是为了弄清楚为什么Ilya和Andrej会这么说. 为什么世界顶级的AI科学家会认为 基于概率去预测下一个词的思想等价与拥有理解能力, 为什么大模型预测下一个词的思想拥有如此好的表现能力. 以下是答案.

总结

理解(understand)的过程可以大致定义为 抽象(abstract), 压缩(compression)以及预测(prediction). 人类的理解过程与大语言模型(简称LLM)理解语言的模式是一样的:

比如你和你比较熟悉朋友之间对话, 往往你的朋友说话说一半, 你就能理解了. 此时你会说你理解你的朋友.

但是当你和陌生人对话, 有时候陌生人说完了, 你并不能理解. 此时你会说你不理解别人说的是什么.

在这个过程中, 你会先提取话的语义(表现为抽象能力), 再去以某种方式去检索信息(表现为压缩能力), 然后去对话(表现为预测能力).

在与大语言模型对话的过程中, 大语言模型会先分词(表现为抽象能力)[1], 再去以某种方式去检索信息(表现为压缩能力), 然后去回答人类的问题(表现为预测能力).

其中, 要弄清楚人类与大语言模型是如何实现检索信息的方式并不重要, 就如同λ演算即使是黑盒也可以表示任何函数一样. [5]

因此, 基于上面的描述过程我们可以定义理解能力:

understand = abstract + compression + prediction

理解 = 抽象 + 压缩 + 预测

追求理解能力等价于追求压缩能力. 如果人类说理解语言, 人类对于知识有有损压缩. 而大语言模型是无损压缩, 因此大语言模型也一定理解人类语言.

假设

  1. 语言是信息的符号化表达.
  2. 通过理解过后的信息称为知识.
  3. 理解是抽象, 压缩与预测的过程.
  4. 语言的表达是一个有逻辑关系的过程.

思想实验

你从梦中醒来发现你在一个陌生的仓库里面. 仓库的里面潮湿又阴暗,只有透过窗户的阳光才能感受到一丝明亮. 仓库非常大, 你位于仓库的正中间. 这时一阵风吹过把虚掩着的仓库大门的吹开了. 就在你想起身走走离开这里的时候. 你发现你的双手被拷在 一根柱子上面. 与此同时, 仓库顶上冒出了一团火焰. 仓库里面铺满了稻草, 你意识到如果不及时离开的话, 这个仓库会起火你的生命也会有危险. 你尝试想挣脱手铐, 但是手铐非常紧. 没有办法用蛮力直接挣脱. 就在你很绝望的时候, 你的手指摸到了像密码锁一样的东西在手铐上. 你用你的触觉发现手铐上有密码锁, 是行李箱上的密码锁那种类型. 由于你是背对着柱子所以你看不到密码锁上面的具体内容. 就在你尝试旋转密码锁上的按钮的时候, 你发现这些按钮的形状是不一样的. 密码锁上一共有三个按钮, 分别是圆形,三角形与正方形. 每个按钮转动时形状会发生变化. 你的手指刚好可以拨动这三个按钮. 虽然你也不知道转动你这锁有没有效果, 由于你很着急, 病急乱投医, 所以你开始尝试旋转这些按钮. 希望转到某种组合的时候, 手铐会解开. 但是你尝试了几种不同的组合, 都没有效果. 此时火势越来越大, 你连呼吸都感觉到困难. 你往头上看想寻找一丝空气, 却意外发现仓库顶的形状是三角形. 突然, 灵光一闪, 你发现三个三角形的形状还没尝试. 你赶紧凭借最后的意识转动按钮, 希望能够有用. 果然手铐解开了, 你成功离开仓库.

在你恢复平静之后, 你逃离了仓库向他人描述刚刚经历的过程.

从直观上定义理解能力

理解是抽象, 压缩与预测的过程. 理解一个事物代表能够给定输入从信息库(人脑, 笔记...)检索出信息, 并回答对应的问题.

抽象是从外部信息输入到信息库, 压缩是从信息库中检索, 预测是对检索出来信息进行预判.[3]

在上面的思想实验中, 你"理解“你刚刚经历的过程. 所以你能够用语言来描述你刚刚经历的过程. 你”不理解“为什么你会出现在仓库里, 以及为什么密码锁转动到三个三角形能够解锁. 但是你“理解”转动到特定组合的时候手铐可能会有反应.

我们在这里用上面的定义进一步拓展:

  • 你”不理解“为什么你会出现在仓库里. 所以你无法回答为什么你会出现在仓库里 = 你无法通过别人给定的问题(抽象)在大脑里面检索(压缩)给定输出(预测).
  • 你"理解“你刚刚经历的过程. 所以你能够回答关于询问这个过程的问题(比如你是怎么出来的? 仓库的场景是什么样?). = 你能够通过的给定的问题(抽象)在大脑中检索(检索), 回答问题(预测).
  • 你"理解“转动到特定组合的时候手铐可能会有反应. = 你能够通过不同的密码锁按钮组合(抽象)在大脑中检索(压缩), 转动按钮使得手铐解开(预测).

我们可以从直观上定义理解是抽象, 压缩与预测的过程.

语言, 逻辑, 概率, 信息

要理解接下来的内容. 需要一些前置背景知识了解逻辑, 概率, 信息和语言的关系.

逻辑是语言的基础. 如果要理解语言, 首先要理解逻辑. 逻辑也是信息的基础. 逻辑在我们日常生活中的方方面面, 这里不需要过多解释.

Probablites as extended logic. - E. T. Jaynes

概率是逻辑的衍生. - E. T. Jaynes

概率(probablity)是可能性推导(plausible reasoning)的工具. 很直观的例子是比如买彩票, 由于中彩票的概率底, 所以买彩票大概率会亏钱. 在这个过程, 你使用了概率去做可能性推导.

information is something that can be used to remove uncertainty. - Claude Shannon

信息是可以用来消除不确定性的事物. - 克劳德·香农

信息是对不确定度的衡量. 在上面的思想实验中, 当你发现你的手铐被锁住的时候, 对于你脱离仓库来说. 你的"不确定"度减少, 你的"信息"增加. 但是当你尝试了几次都不能挣脱手铐的时候. 此时, 你"不确定"度在增加, "信息"减少. 不确定度与信息就像硬币的两面. 香农说既然衡量信息很困难, 那就用不确定度来衡量信息. 因此信息熵(entropy)的公式是用不确定度(概率)来衡量.

The limits of my language mean the limits of my world.” – Ludwig Wittgenstein

语言的边界就是思想的边界. - 维特根斯坦

从这个视角来看, 我们会发现很有趣的事情.

  • 语言是信息的符号化表达
  • 理解信息等价于减少不确定度
  • 概率是可能性推导的工具

因此, 理解语言等价于减少信息不确定度, 从而让我们的可能性推导更加准确.

到此为止, 我们已经得出了和Ilya一样的结论. 现在让我们看看为什么Ilya对于基于概率论去预测下一个词的想法等价于拥有理解能力的解释.

  • Ilya: 表面看起来LLM(大语言模型)是基于概率论预测下一个词, 实际上LLM(大语言模型)是在理解前文的情况下. 才会给出下一个词的预测.

这不正是我们根据定义推导出来的结论吗? 因此人类理解语言与大语言模型理解语言的模式是一样的.

压缩理论

我们在前面了解了理解语言是减少信息不确定度的过程.

现在有一个问题. 如何衡量理解能力? 如果我们不能衡量理解能力的话, 又怎么能说大语言模型已经理解语言了呢?

让我们再做一个思想实现. 比如说在未来, 你想寄一封非常紧急的信到火星, 而你家附近有两个邮局, 但是你没有时间亲自去邮局. 并且两个邮局的距离非常远, 只有去离你家最近的邮局送信才能来的及. 以防万一, 你复制了一份原信件并安排了两个机器人A和B去送信. 如果是你的话, 你自然会去最近的邮局去寄信. 机器人A和你想的一样, 到最近的邮局去寄信. 但是机器人B却到远的那个邮局去寄信. 你会说机器人A的理解能力比机器人B高. 这是因为机器人B的选择增加了送信的时间复杂度.

如果机器对于有限步骤的任务完成的步骤少于人类, 那么机器在这个任务上的理解能力就已经超越人类了. 因此 大语言模型完成特定任务 复杂度越低意味着理解能力越好.

这就非常像在我们学生时代, 我们会对课堂上面讲的内容做笔记. 一开始笔记会非常多, 但是随着学习时间的增加, 笔记会越来越薄. 最后到临考前可能就一张纸. 一开始记笔记的复杂度是上升, 但是到了一个程度之后会逐渐下降. 相应的, 你的理解能力也会逐渐上升.

大语言模型视角下的压缩

由于复杂度和理解能力是成正比的关系, 语言当中存在规律性(regularity). 大语言模型的任务就是尽量找到语言当中的规律性. 假如语言当中有很多规律(regularity), 对于语言所需要描述的符号越少. 因此, 语言的规律性越强, 越容易被压缩. 所以对于相同数据, 模型所表示的符号越少, 可以认为发现的规律越多. 模型的能力越强.

最优的模型是压缩率最高的.

下面我们通过一个例子来解释:

假如未来在计算机里面存在着电子生命, 但是不同的电子生命的语言是不一样的. 虽然都说的是0与1的集合, 但是不同电子生命能表达的内容不一样. 你现在是观察电子生命的科学家. 你和你的机器人助手分别观察电子生命,

电子草履虫说的话是: 00000000000000000......

你发现电子草履虫只会说0. 由于你的机器人助手是个新手, 它只会电子草履虫只会说00. 虽然你知道它没说错, 但是它的编码(encoding)的长度明显大于你的编码的长度. 此时你得出了结论,电子草履虫说的话是0的重复而不是00的重复.

算法复杂度理论(algorithm complexity)有两个概念, 对于数据(data)描述压缩的柯氏复杂性(Kolmogorov complexity), 以及对于模型(model)描述压缩的最小描述长度(Minimum Description Length):.

  • 柯氏复杂性(Kolmogorov complexity): 表示数据的程序长度. 柯氏复杂性越低, 数据的规律性越强.

    K(x)=minp​{|p|:程序p输出x}

    • K(x)是x的柯氏复杂性
    • |p|表述程序P的长度
  • 最小描述长度(Minimum Description Length): 对于一系统的模型M和数据集D, 我们应该选择最能压缩D的M.

    MDL(M,D)=L(M)+L(D|M)

    • L(M): 对于模型M的描述长度.
    • L(D|M): 对于数据D给定模型M的描述长度.

压缩等于预测

在我们给定语言数据集D, 我们希望模型M在压缩数据集D的时候, 尽可能的压缩而不丢失信息. 此时, 我们希望的是 无损压缩(lossless compression). 如果在压缩的过程中丢失了信息, 那么称为 有损压缩(lossy compression). 非常好理解.

现在问题来了, 我们知道大语言模型是基于概率去预测下一个词, 因为我们最后看到的是预测给出来的结果. 那么压缩和预测有关系呢?

There is a one-to-one correspondence between all compressors and all predictors - Ilya Sutskever, An Observation on Generalization

所有压缩器和所有预测器之间存在一一对应关系 - Ilya Sutskever, An Observation on Generalization

整个过程最关键的一环在于理解 压缩与预测是相同操作. 现在让我们来理解为什么压缩与预测是相同操作.

香农早在1951年的时候发表的"Prediction and Entropy of Printed English"就讨论了”语言模型".

给一个人一段不认识并且有缺少单词文本(见上图, 第二行有缺失信息的文本叫做reduced text), 从第一个缺失的单词开始逐个猜字母. 如果猜错了, 这个人会再猜一次. 如果猜对了就继续. 直到把缺失的文本复原. 整个过程如下图. 如果要通过缺失的文本(reduced text)去复原原始文本(original text), 香农说我们需要有一个与猜词的人完全一样的双胞胎(不止是生理, 思考方式也完全一样, 并且可以用数学公式量化)负责生产文本序列(produce text sequence), 当负责生产文本的双胞胎去猜词的时候, 和与之前在猜词的人猜一样的结果. 也会在同样的字母上犯错. 当负责猜词的人去生产词的话, 也会生成相同的缺失文本.

在这种情况下, 缺失的文本相当与原文本的编码. 去生产缺失文本的行为(压缩)相当于预测的逆操作. [4]

所以在这种情况下, 只要压缩算法是双向(单向的也没有意义)的. 比如能够将输入X压缩成Y, 也能够通过Y还原X. 那么两个这种压缩器拼接在一起的时候. 你总是能够通过X还原X. 虽然这个操作看起来没有意义.

这就好比比如你有个文件夹, 你压缩成zip文件. 发送给你的朋友, 你的朋友解压zip文件, 得到了和你文件夹一样的内容. 所以 无损压缩就等于无损预测.

大模型是无监督学习, 无监督学习本身就是给定输入X映射到某个空间Y, 再通过Y重建X. 而刚好 大语言模型是无损压缩 也是目前压缩人类语言里面最好的压缩器.

You're basically zipping the world knowledge. It's not much more than that, actually.

-- Arthur Mensch, CEO of MistralAI, said on training a model.

你基本上是在压缩世界知识. 其实, 就是这样.

-- MistralAI的CEO Arthur Mensch在训练模型时说道

人类是有损压缩

直观上来讲, 语言里面包含数据以及噪音. 噪音指的由于人的提取能力(思维模式,学习能力,专注度等)是有限的所忽略的信息. 数据是指人提取出来的信息. 由于人的理解方式会过滤掉噪音. 相当于没有办法找到噪音里面的模式. 人只会保留有用的数据. 比如人类会有记忆曲线. 学习新技能需要反复的学习. 随着时间, 对我们不重要的概念也会被遗忘.

人脑对于信息压缩的方式也与计算机不同. 这里借用Reddit上面一篇帖子的回答, 虽然大脑和数字计算机在表面上做着类似的事情, 但实际操作方式却有很大不同. 记忆并非通过占据“存储单元”中的空间来存储在大脑中. 据我们所知, 它们表现为神经元之间连接的模式. 特定的记忆可能是一组神经元在受到刺激时通过它们的连接共同激活(与其他可能包含部分相同细胞的集合不同).

大语言模型是无损压缩

这一节是对Jack Rae在讲座里的实验过程的具体描述的补充. 如果明白大语言模型是无损压缩的话, 请跳过这一节. 如果不明白的话, 强烈建议先阅读这篇这篇文章.

在信息论里, 熵编码(entropy encoding)是一种进行无损压缩编码方式. 我们在上文提到过, 越短的编码方式意味着越高的压缩率.

而在熵编码(entropy encoding)里, 算术编码(arithmetic coding)是熵编码(entropy encoding)是目前最短编码长度的方法. 因此我们选用算术编码. 关于算术编码的详细过程在这篇文章写的很详细.

这里的核心思想是在发送端Alice与接受端Bob在传输数据的过程中. 每一次传输实际是在传输训练数据的概率密度, 由于Alice与Bob是相同的程序. 并且迭代过程也是一致, 所以给定相同的输入. 会有相同的输出. 所以大模型在从压缩数据(compress data)去预测(prediciton)时候不需要传输模型的参数量.

追求压缩等于追求智能

More ambitiously, once we really understand the logic behind causal thinking, we could emulate it on modern computers and create an “artificial scientist.” This smart robot would discover yet unknown phenomena, find explanations to pending scientific dilemmas, design new experiments, and continually extract more causal knowledge from the environment. - The Book Of Why

更加雄心勃勃的是, 一旦我们真正理解了因果思维背后的逻辑, 我们可以在现代计算机上模拟它, 创造一个"人工科学家". 这款智能机器人将发现尚未知晓的现象, 找出未解的科学难题的解释, 设计新的实验, 并持续从环境中提取更多因果知识. - The Book Of Why

在没有深入思考之前, 我之前也一直认为基于概率去预测是产生不了智能. 我想智能大致可以定义为理解加创造力. 创造力是在理解能力之上. 如果说大语言是通过巨大的参数量"涌现(Emergent Abilities)"出来超强的理解能力. 没有没可能随着理解能力的增加. 创造力也会被涌现出来? 再进一步说, 有没有可能意识(主动规划的能力)也会被涌现出来?

没人说的准. 只能让时间验证这条路最终会通往何方.

猜想

"The Dawning of a New Era in Applied Mathematics", 作者提到从牛顿时代以来自然科学有两种范式(paradigms).

  1. 开普勒范式(Keplerian paradigm): 又称数据驱动的方法(data-driven approach). 通过数据分析来研究科学规律. 能帮助我们发现很多事物的规律, 但是可解释性(explanability)很差.
  2. 牛顿范式(Newtonian paradigm): 又称第一性原理(first-principle-based approach). 通过事物的基本准测(principle)去分析世界. 由于基本准测(principle)往往非常底层, 因此实践当中很难应用上.

现代计算机算法的核心思想就是分治法(divide and conquer), 也就是牛顿范式的扩展. 而大模型相当于是开普勒范式的应用. 如果说使用牛顿范式的方法能够到达的地方, 使用开普勒范式的方法也一定能够达到. 因此, llms take all.

Mini Experiment

在写完上面这些文字的时候突然有个想法, 并验证了一下:

  • insight: 假设压缩能力就是理解能力, 因为LLM拥有目前最好的压缩能力, 因此拥有非常好的理解能力. 如果在与不同的LLM对话一段时间, 由于LLM累计了历史的对话数据, 那么LLM会理解(压缩)这些对话数据, 所以也能够猜测个人的想法. 那么现有的LLM应用中谁的理解能力更好呢?

  • experiment: 使用下面内容相同的提示词(prompt)

我比较常用的有GPT和kimi. 使用下面提示词去提问:

英文:

I have a question in mind. Based on your understanding of me, please guess what it is and explain your reasoning.

中文:

我心里有一个问题。请根据你对我的了解猜猜这个问题是什么,并解释你的推理。

的对话中,

  • result: GPT的答案很准. Kimi得强迫回答. 但是还是GPT会比较贴切.

后记随想

若干年的新生儿可能一出生可能会有个AI伙伴. 这个AI伙伴一直陪伴新生儿从儿童时期一直到去世. 未来的新生儿 所有的想法 都与AI伙伴对话[2]. 假如人类形成意识的过程就是不断压缩外部信息的过程[6], 那么AI伙伴会学习到新生儿这一生的意识. 并且未来AI伙伴一直有能源供应. 那么对于所有人类来说, 即使肉体消亡了, 意识却以另一种方式永存. 人类文明也从碳基走向硅基.

参考资料


后记

分享在看之前Ilya点赞的The Platonic Representation Hypothesis里面, 有一段很有意思的话.

神经网络必将走向智能.


附录

[1] 由于抽象能力很难定义, 所以这里简单把大语言模型的抽象能力定义为分词.

[2] 假如未来所有的对话(包括心理)都会以某种方式被AI伙伴记录, 并且AI伙伴百分之百是隐私安全.

[3] 在这个过程中我们不会用"学习". 理解是一种状态, 学习是导致理解的行为. 所以要达到理解, 不一定非得通过学习.

[4] 原文的实验(p54~p55)描述的会更加清楚.

[5] 比较好的文章是这篇. 或者b站上的这个视频讲的很清楚.

[6] 在奇点降临(The Singularity Is Near)里面在2030年代意识上传将会出现.

学习如何阅读论文

要了解一手最新的科技前沿, 研究以及阅读文献的能力必不可少. 最近在github上刷到了research_tao这个仓库by刘知远副教授, 其中有一篇文章讲的是如何阅读文献. 阅读到其中一章的时候激发了思考自己阅读文献的方式是否可以再提升一步. 因此花了点时间总结了几位不同老师关于如何阅读论文(主要是计算机与人工智能方向)的材料, 希望对你有所帮助.

Note: 几位老师都提到了如何选择材料, 但不是这篇文章的重点. 因此这里不会提及应该读什么.

目录

阅读论文的方法

清华(刘知远)

research_tao里, 刘老师主要谈到的是论文的阅读顺序.

阅读论文也不必需要每篇都从头到尾看完. 一篇学术论文通常包括以下结构, 我们用序号来标记建议的阅读顺序:

  • 题目(1)
  • 摘要(2)
  • 正文: 导论(3), 相关工作(6), 本文工作(5), 实验结果(4), 结论(7)
  • 参考文献(6)
  • 附录

按照这个顺序, 基本在读完题目和摘要后, 大致可以判断这篇论文与自己研究课题的相关性, 然后就可以决定是否要精读导论和实验结果判断学术价值, 是否阅读本文工作了解方法细节. 此外, 如果希望了解相关工作和未来工作, 则可以有针对性地阅读“相关工作”和“结论”等部分.

Johns Hopkins Univeristy(Jason Eisner)

Jason Eisner提出Multi-pass reading.

Multi-pass reading的过程:

  • First pass: 大概浏览论文, 了解论文的主要脉络(解决的问题, 以及点子). 限制自己阅读每页的时间. 如果论文值得阅读的话, 开始Second pass.
  • Second pass: 在Second pass中, 不需要仔细阅读每篇论文. 提出问题并且回答他们(ask yourself dumb questions and answer them). 至少弄清楚论文的动机(Motivation), 原理(Mathematics and algorithms). 以及实验过程(Experiments).

此外, 在使用Multi-pass reading的要做的事. 需要一边阅读论文一边写笔记(Write as you read). 记录细节(Low-level notes)与框架(High-level notes).

细节(Low-level notes)包括以下部分:

  • 用自己的话复述在论文中不明白的要点
  • 补充缺失的细节(假设, 代数步骤, 证明, 伪代码)
  • 注释数学对象及其类型
  • 类比具体的例子去复述作者的点子以及作者遇到的问题
  • 与已知的其他方法和问题联系起来
  • 提出原文未说明的地方或原文存在不合理的问题
  • 挑战论文的主张或方法
  • 想出应该做的后续工作

框架(High-level notes)包括以下部分:

  • 总结你感兴趣的内容, 与其他论文进行对比, 并记录你自己的问题和对未来工作的想法. 写下这些摘要会在阅读论文时给你一个目标, 并且这些笔记将来会对你有用.
  • 用自己的话复述点子, 确保以后再读这篇文章的时候可以快速重建概念. 花时间在难的部分(公式推导, 算法). 而不是在简单的部分.

原文虽然说是Multi-pass, 但是提到了Second-pass之后就没有继续往下提及了. 不过可以从原文发现后续pass应该做什么的蛛丝马迹, 这里引用原文来表达Multi-pass reading核心思想:

Practice the ability to decode the entire paper —as if you were reviewing it critically and trying to catch any errors, sloppy thinking, or incompleteness. This will sharpen your critical thinking. You will want to turn this practiced critical eye on yourself as you plan, execute, and write up your own research.

通过解构论文提升自己评判性思考的能力, 再将这种能力转换到自己的研究上面. 因此假如需要有后续pass的话, 应该不断的去提炼点子直到能够解构整篇文章.

Univeristy Of Waterloo(Srinivasan Keshav)

Srinivasan Keshav提出three-pass method.

  • First-pass:

    • 目的: 抓住论文主要的点子.
    • 时间: 5分钟左右
    • 做什么:
      1. 读标题, 摘要, 以及介绍
      2. 读每一节和每一小节的标题
      3. 读结论
      4. 看引用
      5. 最后回答五个问题(five C's):
      • 类别(Category): 这篇文章的类型是什么?
      • 内容(Content): 这篇文章与什么内容有关? 理论基础是什么?
      • 准确度(Correctness): 文章的假设是否成立?
      • 贡献(Contributions): 这篇文章主要的贡献是什么?
      • 清晰程度(Clarity): 这篇文章是否清晰的表达点子?
  • Second-pass:

    • 目的: 抓住论文主要的内容
    • 时间: 1小时左右
    • 做什么:
      1. 仔细读文章所附带的图片以及其他陈述信息
      2. 将未读过的有相关性参考文献加入阅读列表当中
  • Third-pass:

    • 目的: 彻底理解论文的细节
    • 时间: 4到5个小时对于初学者, 1小时对于有经验的人
    • 做什么:
      1. 思考与作者处于同样的假设并且复现实验的情况下, 你会如何呈现一个点子, 并与作者的点子进行对比.

Harvard University(Michael Mitzenmacher)

这里选择的材料是CS222-Michael Mitzenmacher的讲义:

  • 批判性思考: 通过提出合适的问题去批判性地思考论文, 例如: 如果作者在解决问题, 那么作者解决的问题是正确的问题吗? 是否有更简单的方法作者没有考虑到? 作者提供的方法有什么局限性? 假设是否合理? 逻辑是否合理? 作者对于文中的图表是否是合理的解释数据?
  • 创造性阅读: 能否解构论文并且重建这篇文章? 这篇文章好在哪里? 这些点子是否有其他扩展以及应用是作者没有考虑到的? 点子能够更加泛化? 这些提升是否能让结果有明显的提升? 如果你要从这篇文章开始做研究, 你能够做什么?
  • 阅读的时候做笔记: 在第一篇读完这篇文章之后, 尝试用一到两句话去总结这篇文章. 如果可以的话, 将这篇文章与相关工作进行比较.

Carnegie Mellon University(Aaditya Ramdas)

这里选用了How to I read research papers-Aaditya Ramdas的ppt讲稿, Aaditya Ramdas讲述了自己阅读论文方法不断迭代的过程.

  • 阅读论文的目的:
    1. 直接从作者身上学习, 避免信息加工.
    2. 作者在旧问题上有新点子
  • 方法:
    • first-pass(5到30分钟):
      • 阅读材料:
        • 摘要, 问题定义, 主要的理论, 讨论
      • 回答:
        • 什么问题被解决了?
        • 大致描述一下什么有意思的点子?
        • 为什么主要的观点是这样(至少用英文, 最好能用数学公式)?
    • second-pass(30分钟到2小时):
      • 阅读材料:
        • 例子, 公式, 定理, 证明
      • 回答:
        • 过去的方法面临什么问题? 这篇文章是如何解决的?
        • 什么是最简单的基准线? 在什么指标上这种方法更好?
        • 有哪些与之相关的问题并且为什么论文的想法还没用应用到上面去?
        • 方法能否应用到没被考虑的问题上?
        • 什么是主要的点子并且能否对以后有所帮助的?
    • third-pass(几天/周):
      • 阅读材料:
        • 附录, 参考文献, 相关工作, 推论,定理, 证明
      • 回答:
        • 文中的公式/理论是如何被证明的?
        • 是否能够从头复现实现结果?
        • 如果不能, 是否有关键信息被忽略了? 额外的假设是否能够让复现更简单?
        • 是否能够用简单的工具简化证明? 能否用不同的方法证明?

总结

其实上面提到的方法不仅仅适用于阅读论文, 只不过论文是一种结构化的信息材料. 通过其他信息材料(视频, 文章)学习新知识都可以采取类似的方法. 以记笔记的方式让自己与阅读的材料互动. 提出问题并且回答问题, 推动自己去理解文章. 并且以问题为导向学习让自己处于能够实验的环境之中. 通过复述以及写作总结自己的理解, 帮助自己消新知识. 读完这篇材料后, 不妨花点时间用一两句话总结一下这篇文章的主要观点是什么.

参考资料

五分钟读论文: Scaling and evaluating sparse autoencoders

这几天OpenAI新发了一篇博客关于使用sparse-autoencoders去解释GPT4的内部机制. 本文是对论文的解读方便读者快速获取关键信息, 如果好求甚解, 请点击传送门:

目录

如果对背景知识不太了解的话, 推荐顺序阅读. 如果已经有足够的背景知识, 请点击这里开始正文阅读. 下面是对论文的解读.

背景知识

Autoencoder

根据吴恩达在CS294A的讲义, Autoencoder是一种无监督学习, 在没有给定标签的数据{x(1), x(2), x(3)....}, 通过隐藏层(hidden layer)学习输入中隐含的特征, 从而让输出{x^(1), x^(2), x^(3)...}尽可能的逼近输入. 下图为autoencoder的结构(引用自这里):

Sparse Autoencoder

Sparse Autoencoder是Autoencoder的一种变种, 在Autoencoder的基础上通过增加稀疏惩罚项(sparse penalty)使得前向传播时只有一部分神经元激活, 而不是所有神经元都激活. 由于相比与未做稀疏化处理的autoencoder结构, 激活的隐藏层神经元(hidden neruon)变少了, 因此每一个隐藏层神经元都包含了更丰富的隐藏特征(latent feature). 是不是和现在流行的Mixture of Experts很像? 下图为sparse autoencoder的结构(引用自这里):

sparse-autoencoder

Sparse Autoencoder的特征可解释性

MIT6.S898 Deep Learning在2023年发表的一篇blog在这里提到了

A sparse autoencoder lets us learn a sparse representation for a vector, but in a higher dimensional space.

相比与未稀疏化的Autoencoder, 稀疏化的Autoencoder可以学习到更高维度的隐含特征. 换个角度说, 未经稀疏化的隐藏层神经往往是表示多维特征(polysemantic). 而经过稀疏化的隐藏层神经元所表示的特征维度更少, 从而使得隐含特征更加容易理解. 更详细的关于sparse autoencoder的可解释性, 可以点击Anthropic发的"Towards Monosemanticity: Decomposing Language Models With Dictionary Learning"查看.

Bottleneck Layer

bottlenect layer指的是含有比前一层更少的神经元的网络层, 使得输入特征维度减少. 这里引用英文原文更方便理解:

A bottleneck layer is a layer that contains few nodes compared to the previous layers. It can be used to obtain a representation of the input with reduced dimensionality.

TopK激活函数

TopK是一种激活函数. 仅保留输入向量中最大的k的值,其余值设置为0.

论文解读

ok, 我们已经了解了所有的前置知识, 接下来我们开始看这篇文章. 首先是作者部分还有Ilya Sutskever与Jan Leike, 说明是OpenAI之前研究的存货. 再来看摘要部分:

paper-abstract

黄色部分的文字是这篇文章所解决的问题, 绿色部分是作者提出的解决方案.

  • 问题 : 随着输入特征的增加, 训练sparse autoencoder会难以平衡稀疏性与准确性. 稀疏性指的是如何确定哪些神经元需要激活, 哪些神经元不需要激活. 准确性是指经过稀疏化处理后的隐藏层神经元所表示的隐含特征是否与原始输入特征相似(见背景知识Autoencoder).
  • 解决方案 : 作者使用k-sparse autoencoder去控制稀疏性从而实现平衡.

到了正文部分, 作者一开始比较了不同的激活函数对autoencoder的影响. 发现TopK的获得最小的正规化均方根误差(Normalized root mean square error). 如下图所示:

topk

接下来作者在不同指标上又进行了测试, 如果有兴趣建议阅读原文. 为了抓住重点, 我们先跳过这一部分. 作者使用Neuron to Graph(N2G)去做特征的解释.

n2g

上图的N2G论文原文的描述, 可以看到N2G是将语言模型输出的回答进行关联生成一张有向图.

之后作者对比了ReLU与TopK在N2G中的表现. 发现TopK的召回率以及精度都更高. 如下图所示:

result

最后作者给出了结论以及未来工作的方向:

paper-result

参考资料




(第一次写这种论文解读类文章, 发现还是不好写. 因为有条件的话应该直接读原文, 不加如一些原文的图的话会表达不到意思, 加了太多又和读原文没什么区别.)