Personal Recommendation Using Deep Recurrent Neural Networks in NetEase读书笔记
一、文章综述
1、研究目的:实现网易考拉电商平台的商品高效实时个性化推荐。缩短用户与目标商品的距离,让用户点击最少的页面就可以得到想要的商品
2、研究背景:基于用户和基于物品的协同过滤(Collaborative Filtering,CF)是目前的个性化推荐主流算法,但CF是基于用户历史浏览记录生成个性化推荐,使用的是旧的数据,它无法实现依据当前浏览记录进行实时推荐。因而急需一种能够依据当前浏览记录实时生成个性化的推荐的解决方案。
3、实现方法:将前馈神经网络(FNN)与深度循环神经网络(DRNN)相结合,综合用户的历史浏览记录和当前浏览记录给用户推荐商品,并且用户每浏览一个页面都更新一次推荐。其中FNN模仿CF算法处理依据历史浏览记录给用户个性化推荐商品;DRNN处理当前用户的历史浏览记录给用户个性化推荐商品,且因DRNN处理的序列有限,当超过这个序列时将过去的状态总结为一个虚拟的历史状态,这个虚拟的历史状态将与当前的浏览记录一起作为输入用于给用户个性化推荐商品。
4、研究结果:在真实数据集上的实验结果表明:DRNN与FNN结合的方法优于CF的方法。
二、算法学习
1、Collaborative Filitering(CF,协同过滤算法)
1)基于用户的协同过滤算法:给用户推荐和他兴趣相投的其他用户喜欢的物品。
a、找到与目标用户兴趣相似的用户集合:

N(u) 为用户 u 喜欢的物品集合,N(v) 为用户 v 喜欢的物品集合,wuv为用户u和v之间的相似度.
b、 找到这个集合中用户喜欢的,且目标用户没有听说过的物品推荐给目标用户:

rvi 表示用户 v 对 i 的喜欢程度,集合 S(u, K) 表示与目标用户 u 最相似的 K 个用户的集合,p(u ,i )表示用户 u 对候选物品i感兴趣的程度。
2)基于物品的协同过滤算法:物品A和物品B具有很大相似度是因为喜欢A的用户大都也喜欢B
a、找到与目标物品相似的物品集合:

|N(i)|是喜欢物品i的用户数,wji表示物品j和物品i的相似度
b、根据物品的相似度和用户的历史行为给用户生成推荐列表:

Puj表示用户u对物品j的兴趣,N(u)表示用户喜欢的物品集合(i是该用户喜欢的某一个物品),S(i,K)表示和物品i最相似的K个物品集合(j是这个集合中的某一个物品),rui表示用户u对物品i的兴趣。
2、Recurrent Neural Network
1)RNN处理序列数据(sequential data). 序列数据的特点是序列数据前后之间是有很强的关联性的,前面出现的数据(比如词汇)对后面的数据有重大影响的, 甚至后面的数据对前的数据也是有重要影响的(双向循环神经网络)。

2)普通的神经网络

有一组预测数据:Data 0、1、2、3,使用同一个NN,预测Result 0基于Data0, 预测Result 1基于Data1……
因而普通的神经网络并不能了解数据间的关联
要怎么样才能让NN对数据间的关系进行分析呢?想想人类是如何处理的?最基本的方式就是记住之前的发生的事情

在分析Data0的时候,把分析结果存入记忆,当分析Data1的时候会产生新的记忆,但是新的记忆和老的记忆并没有关联,这时可以把老的记忆调用过来一起分析。如果继续分析更多的数据,NN就会把之前的记忆累积起来一起分析。

现在重复上述的过程,不过把NN换成RNN,每次RNN运算完以后都会产生当前状态的描述,用S来表示。
RNN先对X在 t 时刻进行分析,产生S(t)和Y(t),然后RNN对X在t+1时刻进行分析,产生S(t+1),不过此时Y(t+1)基于S(t)和S(t+1)产生。
所以通常看的RNN可以表达成右边这个样子。

RNN的形式不单单只有这样一种,它的结构多样

比如用于图片描述,只需要一个X来代替输入,用几句话描述图片的内容

如果用于分类的问题,比如说一个人说了一句话,这句话带有的感情色彩是积极的还是消极的,只需要最后一个时间点输出。

