← Back to Terminal

我们其实在发明一种说给计算机的语言

李宸宇
我们其实在发明一种说给计算机的语言 就像看莫奈的画一样,很多时候我们只有在多年之后从上帝视角看今天的发展,才能了解全貌。 最近稍微了解了一下CNN,发现像RNN一样是处理离散的语言,但其实transformer里面可以看到不少CNN的影子。 Transformer最核心特征是attention mechanism让整个文本中上下文之间的关系能够被捕捉、计算,而不是像RNN一样一个token一个token地处理。模型并不是通过单纯文本embedding本身进行训练,而是通过attention取得每个token与所有之前每个token之间的上下文关系。 有意思的是这样的上下文关系是通过q、k、v三个向量来表示而不是直觉上的两个。kq相乘得到注意力权重再用权重调整输出中q的贡献。 设计上好像是在说,语言中每一个词所代表的含义有本身承载的信息(v)和上下文关系中承载的信息两部分组成,同时上下文关系又是由指向与被指向关系所决定的。 比如下面两句话: 廉颇大败 廉颇大败秦军 大败的意思取决于秦军,而大败本身又提供了廉颇与秦军是交战双方的关系。 q、k、v的设计初衷是对于文本表达信息时的结构的某种表征,就像CNN中将图像的特征横纵边缘通过filter抽象出来一样。 Transformer中单个attention head中的q、k、v是一个单纯为文本人为设计的结构。它处于将文本token转化为可计算的向量的embedding之后,以及加入非线性关系的FFN之前(当然除此之外还有捕捉不同层面的特征的multi-attention head),位置上似乎完全对应CNN中convolution相关的步骤。 这里有三点都值得讨论一下: 1. 我们发现跟convolution一样,attention这一步也完全是线性的,本质上就是矩阵乘法实现的fancy版本加权平均。原因我猜测是人为设计出来的feature为了保证简单明确,多半都是线性的。人其实没有办法从直觉上很好地理解非线性关系,人对于数的直觉来源就是数数和几何。 2. embedding这一步是CNN处理图片时不需要的,可以说LLM之所以能够带来这么大的影响,某种意义上说可以说是历史的馈赠。因为语言本身就已经是一种信息密度非常高的representation,而我们去训练embedding在一个空间中用距离捕捉每个词的含义的时候,其实是站在几千年语言、文明、知识的演化之上的。比如说哪怕不写任何公式,微积分三个字其实已经承载了很多关于背后数学关系的意义了。而如此海量高密度的信息正是transfer learning和emerging capabilities的基础。 3. 说到现在其实还没有说到神经网络。就像之前的那篇文章中说到的神经网络本质上是一种信息的榨汁机。但是从原理上说,我觉得manifold hypothesis可能是站的住脚的。对于两类标签分类的任务来说,我们最后要做的只不过是用一个n-1维的面将n维空间中的点分成两边。而其实大部分数据由于生成过程在高维空间里是扎堆在某个曲面上的,比如手写笔画空间上是连续的,股价等时间序列在时间上是连续的。为了尽可能干净得切开,我们希望能够在降维的同时,把弯曲的面展开。如果把神经网络拆成线性变换和非线性变换两部分的话。线性变换的作用等效为PCA,也就是通过人为组合的向量形成一个平面从而进行降维;非线性变换的部分其实是在拉伸扭曲曲面,尽可能将其展平。 Attention is all you need完整呈现transformer设计以来,架构上好像没有什么革命性的更新。更多的是通过工程上矿老板的显卡、大厂超能力以及ML system的大力出奇迹来暴力拉升模型性能。但是就像上面分析的,其实深度学习,乃至AI最本质的还是表征,也就是如何向计算机呈现信息。几千年前的语言革命让人类有了知识、社会、历史,从而创造出文明;现在,全新的文明则需要通过用可计算的"语言",表示一切可以表示的信息,从而通过计算将他们压缩,通过结构找到驾驭它们的方式。 也许就像训练embedding模型一样,最后表征方式可以完全用大量计算方式拟合出来。但是至少现在来说,把地球上所有原子的状态收集起来全部塞进神经网络里并不能得到所有的物理规律。我们甚至可以就像用角速度和初始位置描述摆的简谐振动,或是开普勒用面积守恒描述行星轨道一样,物理规律的发现本身就是人为地从高维数据中寻找能够少量特征来表示的几乎是线性的关系。但至少现在,单纯把YouTube像素点塞进神经网络不像是什么能够成功的方案。 如果我们从这个角度看,Transformer看起来还是一条通往Universal model之路吗?如果不是的话,还会需要什么样的方法,会是diffusion/energy based吗?