1. 常用的损失函数
一般使用inbatch softmax,主要优点是方便,确实是容易遭造成对热门item的打压,可以做纠偏,参考youtube论文《Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations》
2.计算user emb 和 item emb时的相似度时应该用什么方法,为什么需要对emb做归一化?
先看一下内积、余弦相似度、一下欧式距离的计算公式:
内积:
\[A\cdot B={\sum_{i=1}^{n} \left ( x_{i}*y_{i} \right ) }\]
余弦相似度:
\[\cos \left( {A,B} \right) = \frac{{A \cdot B}}{{{{\left\| A \right\|}_2}{{\left\| B \right\|}_2}}} = \frac{{\sum\limits_{i = 1}^n {\left( {{x_i} \times {y_i}} \right)} }}{{\sqrt {\sum\limits_{i = 1}^n {{{\left( {{x_i}} \right)}^2}} } \times \sqrt {\sum\limits_{i = 1}^n {{{\left( {{y_i}} \right)}^2}} } }}\]
欧式距离:
\[dist\left( {A,B} \right) = {\left\| {A - B} \right\|_2} = \sqrt {\sum\limits_{i = 1}^n {{{\left( {{x_i} - {y_i}} \right)}^2}} } \]
如果对向量模长进行归一化,可以得到,三种计算相似度的方式是一致:
\[cos\left ( A,B \right ) =A\cdot B\]
\[\left \| A-B \right \| _{2}=\sqrt{\left \|A \right \| ^{2} +\left \|B \right \| ^{2}-2A\cdot B}=\sqrt{2-2A\cdot B} \]
因为构建ANN索引时一般用的欧式距离(内积不满足三角不等式,效果不好),但是欧式距离的计算复杂度比较高,因此可以先对emb做归一化
标签:right,emb,cdot,模型,sqrt,双塔,召回,sum,left From: https://www.cnblogs.com/xumaomao/p/18220782