0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

三种pooling策略的对比

深度学习自然语言处理 来源:深度学习自然语言处理 作者:深度学习自然语言 2020-09-25 16:46 次阅读

‍一、背景介绍

BERT和RoBERTa在文本语义相似度等句子对的回归任务上,已经达到了SOTA的结果。但是,它们都需要把两个句子同时喂到网络中,这样会导致巨大的计算开销:从10000个句子中找出最相似的句子对,大概需要5000万(C100002=49,995,000)个推理计算,在V100GPU上耗时约65个小时。这种结构使得BERT不适合语义相似度搜索,同样也不适合无监督任务(例如:聚类)。

本文基于BERT网络做了修改,提出了Sentence-BERT(SBERT)网络结构,该网络结构利用孪生网络和三胞胎网络结构生成具有语义意义的句子embedding向量,语义相近的句子其embedding向量距离就比较近,从而可以用来进行相似度计算(余弦相似度、曼哈顿距离、欧式距离)。该网络结构在查找最相似的句子对,从上述的65小时大幅降低到5秒(计算余弦相似度大概0.01s),精度能够依然保持不变。这样SBERT可以完成某些新的特定任务,例如相似度对比、聚类、基于语义的信息检索。

二、模型介绍

1)pooling策略

SBERT在BERT/RoBERTa的输出结果上增加了一个pooling操作,从而生成一个固定大小的句子embedding向量。实验中采取了三种pooling策略做对比:

直接采用CLS位置的输出向量代表整个句子的向量表示

MEAN策略,计算各个token输出向量的平均值代表句子向量

MAX策略,取所有输出向量各个维度的最大值代表句子向量

三个策略的实验对比效果如下:

可见三个策略中,MEAN策略是效果最好的,所以后面实验默认采用的是MEAN策略。

2)模型结构

为了能够fine-tune BERT/RoBERTa,文章采用了孪生网络和三胞胎网络来更新权重参数,以达到生成的句子向量具有语义意义。该网络结构依赖于具体的训练数据,文中实验了下面几种结构和目标函数:

Classification Objective Function:

这里将embedding向量u和v以及它们之间的差向量拼接在一起,组成一个新的向量,乘以权重参数Wt∈R3n*k,n表示向量的维度,k是分类标签数量。

优化的时候采用交叉熵损失函数。

Regression Objective Function:

两个句子嵌入向量u和v的相似度计算结构如下:

采取MAE(mean squared error)损失作为优化的目标函数。

Triplet Objective Function:

给定一个主句a、一个正面句子p和一个负面句子n,三元组损失调整网络,使得a和p之间的距离小于a和n之间的距离。数学上,我们最小化以下损失函数:

s表示a、p、n的句子嵌入向量,||·||表示距离,边缘参数ε表示sp与sa的距离至少比sn近ε。

3)模型训练

文中训练结合了SNLI(Stanford Natural Language Inference)和Multi-Genre NLI两种数据集。SNLI有570,000个人工标注的句子对,标签分为矛盾、蕴含、中立三种;MultiNLI是SNLI的升级版,格式和标签都一样,有430,000个句子对,主要是一系列口语和书面语文本。文本蕴含关系描述的是两个文本之间的推理关系,其中一个文本作为前提(premise),另一个文本作为假设(hypothesis),如果根据前提P能够推理得出假设H,那么就说P蕴含H,记做P->H。参考样例如下:

实验时,每个epoch作者用3-way softmax分类目标函数对SBERT进行fine-tune,batch_size=16,采用Adam优化器,learning rate=2e-5,pooling策略是MEAN。

三、评测-语义文本相似度(Semantic Textual Similarity-STS)

在评测的时候,这里采用余弦相似度来比较两个句子向量的相似度。

1)无监督STS

本次评测采用的是STS 2012-2016 五年的任务数据、STS benchmark数据(2017年构建)、SICK-Relatedness数据,这些数据集都是标好label的句子对,label表示句子之间的相互关系,范围为0~5,样例如下:

