DSSM双塔优劣分析以及改进计划
***********************原文 https://mp.weixin.qq.com/s/L7PN1xMm37nI60MWZF-n2w ****************************
双塔分离
训练的时候
1 将用户的信息喂入一个DNN ,最终得到一个user embedding
2 将物料的信息喂入一个DNN,最终的到一个item embedding
3 拿user embedding和item embedding,做点积或cosine。得到logit,
4 设计loss 将user tower和item tower和各种特征的embedding都训练出来
双塔用作粗排,线上预测时
1 离线 周期性 批量将item信息喂入item tower,得到item embedding
2 由于一个user request 中的候选item set,已经由召回阶段缩小到可接受的范围,所以离线生成的item embedding无需灌入faiss建立索引,只需要以kv方式存储起来
3 线上接到排排请求后,将user信息喂入user tower,得到user embedding
4 拿粗排请求中的
****************************双塔模型优化之 senet模型 *************************************

就是在用户塔侧和item塔侧,在特征embedding层之上,各自加入一个senet模型,两个senet各自对user侧和item侧的特征,进行动态权重调整,强化那些重要特征,弱化甚至消除掉不重要的甚至是噪音的特征。其余部分和普通的双塔模型是一样的。
将senet放在特征embedding之上,然后通过senet网络,动态地学习这些特征的重要性ai,对于每个特征学会一个特征权重,然后再把学习到的权重乘以对应特征的embedding里,这样就可以动态学习特征权重,通过小权重抑制噪音或者无效低频特征,通过大权重放大重要特征影响的目的。
senet分为两个步骤:squeeze阶段和exciation阶段。
squeeze阶段,我们对每个特征的embedding向量进行数据压缩与信息汇总,
非线性函数一般取relu,本质上来说是做特征的交叉,也就是说,每个特征以一个bit来表征,通过mlp来进行交互,通过交互,对于当前所有输入的特征,通过相互发生关联,来动态地判断哪些特征重要,哪些特征不重要。
第一个mlp的作用就是特征交叉,第二个mlp作用就是为了保持输出的大小维度。

浙公网安备 33010602011771号