前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈Embedding技术在推荐系统中的应用(1)

浅谈Embedding技术在推荐系统中的应用(1)

作者头像
流川枫
发布2020-04-24 11:13:55
1.3K0
发布2020-04-24 11:13:55
举报
文章被收录于专栏:AI星球AI星球

前言

接着上一篇[推荐之矩阵分解],继续说Embedding在推荐领域的应用方法,矩阵分解为描述User/Item提供了一种向量化表达的方案,而本篇将探究如何从word2vec的角度获取Item的向量化表达。

本文去年10月份就写完了,一直没发....已经忘了word2vec的可以看一下该篇word2vec模型深度解析简单的回顾一下。

推荐系统发展

推荐技术的发展,可以粗略的分为三个阶段:

(1)从限定在一个有限的历史兴趣范畴内推荐的第一代基于统计的启发式规则方法:

代表技术就是协同过滤算法。

(2)基于内积模型的向量检索方法:

推荐技术打开了候选子集检索范围的天花板,基于各自业务模型的Embedding变种技术层出不穷。

(3)基于深度学习模型的全库检索推荐算法:

由于向量检索方法限定了内积模型这种用户-商品之间喜好的度量方式,无法容纳更加先进的打分模型(例如带有Attention结构的深度网络),因此开始探究深度学习的模型在推荐的应用。

本篇主要谈一下我所了解到基于内积模型的向量化检索方法中Item2vec方法,聚焦于如何获得序列数据中实体的向量表达。

Item2vec的本质

假设,此时我们是某个APP商店的开发者,每一款APP就是我们的商品(Item),想根据用户搜索某个APP的结果列表下,推荐与其搜索到的APP相似的产品推荐给该用户,类似推荐产品的「猜你喜欢」的场景。

假设已有海量session数据:大量用户浏览某些APP路径的点击序列数据,每一条样本记录了用户的一个session周期内点击过的APP的顺序数据。

任务我们就简单认为就是:如何找到与特定APP最相似的Top个APP?

第一步,想直接衡量两个APP之间的相似度,方法有很多,这里我首先想到的是如何把每个APP变成可度量的数值变量?

序列实体数据的向量化,跟对一段文本的各个词汇进行向量化表达是不是很类似?我们的word2vec是不是该登场了。

在用户浏览APP的session样本数据中,每一个APP_id就是一个独立的实体,省去了NLP分词等的步骤。

那剩下的步骤?其实与我们训练word2vec的词向量步骤相差无几。

推荐场景中基于word2vec思想的Embedding过程中常采用SGNS方法,即:

Skip-gram + Negative Sampling 的组合训练方法。

Skip-gram模型:根据中心词wi预测左右窗口内的临近词wj,推荐场景中窗口值不易过大,例如窗口值c=2,其优化目标为:

p(wj|wi)描述当前词wi预测窗口内词wj的概率,可通过下面的softmax函数来计算得到:

其中u对应中心词的向量,v对应窗口词的向量,是两个待优化参数,这里可以看做计算点积(多分类模型,u是输入,v是隐藏层参数)。

为了最大化目标的概率,优化目标引入了softmax,此时计算复杂度为词表K的大小,计算开销太大。

为此,引入了随机负采样的思路,从优化一个多分类任务转化为优化一个二分类任务。采用负采样方法把上述的softmax函数替换成以下公式:

其中Ui 为中心词wi对应向量,Vk为隐藏层参数(负采样词的词向量)

以上便是SGNS的核心步骤,剩下的只需要将文本-词汇概念替换为session序列-APP,就可以基word2vec的思想来产生APP的向量啦。

关于负样本的构造,同样基于APP的热度信息调整负采样的参数来构造负样本。word2vec中使用词频作为词的分布,并在词频数上乘上0.75作为权重,使用0.75幂的好处可以减弱不同频次差异过大带来的影响,使得小频次的单词被采样的概率变大,那在自己特定的业务场景里面,是不是0.75也可以当做一个超参数搞一下呢?

最后通过一个自建的二分类任务来不断更新输入层的隐藏矩阵参数,该隐藏矩阵就是最终的APP向量,每一行对应着一个APP向量。

上面通过基于用户地点击APP序列数据,借助word2vec思想来挖掘APP之间的相似性。

目前推荐领域有很多这类基于word2vec思想对序列数据中的各个组成实体(Item)进行向量化的成熟方案,在业界也被统称为item2vec

Item的向量表达有了,那么基于Item召回相似的Item,直接上业界比较常见的Faiss就行了。

Faiss : https://github.com/facebookresearch/faiss

总结

通过上面简单介绍,可以认为Item2vec只是word2vec的一种跨界艺名而已,骨子里面还是word2vec,在具体的推荐场景中取得一定效果的同时,它也暴露出各种问题:

  • 基于Embedding相似度召回的Item领域单一、集中于头部。
  • 对于冷门Item序列数据稀疏、以及冷启动Item的表达能力不足。
  • 对于非序列数据中的实体如果表达。

针对以上这些问题,在下一篇Embedding相关的文章中会继续介绍我了解到的一些解决方案:基于有监督模型训练的、加入ItemID之外其它特征的、基于随机游走的等推荐系统中Embedding获取方法。

3.29

历史文章推荐

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI极客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 推荐系统发展
  • Item2vec的本质
  • 总结
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档