如果RNN中有多个隐藏层,就形成了深度循环神经网络(deep RNN)
Personal Recommendation Using Deep Recurrent Neural Networks in NetEase读书笔记的更多相关文章
- Hyperspectral Image Classification Using Similarity Measurements-Based Deep Recurrent Neural Networks
用RNN来做像素分类,输入是一系列相近的像素,长度人为指定为l,相近是利用像素相似度或是范围相似度得到的,计算个欧氏距离或是SAM. 数据是两个高光谱数据 1.Pavia University,Ref ...
- 循环神经网络(RNN, Recurrent Neural Networks)介绍(转载)
循环神经网络(RNN, Recurrent Neural Networks)介绍 这篇文章很多内容是参考:http://www.wildml.com/2015/09/recurrent-neur ...
- 循环神经网络(Recurrent Neural Networks, RNN)介绍
目录 1 什么是RNNs 2 RNNs能干什么 2.1 语言模型与文本生成Language Modeling and Generating Text 2.2 机器翻译Machine Translati ...
- 循环神经网络(RNN, Recurrent Neural Networks)介绍
原文地址: http://blog.csdn.net/heyongluoyao8/article/details/48636251# 循环神经网络(RNN, Recurrent Neural Netw ...
- 论文翻译:2020_Lightweight Online Noise Reduction on Embedded Devices using Hierarchical Recurrent Neural Networks
论文地址:基于分层递归神经网络的嵌入式设备轻量化在线降噪 引用格式:Schröter H, Rosenkranz T, Zobel P, et al. Lightweight Online Noise ...
- Paper Reading - Deep Captioning with Multimodal Recurrent Neural Networks ( m-RNN ) ( ICLR 2015 ) ★
Link of the Paper: https://arxiv.org/pdf/1412.6632.pdf Main Points: The authors propose a multimodal ...
- The Unreasonable Effectiveness of Recurrent Neural Networks (RNN)
http://karpathy.github.io/2015/05/21/rnn-effectiveness/ There’s something magical about Recurrent Ne ...
- Attention and Augmented Recurrent Neural Networks
Attention and Augmented Recurrent Neural Networks CHRIS OLAHGoogle Brain SHAN CARTERGoogle Brain Sep ...
- Pixel Recurrent Neural Networks翻译
Pixel Recurrent Neural Networks 目前主要在用的文档存放: https://www.yuque.com/lart/papers/prnn github存档: https: ...
随机推荐
- 使用css3 制作switch开关
使用css3来实现switch开关的效果: html代码: <!--switch开关--><div class="switch-btn"> <inpu ...
- 【学习笔记】二:在HTML中使用JavaScript
1.<script>标签 1)考虑到最大限度的浏览器兼容性和约定俗成,type属性使用:text/javascript. 2)标签建议放置到</body>标签前,提高用户体验( ...
- 使用cordova把h5应用打包成apk
由于h5应用开发不是本例重点,因此直接提供一个最简单的h5应用代码,此应用使用vue-cli框架开发 此h5应用叫vue1,用webstrom打开vue1,进行npm install安装引用 vue1 ...
- array_keys
<?php$array = array(0 => 100, "color" => "red");print_r(array_keys($arr ...
- 关于php的问题
$polling_items = db_fetch_assoc("SELECT * FROM poller_item WHERE rrd_next_step<=0 ORDER by h ...
- Java编译时根据调用该方法的类或对象所属的类决定
class Base{ int x = 1; static int y = 2; } class Subclass extends Base{ int x = 4; i ...
- SQLServer · 最佳实践 · SQL Server 2012 使用OFFSET分页遇到的问题
1. 背景 最近有一个客户遇到一个奇怪的问题,以前使用ROW_NUMBER来分页结果是正确的,但是替换为SQL SERVER 2012的OFFSET...FETCH NEXT来分页出现了问题,因此,这 ...
- 手写MVVM框架 之vue双向数据绑定原理剖析
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- C++#pragma pack指令
微软官方文档说#pragma pack 指令的作用是为结构.联合和类成员指定 pack 对齐.的主要作用就是改变编译器的内存对齐方式,这个指令在网络报文的处理中有着重要的作用,#pragma pack ...
- laravel扩展包服务提供者的注册的两种方式
一. 包自动发现 在 Laravel 应用的配置文件 config/app.php 中,providers 配置项定义了一个会被 Laravel 加载的服务提供者列表.当安装完新的扩展包后,在老版本中 ...