当前位置:网站首页>SimCLR:NLP中的对比学习
SimCLR:NLP中的对比学习
2022-07-06 08:53:00 【InfoQ】
论文简介
- 诸神黄昏时代的对比学习
- “军备竞赛”时期的对比学习
- 使用预训练好的 Bert 直接获得句子向量,可以是 CLS 位的向量,也可以是不同 token 向量的平均值。
- Bert-flow^[On the Sentence Embeddings from Pre-trained Language Models],主要是利用流模型校正 Bert 的向量。
- Bert-whitening^[Whitening Sentence Representations for Better Semantics and Faster Retrieval],用预训练 Bert 获得所有句子的向量,得到句子向量矩阵,然后通过一个线性变换把句子向量矩阵变为一个均值 0,协方差矩阵为单位阵的矩阵。
- Sentence-Bert (SBERT)^[Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks],通过 Bert 的孪生网络获得两个句子的向量,进行有监督学习,SBERT 的结构如下图所示。

什么是dropout

dropout和其他数据增强方法进行比较

不同的dropout rate

对比学习评价指标
- alignment 计算所有正样本对之间的距离,如果 alignment 越小,则正样本的向量越接近,对比学习效果越好,计算公式如下:$$
- uniformity 表示所有句子向量分布的均匀程度,越小表示向量分布越均匀,对比学习效果越好,计算公式如下:$$\ell_{\text {uniform }} \triangleq \log \quad \mathbb{E}{x, y \stackrel{i . i . d .}{\sim} p{\text {data }}} e^{-2|f(x)-f(y)|^{2}}$$

无监督

有监督


结果

代码实践
pip install simcse
SimCSE("在这里填写不同版本")from simcse import SimCSE
model = SimCSE("princeton-nlp/sup-simcse-bert-base-uncased")
embeddings = model.encode("A woman is reading.")

sentences_a = ['A woman is reading.', 'A man is playing a guitar.']
sentences_b = ['He plays guitar.', 'A woman is making a photo.']
similarities = model.similarity(sentences_a, sentences_b)
similarities1 = model.similarity('A woman is reading.', 'A man is playing a guitar.')
similarities2 = model.similarity('He plays guitar.', 'A man is playing a guitar.')

sentences = ['A woman is reading.', 'A man is playing a guitar.']
model.build_index(sentences)
results = model.search("He plays guitar.")
similarities2 = model.similarity('He plays guitar.', 'A man is playing a guitar.')He plays guitar.A man is playing a guitar.
边栏推荐
- Compétences en mémoire des graphiques UML
- Navicat Premium 创建MySql 创建存储过程
- Deep analysis of C language pointer
- [OC-Foundation框架]---【集合数组】
- Unsupported operation exception
- LeetCode:41. 缺失的第一个正数
- Revit 二次开发 HOF 方式调用transaction
- Hutool gracefully parses URL links and obtains parameters
- LeetCode:394. String decoding
- 软件压力测试常见流程有哪些?专业出具软件测试报告公司分享
猜你喜欢
![[embedded] print log using JLINK RTT](/img/22/c37f6e0f3fb76bab48a9a5a3bb3fe5.png)
[embedded] print log using JLINK RTT

vb. Net changes with the window, scales the size of the control and maintains its relative position

TP-LINK 企业路由器 PPTP 配置

Double pointeur en langage C - - modèle classique

ROS compilation calls the third-party dynamic library (xxx.so)

Computer cleaning, deleted system files

MySQL uninstallation and installation methods

Intel Distiller工具包-量化实现2

可变长参数

Computer graduation design PHP Zhiduo online learning platform
随机推荐
[embedded] cortex m4f DSP Library
I-BERT
MongoDB 的安装和基本操作
vb. Net changes with the window, scales the size of the control and maintains its relative position
Intel Distiller工具包-量化实现3
Using C language to complete a simple calculator (function pointer array and callback function)
LeetCode:387. The first unique character in the string
Leetcode: Sword Finger offer 42. Somme maximale des sous - tableaux consécutifs
Cesium draw points, lines, and faces
Excellent software testers have these abilities
LeetCode:221. Largest Square
【剑指offer】序列化二叉树
Image, CV2 read the conversion and size resize change of numpy array of pictures
LeetCode:162. Looking for peak
Pytorch view tensor memory size
LeetCode:394. 字符串解码
Intel Distiller工具包-量化实现2
Generator parameters incoming parameters
TDengine 社区问题双周精选 | 第三期
随手记01