这里只是做一个简单的论文学习记录。
Sentence level
-
bert
bert讲解
作者说用最后4层加和或者拼接作为句向量表示效果比较好,其实根据不同的任务可以尝试不同的组合方式。
-
sentence- bert
代码:sentence-transformers
双塔模型的bert, 训练阶段直接通过拼接 (U, V, |U-V|)进行分类(softmax)-回归(cosine sim)-TripleLoss,对bert进行finetune, 预测阶段可以通过bert 直接得到句向量,然后计算余弦相似度.
训练阶段的这种拼接方式是作者通过对比得出在分类上比较好(U, V, |U-V|)。 在句向量的提取上 可以看出来取最后一层的mean pooling比较好。比CLS和maxpooling效果好。
-
做sentence-pair任务的一个论文 Augmented SBERT: Data Augmentation Method for Improving
Bi-Encoders for Pairwise Sentence Scoring Tasks
Document level
-
Doc2vec 2014
讨论BOW的缺点:1)丢失语言信息(无法计算两个token之间的相似度),2)丢失了顺序信息 (一句话只要字一样 BOW的表示就一样 丢失了顺序信息。
改善的n-gram: n-gram 有了短距离的上下文 顺序信息 解决BOW的短距离顺序信息,但是还是无法解决 丢失的语义信息(无法实现相似度计算), 并且还带来了 数据稀疏的问题。
DOC2VEC 来源于Word2Vec, 只是在W2V基础上添加了一个Doc的vector 随着模型一起训练。各个文档的单词嵌入都是一样的,只是文档的嵌入不一样。
采用类似于W2V的两种训练方式,来进行无监督的训练DocVec。在左下游任务时将两个模型训练的DOC vec 拼接起来(然后固定DocVec)相当于把DOCVec作为输入特征 输入到机器学习模型里面进行分类或者Triple loss之类的训练。
很好的讲解
-
SPECTER: Scientific Paper Embeddings using Citationinformed TransformERs --AllenAI
代码:SPECTER
结合文章的标题和简介 concate在一起作为transformer输入,获取pooler 层的embedding。
每个query 对应5组triple loss, 其中正样本是从直接引用的list里面随机选择,负样本通过构造3个随机选择的简单的负例 和 2个难得负例 组成。
训练数据 query - pos - neg 其中的形式组成,分别输入到transformer里面获取 pooler 层的embedding , 通过对embedding 计算triple loss.
inference阶段,只需要输入 标题和简介 就可以获取文章的embedding。
论文提出了sci dataset 用于做科研论文的相似度评估。 包含几个任务: 论文分类,论文主题分类,是否引用某论文,直接引用,共引用等任务。 这几个任务针对该领域相对比较完善。在其他领域也可以借鉴 比如推荐系统等。
(这个与sentence-bert很相似,只是sentence-bert是句子level的预训练模型,不是Doc level的,并且对于作者的特定任务 sentence-bert 还不足够用来直接做这个任务,作者设计的模型新颖度没什么,就是针对这个领域数据集的构造比较好)
未完待续