欢迎光临散文网 会员登陆 & 注册

大白话chatGPT内部原理之Transformer

2023-02-16 12:45 作者:智慧科技工厂  | 我要投稿

上次我们只是大概性的了解了下chatGPT,今天我们的任务是更进一步地去认识它的内部世界。

Transformer是chatGPT非常复杂的一个内部结构,大话这个主题,真是有些挑战,至少要自己必须理解它。好在我在5年前,研习过另外一个语言模型Bert,这也是GOOGLE的重磅产品,它的内部就是采用的Transformer,并且也是他们提出的Transformer。这次因为chatGPT的大火,我又将其研读了一次。上次研读时,Transformer算是非常新的概念了,所能看的资源比较少,特别是国内的资料更是少。这次研读时发现国内有了很多解读,便是方便了很多。

估计你我都不是搞这个专业的,于是我尽可能地用大白话去说,你就将就着听咯。下面我们开始。

Transforme是GOOGLE,这位IT界的领头羊贡献的语言模型,下面我引用百科的定义:

Transformer模型(直译为“变换器”)是一种采用自注意力机制的深度学习模型,这一机制可以按输入数据各部分重要性的不同而分配不同的权重。该模型主要用于自然语言处理(NLP)与计算机视觉(CV)领域。与循环神经网络(RNN)一样,Transformer模型旨在处理自然语言等顺序输入数据,可应用于翻译、文本摘要等任务。

重点的词,我用红色标了出来,下面的任务是让我们先以最快的速度解决掉这几个概念。


编辑切换为居中



首先,我们来看深度学习模型,正如上面的图示,深度学习模型就是一个非常复杂的网络结构,它将样本输入后经过复杂的处理,然后去学习样本的特征,再根据样本的特征信息来识别新的文字或图像。


编辑



然后,我们来看循环神经网络(RNN),它是神经网络中的一种。如上图所示,它是一个顺序结构,即一步一步地处理输入的数据。用个表达式就可以如下图所示:


编辑



即在当前状态下,有了新的输入,产生新的状态出来。正因为这种模型不能并行处理,所以非常不适合当今训练大数据的需求。但它非常符合我们思维方式,如下面所示用来做翻译时的场景,是不是非常符合我们内心中的翻译过程呢?


编辑切换为居中



还有两处标红的概念,我们先不做解释,等你看完了文章自然就明白了,之所以标红是因为它们就是Transformer的特色,你需要在心中先记住它们。

下面我们将进入Transformer的内部来看个究竟,我们来看下面这张图:


编辑



这张复杂的让人不由得恐惧的图,所示的就是Transformer的内部。为了更加直观一些,我们将它分成输入,输出,处理过程3个部分。

在输入端,我们再来看下面这个图:


编辑切换为居中


注意的是我们输入的词不是原样送进入处理的,首先要经过编码,编码的过程就是上面的图示,最终得到一个输入矩阵。词的Embedding是由某种预训练得到,主要是把单词转换成相应的向量,比如:queen=king-man+woman。位置Embedding,GOOGLE采用了下面的公式得到:


编辑切换为居中


将单词的词 Embedding 和位置 Embedding 相加,就可以得到单词的表示向量 x,x 就是 Transformer 的输入。

在输出端就是它的输出了,如果是翻译那就是翻译后的结果,这没有什么好说的了。

下面的我们重点是处于中间的处理部分。首先我们将处理部分分成Encoder层和Decoder层。看下图:


编辑切换为居中


在Encoder层,输入编码器的文本数据,在处理过程中带上了全局信息,即上下文信息,这有助于关联当前词和其他词。

在Decoder层,被编码的信息被层层解码,通过联系上下文,从词库中找到那个最高概率的翻译词出来,这样这个词就被翻译了。

注意这里给出的RNN的串行结构,实际中应该是并行的,看下图所示:


编辑切换为居中



现在我们将镜头再离中间处理部分进一些,我们来看看它中间的那些部件。看下图:


编辑切换为居中


这是一个Encoder的内部,它包含一个自注意力机制和一个前馈神经网络。

首先来看自注意力机制,看下图:


编辑切换为居中


左边是一个注意力机制,由边是多头注意力机制,在Transformer中是多头的。我们先看单头的,它其实就是一个公式,公式如下:


编辑


大体上解释下上面的公式,Q,K,V是我们通过将词的Embedding值与WQ,WK,WV相乘的结果,WQ,WK,WV则是我们要训练的参数,原始值可以给个随机数。如果忽略激活函数 softmax 的话,那么事实上它就是三个 n×dk,dk×m,m×dv 的矩阵相乘,最后的结果就是一个 n×dv 的矩阵。即Q跟K的相关度,再乘上一个放大,缩小值V,这样就会将相关的放大,不相关的缩小。softmax函数用来归一化,就是让它们统一到统一个维度和尺度,下面除去的那个值,则是起到调节作用,防止出格。比如,下面引自网络的例子:


编辑切换为居中



编辑切换为居中



编辑切换为居中


首先,根据公式我们算出了Thinking这个词跟自己和其他词的相关度,最后将这些值相加,就得到了这个词的自注意力值,即图中的Z1。 上面是单头的情况,如果是多头,就如下所示的情况,跟上面相比只是多个几个层而已,单个的自注意力机制是相同的。


编辑切换为居中


下面这个例子更加直观的可以看出自注意力机制的作用,如下图所示:


编辑


当输入The animal didn’t cross the street because it was too tired时,我们想让机器知道其中的it指代的是什么?从上图中我们看到,模型通过自注意力机制,分析出了这里的it与The animal最为相关,另外一个是tried,根据The animal跟it的属性相同,就可以断定it就是指代的The animal。上面展示的是8个自注意力机制的情况,通过每个自注意力机制的关注度不同,我们可以得到更多的维度,因为每个自注意力机制的权重矩阵是不同的。这样我们的模型就具备了上下文相关的特性,让模型的输出内容更为连贯。说完了自注意力机制,剩下的内容就是前馈神经网络了,它用来不断地优化我们训练的参数,让模型更智能。即,自注意力机制处理后的数据被送到前馈神经网络中,在这里评估我们的处理结果,根据评估结果,更新我们的参数。

最后,在Decoder端也具有这两层,但是这两层中间还插入了一个 Encoder-Decoder Attention 层,这个层能帮助解码器聚焦于输入句子的相关部分。这篇文章省略了一些复杂的细节,所以更适合我们用于了解Transformer,所分析的是17年由GOOGLE提供的论文内容,不清楚如今的chatGPT是否有些改动,估计改动不大吧。

参考文献:

《Attention Is All You Need》链接地址:https://arxiv.org/abs/1706.03762Transformer

模型详解 - 简书 (jianshu.com)

图解Transformer(完整版)!- 腾讯云开发者社区-腾讯云 (tencent.com)

一文读懂「Attention is All You Need」| 附代码实现-阿里云开发者社区 (aliyun.com)

The Illustrated Transformer – Jay Alammar – Visualizing machine learning one concept at a time. (jalammar.github.io)

大话chatGPT原理剖析之Transformermp.weixin.qq.com/s?__biz=Mzg5OTYxMTQzNw==&mid=2247483950&idx=1&sn=91fd3399d3ac7e68b55a9a6afd2cf5bc&chksm=c051ec6cf726657a16dfc231a9b53fb889bc202129901784e33f35c47ec9df74e91802238244#rd

今后这里将以游戏,游戏开发相关的内容呈现给大家。

其他技术文章您可以在

公号:python自学炫酷编程 

中找到。

多谢大家这些年的支持!祝福您们!


大白话chatGPT内部原理之Transformer的评论 (共 条)

分享到微博请遵守国家法律