恭喜,BERT模型的基础部分已经讲解到昨日为止了,接下来我们来谈一些质疑、检讨、改进基础BERT的内容。今天我们来讲解一个颇有争议的问题:[CLS]
是否真的能代表句义或文义?
[CLS]
为什麽能被用来代表句义?要理解这个问题,最重要的是先知道[CLS]
所对应的Embedding被使用来代表句义的原理。为什麽选择它而不是其他任何一个Token来代表文义?在Google的用法中,其实是因为这个Token本身不带有任何具体意义。所以,一张白纸的[CLS]
可以被用来更「公平」地表示整句话的意思。
按照这样的原理,在下游任务的Fine-tune过程中,[CLS]
不断被使用来进行文本分类,从而也慢慢学习到去Attention整句话中最适合进行分类的那些Token(如上图所示)。等Fine-tune完成的时候,[CLS]
就会成为一个句义地良好表示。
但是要注意了,上述原理有一个大前提,就是一定要进行Fine-tune,[CLS]
才能被充分训练到可以表示句义。而另一个问题则是,上述假设中「[CLS]
本身不带有任何具体意义」是有问题的。因为在预训练阶段的NSP(下一句预测)任务中,[CLS]也是被拿来进行句子是否相接续的预测,所以即使未进行Fine-tune,[CLS]
本身就已经包含了原有的语料中的基於下一句预测的句义表达。
上述部分,在大多数应用情境中不会出现问题。[CLS]
可以进行良好的句义表示,但这不代表[CLS]
的效果是最佳的。而且,如果Fine-tune阶段资料量太少,或甚至无法进行Fine-tune的应用情境,用[CLS]
来当作句义就有很大问题了。
[CLS]
,我们还有其他方式表达句义吗?当然有。每一个Token的Embedding其实都是用来进行句义表示的好资源。但问题是我们如何将每个Token的Embedding来转化成整个序列的Embedding,这个过程称为聚合(Aggregation)。
简单的方法包括取每个维度(在同一个模型的情况下,各Embedding的维度数量是一致的)的平均值或最大值。复杂一点的方法,你可以加一个CNN或LSTM在这些Embedding之後专门用於聚合。这些方法的效果如何呢?已经有人做过相应的实验了。
Hyunjin Choi等韩国三星的研究者在文本相似的任务上进行过一系列实验,他们尝试了未Fine-tune和Fine-tune情况下使用[CLS]
、平均Token Embedding的表现以及後接CNN进行聚合的表现。在此之外,他们额外还使用了一个名为Siamese network structure的方式来进行模型训练,此方式与我们一般将两个句子中间加[SEP]
进行连接一起送入句子进行训练的方式不同,是同时让两个句子分别进入模型得出Embedding後再采用平均Token Embedding或接CNN的方式计算空间距离。下面是该结构的示意图。
而结果如何呢?简单地说,[CLS]
是效果最差的那位,平均Token Embedding效果还不错,Siamese BERT情况下的平均Token Embedding效果第二名,第一是Siamese BERT + CNN的组合。
虽然我有点怀疑,[CLS]
的效果是否真的有这麽差(尤其是Fine-tune之後),会不会是实验者并没有给使用[CLS]
的方式一个适当的超参数呢?但无论如何,关於[CLS]
的使用的确已经引起了许多讨论,以後你在进行有关句义表达的任务时,不妨尝试看看上面说的其他方法。
Choi, H., Kim, J., Joe, S., & Gwon, Y. (2021, January). Evaluation of BERT and ALBERT Sentence Embedding Performance on Downstream NLP Tasks. In 2020 25th International Conference on Pattern Recognition (ICPR) (pp. 5482-5487). IEEE.
<<: React Native 的动画好帮手:Lottie
>>: 铁人赛 Day10-- PHP SQL基本语法(五) -- 帐密登入验证 & mysqli_query
缘由: 因Jcenter将不再对一般客户端提供服务,官方建议将远程仓库迁移至mavenCenter,...
What's React Query !? React Query 是一个适合用於React Hoo...
根据相对论,如果一对挛生兄弟, 哥哥搭乘宇宙飞船,以接近光速,飞离地球,在宇宙间航行; 当回到地球的...
Aloha!又是我少女人妻 Uerica!今天真是个秋高气爽的日子,下午想说跟老公去公园浪漫野餐,还...
再做订单的时候,常常会遇到重新付款的需求, 情境通常发生在使用者购物车加入一拖拉库的项目之後, 因为...