如何无监督地训练一个神经检索模型是当前IR社区的研究热点之一,在今天我们分享的论文中,OpenAI团队尝试在大规模无监督数据上对GPT系列模型做对比预训练(Contrastive Pre-Training),得到的 CPT-text模型 在文本匹配、语义搜索等任务上取得了优异的zero-shot性能。

  • OpenAI: Text and Code Embeddings by Contrastive Pre-Training

  • http://arxiv.org/abs/2201.10005

  • Blog:Introducing Text and Code Embeddings in the OpenAI API[1]

在语义搜索、文本相似度计算等应用场景中,如何得到优质的文本嵌入(Text Embedding)一直是一个核心研究问题,以往的研究工作通常会从训练数据、训练目标和模型结构三个角度来优化文本嵌入,而OpenAI的这篇工作表明在无监督数据上做大规模的对比学习预训练就可以得到高质量的文本嵌入。

Approach

无监督对比学习的关键问题就是如何构造要对比的样本,而本文提出可以对文本中相邻的片段做对比,即将相邻片段作正样本,而负样本则通过批内负采样得到,这一思路与BERT中的NSP任务有些类似。

在模型训练过程中,给定一个训练样本 ,编码器首先独立地编码  和 ,并将  对应的低维稠密向量作为文本的表示,将  和  的余弦相似度作为相关性打分:

得到相关性打分后,使用批内负样本策略构建对比损失,即针对大小为  的batch中的每个样本,将其他的  个样本当作当前样本的负样本,而每个batch的logits是一个  的矩阵:

其中  是一个可训练的温度参数。在该  的矩阵中,只有对角线上的项被当作正样本,最终的loss为行方向和列方向的交叉熵损失之和,用伪代码可表示为:

labels = np.arange(M)
l_r = cross_entropy(logits, labels, axis=0)
l_c = cross_entropy(logits, labels, axis=1)
loss = (l_r + l_c) / 2

最终就得到了完全无监督的文本嵌入模型,作者将其称之为cpt-text。

Setup

作者用不同大小的GPT系列模型做模型初始化,如下表所示,针对不同大小的模型,作者分别设置了不同的隐层维数和批量大小。

另外,本文也再次验证了做对比学习显卡越多越好:

Results

虽然文本相似度(Sentence Similarity)任务和语义搜索(Semantic Search)任务的目标都是获取高质量的文本表示,但面向这两个任务的相关研究长期以来都是割裂的,也就是说,做文本相似度任务的论文不会评估模型在语义搜索任务上的效果,反之亦然。而下述实验结果表明本文作者的cpt-text可以在两个任务上都取得不错的表现。

线性探测分类任务

线性探测分类(linear-probe classification)是指将embedding作为下游任务的特征训练一个线性分类器,用于评估embedding在某个任务上的区分能力,实验结果如下表所示:

可以看到,直接评估cpt-text(unsupervised)和先在NLI数据集上微调后再评估(Transfer from NLI data)的整体区别并不是很大,cpt-text整体上也超越了SimCSE这种强基线模型,且最大的模型(175B)取得了SOTA结果。

zero-shot classification

作者在二元情感分类数据集SST-2上进一步评估了embedding的质量,如下表所示,其中zero-shot表示计算输入样本分别和positivenegative这两个词的embedding的距离,并将更近的那个词作为预测标签;zero-shot with prompting表示将上述的单个词positivenegative替换为了一个更完整的句子,比如this is an example of a positive/negative movie review。但zero-shot方法比后续的 -NN()和线性分类都要差不少。

Sentence Similarity

奇怪的是,cpt-text在SentEval基准上要比之前的无监督SOTA差很多,如下表所示,作者认为可能的原因是句子相似度任务的定义本身就不明确,即相同的句子对在不同的人看来相似度可能是不一样的,最典型的一类case就是情感极性不同的样本是否是相似的。

从预训练任务的角度来看,cpt-text的预训练任务是拉近相邻片段的距离,但相邻片段在语义上是相关但不相似的,也就是说该预训练任务实际上更接近于语义搜索的相关性建模,所以作者的模型在句子相似度任务上的表现就不如SimCSE了,因为SimCSE对比损失的构造更接近于句子相似度任务的定义。

另外,作者发现随着训练的进行,模型在线性探测和语义搜索任务上的表现越来越好,但是在句子相似度任务上的表现却越来越差,这进一步说明句子相似度和语义搜索的确是两个不同的任务,甚至他们的训练目标可能存在一定的冲突,比如针对同一个事物表达肯定的句子和一个表达否定的句子,在语义搜索中可能会被当作正样本,而在句子相似度任务上则会被当作负样本。

Semantic Search

下表展示了cpt-text在语义搜索基准MSMARCO、NQ和TriviaQA上的表现,cpt-text超越了一些经典的无监督方法。

另外作者也评估了cpt-text的zero-shot性能,下表展示了cpt-text在BEIR基准上的表现,在无监督的条件下,cpt-text与BM25还是有一定距离,但在经过MSMARCO微调后,cpt-text超越了BM25,其中175B模型取得了SOTA结果。

Discussion

