交互/表示模型

交互模型: 两句话拼接成一句话,缺点就是长度弄不了太长,线上性能也压力大,优点就是两句话交互编码更加充分

表示模型:两句话分别进bert模型,所以是双塔模型,优点就是单句长度可以更长,线上也可以做到更好,因为其中一个bert边的向量可以保存,用的时候直接取。缺点就是两句话交互性其实比较弱,都是单独编码,只在最后一层取两个向量计算相似性。一个可以稍微缓解这种交互性的方案就是Poly-encoder,比如两个Bert最后输出的hidden_size是768,那么可以将其分成12个头head,然后做一个attention。

蒸馏

(1)交互模型蒸馏(主要就是减少层数):

比如12->6,但是可以用一个更大的teacher 模型,如24->6,其实是比12->6得到的6层模型更好

还可以使用助教的方式即假如我们当前的任务时想从12层蒸馏到3层,那么其实

12->6->3要比12->3要好

(2)表示模型蒸馏(主要就是减少维度):

比如768->128

主要是设计了一个pairewise loss即

loss(teacher(si-sj)-student(si-sj))

 

关于交互模型蒸馏:有种非对称蒸馏和以及其多阶段蒸馏

bert蒸馏

bert蒸馏

 

 

相关文章: