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作用就是为了保持输出的大小维度。

 

posted @ 2021-11-11 02:13  大大的海棠湾  阅读(392)  评论(0)    收藏  举报