深度学习推荐系统学习笔记4——RNN

上次不知道能不能见面的相亲对象给了个面试的机会,还是挺感谢的,之后基本上就没有回复了。哎,还是学习吧,毕竟这种事情不是猿小明这样普通人一个人能解决的问题。多想无益,唯有静心。

前言

经过2周调参,发现DNN能调出一个不错的结果,deep crossing、deep&cross、DIN这些稍微复杂的网络提高极其有限。不过浅层DNN对数据和参数较敏感。其它复杂一点的网络训练速度慢一点,部分参数调整没那么敏感,总能慢慢收敛到一个稳定的结果(这里评估指标是AUC,数据都是MIND论文所提供)。

一个有意思的现象就是,当训练集AUC达到一定数值后(不确定多少),随着训练迭代次数增多,验证集AUC会慢慢下降。由于机器硬件限制,数据集没有迭代超过20次,所以这个结论不太确定正确。

目前上面算法调出最好结果AUC在0.62附近,mind论文给出的deep&cross结果是0.627。不过个人数据集用的demo,数据量少。论文配套数据量较大。

准备

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

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

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

RNN模型

RNN模型在书中没有提及,这里自己画个图意思一下:
在这里插入图片描述
这里以新闻推荐为例,新闻标题由tiny bert转换为128维向量。每个输入序列由6篇新闻组成,即Rs=6。前5篇是最近点击新闻,第6篇是点击预测新闻。最后一个cell输出即预测结果。所以输入向量维度为[batch_size, 6, 128]。

实际上上图RNN模块可由GRU、LSTM所替换。训练得到评估结果AUC,LSTM略好于GRU,略好于RNN。隐藏向量(a)维度增高,训练结果也会得到提升。由于硬件条件限制,a维度最大设置为128。

代码结构说明

在这里插入图片描述

1、data文件夹(无改动)

2、din文件夹

(1)dev文件夹,验证集相关数据(需下载)。

(2)train文件夹,训练集相关数据(需下载)。

(3)model,模型文件保存文件夹

(4)din_build_data_set,构建模型训练所需数据,新闻id编号字典,新闻向量等。

(5)din_model,模型网络结构和创建。

(6)din_train,模型训练。
(7)din_evaluate,模型验证。

3、rnn文件夹

rnn_model,模型构建和训练。tf2.0实现rnn代码不到5行,数据加载和变换与din保持一致。

总结

利用LSTM将测试集AUC提高到了0.64,也是目前最好的结果。RNN模型也极易过拟合,训练集AUC提升很快,甚至能达到0.9。通过L2限制参数,会导致训练集和测试集AUC停留在0.61左右。这个模型参数调整比较玄学,也可能多训练一段时间会更好吧。

最后再来个git地址:

https://github.com/ConstellationBJUT/recommender_system_study

github.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值