无监督评测不采用这些数据集的任何训练数据,直接用上述训练好的模型来计算句子间的相似度,然后通过斯皮尔曼等级相关系数来衡量模型的优劣。结果如下:

结果显示直接采用BERT的输出结果,效果挺差的,甚至不如直接计算GloVe嵌入向量的平均值效果好;采用本文的孪生网络在NLI数据集上fine-tuning后的模型效果明显要好很多,SBERT和SRoBERTa差异不大。

2)有监督STS

有监督STS数据集采用的是STS benchmark(简称STSb)数据集,就是上面提到的2017年抽取构建的,是当前比较流行的有监督STS数据集。它主要来自三个方面:字幕、新闻、论坛,包含8,628个句子对,训练集5,749,验证集1,500,测试集1,379。BERT将句子对同时输入网络,最后再接一个简单的回归模型作为输出,目前在此数据集上取得了SOTA的效果。

上述实验结果分为三块:

not trained for STS:表示直接采用的是跟上面无监督评测一样的模型,结果也一样;

Trained on STS benchmark:表示没有使用NLI数据集,直接在STSb训练数据集上利用孪生网络结构构建回归模型fine-tuning;

Trained on NLI data+STS benchmark:表示利用孪生网络先在NLI数据集上训练分类模型学习句子向量表示,然后在STSb训练集上再利用回归模型再次学习句子embedding,相当于利用两种数据集进行了两次fine-tuning。

评测的时候都是采用的STSb的测试集进行评测。可以看到,最后一种训练方式表现最好,尤其单纯的BERT架构有较大的提升幅度。

四、评测-SentEval

SentEval是一个当前流行的用来评测句子embedding质量的工具,这里句子embedding可以作为逻辑回归模型的特征,从而构建一个分类器,并在test集上计算其精度。这里利用SentEval工具在下面几个迁移任务上对比SBERT与其它生成句子embedding的方法:

MR(movie review):电影评论片段的情感预测,二分类

CR(product review):顾客产品评论的情感预测,二分类

SUBJ(subjectivity status):电影评论和情节摘要中句子的主观性预测,二分类

MPQA(opinion-polarity):来自新闻网的短语级意见极性分类,二分类

SST(Stanford sentiment analysis):斯坦福情感树库,二分类

TREC(question-type classification):来自TREC的细粒度问题类型分类,多分类

MRPC:Microsoft Research Paraphrase Corpus from parallel news sources,释义检测

实验结果显示,SBERT生成的句子向量似乎能够很好捕获情感信息,在MR、CR、SST上都有较大的提升;BERT在之前的STS数据集上表现比较差,但是在SentEval上却有了不错的效果表现,这是因为STS数据集上利用余弦相似度衡量句子向量,余弦相似度对于向量的每一个维度都是同等的,然而SentEval是利用逻辑回归分类器来评测,这样某些维度会对最终的分类结果产生影响。

所以,BERT的直接输出结果无论是CLS位置的还是平均embedding都不适合用来计算余弦相似度、曼哈顿距离和欧式距离。虽然BERT在SentEval上面表现稍微好一些,但是基于NLI数据集的SBERT还是达到了SOTA的效果。

五、消融研究

为了对SBERT的不同方面进行消融研究,以便更好地了解它们的相对重要性,我们在SNLI和Multi-NLI数据集上构建了分类模型,在STSb数据集上构建了回归模型。在pooling策略上,对比了MEAN、MAX、CLS三种策略;在分类目标函数中,对比了不同的向量组合方式。结果如下:

在pooling策略上,MEAN效果最好;在向量组合模式上,只有在分类训练的时候才使用,结果显示element-wise的|u-v|影响最大。

责任编辑:xj

原文标题:Sentence-BERT: 一种能快速计算句子相似度的孪生网络

文章出处:【微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 深度学习
    +关注

    关注

    73

    文章

    5264

    浏览量

    120173
  • 自然语言
    +关注

    关注

    1

    文章

    271

    浏览量

    13239

原文标题:Sentence-BERT: 一种能快速计算句子相似度的孪生网络

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ESP32的Station模式SoftAP模式BLE模式,三种模式可以共存吗?

    现在ESP32 这三种模式能够共存吗? 以前了解,不是很稳定,现在改善了吗?
    发表于 06-24 06:40

    ESP32-S3-BOX-3B和ESP32-S3-USG-OTG和ESP32-S3-DevKitC-1三种开发板都可以使用USB插头的摄像头吗?

    ESP32-S3-BOX-3B和ESP32-S3-USG-OTG和ESP32-S3-DevKitC-1三种开发板都可以使用USB插头的摄像头吗 USB-OTG是否可以插杜邦线? DevKitC-1是否可以插USB插头?
    发表于 06-05 06:36

    visual programmer打开的文件格式有.s19, .hex , .sx 三种文件格式有什么区别吗?

    st visual programmer打开的文件格式有.s19, .hex,.sx三种文件格式有什么区别吗?是不是不同芯片的文件格式不一样,还是所有的芯片都可以使用这三种文件格式?
    发表于 04-28 08:56

    ARM、DSP、FPGA者有什么区别?

    ARM、DSP、FPGA三种是最常用的工业控制芯片甚至是物联网应用芯片,那么这三种芯片在原理上有什么异同?哪款芯片的功能最强?在功能上有哪些不同,主要是指引脚的功能和支持的扩展能力?
    发表于 02-25 20:19

    运放的三种应用

    运放在电路中主要存在三种应用,放大器,滤波器,振荡器。再这三种应用电路中,运放的两大特点虚短虚断仍然成立吗? 在阻尼振荡器中,工作过程是否按照我描述的这样,在反相输入端加一个近似锯齿波的电流源,正半
    发表于 01-26 16:18

    针对电平变频器中点电位平衡模式有哪些优缺点?

    电平结构的变频器有一个问题就是中点电位不平衡,在软件控制层面有三种平衡模式,默认模式、比例模式和PI模式,或许叫法有所不同,总之是这三种平衡模式吧,请问这三种平衡模式是什么意思,具体
    发表于 01-09 16:12

    Pooling与马赛克的秘密

     结合图像理解,相信你也会大概明白其中的本意。不过Pooling并不是只可以选取2x2的窗口大小,即便是3x3,5x5等等没问题,步长(Stride)也是一个道理。除了在神经网络方面,Pooling为图片打马赛克也是可以取得不错的效果,结合几个例子看看。
    的头像 发表于 11-20 16:53 319次阅读
    <b class='flag-5'>Pooling</b>与马赛克的秘密

    什么是电池化成?电池化成的三种方式 三种电池化成对比

    什么是电池化成?电池化成的三种方式 三种电池化成对比  电池化成是指将物体或设备改造为可以使用电池供电的过程。在电池化成过程中,常见的电源例如燃油、电线甚至是替换掉,以便更高效、便捷地提供
    的头像 发表于 11-10 14:49 1706次阅读

    三种常见无功补偿装置作用对比

    在现代电力系统中,无功补偿是一个重要而常见的概念。它对于电力系统的稳定运行和效率至关重要。然而,选择适合客户们的电力系统的无功补偿装置并不容易。下面将介绍三种常见的无功补偿装置,并分析它们的作用和优缺点,以帮助客户们做出明智的选择。
    的头像 发表于 10-11 15:25 952次阅读

    请问如何用单片机让极管出现三种不同的电平状态?

    如何用单片机让极管出现三种不同的电平状态?
    发表于 10-10 06:56

    三种方法对比总结(3)#电路

    电路
    未来加油dz
    发布于 :2023年07月25日 14:58:09

    三种方法对比总结(2)#电路

    电路
    未来加油dz
    发布于 :2023年07月25日 14:57:21

    三种方法对比总结(1)#电路

    电路
    未来加油dz
    发布于 :2023年07月25日 14:56:33

    150.150 不同指标上对比三种算法

    项目开发
    充八万
    发布于 :2023年07月18日 21:11:45

    极管三种工作状态!

    极管
    YS YYDS
    发布于 :2023年07月04日 21:12:56