深度学习推荐系统学习笔记5——DIEN

再一次倒在了相亲见面的路上,微信聊聊就败了。啥也不说了,赶紧补上算法博客吧。最近突然有了疑惑,实现这几个是否点击二分类算法的意义是什么呢?如何在实际中应用呢?貌似没有实践过,也不太好回答,就先放到这里,把DIEN实现一下,巩固一下TensorFlow2的应用吧。

前言

经过之前deep crossing、deep&cross、DIN等算法的实现。发现这些算法都非常相似,都是由deep crossing演化而来,即deep部分和crossing部分。deep部分利用深度模型模型提取特征,crossing计算一些特征,然后特征拼接进入一个浅层神经网络,再进行softmax多分类。

准备

环境配置,包安装,数据源和下载,程序地址直接看上一篇就好,链接如下:

深度学习推荐系统学习笔记1——deep_crossing

除上述外,请下载git路径下din文件夹内容,包括已处理过数据,可直接进行训练。数据处理程序在din文件夹内。

DIEN模型

论文中的DIEN模型图如下:
深度学习推荐系统学习笔记5——DIEN_第1张图片
这里以新闻推荐为例,新闻标题由tiny bert转换为128维向量。每个输入序列由6篇新闻组成,即user behavior sequence部分输入是5篇点击新闻embedding,右侧是预测是否点击的1篇新闻embedding。

最终5篇新闻通过RNN和注意力机制组成的网络,生成特征向量。与要预测点击的新闻向量拼接后得到最终二分类结果。

这部分实现逻辑较为复杂。每个GRU单元输出h(T),进入注意力机制(浅层神经网络)获得输出作为权重,将h(T)和权重一起送入AUGRU单元,最终获得最后一个AUGRU单元输出,与预测新闻向量拼接。

这部分需要好好看看论文才能了解Attention和AUGRU具体实现。由于没看到DIEN注意力机制实现,这里注意力机制实现完全照搬的DIN算法。

代码结构说明

深度学习推荐系统学习笔记5——DIEN_第2张图片
1、data文件夹(无改动)

2、din文件夹:主要提供以整理好的数据文件。

3、dien文件夹:包括model和训练。

总结

利用dien模型训练,得到的结果其实没怎么提高,主要是由于算法参数增加的太多,没尝试执行更多次的迭代。在几次迭代过后loss和auc都比较稳定了,测试集auc到了0.63。比之前RNN系列调到最好结果0.64有差距。

最后再来个git地址:

https://github.com/ConstellationBJUT/recommender_system_study

你可能感兴趣的:(推荐系统,深度学习,算法,tensorflow,推荐系统)