更新了回答,请大家指正~
其实这是一个蛮常见的误解。模型并不懂什么叫做语义。
1.单句之间的对比学习其实只需要学到足够区分正负例之间的特征,它的loss就能降下来,其实也没有真正去捕捉整个句子的意思。
比如: 我喜欢足球 和 我喜欢篮球;如果这两个是负例的话,那么模型不用知道 我喜欢XXX的意思,只需要知道足球和篮球是不同的东西就行。说白了,就是只需要学到一些足够区分的特征就ok。
2.模型是不是真的学到语义了?
并不是。语义就是人为定义的东西。比如:我今天去上海。和 我今天去北京。
A: 从意图上看,这两个都是去某个地方,从这个意义上讲,应该被认为是相似句。
B: 但是从到达点看,这两个去的都不是一个地方,那么不应该被认为是相似句。
假如这个例子在测试集中的label是相似句。模型也认为这两个是相似的。那么模型真的就学到语义了吗?
其实可能情况是,训练集中,模型看到了这种case: 我今天吃苹果 和 我今天吃梨子 被打上了相似句的label。模型只需要学到 两个句子有较多的重叠部分,那么两个句子就是相似的,这一特征。
总之就是,当你觉得模型学到了语义时,模型没准只是恰好捕捉的特征和你想的方面一样而已。当你觉得模型没学到语义时,模型没准是从另一方面觉得他们是相似的