从编解码和词嵌入开始,一步一步理解Transformer,注意力机制(Attention)的本质是卷积神经网络(CNN)(1)

1、发展过程
在这里插入图片描述

图1.1 模型发展树
这个革命树中,最右边也就是Gpt路线是decoder Only,最擅长的是生成内容。 最左边是Enconder Only,他擅长的是理解内容。 中间的这一条分叉更多的是用来训练左边和右边的工具。

理解transformer的关键是这个编码和解码的结构,那么这个码 是什么码呢?这就要回到最基本的内容了。人工智能最典型的场景,一个是人工识别,一个是自然语言处理。神经网络靠的是CNN,最先在图像识别领域爆发出来的。在NLP领域,也有一个和CNN对应的模型,是RNN(循环神经网络)。
在这里插入图片描述

图1.2循环神经网络
图像与语言的区别是,图像里的像素点是并行的,而语言里的词是有先后关系的,最后的语义又是和先后关系有强关联的。RNN之所可以可以处理语言问题,就是因为他可以通过循环结构,直接把语言之间的先后循序的信息给囊括进去。(RNN的改进包括(长短时记忆法LSTM)以及GRU。RNN是为了解决seq2swq的问题(也就是输入的语句的长短和输出的语句的长短不一样,应该怎样对应起来。因此引入了编码和解码的结构,等到transforemr,最开始解决的问题,其实和RNN是一样的。只不过TransFormer并没有沿着RNN的路线,在旧的的已有的模型上去改进,算是另起炉灶了,但还是把编码和解码的结构给保留了下来)。

我们说了,关键是理解好编码和解码,这个码指指的是什么呢?其实就是把各种语言中的那些符号,发音等等形式上的不同剥离掉之后,剩下的单纯的语义之间的关系。 这里引入一个例子,之前有一个意大利的罗马人来到中国,他不会说中文。那他来到中国如何让进行交流了。想象一下,加入他想要个苹果,他就是指着红彤彤的水果。然后听摊主的说什么。这样,他听到的次数多了,就会说苹果了。但是机器对一个新的东西怎么学习呢。机器翻译只能通过大量的上下文,去确定词与词之间的关系,两种语言的符号,发音可能不同。但是相同语义的词达上下文关系应该是类似的。香蕉这次,无论中文,还是英文。他的上下文,总是应该和猴子,黄色,甜关系更加紧密。

如果让你设计让计算机学习,你应该如如何设计呢。编解码的码有两个标准。第一,计算机识别的都是数字,语义关系肯定会设计成数值化的,可以用高维向量。第二,语义关系码数字化后的数值要体现出语义之间的关系才行。如猴子和香蕉的点就应该是离着比较近的点,而原子能啊,章鱼啊。就应该是离得比较远的点。

在这里插入图片描述

图1.3 香蕉,猴子,原子能之间关系
高维向量的码应该如何得到呢?在基础学习里面有两个基础的环节,一个就是tokenizer,也就是标词器或者分词器。另一个是one-hot,就是独热编码。这两个东西做的事都是对最基本的语义单元进行数字化。最基础的 语义单元是什么就不一定了。可以是字母,可以是词根,也可以是介于单词和字母之间的词根。标记器和独热编码就是在利用不同的策略,对token实施数字化。

首先,标记器,他数字化的方法九比较简单。它既是在对每个不同的token分给一个不同的id,就相当于把所有的token都投射到了一根一维的数轴上。独热编码呢?它相当于把二进制的每一位都对应一个token。如果有香蕉,黎,苹果三个token。那么标记化后,很可能1代表苹果,2代表香蕉,3代表梨。独热编码为每一个token都分配了一个维度。组成了有多少token,就有多少维度的高维空间。如图:

在这里插入图片描述

图1.4 标记化

独热编码是对应的语义空间的维度太高了。信息密度过于稀疏。它可以很容易的表示出苹果和香蕉的组合语义。苹果是001,香蕉和010。苹果和香蕉是011.但是独热码的问题是所有的token都是独立的维度。所有的token都互相正交。就很难体现出token之间的语义联系。

向上面的例子中,假如001表示苹果,010表示香蕉,100表示华为。则这三个都是正交的。内交积都是0。相关度为0.用向量表示的话,他们都会分布在距离原点为1的高维球面上。独热编码的问题就体现出来了,各个token之间的关系全是靠维度表示出来的,并没有把空间的长度给利用起来。分词器呢,则是把所有的语义都变成了长度问题。完全没有利用维度信息去表示语义信息。

2、
解决方法:
前面已经描述了,这两个问题就是两个相反的极端。那么我们可以想一想办法,来进行一个融合。找一个维度高,但是又没有那么高的空间,去协助完成编码和解码的任务。
这个空间也就是我们经常听到的潜空间。那么,具体应该找潜空间呢?有两个大的方向。一个是基于分词后的id去升维。 另一个是及与独热编码去降维
降维的话,就是线性代数里的矩阵运算。线性代数里的向量和一个矩阵相乘,就一种理解方式,它可以看作一种空间变化。

这里介绍一下为什么乘以一个矩阵就可以变成一个空间变换呢?
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

加入这个T向量就是要操作的向量,向量下的每一个数值就像是这个向量在对应的坐标系下的坐标值。也就是T在标准正交基上的e1,e2。
我们就是考虑如何从上面的二维的向量变换到三维的向量。具体的T是什么。在这个变换过程中不重要,重要的是坐标轴如何进行变化,坐标轴可以看成单位向量。
在这里插入图片描述
假设坐标轴单位向量e1在新的三维坐标轴上分别是w11,w12,w13。那么新的就可以表示为aw11,aw12,aw13

在这里插入图片描述

同理,这是二维中另一个向量的三维表示。
所以,二维中的T向量在三维坐标轴中无论什么样子都可以写成在这里插入图片描述
所以,x就是aw11+bw21,y就是aw12+bw22,z就是aw13+bw23。这个w就是表示的原来的坐标轴和新坐标轴之间的变化关系。而a和b体现的是向量的信息。如果用矩阵和向量相乘的信息去写的话,就如下。
在这里插入图片描述
矩阵代表的就是旧坐标系和新作坐标系之间的关系。
[ w 11 , w 12 , w 13 w 21 , w 22 , w 23 ] \begin{bmatrix} & w11,w12,w13 & \\ & w21,w22,w23 & \end{bmatrix} [w11,w12,w13w21,w22,w23]

一个矩阵的行代表是旧坐标系有多少维度,列代表的就是新坐标系有多少维度。

  • 20
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值