bert中初cls和sep的其他特殊编码

bert中的其他特殊编码

为什么要其他的特殊编码呢?
首先回顾下cls是做什么的:

  • [CLS]单文本分类任务:对于文本分类任务,BERT模型在文本前插入一个[CLS]符号,并将该符号对应的输出向量作为整篇文本的语义表示,用于文本分类。可以理解为:与文本中已有的其它字/词相比,这个无明显语义信息的符号会更“公平”地融合文本中各个字/词的语义信息。(CLS不是第一个句子的表征,是一个分类标志位。经过self attention 可以融合两个句子和分类相关的信息,然后用在预训练或者后续任务分类上)。

  • [SEP]语句对分类任务:该任务的实际应用场景包括:问答(判断一个问题与一个答案是否匹配)、语句匹配(两句话是否表达同一个意思)等。对于该任务,BERT模型除了添加[CLS]符号并将对应的输出作为文本的语义表示,还对输入的两句话用一个[SEP]符号作分割,并分别对两句话附加两个不同的文本向量以作区分,Mr_不想起床

还有两个特殊的分别是unknown和mask

[UNK]标志指的是未知字符
[MASK]标志用于遮盖句子中的一些单词,将单词用 [MASK] 遮盖之后,再利用 BERT 输出的 [MASK] 向量预测单词是什么。

其他特殊token

pinyin token。
全词embedding,这个可以看考chinesebert的结构了。

笔者觉得,Google的原生bert也好,还是其他的各种预训练骚操作也好,基本上一问世就是英文预训练,即使想huggface上开源的中文,也和实际中的预料相差较大,替换各种魔改的bert(roberta,xlnet,t5,pangu,spanbert等等不如拿自己的预料做continue pretrian效果提升的多)

如有不对的地方,欢迎批评指教,

上一篇:《深度探索C++对象模型》学习笔记 — Data语义学(The Semantics of Data)


下一篇:Android敏感数据泄露引发的思考