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: ...
随机推荐
- repeater使用
Repeater: HeaderTemplate - 在加载开始执行一遍 ItemTemplate - 有多少条数据,执行多少遍 FooterTemplate - 在加载最后执行一遍 Alternat ...
- python中一些函数应用
items将一个字典以列表的形式返回,因为字典是无序的,所以返回的列表也是无序的. 例如:a = {"a":1,"b":2} a.items 就是 a ...
- filter和map的使用
if ( this.dataAggridvue.filter( item => item.Accepted == true && item.InvoiceGroupCode != ...
- 阻止JEB 1.5频繁弹窗的办法
偶尔才用一次的JEB, 出现 “Controller没有响应或者无法访问, JEB即将终止.” 也懒得去逆了.直接用ProcessHacker找到对应的线程挂起即可.当然这只是临时的办法..我也只是临 ...
- execve - 执行程序
总览 (SYNOPSIS) #include <unistd.h> int execve (const char *filename, char *const argv [], char ...
- 创建线程的三种方式_Callable和Runnable的区别
Java 提供了三种创建线程的方法 通过实现Runnable接口 通过继承Thread接口 通过Callable和Future创建线程 通过实现 Runnable 接口来创建线程 public cla ...
- There is no Action mapped for namespace [/] and action name [updateUser] associated with context path [].
在使用Struts2的时候,遇到了这个问题. 原因分析: 找不到指定的路径, 那么就是struts.xml的内容问题, 或者是struts.xml的文件位置存在问题. struts2默认是应该放在sr ...
- day09 10 11 12 三天函数内容
小括号.中括号名字()函数调用符[] 索引调用符 函数的注释:官方推荐: 查看注释 :funcming.__doc__ funcming.__name__ def func(name, ag ...
- windows cmd 模仿电影黑客
1.win+R 2.输入cmd 3.按F11进入全屏 4.color a 改变颜色为绿色(可能看起来秀一点) 5.dir/s 查看所有文件,就跑起来了,看起来很酷,但是在懂得人眼里,没什么的(所以只能 ...
- (7) 将tomcat HTTP连接器启动在80端口(jsvc使用详解)
让tomcat在80端口上运行 法一: 修改连接器的端口8080为80 <Connector port="8080" protocol="HTTP/1.1" ...