推荐系统深度学习篇-DCN网络介绍(2)

一、DCN网络简介

DCN算法是2017年由斯坦福大学提出,其主要目的是,为了减少人工特征工程的繁琐工作,cross network能有效的学习bounded-degree的特征交互,且每一层都实现feature crossing,且参数量较dnn而言少近一个数量级。

论文地址为:https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1708.05123.pdf
其结构图为
推荐系统深度学习篇-DCN网络介绍(2)_第1张图片

这篇论文重点是提出了cross layer的概念,其核心思想是以有效的方式进行显示的特征交叉,结构图如下
推荐系统深度学习篇-DCN网络介绍(2)_第2张图片

二、代码展示

1、cross layer

#@tf.function
def cross_layer(x0, xl):
    embed_dim = xl.shape[-1]
    w = tf.Variable(tf.random.truncated_normal(shape=(embed_dim,), stddev=0.01),trainable=True)
    b = tf.Variable(tf.zeros(shape=(embed_dim,)),trainable=True)
    # reshape操作相当于将列向量转换为行向量
    xl_t = tf.reshape(xl, [-1, 1, embed_dim])
    xl_w = tf.tensordot(xl_t, w, axes=1)
    cross = x0 * xl_w
    return cross + b + xl

#@tf.function
def build_cross_layer(x0, num_layer=3):
    """
    构建多层cross layer
    @param x0: 所有特征的embeddings
    @param num_layers: cross net的层数
    """
    # 初始化xl为x0
    xl = x0
    # 构建多层cross net
    for i in range(num_layer):
        xl = cross_layer(x0, xl)
    return xl

Edited by :Eshter
date :20201119

你可能感兴趣的:(推荐系统,推荐系统)