推荐系统深度学习篇-NFM 模型介绍(1)

一、推荐系统深度学习篇-NFM 模型介绍(1)

NFM是2017年由新加披国立大学提出的一种模型,其主要优化点在于提出了Bi-Interaction,Bi-Interaction考虑到了二阶特征组合,减轻了后面MLP部分学习特征信息的压力

论文地址:https://arxiv.org/pdf/1708.05027.pdf

其结构如下

在这里插入图片描述

BI-Interaction的结构为
在这里插入图片描述
该式可化简为
在这里插入图片描述
详细推导过程如下
在这里插入图片描述
编程简单记忆方式: 和的平方-平方的和

需要注意的是

1.该图显示的是在Bi-Interaction后由三层MLP构成,但论文中,只用到了一层隐层;

2 dropout ratio是最重要的超参, 文中在Bi-Interaction层用了0.5

二、美图优化的nfm结构

可看出,美图的nfm并不是直接在Bi-Interaction后加上MLP层,而是将LR,Bi-Interaction,MLP三个部分进行拼接,最后送入到全连接层然后输出
在这里插入图片描述
这里的S指的是LR+人工特征组合

三、美图的nfm实现

3.1 S部分
只进入连续特征

3.2 Bi-Interaction
只进入category的特征,category的特征经过embeding处理

3.3MLP部分
MLP部分进入 全部特征(包含连续和类别特征)

3.4 代码介绍
由于S 部分和MLP部分比较简单,在此,只展示Bi-Interaction 的代码,如下


def BiInteractionPooling(inputs):
    concated_embeds_value = inputs
    # 计算二阶部分
    # square_of_sum 先求和再平方
    square_of_sum = tf.square(tf.reduce_sum(concated_embeds_value, axis=1))
    # sum_of_square 先平方再求和
    sum_of_square = tf.reduce_sum(concated_embeds_value * concated_embeds_value, axis=1)
    cross_term = 0.5 * (square_of_sum - sum_of_square)
    return cross_term

这里的input代码如下


	sparse_embedding_layer_list=[]
    sparse_embedding_layer_list.append(cat_id1)
    sparse_embedding_layer_list.append(cat_id2)
    sparse_embedding_layer_list.append(cat_id3)
    sparse_embedding_layer_list.append(cat_id4)
    nfm_input = tf.keras.layers.Concatenate(axis=1)(sparse_embedding_layer_list)

注意代码中的cate_id,color_id等都是经过embedding处理,且这些embedding的size必须一致

参考:
1、https://zhuanlan.zhihu.com/p/134167886


Edited by :Eshter
date :20201119

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值