文章《Transformer:AI科技发展的缩影与未来趋势》
文章标签:自然语言处理, Transformer, 计算逻辑, 自然语言理解
只需输入几个关键词,人工智能就能协助你创作一篇短篇小说或专业论文。拥有广泛知识的对话语言模型ChatGPT近期在邮件撰写、视频脚本、文本翻译以及编程等领域展示出了强大的能力,甚至引起了埃隆·马斯克的注意,他警告说AI的威胁正在日益临近。
近期,ChatGPT的计算逻辑受到了广泛关注,其基础源于一种名为Transformer的算法,该算法最早于2017年在一篇名为《Attention is all your need》的科研论文中提出。尽管这篇论文主要关注自然语言处理领域,但因其卓越的解释能力和计算性能,Transformer算法逐渐被广泛应用于AI的各个角落,从而成为近年来最受欢迎的AI模型。这一现象充分展示了当前AI科技发展的趋势,即从单一领域的应用逐渐拓展到跨学科的整合与创新。无论是ChatGPT还是Transformer模型,都成为了这个变革时期的缩影。
这也是我想在这里给大家分析这篇文章的核心要点和主要创新的初衷。
但我非AI(数学,计算机)专业,只是梳理并分享自己学习的体会和思考,与大家一起讨论,欢迎各位多提宝贵意见;所述并不专业,各位大牛可以绕行。自Transformer理论的提出,历经GPT(Generative Pre-Training)的出现,GPT2的迭代标志Open AI实现商业化运营,直至GPT3和ChatGPT的“出圈”,这一系列的发展都彰显出Transformer的重要性。同时,我们也要看到其在产业界的应用,如第四范式涉及到的生物医疗、智能制造等领域,都已有以Transformer为基础的技术成功落地。这无疑让我们更加深入地思考Transformer的价值和潜力。
在未来的相当长一段时间内,我们将在智能化领域见证一个不断循环迭代的过程,这包括研究、计算能力、基础设施、工程、数据以及解决方案等方面。短期内,流动性和创新性并不会趋于平稳,反而会持续增强。
我们很难等到科技封装好,把这些知识全部屏蔽掉,再去打磨产品。未来在竞争中获胜的,将是很好地“解决了产品化和科研及工程创新之间平衡”的团队。我们一般理解的研发实际上是工程,但AI的实践科学属性需要团队更好的接纳这种“流动性”。因此对所有从业者或者感兴趣智能化的小伙伴了解全栈知识成了一个刚需。通过深入探讨这篇论文,我们可以更加直观地揭示科研领域所发生的种种变化及其发展速度和节奏。其中一些事件具有重大意义,堪称科学界的“梅西”,引领我们探索未知领域;而另一些则更偏向于微创新,即在明确目标的基础上,仍有大量空间可供挖掘和拓展。此外,还有一些研究类似于炼金术,仍处于探索阶段,需要较长时间的发展,甚至可能会维持现状。
在AI领域,开源代码的技术特性使得大量的论文成为开放式的,这一现象的双重影响值得关注。首先,开源代码的广泛传播极大地吸引了更多的人才参与到技术的改进与迭代过程中,从而推动了整个领域的快速发展。其次,科研与工程实践的无缝衔接也在这里得到了体现,一篇优秀的论文往往能够引发从核心代码、平台到具体应用的广泛价值扩散。换言之,一篇高质量的论文就可能成为一个具有重要意义的领域或赛道,甚至直接推动业务和客户价值的显著提升。因此,对于AI领域的相关研究和实践者来说,掌握开源代码技术、促进科研与工程的紧密融合,将有助于在激烈的竞争中脱颖而出,为我国AI产业的发展贡献力量。
作为AI技术的发展,其涵盖的范围广泛且多样,包括感知、认知等多个层面,而这些层面的算法逻辑在过去存在着较大的差异。然而,Transformer的出现似乎在一定程度上推动了各个领域之间的融合与 convergence,这一现象值得我们深入探讨和理解。同时,本文将详细介绍相关情况,以便于我们更好地把握整个发展趋势。此外,ChatGPT作为一种现象级应用,已经让广大用户有了直观的感受。我们可以预见,在未来,这类应用在体验提升和更新速度方面将会更加迅速。因此,深入了解其背后的逻辑和原理,对于我们把握AI技术的最新动向具有重要意义。
介绍
在本篇文章中,我们将深入探讨有关人工智能(AI)的研究。尽管可能会涉及到一些复杂的技术细节和公式,但相信只要您投入精力去理解,将会对AI的概念有更深入的认识。请您放心阅读,我们期待与您共同探索这一领域。
这篇论文的结构非常精炼,提出问题,分析问题,解决问题,给出测试数据。顶刊文章讲究言简意赅,有描述,有代码,有结果;其中最核心的是以下这张图,作者团队提出Transformer的核心算法结构:
整篇文章就是围绕这张图来进行解释的,由于篇幅所限,我们聚焦在一条主线上:1、文章想解决主要问题是什么;2、如何解决的;3、从文章提出的解决方案作为一个案例来引发整体思考,因此我们将内容简化,主要关注核心部分。
这张图表达的内容如果理解了,那基本上你掌握了这篇论文85%的内容,也是最关键的部分。
《Attention is all your need》在编写时主要是为了考虑NLP任务,是由几个Google的科研人员一起完成的,其中一个背景是Google也在推广自己的并行计算芯片以及AI TensorFlow开发平台。平台主要功能特点是并行计算,这篇文章的算法也是在最大限度的实现并行计算。我们就以一个简单的例子来把这个算法串一遍。核心内容
需求是我们需要训练一个模型,进行中文到英文翻译。
背景知识:这个需求要把“翻译:我爱你 to I love you”转置成一个y=f(x)问题,x代表中文,y是英文,我们要通过训练得到f(),一旦训练成功f(),就可以实现翻译。大家拼的就是谁的训练方法更准确,更高效,谁的f()更好用。之前自然语言处理主要的算法叫RNN(循环神经网络),它主要的实现逻辑是每个“字”计算之后将结果继承给第二个字。算法的弊病是需要大量的串行计算,效率低。而且当遇到比较长的句子时,前面信息很有可能会被稀释掉,造成模型不准确,也就是对于长句子效果会衰减。这是这篇文章致力于要解决的问题,也就是说这篇文章有训练处更好的f()的方法。联想一下ChatGPT可以做论文,感受一下。
在Transformer里,作者提出了将每个字与句子中所有单词进行计算,算出这个词与每个单词的相关度,从而确定这个词在这个句子里的更准确意义。(这句话要是理解了,后面其实可以不看了。)
在此处,要开始进入一些技术细节,在开始之前,我们有必要再熟悉一下机器学习领域最核心的一个概念——“向量”。在数字化时代,数学运算最小单位往往是自然数字。但在AI时代,这个最小单元变成了向量。这是数字化时代计算和智能化时代最重要的差别之一。
举个例子,比如,在银行,判断一个人的信用额度,我们用一个向量来表示:
向量是一组数据的集合,也可以想象成在一个超高维度空间里的一个点。一个具体的信用额度向量,就是在8个特征组成的高维空间的一个点。数据在高维空间将展现更多的数学性质比如线性可分,容易让我们抓住更多隐藏的规律。
向量的加减乘除是计算机在进行样本训练是最主要的计算逻辑。第四范式一直强调的高维,实时,自学习,其中高维就是把企业信息拉升到一个非常高维的空间,变成向量。Transformer模型的主要意义就是找到了一个算法,分成三步把一个词逐步定位到了一个高维空间,在这个过程中赋予这个单词比其它算法更优的信息。很多情况下这个高维空间有着不同的意义,一旦这个向量赋予的信息更准确更接近真实情况,后面的机器学习工作就很容易展开。还拿刚才信用额度向量举例子:
这两个向量存在于两个不同的向量空间,主要的区别就是前者多了一个向量特征:“年薪”。可以思考一下如果判断一个人的信用额度,“年薪”是不是一个很重要的影响因子?
以上例子还是很简单的,只是增加了一个特征值,在Transformer里就复杂很多,它是要把多个向量信息通过矩阵加减乘除综合计算,从而赋予一个向量新的含义。
好,理解了向量的重要性,我们看回Transformer的三步走,这三步走分别是:1、编码(Embedding);2、定位(Positional encoding);3、自注意力机制(Self-Attention),这个真的大名鼎鼎。
举个例子,比如,翻译句子Smart John is singing到中文。首先,要对句子每个词进行向量化。
我们先看“John”这个词,需要先把“John”这个字母排列的表达转换成一个512维度的向量John,这样计算机可以开始认识它。说明John是在这个512维空间的一个点;这是第一步:编码(Embedding)。
再次,第二步,定位(Positional encoding)。利用以下公式(这是这篇文章的创新):微调一个新的高维空间,生成一个新的向量:
我们不用太担心这个公式,它核心意义是:在这个新的向量里面每一位由原来的0和1表示,分别取代成由sin和cos表示,这个目的是可以通过sin和cos的定律,让这个新向量不仅表示John这个单词的意义,还可以表示John在Smart John is singing这个句子的位置信息。
如果不理解,可以直接忽略,只要记住第二步是用来在“表达John这个词的向量”中,加入了John在句子中的位置信息。John已经不是一个孤立的词,而是一个具体句子中的一个词,虽然还不知道句子中其他词是什么含义。
如果第一步计算机理解了什么是John,第二步计算机理解了“* John**”。
最后,第三步,自注意力机制(Self-Attention),通过一个Attention(Q,K,V)算法,再次把John放到一个新的空间信息里,我们设为:在这个新向量里,不仅包含了John的含义,John在句子中位置信息,更包含了John和句子中每个单子含义之间的关系和价值信息。我们可以理解,John作为一个词是一个泛指,但Smart John就具体了很多,singing的Smart John就又近了一步。而且Attention (Q,K,V)算法,不是对一个单词周围做计算,是让这个单词跟句子里所有单词做计算。通过计算调整这个单词在空间里的位置。
这种方法,可以在一个超长句子中发挥优势,而且最关键的是一举突破了时序序列的屏障,以前对于图像和NLP算法的划分,很大程度上是由于NLP有很明显的时序特征,即每个单词和下一个以及在下一个有比较明显的时序关系。但Transformer这种算法打破了这种束缚,它更在意一个单词跟句子中每个单词的价值权重。这是Transformer可以用到everywhere的主要原因。
计算过程
如果不感兴趣,可以跳过这一部分介绍,直接进入启发收获部分。
具体的计算过程,用翻译句子“我爱你”到“I love you”举例(这句更简单一些)。首先进行向量化并吸收句子位置信息,得到一个句子的初始向量组。
由于样本每个句子长短不同,所以每个句子都会是一个512*512的矩阵,如果长度不够就用0来代替。这样在训练时,无论多长的句子,都可以用一个同样规模的矩阵来表示。当然512是超参,可以在训练前调整大小。
接着,用每个字的初始向量分别乘以三个随机初始的矩阵WQ,Wk,Wv 分别得到三个量Qx,Kx,Vx。下图以“我”举例。然后,计算每个单词的attention数值,比如“我”字的attention值就是用“我”字的Q我分别乘以句子中其他单词的K值,两个矩阵相乘的数学含义就是衡量两个矩阵的相似度。然后通过一个SoftMax转换(大家不用担心如何计算),计算出它跟每个单词的权重,这个权重比例所有加在一起要等于1。再用每个权重乘以相对应的V值。所有乘积相加得到这个Attention值。
这个attention数值就是除了“我”字自有信息和位置信息以外,成功的得到了这个句子中每个单词的相关度信息。
大家可以发现,在所有注意力系数的计算逻辑中其实只有每个字的初始矩阵WQ,Wk,Wv是未知数(这三个矩阵是所有文字共享的)。那么我们可以把这个Transformer简化成一个关于输入,输出和这个W矩阵的方程:其中X是输入文字信息,Y是翻译信息。
这里有必要再介绍一下机器学习的基础知识:Transformer算法本质上是一个前馈神经网络模型,它的计算基础逻辑,不去管复杂的隐藏层,就是假设Y=f(x)=wx,(目标还是要算出一个f())然后随机设置一个w0,开始计算这个y=w0x的成本函数,然后再把w0变成w1,计算y=w1x的成本函数,以此类推计算出无数w(不是无数哈,也会收敛的),然后比较哪个w的成本函数最小,就是我们训练出来的f()。那么在Transformer里,这三个初始矩阵就是那个w0。
再回到Transformer,在计算Attention之后,每个单词根据语义关系被打入了新的高维空间这就是Self-attention(自注意力机制)。
但在Transformer里,并不是代入了一个空间,而是代入了多个高维空间,叫做多头注意力机制。
文章中没有给出更清晰的理论支持,为什么是多头。
主要原因是在训练时效果很好。这也是AI科研论文的一个特点,常常凭借非常高的科研素养和敏感性,发现一些方向,并且通过测试确实有效,但不一定可以给出很完美的理论支撑。这往往也给后续研究者一些可以进一步完善的空间。事实证明,如何提升Attention(Q,K,V)效率是Transformer领域迭代最快的部分。之后的Bert算法提出预训练机制成为了主流,后面会做进一步介绍。
当然,事后我们可以理解是把这个句子中的逻辑关系放到不同的高维空间去训练,目的就是希望抓取更多的信息,这一部分可以更加深刻理解科研人员对空间的应用。除了以上内容,还有一些技术点比如Mask机制、layer norm、神经网络激函数饱和区控制等,由于篇幅关系以及属于技术细节就不一一介绍了。
如果大家理解了多头自注意力机制,基本已经85%掌握了这篇论文的重要内容,也对还在快速扩展影响力的Transformer模型有了一个比较直观的认识。
启发收获
下图是顶级刊物上的学术论文中,开放源代码的论文比例,这个数据在这几年以更快的速度在增长。科研过程与工程过程产生越来越大的交集。开源社区和开源文化本身也在推动算法和工程的快速发展。
更多人参与,更多领域的人参与进来,进入门槛随着算力成本、AI基础架构和代码、知识分享的开源逐渐降低,科研与工程的边界也变得模糊,这个就像足球运动的规律,除了足球人口增多,天才球员梅西出现的概率也会增大。
从数据和后续方案发展的角度看
ChatGPT的成功同大量的数据训练功不可没,但除了简单对话互动或者翻译,大篇幅回答甚至论文级别的答案还是极其缺乏样本数据(算法训练需要的样本数据需要清晰度X和Y)。
而且Transformer的算法相比其他算法需要更大的数据量,原因在于它需要起始阶段随机产生三个矩阵,一步一步进行优化。除了Transformer以外,另一个技术Bert也是技术发展非常重要的现象级算法。其核心是一个简化的Transformer,Bert不去做从A翻译到B,它随机遮住X里面的一些单词或句子让算法优化对遮住部分的预测。这种思路使得Bert成为了Transformer预训练最好的搭档。
如果通过Bert进行预训练,相当于给矩阵加入了先验知识(之前训练逻辑没有给机器任何提示,规则后者基础知识),提高了正式训练时初始矩阵的准确度,极大地提升了之后Transformer的计算效率和对数据量的要求。
在现实中,举例来说,如果我想训练国家图书馆图书,之前需要每本书的信息和对这本书的解释,或者中文书对应的英文书。但现在我们可以大量只是训练内容,不需要打标签,之后只需要通过Transformer对样本数据进行微调。这就给ChatGPT很大的进步空间,而且可以预见,更多这类大模型会雨后春笋一般快速出现。由于Transformer是更高级的神经网络深度学习算法,对数据量有很高要求,这也催生了从小数据如何快速产生大数据的算法,比如GAN对抗网络等。这是AIGC领域的核心技术。解决数据量不足问题,除了更高效率抽象小数据的信息,也多了把小数据补足成大数据的方法,而且这些方法在快速成熟。
我们发现在机器学习算法中有大量的超级参数,比如在Transformer里多头机制需要几头N,文字变成向量是512还是更多,学习速率等都需要在训练之前提前设置。由于训练时间长,参数复杂,要想遍历更优秀的计算效果需要非常长的摸索时间。
这就催生出AutoML,第四范式在这个领域研究多年,拿Transformer举例,就要很多个路线进行自动化机器学习;比如贝叶斯计算(找到更优参数配置概率);强化学习思路(贪婪算法在环境不明朗情况下迅速逼近最优);另外还有寻求全新训练网络的方法(Transformer,RNN,MLP等联合使用排列组合)等。
科研发展强调参数化,工业发展强调自动化,这两者看似统一,但在现实实操过程中往往是相当痛苦矛盾的。这也是开篇说的产品化和科研流动性相平衡的一个重要领域。
自然语言处理, Transformer, 计算逻辑, 自然语言理解