这是一个很有意思的问题,苏剑林老师给出的回答,真的很妙:
Embedding的数学本质,就是以one hot为输入的单层全连接。
也就是说,世界上本没什么Embedding,有的只是one hot。
在这里想用一个简单的例子再尝试理解一下:
假设 token Embedding 矩阵维度是 [4,768];position Embedding 矩阵维度是 [3,768];segment Embedding 矩阵维度是 [2,768]。
对于一个字,假设它的 token one-hot 是[1,0,0,0];它的 position one-hot 是[1,0,0];它的 segment one-hot 是[1,0]。
那这个字最后的 word Embedding,就是上面三种 Embedding 的加和。
如此得到的 word Embedding,和concat后的特征:[1,0,0,0,1,0,0,1,0],再过维度为 [4+3+2,768] = [9, 768] 的全连接层,得到的向量其实就是一样的。
再换一个角度理解:
直接将三个one-hot 特征 concat 起来得到的 [1,0,0,0,1,0,0,1,0] 不再是one-hot了,但可以把它映射到三个one-hot 组成的特征空间,空间维度是 4*3*2=24 ,那在新的特征空间,这个字的one-hot就是[1,0,0,0,0...] (23个0)。
此时,Embedding 矩阵维度就是 [24,768],最后得到的 word Embedding 依然是和上面的等效,但是三个小 Embedding 矩阵的大小会远小于新特征空间对应的 Embedding 矩阵大小。
当然,在相同初始化方法前提下,两种方式得到的 word Embedding 可能方差会有差别,但是,BERT还有Layer Norm,会把 Embedding 结果统一到相同的分布。
BERT的三个Embedding相加,本质可以看作一个特征的融合,强大如 BERT 应该可以学到融合后特征的语义信息的。
之前回答这个问题写了巨多,但答非所问。用“BERT如何做的嵌入”或者是“BERT的输入是什么”回答了“为什么 Bert 的三个 Embedding 可以进行相加”这个问题。这里按照题意,重新表达一下我的理解。
BERT的词嵌入由符号嵌入(Token Embedding)、片段嵌入(Segmentation Embedding)和位置嵌入(Position Embedding)合成得到,表示为
上述三个嵌入分量都可以表达为“独热”(one-hot)编码表示输入与嵌入矩阵的乘积形式,即
其中, :依据符号在词典中位置下标、对输入符号构造的one-hot编码表示; :依据符号在两个序列中隶属标签(更一般的为符号属性)下标、对输入符号构造的one-hot编码表示; :以符号在句子位置下标、对输入符号构造的one-hot编码表示; 、 和 分别为其对应的待训练嵌入参数矩阵; 、和 分别为字典维度、序列个数(更一般的为符号属性)和最大位置数; 为嵌入维度。下面从三个角度理解合成:
角度1——从形象角度理解
上面的嵌入合成有点像在调颜色,先有一个基于字典的符号嵌入,“花里胡哨”的;然后按照符号类型属性(BERT为句子的隶属关系)添加颜色,相同的符号类型添加相同的颜色,于是具有相同属性符号的颜色就接近了一些;然后再按照位置,进一步添加不同的颜色。
角度2——从网络角度理解
(1)按照分别过网络再做求和融合的角度理解
三个one-hot编码向量与嵌入矩阵相乘,等价于构造三个以one-hot编码向量作为输入,输入维度分别为 、和 ,输出维度均为 的全连接网络。求和即为特征融合。如下图所示
(2)按照先做Concat融合再过网络的角度理解
三个one-hot编码向量与嵌入矩阵相乘,按照矩阵分块,可以改写为
对应的全连接网络变为一个大网络,输入维度为 ,输出维度还是 。对应的网络结构图形如下图所示
角度3——从空间映射角度理解
三个嵌入的合成,是将符号空间、符号属性空间和位置空间三个看似“风马牛不相及”的空间表示,通过线性映射到一个统一的、同质的特征空间上去,然后再以求和的方式做坐标综合,如下图所示
如果按照角度2的到底先融合还是后融合的两个视角,那上面说的是先映射后融合模式。当然,我们也可以按照角度2做先融合后映射的思考。先做如下铺垫
类似于欧氏积空间(例如 )能够表达更高维的空间,人们也期望通过积(Product)的形式复合子流形的表达方式,将不同的流形复合,来刻画复杂的高维流形结构。定义如下形式多个流形的笛卡尔积(Cartesian Product)
其中,“ ”表示空间的笛卡尔积, 称为分量流形(Component Manifold)。设 为维度为 的流形,则 也为一流形,称为积流形,其维度为 。证明从略。
对应上面铺垫和我们的问题,可以知道 , 、 和 分别对应上面的符号空间、符号属性空间和位置空间。按照笛卡尔积的从“每个空间取点组团”的定义,我们的对三个one-hot编码的Concat操作即作出了 维积流形中的一个点。然后再做的一个的线性映射,等于去获取该点的 维内蕴坐标。
不管怎么理解,都是在做特征的融合。至于为什么可以加,那是因为进行变换后映射到了同质空间。希望有帮助!
女王:求求题主放过我,我可不敢有什么政绩。。。
女王:求求题主放过我,我可不敢有什么政绩。。。
女王:求求题主放过我,我可不敢有什么政绩。。。
女王:求求题主放过我,我可不敢有什么政绩。。。
女王:求求题主放过我,我可不敢有什么政绩。。。