网站首页 > 技术文章 正文
BERT的三个Embedding直接相加会对语义有影响吗?
这是一个非常有意思的问题,苏剑林老师也给出了回答:
Embedding的数学本质,就是以one hot为输入的单层全连接。
也就是说,世界上本没什么Embedding,有的只是one hot。
这里想再从三个角度去理解一下
第一,Embedding 就是以one hot为输入的单层全连接
Embedding 矩阵就是全连接中间的参数
one-hot中 1 所在位置连接的参数就是对应的 Embedding 向量
第二,回到问题本身,为什么 Bert 的三个 Embedding 可以进行相加?
三个 Embedding 的相加可以看作是one-hot特征的concat
假设在BERT中,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 应该可以学到融合后特征的语义信息的。
猜你喜欢
- 2024-09-25 “千克”“毫升”单位不同怎么办?该是特征缩放上场的时候了
- 2024-09-25 决策树的高级概述 决策树的概念
- 2024-09-25 魔方全能小王子降临:一个完全不依赖人类知识的AI
- 2024-09-25 逻辑解释网络 网络逻辑设计包括哪些
- 2024-09-25 常见20种验证码识别思路 验证码识别平台哪个好
- 2024-09-25 大模型训练之增量预训练参数说明 增量模型适用场景
- 2024-09-25 聊一聊机器学习中的特征转换 特征转化
- 2024-09-25 详解状态机的设计 详解状态机的设计步骤
- 2024-09-25 小白福音!逻辑回归算法入门教程,让你一看就会
- 2024-09-25 Python实现数值型与字符型类别变量的独热编码One-hot Encoding
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)