IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> session-based recommendation的两个模型对比NARM STAMP -> 正文阅读

[人工智能]session-based recommendation的两个模型对比NARM STAMP

介绍

现在有很多地方都需要推荐系统,比如网购平台、音乐平台、影视平台等等。一个应用如果能更准确地进行内容推送,那么自然用户的黏性会更强,有更强的竞争力。
但是现在出现了一个问题,我们以往做的一些工作都是基于用户历史记录进行的推荐,现在由于隐私政策的问题,有时候我们不能得到用户的长历史,我们能拿到手的只有用户当前在网页/app里面的行为,这个短历史我们就叫session。
举个例子,当你下载淘宝的软件之后,在没有登陆的情况下搜索你想要的东西,这个时候淘宝对你一无所知。你先点击了adidas的一件上衣,又点击了nike的一条裤子,然后又点击了李宁的一件上衣,这三个click就组成了你当前的一个session。我们要做的就是基于这三个点击对你下次想点击的东西进行预测,通过这个模型,我们可能会给你推荐安踏的衣服,或者adidas的另一版型的衣服。
总而言之,这个session-based方法可以在不侵犯用户隐私的情况下仍然进行有一定质量的推荐,值得我们进行研究。

模型介绍

从大体上来看,session-based recommendationo有两种分支,一种是把session看作一个sequence,利用诸如处理流数据的RNN模型得到隐层向量,并基于此搭建预测模型。

另一种则是基于图神经网络GNN的方法,通过构建有向图,利用GNN的方法学习表达向量,基于此进行预测。

今天要介绍的两个都是属于第一类的模型

NARM

每一个商品实际上都可以用一个id进行标识,这个和NLP任务里面把每一个单词都转化成id的思路是一样的。那么类似的,我们也可以有每一个商品的embedding,以此为基础把数据喂到RNN里面。

这个模型其实很简单,编码上分为两部分,Global encoder 和 Local Encoder。

global encoder

通过我们上面提到的与NLP任务类似的地方,我们这里为了方便理解可以把这个session看作一句话的等价,我们先通过word2id把商品转化为了id,得到了他们的embedding,然后把他们送进RNN里面。

在这篇文章里,作者使用的是GRU。

说起来fancy,但是这个global encoder得到的第一部分编码实际上就是RNN最后的隐层向量而已。
c t g = h t c_t^g=h_t ctg?=ht?

local encoder

这个地方使用到了attention。

对于session里面的每一个商品,他的attention权重是:
α t j = v T σ ( A 1 h t + A 2 h j ) \alpha_{tj} = v^T\sigma(A_1h_t + A_2h_j) αtj?=vTσ(A1?ht?+A2?hj?)
这里 A 1 , A 2 , v A_1,A_2,v A1?,A2?,v都是参数, h t h_t ht?表示最后一个隐层,实际上就是刚才提的global encoder得到的东西,而 h j h_j hj?则是第j个商品的地方GRU拿到的隐层向量。

这个encoder最终得到的向量表示:
c t l = ∑ j = 1 t α t j h j c_t^l=\sum_{j=1}^t \alpha_{tj}h_j ctl?=j=1t?αtj?hj?

final model

最终的向量表示就是把两个encoder得到的向量拼在一起,
c t = [ c t g ; c t l ] c_t = [c_t^g ; c_t^l] ct?=[ctg?;ctl?]
对于当前的session,我们可以直接拿到他们的embedding矩阵:
E ∈ R n × e m b e d ?? s i z e E \in \mathbb{R}^{n \times embed \;size} ERn×embedsize
最终的得分向量计算如下:
S = E B c t , ?? B ∈ R e m b e d × h i d d e n ? 2 S = EBc_t, \; B \in \mathbb{R}^{embed\times hidden*2} S=EBct?,BRembed×hidden?2
这里B是参数

这个最终的得分作者没有送到softmax里进行归一化,而是直接送到了cross entropy loss里面去计算loss。

STAMP

在这里你会看到和NARM很多类似的东西,但是叫法不一样,也可以理解对吧(笑)。但是在这个模型里,没有用到RNN来计算隐层向量,一切都是直接从embedding拿向量来做的。

short-term memory

这个短期记忆就是上面的global encoder,把session里面所有商品的embedding按照出现顺序排成一个矩阵,最后一个商品的embedding就是这个short0-term memory。

long-term memory

这里多了一个向量:
m s = 1 t ∑ i = 1 t x i m_s = \frac{1}{t}\sum_{i=1}^tx_i ms?=t1?i=1t?xi?
这里的 x i x_i xi?代表每个商品的embedding,换言之这个向量就是当前session里面所有商品embedding的均值。

上面提到的短期记忆
m t = x t m_t = x_t mt?=xt?
就是最后一个商品的embedding。

这里的attention权重是这样计算的:
α i = W 0 σ ( W 1 x i + W 2 x t + W 3 m s + b ) \alpha_i = W_0\sigma(W_1x_i + W_2x_t+W_3m_s+b) αi?=W0?σ(W1?xi?+W2?xt?+W3?ms?+b)

通过加权求和我们得到了这个部分的表示向量:
m a = ∑ i = 1 t α i x i m_a = \sum_{i=1}^t\alpha_ix_i ma?=i=1t?αi?xi?

final model

把短期和长期记忆 m t , m a m_t, m_a mt?,ma?分别送进两个线性层,得到了中间向量 h t , h s h_t, h_s ht?,hs?

最终每一个商品的预测得分是:
z i ^ = σ ( < h s , h t , x i > ) , 1 ≤ i ≤ ∣ V ∣ \hat{z_i} = \sigma(<h_s, h_t, x_i>), 1 \leq i \leq |V| zi?^?=σ(<hs?,ht?,xi?>),1iV
这里看似内积的符号是文中自己定义的,代表着把三个向量每个位置都乘起来,再把乘完之后的向量每个位置加起来。用公式表达就是:
< a , b , c > = ∑ i = 1 d a i b i c i <a,b,c> = \sum_{i=1}^d a_ib_ic_i <a,b,c>=i=1d?ai?bi?ci?
最后的预测就是把这些得分送到softmax里面过一下。

比较

这两个模型看起来非常的相像,两个都用最后一个位置的向量作为当前的表示,用attention加权平均的方法对整体得到一个表示,最终都使用一种类似内积的方法得到每个商品的评分。

但是这两个模型还是有本质上的不同的,最大的点就在于STAMP没有像之前那些论文那样非要使用RNN先对embedding进行初步的处理,而是直接使用了embedding的向量进行处理。

这点和Attention is all you need这篇文章的意义很类似,都是仅仅基于embedding和attention的机制搭建的模型。这种文章出来最大的意义就是说明了基于RNN进行处理的方法是有局限性的,换句话说RNN对于session内容的处理是完全可以被替代甚至丢弃的。我想这也是为什么慢慢后面的学者会把目光放在GNN上面。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 11:10:19  更:2022-12-25 11:11:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 21:39:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码