召回模型之senet网络

987次阅读
没有评论

dssm双塔召回算是召回模型的经典之作,就是到现在也是广泛在应用,研究dssm网络的改进也是大有人在,今天写的这篇senet就是改进的其中的一个方法。

首先要看下经典的dssm网络

召回模型之senet网络

这个网络计算用户与item之间的关系是在最后一层。

这个网络结构天然的隔绝了用户侧与物料侧前期特征的交叉过程,只有在最后一层生成等长的dense输出做相似度计算。那么在dnn阶段,可能会丢失很多有用的信息。这些年从人工组合特征到模型自动交叉,这一步步都说明特征交叉的重要性,但是现在却实打实的分开了,这不免会丢失很多有用的信息。

senet的出现是尽可能在原始特征输入到dense输出向量保留更多的有效的信息。

召回模型之senet网络

看上述的senet的结构图,主要拆分为两部分:

  1. squeeze:这个步骤就是讲embedding 求平均变为1维,比如你有十个特征,那么对应的embedding压缩后变成10维的变量
  2. excitation:简单的通过两层mlp输出指定的dense,这个输出的大小与输入的特征个数有关,比如你的特征有4个,那么mlp输出维度为4 ,然后与原始的embdding相乘累加,看起来就是attention 的意思,无非就是算权重的方式不一样

在上面的描述之后可以得到给予senet的网络结构:

召回模型之senet网络

其实到这里发现senet也不是很复杂,不过思路真的很好,自底向上想要尽可能的保留更多的信息用于用户和物料的交叉。因为要做embedding累加,所以要求查表的embedding维度都是一样的,比如都指定是32维。

关于dssm的改进还有很多,这只是其中一种。

admin
版权声明:本站原创文章,由admin2021-11-08发表,共计656字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)