推荐系统之Embedding

  • 一、什么是embedding?
    • 1. 让embedding空前流行的word2vec:
    • 2. 从word2vec到item2vec
  • 二、Graph Embedding
    • 1. 经典的Graph Embedding方法 — DeepWalk
    • 2. DeepWalk改进 — Node2vec
    • 3. 阿里的Graph Embedding方法EGES
  • 三、深度学习推荐系统中,Embedding的应用
    • 1. 深度学习网络中的Embedding层
    • 2. Embedding的预训练方法
    • 3. Embedding作为推荐系统或计算广告系统的召回层
  • 学习参考文章:

一、什么是embedding?

Embedding用一个低维的向量来表示一个物体,可以是一个词,或是一个商品,一个用户。这个embedding向量的性质是能使距离相近的向量对应的物体又相近的含义。

1. 让embedding空前流行的word2vec:

2. 从word2vec到item2vec

二、Graph Embedding

1. 经典的Graph Embedding方法 — DeepWalk

主要思想:由用户点击序列构建物品图,在图结构上进行随机游走,产生大量的物品序列,然后将这些物品序列作为训练样本输入到word2vec进行训练,得到物品的embedding。

Random work 采样概率
Mij是节点vi到节点vj边的权重

2. DeepWalk改进 — Node2vec

斯坦福大学在DeepWalk的基础上更进一步,通过调整随机游走权重的方法使graph embedding的结果在网络的同质性(homophily)和结构性(structural equivalence)中进行权衡权衡。

同质性:距离相近的节点的embedding应该尽量近似。如u与s1、s2、s3、s4。
结构性:结构相似的节点的embedding应该尽量相似。如u与s6

直观解释:同质性的物品可能是同品类、同属性、或常被同一用户购买;结构像是的物品则是各品类的爆款、个品类的最佳臭蛋商品等拥有类似趋势的商品。

Node2vec 中从节点 t 跳转到节点 v 后,下一步从节点 v 跳转到周围各点的跳转概率:

节点v跳转到下一节点x的概率:
w是边vx的权重
dtx是节点t到x的距离

参数p和q共同控制着随机游走的倾向性。

Node2vec灵活的表达了同质性和结构性的特点:图1可以看到距离相近的节点颜色相近。图2可以看到结构相似的节点颜色更为相近。

3. 阿里的Graph Embedding方法EGES

EGES(Enhanced Graph Embedding with Side Information)
基本思想:在DeepWalk生成的graph embedding基础上引入补充信息

DeepWalk缺点:单纯使用用户行为生成的物品相关图,可以生成物品Embedding。但是遇到新加入的物品,或者没有过多交互信息的长尾物品,推荐系统将会出现严重的冷启动问题。

EGES:通过引入更多补充信息来丰富Embedding信息的来源,从而使没有历史行为记录的商品获得Embedding。具体来讲,在构建物品关系图的时候,不仅考虑了用户行为序列生成的物品关系,也考虑了物品相同的属性、类别等信息(这就是side information),这种图一般也叫知识图谱(Knowledge Graph)。

如图:SI0、SI1…、SIn是一个物品的多个embedding向量,用胡同权重a0、a1…、an进行加权平均得到该物品的hidden representation、最后通过softmax层进行分类。

三、深度学习推荐系统中,Embedding的应用

1. 深度学习网络中的Embedding层

在深度学习网络中作为Embedding层,完成从高维稀疏特征向量到低维稠密特征向量的转换

本质:求解一个m(输入高维稀疏向量的维度) X n(输出稠密向量的维度)维的权重矩阵的过程。(embedding层的权重占据了整个网络权重的绝大部分。那么训练过程大部分的训练时间和计算开销都被Embedding层所占据。所以,Embedding层往往采用预训练的方式完成。)

2. Embedding的预训练方法

作为预训练的Embedding特征向量,与其他特征向量连接后一同输入深度学习网络进行训练。

典型的采用Embedding预训练方法的模型是FNN
FNN:利用了FM训练得到的物品向量,作为Embedding层的初始化权重,从而加快了整个网络的收敛速度。在实际工程中,直接采用FM的物品向量作为Embedding特征向量输入到后续深度学习网络也是可行的办法。

Embedding的本质是建立高维向量到低维向量的映射,而“映射”的方法并不局限于神经网络,实质上可以是任何异构模型,这也是Embedding预训练的另一大优势,就是可以采用任何传统降维方法,机器学习模型,深度学习网络完成embedding的生成。

典型的例子是2013年Facebook提出的著名的GBDT+LR的模型,其中GBDT的部分本质上也是完成了一次特征转换,可以看作是利用GBDT模型完成Embedding预训练之后,将Embedding输入单层神经网络进行CTR预估的过程。

3. Embedding作为推荐系统或计算广告系统的召回层

通过计算用户和物品的Embedding相似度,Embedding可以直接作为推荐系统或计算广告系统的召回层或者召回方法之一。

其中Youtube推荐系统召回层的解决方案是典型的做法:

Youtube利用深度学习网络生成Video Embedding和User Embedding的方法:Softmax前一层的输出就是User Embedding,Softmax后一层的输出的列向量就是Item Embedding。(在模型部署过程中,没有必要部署整个深度学习网络来完成从原始特征向量到最终输出的预测过程,只需要将User Embedding和Item Embedding存储到线上内存数据库,通过内积运算再排序的方法就可以得到item的排名。这大大加快了召回层的召回效率。

学习参考文章:

万物皆Embedding,从经典的word2vec到深度学习基本操作item2vec
深度学习中不得不学的Graph Embedding方法
Embedding在深度推荐系统中的3大应用方向

推荐系统中的Embedding相关推荐

  1. 推荐系统中的Embedding应用

    文章目录 1. Word2Vec 1.1 Skip-gram 2. Airbnb中的Embedding 2.1 用在相似推荐中的List Embedding 2.1.1 优化一:Booked List ...

  2. Embedding 技术在推荐系统中的应用实践

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

  3. 深度学习推荐系统中各类流行的Embedding方法

    Embedding技术概览: 对其它Embedding技术不熟悉,可以看我的上一篇文章:深度学习推荐系统中各类流行的Embedding方法(上) Graph Embedding简介 Word2Vec和 ...

  4. embedding在推荐系统中的应用总结,这些你知道吗?

    [摘要] 文章专门把embedding单独提出来,梳理和总结一下embedding在推荐系统中的应用,包括对深度学习方法和传统方法的分析. 不知道大家有没有这种感受,在学习推荐系统算法模型时,少不了e ...

  5. Embedding技术在推荐系统中的应用

    编辑:子墨为客 来源:<深度学习推荐系统>笔记,并进行补充和说明 1.Embedding 是什么 Embedding是用一个低维稠密的向量来"表示"一个对象(这里的对象 ...

  6. 推荐系统中稀疏特征 Embedding 的优化表示方法

    文章作者:张俊林 新浪微博 AI Lab 负责人 内容来源:AI前线 导读:推荐或者 CTR 预估任务有一个很突出的特点:存在海量稀疏特征.海量意味着数量巨大,稀疏意味着即使在很大的训练数据里,大量特 ...

  7. 深度学习推荐系统中各类流行的Embedding方法(下)

    我的个人微信公众号: Microstrong 微信公众号ID: MicrostrongAI 微信公众号介绍: Microstrong(小强)同学主要研究机器学习.深度学习.推荐系统.自然语言处理.计算 ...

  8. 推荐系统中的前沿技术研究与落地:深度学习、AutoML与强化学习 | AI ProCon 2019...

    整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 个性化推荐算法滥觞于互联网的急速发展,随着国内外互联网公司,如 Netflix 在电影领域,亚马逊.淘宝.京东等在电商领域,今日头 ...

  9. 从0到1详解推荐系统中的嵌入方法,原理、算法到应用都讲明白了

    (图片由AI科技大本营付费下载自视觉中国) 作者丨gongyouliu 编辑丨lily 来源 | 大数据与人工智能(ID:) 前言 作者曾在这篇文章中提到,矩阵分解算法是一类嵌入方法,通过将用户行为矩 ...

最新文章

  1. 基于Vue+Nodejs实现宿舍管理系统
  2. 删除链表的倒数第n个节点 python_19.leetcode题目讲解(Python):删除链表的倒数第N个节点...
  3. 计算机辅助语言和计算语言学关系,建构主义理论视角下计算机辅助语言学习环境对留学生学习汉语动机的影响——以广西大学泰国留学生为例-语言学及应用语言学专业论文.docx...
  4. ITK:将BinaryMorphologicalClosingFilter应用于给定LabelMap的一个LabelObject
  5. asp.net编程网页弹窗显示变量_CODESYS Engineering:面向工程应用编程的工具软件
  6. Fiddle用于移动端抓包
  7. MySQL 基础 ————事务与隔离级别总结
  8. SSL-ZYC 2414 简写单词
  9. pr怎么导出html格式的字幕,PR字幕怎么导出,导出只有视频。急急
  10. 基于.Net Core3.1 与signalR实现一个即时通讯工具(一)
  11. JavaScript轻应用网络模块介绍
  12. 【人月神话】浅谈人月神话0.1焦油坑
  13. [经典之作]vml经典之作
  14. java游戏房间匹配_一种游戏房间匹配方法与流程
  15. PDF拆分与合并工具(DOS版)
  16. 正在找工作的同学看过来,zozo最新的java面试题总会,学会月薪3万起!!!
  17. Java和Java大数据有什么区别?
  18. 微信公众号分享给微信好友和朋友圈
  19. web项目开发---部署
  20. IT信息订阅 RSS源列表

热门文章

  1. 在一个list中增加一个节点
  2. 串口,com口,ttl,max232你应该知道的事
  3. Android 闹钟
  4. C两个小例子(数组与指针)
  5. linux-2.6.32在mini2440开发板上移植(16)之LED 驱动程序移植
  6. java怎么编程方程_[编程入门]自定义函数求一元二次方程-题解(Java代码)
  7. TQ210——S5PV210 uboot顶层mkconfig分析
  8. 计算机安全可靠替代工程,基于安全可靠软硬件的党政军OA系统的整系统优化方法与研究-计算机技术专业论文.docx...
  9. 通过set方式注入的bean为null_Spring 注入集合
  10. LeetCode 1940. 排序数组之间的最长公共子序列(二分查找)