点击上方,选择星标或置顶,每天给你送干货!
作者信息
Elesdspline
目前从事NLP与知识图谱相关工作。
来自:AI自然语言处理与知识图谱
要说自然语言处理在最夺目闪耀的是什么事情,那当属 BERT 刷新各个任务的记录了,至今已经过去了近两年半的时间,但其影响力未曾衰减,无论学术界还是工业界,很多的工作与部署都围绕其展开,对很多的下游任务都有举足轻重的作用,真的是里程碑啊。
相信大家都有过BERT、ALBERT等预训练语言模型应用在自己任务上的实践经历,可能是情感分析、分类、命名实体识别、阅读理解、相似度计算等等,使用的方法也无非是在自己任务上 fine-tune 或者作为预训练Embedding,使用的预训练模型大多是公开的,大佬们(财大气粗、资源无数)训练好的。(有钱真好)
在用预训练模型的时候,根据任务的不同,用到信息也不同,有的需要是词表示,比如命名实体识别、词性标注等任务,有的需要的是句子表示,比如分类、句子语意匹配等。这里我要说的句子表示这一类的任务,大家经常会用到的 [CLS] 特征信息作为句子向量表示,CLS 作为 BERT/ALBERT序列信息中特殊的一个存在,在最开始设计模型的时候便考虑将其作为后续文本分类的表示,然而直接使用 CLS 的效果真的会满足我们的预期嘛?相信大家在实践的过程中都有所体会~,另外 ALBERT 和 BERT 在下游任务应用上面孰好孰坏,是否有一个定论?
我最近看到了一篇 Arxiv 的文章,题目是 《Evaluation of BERT and ALBERT Sentence Embedding Performance on Downstream NLP Tasks》,这篇文章在 BERT/ALBERT 提取信息作为句子信息表示应用在下游任务,对其效果进行了评测,或许会解答我们实践中的疑惑,也或者会给我们一些预训练模型在下游任务应用的启发,让我们来看下~
评测对比
有一系列的对比实验,来看在下游任务上面的效果~
[CLS] embeddings
CLS 通过 Self-Attention 机制来获取句子级别的信息表示,在不同的任务上 Fine-tune 之后,CLS 会捕捉特定环境下的上下文信息表示。
Pooled embeddings
将文本中的所有词做 Avg-pooling 或者 max-pooling。
Sentence-X(SBERT/ALBERT)
BERT 在语义相似度任务上面也取得了很不错的效果,然后其内部的结构在计算过程中会导致非常耗时,不适合做语义相似度匹配任务,特别是在工业界,BERT 的耗时无法满足上线的需要。针对这个问题,有人提出 Sentence-BERT,采用孪生网络模型框架,将不同的句子输入到参数共享的两个BERT模型中,获取句子信息表示,用于语义相似度计算,最终相比BERT效率大大提升,满足工业界线上需要。SBERT 从65小时降到5秒,具体详见参考资料2。
CNN-SBERT/SALBERT
在上图中,SBERT 采用 Avg-pooling 获取句子向量表示,本文将其替换成 CNN 网络结构获取句子向量表示。
结果分析
评测任务
STS:Semantic Textual Similarity
NLI:Natural Language Inference
评测指标
Pearson and Spearman’s rank coefficients(皮尔逊和斯皮尔曼相关系数)
评测数据
Semantic Textual Similarity benchmark(STSb)
Multi-Genre Natural Language Inference(MultiNLI)
Stanford Natural Language Inference(SNLI)
上面列出来相关的评测任务、评测指标以及评测所用到的数据,下面先给出一张结果表,然后再详细分析~
详细分析
微调有效:这个是符合我们认知的,肯定是微调的效果要好。
CLS 效果:CLS 的效果要逊色很多,无论是在微调上面,还是不微调上面,CLS的效果都要远逊色于平均池化操作或者其他方法。
不同方法效果:总体上来看,CNN-BERT > SBERT > Avg pooling > CLS
BERT 与 ALBERT:从上图中大概能够看出,不微调的情况下,两者的效果差不多,但是微调之后,ALBERT的效果要比BERT差很多,仅仅在STSb上微调的时候,CLS 和平均池化的方法要好于BERT。
CNN的效果
从上图来看,最好的结果是采用了 CNN 网络结构,说明 CNN 起到了正向的作用,仔细观察发现,CNN 对 ALBERT 的改进要远大于对 BERT 的改善提高。ALBERT 由于内部参数共享,可能存在不稳定性,CNN 网络结构或许可以减缓这种不稳定性。
下图也进行了一些对比,在几个不同的数据集上验证 CNN 的有效性,从最终的 Avg 结果来看,CNN 网络结构对 ALBERT 有改善提升。
以上是根据实验结果进行的简单分析,其中有一些结论和对比可以在我们日常的实践中借鉴并尝试,说不定会有不错的效果~
参考资料
Evaluation of BERT and ALBERT Sentence Embedding Performance on Downstream NLP Tasks
N. Reimers and I. Gurevych, “Sentence-BERT: Sentence embeddings using Siamese BERT-networks,” in Proceedings of the Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLPIJCNLP), .
说个正事哈
由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:
(1)点击页面最上方“深度学习自然语言处理”,进入公众号主页。
(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。
投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。
记得备注呦
推荐两个专辑给大家:
专辑 |李宏毅人类语言处理笔记
专辑 | NLP论文解读
专辑 |情感分析
整理不易,还望给个在看!
如果觉得《BERT中CLS效果真的好嘛?这篇文章告诉你答案》对你有帮助,请点赞、收藏,并留下你的观点哦!