当前位置:网站首页>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.
边栏推荐
- Crash problem of Chrome browser
- vb.net 随窗口改变,缩放控件大小以及保持相对位置
- LeetCode:34. Find the first and last positions of elements in a sorted array
- [MySQL] multi table query
- LeetCode:124. Maximum path sum in binary tree
- Purpose of computer F1-F12
- Leetcode: Jianzhi offer 03 Duplicate numbers in array
- LeetCode:221. 最大正方形
- poi追加写EXCEL文件
- Indentation of tabs and spaces when writing programs for sublime text
猜你喜欢

Sublime text using ctrl+b to run another program without closing other runs

Deep anatomy of C language -- C language keywords

【嵌入式】Cortex M4F DSP库

Unsupported operation exception

Mongodb installation and basic operation

Double pointeur en langage C - - modèle classique

注意力机制的一种卷积替代方式

Sublime text in CONDA environment plt Show cannot pop up the problem of displaying pictures

Excellent software testers have these abilities

Trying to use is on a network resource that is unavailable
随机推荐
[today in history] February 13: the father of transistors was born The 20th anniversary of net; Agile software development manifesto was born
Double pointeur en langage C - - modèle classique
CSP first week of question brushing
Compétences en mémoire des graphiques UML
How to conduct interface test? What are the precautions? Nanny level interpretation
LeetCode:221. 最大正方形
Promise 在uniapp的简单使用
LeetCode:41. Missing first positive number
Generator parameters incoming parameters
View computer devices in LAN
MongoDB 的安装和基本操作
@JsonBackReference和@JsonManagedReference(解决对象中存在双向引用导致的无限递归)
MySQL uninstallation and installation methods
力扣每日一题(二)
[OC]-<UI入门>--常用控件的学习
Unsupported operation exception
opencv+dlib实现给蒙娜丽莎“配”眼镜
BMINF的后训练量化实现
[OC]-<UI入门>--常用控件-UIButton
swagger设置字段required必填