编码解码
有哪些编码解码
基于Transformer的模型,衍生出三大流派:
- 第一个是Encoder-Only,以Bert为代表的模型,对语言进行双向预测(即同时能预测上文和下文),使用了对输入进行mask遮罩的Masked Language Model(MLM)和双语句输入判断是否连续Next Sentence Prediction(NSP),由于其主要是针对文本分类和问答类任务,所以Encoder的能力至关重要
- 第二个是Decoder-Only,以GPT为代表的模型,目标是通过自回归预测,给定一个条件文本,学习其语言模式、语义和顺序,达到生成连续语言的目的,其任务本质更关注于预测输出,所以对Decoder的能力要求更高
- 第三个是Encoder-Decoder,大家常用的模型,在图像中更为常见
虽然由Encoder-Only和Decoder-Only,但是其实其模型中还是包含编码或者解码器的
为什么编码解码?
要解释为什么编码和解码,首先要搞明白编码和解码中的码是什么码。
在人类语言中,有如下特征
- 人类语言是一种符号,即利用一种符号表达语义,例如:"笑脸"就是☺,“雨伞”就是☂
- 人类语言还是一种上下强相关的连续符号的表达,即用多个符号表达出物质和运动的信息
这些语言除了统计学规律,是不具备任何数学计算的能力的,所以,需要利用一定的映射方法,将其映射为数学语言,比如:数字或者矩阵。在计算机中,对这个符号的表达是Token,给Token分配ID(将其数字化或者矩阵化)的映射过程叫做Tokenizer,然后就可以利用距离等Measurement计算Token之间的关联度。
如何编码?
1. 标记编码
将Token映射到一个一维空间上,一个token和一个数字一一对应
- 优点:方便快捷
- 缺点:所有编码都在一个维度上,分布过于稠密,很难在数学上计算其高维度的距离(各种相似度,每个角度的相似度所占有的维度高度和维度数目是不同的)
2. one-hot编码
one-hot编码,就是一个 1 × n 1 \times n 1×n的矩阵,其中只包含一个 1 1 1,其余都是 0 0 0,这就意味着,任意两个Token之间都是正交的。
- 优点:在样本不是很大的时候,简单便于计算(欧式空间的计算相对简单)
- 缺点:由于每个样本都是正交的,对于复杂相似度计算不友好(例如:苹果和小米,其除了都是植物,还都是品牌);且当样本巨大时,存储压力将会非常大(维度灾难),因为语义信息是利用维度表达的
3. 空间变换
∣ 0 0 ⋯ 0 1 ∣ 1 × n × ∣ a 1 , 1 a 1 , 2 ⋯ a 1 , m − 1 a 1 , m a 2 , 1 a 2 , 2 ⋯ a 2 , m − 1 a 2 , m ⋮ ⋮ ⋯ ⋮ ⋮ a n − 1 , 1 a n − 1 , 2 ⋯ a n − 1 , m − 1 a n − 1 , m a n , 1 a n , 2 ⋯ a n , m − 1 a n , m ∣ n × m = ∣ b 1 b 2 ⋯ b m − 1 b m ∣ \Bigg| \begin{matrix} 0 & 0 & \cdots & 0 & 1 \\ \end{matrix} \Bigg|_{1\times n} \times \left| \begin{matrix} a_{1,1} & a_{1,2} & \cdots & a_{1,m-1} & a_{1, m} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,m-1} & a_{2, m} \\ \vdots & \vdots & \cdots & \vdots & \vdots \\ a_{n-1,1} & a_{n-1,2} & \cdots & a_{n-1,m-1} & a_{n-1, m} \\ a_{n,1} & a_{n,2} & \cdots & a_{n,m-1} & a_{n, m} \end{matrix} \right|_{n \times m}= \Bigg| \begin{matrix} b_1 & b_2 & \cdots & b_{m-1} & b_{m} \end{matrix} \Bigg| 00⋯01