最近特别忙,工作日几乎没什么时间学习。平时攒了一堆推荐相关的文章,趁周末整体学习了一下。主要是参考了网上的一篇技术文章(迄今为止我看到的比较好的推荐Embedding总结)以及我自己的一些理解。

​Embedding概念

首先一些概念性的内容要科普下。推荐系统分召回和排序,召回为将每个用户找出他可能喜欢的物品的候选集,排序是对候选集按照用户的喜爱程度进行排序,最终得出给用户推荐的结果。

在推荐系统的召回阶段,需要对每个用户和每个被推荐物品做数学层面的表示,目前比较主流的方法是通过向量,也就是Embedding表示。举个例子,假设傲海和两个物品的Embedding表示法如下:

傲海=[1,32,53,657,863]

物品1=[32,53,46,75,68]

物品2=[2,32,53,657,863]

相比于物品1,傲海的向量距离显然与物品2更小,在推荐系统中就会优先为傲海推荐物品1而不是物品2。这种表示方法就将推荐召回模块抽象成是否可以准确的表示每个人和物品的Embedding,越准确则推荐效果越佳。

I2I和U2I的召回方案

那向量召回有哪些模式呢?其实最核心的是I2I和U2I,当然还有一些衍生的比如U2U2I,这里不再赘述。

U2I主要是通过计算人(USER)和物品(ITEM)的距离做召回,就跟我上文提到的傲海和两个物品的向量距离计算一样。U2I对算法的要求是,需要把人和物品的特征同时加入算法进行计算,这样人和物品的向量维度和意义才一致,做人和物品的向量距离计算才有意义。

I2I是不考虑人的因素的,I2I一般应用到以下场景:

“比如一个人喜欢买各种X类型的手机,把所有物品的Embedding,然后找跟X类型手机距离近的物品推荐给这个人即可”。所以I2I算法更多地是考虑如何求物品间的相关性,并表示成Embedding。

我把I2I和U2I的比较流行的算法做了个汇总,如下图:

I2I算法介绍

先来讲I2I算法,为什么分文字和图片两个类目呢?因为平时我们看到的新闻大致是这样的:

商品大致是这样的:

待推荐物品都会包含图片和说明文字,需要同时考虑这两部分的Embedding。

图片类型比较简单,一般都是ResNet这些算法的中间向量结果导出作为这个图片的Embedding表示:

文本类的Embedding可以分为两种,一种是比较传统的word2vector、fasttext、glove这些算法的方案,叫做词向量固定表征类算法,这些算法主要是通过分析词的出现频率来进行Embedding生成,不考虑文本上下文。

而另一种文本Embedding方法,也是目前最流行的方案是动态词表征算法,比如Bert、ELMo、GPT,这类算法会考虑文本上下文。

动态词表征和固定词表征算法的区别可以举个例子说明,比如下面这句话:“小明爱吃苹果,也爱使用苹果手机”。需要对“苹果”这个词做Embedding,固定词表征算法很难区分出吃的苹果和手机苹果品牌,而动态的表征方法是可以的。

U2I算法

1.ALS

U2I算法可以分为4类,最经典的就是MF矩阵分解算法ALS,

比如在ALS算法输入的是下图这样的人对歌的打分数据,

ALS会根据这样的数据产出两个矩阵,这两个矩阵分别表示每个听众的Embedding和每首歌的Embedding。

2.基于浏览序列Embedding

另一种相对高级的人的Embedding方案是Bert+LSTM,这类方案叫浏览序列Embedding法。我们可以把每个用户历史的浏览记录作为这个人的属性的表示。

假设一个用户先后浏览过3篇文章,分别是:

  1. “巴特尔掀翻奥尼尔”

  2. “易建联怒砍3分,2篮板”

  3. “孙悦率领湖人勇夺总冠军”

那就可以把这3篇新闻标题用Bert向量化,再将这些向量按照浏览序列输入LSTM,最终就生成这个用户的Embedding表示。

3.动态协同过滤

接着再介绍一种基于簇群的协同过滤召回方案,一般是KMEANS+CF。CF就是协同过滤法,原理不多说了。这种召回方案一般是先将每个用户按照他的标签做Tag Embedding,比如可以按照年龄、性别、身高做个Embedding。

小明=[29,1,180]

(29岁,1代表男性,身高180)

然后用KMEANS做所有用户的自动聚类,接着针对每个聚类簇内部的用户做相互之间的协同过滤,这样可以保证为相似口味的人推送互相都喜欢的物品。

4.图神经网络

图神经网络Embedding是目前比较热门的,效果也是相对比较好的一个方案。图神经网络把每个用户有过行为交互物品看作一个点,把具体的行为看作边。如下图所示:

用户1看按照DAB的顺序跟物品交互,用户2按照BE DEF的顺序交互,依此类推,可以构建一个图关系。这个图关系隐藏着用户和物品的属性,可以生成人和物品的Embedding向量。常用的图神经网络算法有GraphSage和DeepWalk。

总结

Embedding向量生成之后,可以用Faiss引擎去方便的计算向量间的距离,从而实现推荐召回。这个方案是目前主流的推荐引擎召回方案。相信后续会有越来越多的算法诞生,我也会持续关注。

