双塔模型
[[DSSM]]
user
离线建图 + [[Approximate Nearest Neighbor Search]]
- 离线计算 item 的 embedding
-
为什么双塔要用cos距离?#card
-
本质是因为点乘距离非度量空间,不满足三角不等式 ,距离比较没有传递性。更通俗的说内积不保序,假设有三个点ABC,点击意义下|A,B|<|A,C|,但是欧式距离下不一定有|A,B|<|A,C|,比如A=(100,0),B=(0,100),C=(101,0)。
-
总结:双塔召回需要ANN,点积不保序一般使用欧式距离,双塔最上层归一化能将输入映射到欧式空间,保证了训练检索的一致性,提高了效果。
-
-
双塔最上层为什么要归一化?#card
-
双塔模型最终需要计算两个表示向量在表示空间中的夹角(余弦相似度),通过 L2 norm 后直接通过向量点积计算 cos 值,减少重复计算量
-
-
L2 Norm $$\hat{x}=\frac{x}{|x|}, \quad \hat{y}=\frac{y}{|y|}$$
-
-
-
主流的向量匹配引擎,并不支持 余弦相似度 作为距离度量;只支持 向量内积 作为距离度量。
-
-
L2 norm 归一化后为什么要乘温度系数?#card
-
It is interesting to see the effect of temperature on performance, suggesting the necessity to carefully tune this parameter when normalization is applied
-
temperature 作用放大 logit
-
对Temperature的第一层理解是把L2 norm后的值阈拉回Softmax的敏感激活范围。这样,向量取消了norm,模型专注于调整用户和物品的超平面夹角,模型稳定性得到了保证。
-
双塔训练方法 #card #depth-1
-
Pointwise:独立看待每个正样本、负样本,做简单的 二元分类 #card
-
[[Pairwise 训练]] 每次取一个正样本、一个负样本
-
[[Listwise 训练]] 每次取一个正样本、多个负样本
Ref