虽然是OpenAI发表的论文,但读下来感觉更像是一篇面向GPT-3的PR论文。比较有启发的点主要是大规模对比预训练的效果确实很好,之前已经有很多论文证明了这一点,但一味的scaling可能也并没有从本质上解决语义检索模型的泛化问题,提升的那部分指标可能仅仅是模型见得更多,记得更多了而已。

- 点击下方阅读原文加入社区会员 -

OpenAI:基于对比学习的无监督预训练相关推荐

  1. UCL-Dehaze: Towards Real-world Image Dehazing via Unsupervised Contrastive Learning 基于对比学习的无监督真实图像去雾

    概述 本文提出了一种有效的无监督对比学习范式 --ucl-dehaze.未配对的真实世界清晰图像和模糊图像很容易获取,在训练UCL-Dehaze网络时分别作为 重要的正样本和负样本.为了更有效地训练网 ...

  2. 基于对比学习的目标检测预训练方法

    基于对比学习的目标检测预训练方法 参考链接:目标检测预训练模型(基于对比学习)相关论文梳理 本文主要记录以下几片论文: 1.DenseCL(CVPR21 oral) 2.DetCo(ICCV21) 3 ...

  3. 花书+吴恩达深度学习(二十)构建模型策略(超参数调试、监督预训练、无监督预训练)

    目录 0. 前言 1. 学习率衰减 2. 调参策略 3. 贪心监督预训练 4. 贪心逐层无监督预训练 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十 ...

  4. 语义检索系统【一】:基于无监督预训练语义索引召回:SimCSE、Diffcse

    搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排).系统架构.常见问题.算法项目实战总结.技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排 ...

  5. UP-DETR:收敛更快!精度更高!华南理工微信开源无监督预训练目标检测模型...

    关注公众号,发现CV技术之美 0 写在前面 基于Transformer编码器-解码器结构的DETR达到了与Faster R-CNN类似的性能.受预训练Transformer在自然语言处理方面取得巨大成 ...

  6. 何恺明一作,刷新7项检测分割任务,无监督预训练完胜有监督

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转自机器之心. 机器之心报道 机器之心编辑部 Facebook AI 研究团队的何恺明等人提出了一种名为动量对比(MoCo)的无监督训练方法.在 7 ...

  7. ICLR 2022 | BEIT论文解读:将MLM无监督预训练应用到CV领域

    如果觉得我的算法分享对你有帮助,欢迎关注我的微信公众号"圆圆的算法笔记",更多算法笔记和世间万物的学习记录- 1. BEIT整体介绍 今天跟大家聊一聊ICLR 2022微软亚研院的 ...

  8. CV和NLP中的无监督预训练(生成式BERT/iGPT和判别式SimCLR/SimCSE)

    文 | Smarter 在之前的文章中讲过unsupervised learning主要分为生成式和判别式,那么unsupervised pretrain自然也分为生成式和判别式.目前CV和NLP都出 ...

  9. CVPR2021 | 用Transformers无监督预训练进行目标检测

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:专知 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 通过一 ...

  10. CVPR 2021 华南理工和微信的Transformer:UP-DETR无监督预训练检测器

    点击上方"机器学习与生成对抗网络",关注星标 获取有趣.好玩的前沿干货! 作者:飞奔的啦啦啦   知乎 https://www.zhihu.com/question/4323211 ...

最新文章

  1. python正则取字符串日期_python 正则表达式获取字符串中所有的日期和时间
  2. VBA学习笔记(9)--生成点拨(1)
  3. 图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
  4. automybatis mysql_mybatis-plus:使用Mybatis-AutoGenerator代码生成器(1)
  5. .NET MAUI 已在塔架就位 ,4月份发布RC
  6. 使用了JDK自带的jconsole查看Tomcat运行情况
  7. 支付宝上线“老年版相互宝”:爸妈终于可以加入了
  8. Atitit 面向对象弊端与问题 坏处 缺点
  9. MYSQL数据库脱库写马写一句话
  10. Mac搭建Airtest iOS自动化测试环境
  11. 华为企业网络营销系统分析报告
  12. 嗯,春招两次腾讯面试都挂二面了,分享下我失败+傻傻的面试经历
  13. Linu笔记-管线命令pipe
  14. Cisco AAA 配置
  15. 20、ZigBee 开发教程之基础篇—HC-SR501 人体红外传感器
  16. 不会吧,不会吧程序员这样的消费观
  17. java逆波兰式求值_波兰式、逆波兰式与表达式求值
  18. 河北工程大学计算机考试题型,2019上半年河北工程大学计算机等级考试报名通知...
  19. java多线程(分分钟基础秒杀)
  20. Python全栈 Linux基础之1.Linux初章

热门文章

  1. 什么是全景(360全景、720全景、VR全景)?
  2. 算法面试题:切割木头,给定一个数组nums,nums[i]表示每个木头的长度,木头可以截断,现在需要k根长度一样的木头,每根木头最大长度为多少
  3. 什么是SaaS?SaaS系统有什么特征?
  4. C# Task.Result与Task.GetAwaiter.GetResult()区别
  5. 【算法设计与分析】图搜索算法的应用
  6. 学生信息管理系统(PHP)
  7. xlsm文件格式和xlsm文件打开方法介绍
  8. 单片机设计经验设计技巧集锦
  9. CRAFT(Character Region Awareness for Text Detection)
  10. 怎么把html导入xmind,XMind思维导图怎么导入图标?