Please enable JavaScript.
Coggle requires JavaScript to display documents.
BERT(2018) (组件 (Embedding (Token Embeddings (作用
将各个词转换成固定维度的向量, 实现 …
BERT(2018)
组件
Token Embeddings
-
实现
- 进行tokenization处理,两个特殊的token会被插入到tokenization的结果的开头 ([CLS])和结尾 ([SEP])
例如 "I like strawberries" => '[CLS]', 'I', 'like', 'strawberries', '[SEP]'
- 使用WordPiece tokenization
例如 '[CLS]', 'I', 'like', 'strawberries', '[SEP]' => '[CLS]', 'I', 'like', 'straw', 'berries', '[SEP]'
- 将每一个wordpiece token转换成768维的向量
Segment Embeddings
-
实现
Segment Embeddings 层只有两种向量表示。前一个向量是把0赋给第一个句子中的各个token, 后一个向量是把1赋给第二个句子中的各个token。如果输入仅仅只有一个句子,那么它的segment embedding就是全0,而且只有两个句子,不存在3个句子的情况
Position Embeddings
-
实现
- 通过让BERT在各个位置上学习一个向量表示来讲序列顺序的信息编码进来
- Position Embeddings layer 实际上就是一个大小为 (512, 768) 的lookup表,表的第一行是代表第一个序列的第一个位置,第二行代表序列的第二个位置,以此类推
-
-
结构
概述
BERT 利用了 Transformer 的 encoder 部分,对语言序列进行双向训练
-
-
-
- RNN模型没有并行化,很容易超出内存限制
- CNN是其先天的卷积操作不很适合序列化的文本(当前step会卷积后面的step)
- 解决了Bi-RNN“不完全双向”的问题(Bi-RNN不是同时观察上下文,只是一遍看上文,一遍看下文)
- 解决了Bi-RNN“自己看见自己”的问题
- 将Embedding提升至句子级别