推荐系统之DeepCrossing

今天开始了推荐系统的第一个模型DeepCrossing的学习,这是一个微软发布于2016年的深度学习模型,它将数值型变量和类别型变量作为输入,具体地,论文地址在此:https://www.kdd.org/kdd2016/papers/files/adf0975-shanA.pdf

DeepCrossing的网络结构


图一:源于DeepCrossing的论文

(1)最底层是目标相关的特征,包含数值型特征和类别型特征,数值型特征可以直接进入stacking层,而类别型特征(如city_id, user_id等等)可以通过embedding层进行特征抽取,之后再和数值型特征一起进入stacking层。
(2)stacking层,是embedding层和数值型变量的联合,一般可以采取直接向量打平后concat在一起。
(3)多层残差单元层,是多个残差单元的联合。残差单元,这个好像是ResNet的想法,又称为残差模块(residual block)。单个残差模块的示意图如下:
左右两边是两种利用同样两层卷积网络来做拟合的方式,左边是用输入x来拟合最终的输出H(x);而右边是用输入x来拟合F(x)+x,其中x就是输入本身,因而,等同于,网络去学习到的就是F(x),通过下面的例子,看到经过两层卷积网络之后,我们算最终目标的delta值,左边的delta=3.3%,看似已经很完美拟合了,而右边用残差视角,得到的对应的delta=100%,说明进一步优化的空间较大。

图二:引用自知乎的博客

而多层的残差模块的联合,其本身就是特征自动做交叉的过程,我以为这就是deep crossing的精妙之处。
(4)scoring层,就是为了最终的目标,往往是一个sigmoid函数,输出最终的目标打分。

最终的代码如下:

源自:datawhale的学习资料

参考资料:
1. DeepCrossing论文
2. ResidualBlock知乎博客
3. datawhale学习资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容