为什么BERT在第一句前会加一个[CLS]标志?

编程入门 行业动态 更新时间:2024-10-26 14:31:42

为什么BERT在第<a href=https://www.elefans.com/category/jswz/34/1769010.html style=一句前会加一个[CLS]标志?"/>

为什么BERT在第一句前会加一个[CLS]标志?

前提:

分类任务

BERT在第一句前会加一个[CLS]标志,最后一层该位对应向量可以作为整句话的语义表示,从而用于下游的分类任务等。

为什么选它表示整句话语义?

因为与文本中已有的其它词相比,这个无明显语义信息的符号会更“公平”地融合文本中各个词的语义信息,从而更好的表示整句话的语义。

具体来说,self-attention是用文本中的其它词来增强目标词的语义表示,但是目标词本身的语义还是会占主要部分的,因此,经过BERT的12层,每次词的embedding融合了所有词的信息,可以去更好的表示自己的语义。

而[CLS]位本身没有语义,经过12层,得到的是attention后所有词的加权平均,相比其他正常词,可以更好的表征句子语义。

当然,也可以通过对最后一层所有词的embedding做pooling去表征句子语义。

这里补充一下bert的输出,有两种,在BERT TF源码中对应:

一种是get_pooled_out(),就是上述[CLS]的表示,输出shape是[batch size,hidden size]。

一种是get_sequence_out(),获取的是整个句子每一个token的向量表示,输出shape是[batch_size, seq_length, hidden_size],这里也包括[CLS],因此在做token级别的任务时要注意它。


纸上得来终觉浅,绝知此事要躬行。自己可用bert生成一下文本,坐下测试,看看是否符合预期。

参考:

更多推荐

为什么BERT在第一句前会加一个[CLS]标志?

本文发布于:2024-03-12 15:18:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1731808.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:一句   标志   BERT   CLS   前会加

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!