Sentence Bert 阅读笔记
论文
https://arxiv.org/abs/1908.10084
Supervised / Unsupervised / Semi-supervised
从训练上看,是 Supervised / Unsupervised 两种结合
Model Structure
本文提出了两个architecture,一个用于文本的分类,一个用于句子相似度的计算
这里的两个BERT,实际上可以理解成同一个BERT,在实现上,完全可以只实现一个。
Pooling层
一共有3种操作:
- 取CLS的输出
- 取所有token输出的平均
- 取每个维度上所有token的最大值
Loss Function
本文一共提出了三个 loss function
- Classification Objective Function. 拼接 u, v, 元素之间的差值 |u - v|,三者都是 1 * n 的,拼接之后成为 1*3n。再与一个可学习参数矩阵 Wt ∈ 3n*k 相乘,得到一个 1*k 的矩阵,其中 k 是类别数。再做 softmax ,得到最终的类别。再用 交叉熵损失函数 做优化。如图1。
- Regression Objective Function. 对 u, v 做 cosine 相似度计算,再将结果做MSE。
- Triplet Objective Function. 这个函数的训练是无监督的。不需要有 label 来做。其 X 是三个句子,包括锚定句子a,正例句子p,负例句子n。具体到情感分析上,可以是两个消极句子和一个积极句子,也可使两个积极句子和一个消极句子。经过 BERT 得到三个句向量,并最小化下面的函数。最小化下面的式子等同于希望 a 和 p 更接近,而离 n 更远。但是为了 a 离他们同样近的时候,还能够被优化,引入了 ε ,||*|| 是距离度量,文中采用的距离度量是欧氏距离,并且 ε 为1。
拓展
在12层的时候,SGPT 125M 的性能和 SBERT 110M 比较接近,在24层之后,SGPT 1.3B 的性能优于 SBERT 340M 。