推荐系统修行之路

实战_DCN模型在广告场景排序应用

2022-02-11  本文已影响0人  Nefelibatas

DeepCross的基础结构

结构

image-20220124191945941.png

Deep network即DNN,最重要的是Cross部分

Dense feature: 连续值如点击率直接作为一维向量拼接

Spares feature:离散值如性别,通过embedding层转为对应的embedding向量

如下图,假设Spares f1、f2、放都为8维,到cancat拼接层则为3*8+1densef1,最终产出25维的embedding输入向量。

image-20220124192021150.png

DNN部分:

以上述25维embedding输入为例,h1对应每个x,即有25个x

[batch,128] * W[128,64] +b[64]= [ batch,64 ]

[batch,64] * W[ 64,32 ] +b[32] = [ batch,32 ]

[batch,32] * W[ 32,16 ] +b[16] = [ batch,16 ]

最终输出二维矩阵[ batch,16 ]

image-20220124192059961.png

Cross部分:

特征交叉即两两内积。

原始特征只有x1, x2,x3这三个,经过交叉后有12个(含原本的3个)。

image-20220124192202958.png

如上图,假设x_0为[3,1]的矩阵(x_0是固定值),x`为[1,3]矩阵,两两内积后为[3,3]矩阵。

此时与w[3,1]内积得到[3,1]矩阵,b是[3,1]矩阵,x是x`的转置即[3,1]矩阵。

常用双塔模型

image-20220124192250615.png

DeepCross的注意事项

cross层交叉的特征是什么?

假设人工组装,年龄有100个,性别有3个,组装成103个特征

FM中则将年龄与性别都转为embedding得到值,然后交叉相乘,最后得到一个新的embedding向量,不会产生多余的参数。

两种交叉方法:

image-20220124192343282.png

参数量为何减少很多?

w值进行转换。

权重共享。

image-20220124192400603.png

DeepCross的应用场景

广告、推荐、搜索等排序场景

特征之间存在相关性

DCN运用于广告场景中

数据集说明

id: 每行样本id

date:时间

广告特征
user_id:用户id
product:广告id
campaign_id:活动id
webpage_id:网页id

用户特征:静态id
product_category_id user_group_id:用户群体id
gender: 性别
age_level:年龄划分
user_depth:是否活跃
var_1: 隐含特征
isClick: 是否会点击广告

基于时间戳,训练集时间date必须在test之前

流程

step01: 读取数据

先将数据集划分为广告特征与用户特征。

对数据进行处理,hash化。

数据值hash化,有两个作用

hash方法有很多,可以采用MurmurHash。

生成tfrecord文件

step02: 模型开发

DCN.py

机器学习平台框架图

main训练文件保存于checkpoint

step03:应用于排序

checkpoint数据文件转化为可以部署的模式,通常为pb文件。

step04:部署

本地

predict_with_pb.py

线上:

安装docker

给模型save_model.pb模型设置版本号TAG必须保持一致

docker hub官网拉取镜像

注:关于docker会在另外一篇文章中详细讲解,欢迎关注~

上一篇 下一篇

猜你喜欢

热点阅读