参考:https://www.jiqizhixin.com/articles/2020-06-30-11

最全推荐系统Embedding召回算法总结相关推荐

  1. 推荐系统的召回算法(一)—— 协同过滤法(基于用户)

      姗姗来迟的第二篇博客,最近在了解有关推荐系统方面的基本知识和算法,先总结其中一类经典常用的算法--协同过滤法.网上已有很多介绍其原理的好文章,所以本文用较多篇幅来写一些自身对算法实现的理解和疑惑, ...

  2. 个性化推荐系统--个性化召回算法总结与评估方法的介绍(6-1)

    一.个性化召回算法的总结 这里会将之前介绍过的几种算法进行归类,并简短介绍每一种个性化召回算法的核心原理:同时演示工业界中多种召回算法共存的架构. 下面看一下之前讲过的个性化召回算法的分类: 1. 基 ...

  3. 推荐系统 embedding 技术实践总结

    作者:minwxwang,腾讯 PCG 应用研究员 当前主流的推荐系统中,embedding 无处不在,从一定意义上可以说,把 embedding 做好了,整个推荐系统的一个关键难题就攻克了.因此,本 ...

  4. 【推荐】推荐系统 Embedding 技术实践总结

    <推荐系统 Embedding 技术实践总结> 文章作者:minwxwang 腾讯 应用研究员 内容来源:腾讯技术工程 https://mp.weixin.qq.com/s/7DXVrJU ...

  5. JAVA召回算法_推荐系统召回策略之多路召回与Embedding召回

    图1. 推荐系统整体架构 推荐系统学习笔记系列链接: 1. 多路召回 1.1 概述 所谓的"多路召回策略"就是指采用不同的策略.特征或者简单模型,分别召回一部分候选集,然后再把这些 ...

  6. 推荐系统-模型(一):召回模型【协同过滤类: ItemCF/UserCF】【Embedding类】【Dssm/双塔/word2vec】【图类召回算法 (Deepwalk、EGES)】

    推荐系统-召回模型:[协同过滤类: ItemCF/UserCF][Embedding类][Dssm/双塔/word2vec][图类召回算法 (Deepwalk.EGES)]

  7. 史上最全推荐系统传统算法合集

    ©作者 | YBH 学校 | 上海交通大学 研究方向 | 推荐系统 我花了半个多月将推荐系统传统算法分别进行了总结归纳,应该时目前全网最全的版本了.希望对大家了解推荐系统传统算法有所帮助. 推荐系统的 ...

  8. 【收藏】史上最全推荐系统传统算法合集

    猜你喜欢 0.[免费下载]2021年12月热门报告盘点1.如何搭建一套个性化推荐系统?2.从零开始搭建创业公司后台技术栈3.全民K歌推荐系统算法.架构及后台实现4.微博推荐算法实践与机器学习平台演进5 ...

  9. 推荐系统实战第02课召回算法和业界最佳实践Part1

    推荐系统实战第02课召回算法和业界最佳实践Part1 推荐系统的 Match 模块介绍 Match 算法典型应⽤ Collaborative Filtering 算法介绍 基于共现关系的 Collab ...

最新文章

  1. 经典论文复现 | LSGAN:最小二乘生成对抗网络
  2. 深度高能粒子对撞追踪:Kaggle TrackML粒子追踪挑战赛亚军访谈
  3. 使用CKEditor编辑器进行文本编辑
  4. 【PyTorch】Tricks 集锦
  5. 使用SpringBoot的jackson包进行实体类型转换
  6. RabbitMQ(三)发布确认
  7. 阅读APP,为什么都开始抢kindle生意了?
  8. 重磅发布|新一代云原生数据仓库AnalyticDB「SQL智能诊断」功能详解
  9. js 通用 保留两位小数 金额千分位格式化
  10. 在delphi中如何动态建立类的实例
  11. MySQL高级-MySQL锁
  12. 项目管理中工时计算的问题
  13. 如何用计算机画磁滞回线,[画图的问题]怎么画类似于磁滞回线的图像?一个x值对应两个y值的...
  14. 单片机音频谱曲软件_51单片机蜂鸣器音乐简谱转换工具
  15. php社工库搭建,如何快速3分钟本地搭建社工裤子
  16. 使用Unity3D视频转换器TheoraConverter.NET 1.1 Setup转换视频格式为ogv并播放视频
  17. 基于pygame的自定义游戏《the box》
  18. TBS1237 1/4 扫 48 通道 LED 背光驱动芯片
  19. LR下载文件脚本实例
  20. 学习java的第17天

热门文章

  1. Datatable 转换 Dictionary
  2. 当傻子的最好办法: 把别人当傻子
  3. 2021年春招总结帖!分享一下我的腾讯、携程、美团面经,本人已拿offer,春招正式结束!
  4. 傅里叶变换尺度变换性质_傅里叶变换的时移特性和尺度变换特性
  5. 装修公司宣传视频需要展现哪些内容?
  6. 科大讯飞2013-2014年度联欢颁奖典礼隆重举行!
  7. whoosh全文检索
  8. QueryWrapper
  9. SDK棋牌游戏盾防护原理解析
  10. MySQL保存计算结果_数据库保存计算结果 fluent计算完成后怎么保存