写点什么

Embedding 在推荐算法中的应用总结

2019 年 11 月 29 日

Embedding在推荐算法中的应用总结

Embedding 向量作为推荐算法中必不可少的部分,主要有四个运用方向(前 3 个引用于王喆老师):


  • 在深度学习网络中作为 Embedding 层,完成从高维稀疏特征向量到低维稠密特征向量的转换(比如 wide&deep,DIN 等模型);

  • 作为预训练的 Embedding 特征向量,与其他特征向量连接后一同输入深度学习网络进行训练,比如 FNN 模型;

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

  • 通过计算用户和物品的 Embedding,将其作为实时特征输入到推荐或者搜索模型中(比如 Airbnb 的 embedding 应用)。

  • 本文将着重梳理一下 embedding 在 3 和 4 上的应用。


1.Item2vec: Neural Item Embedding for Collaborative Filtering


基本上参照 google 的 word2vec 方法,把 item 视为 word,用户的行为序列视为一个集合,item 间的共现为正样本,并按照 item 的频率分布进行负样本采样。缺点就是没有建模用户对不同 item 的喜欢程度高低。


  1. Airbnb: Real-time Personalization using Embeddings for Search Ranking at Airbnb


共训练了三个 embedding,包括 Listing Embedding、User Type Embedding 和 Listing Type Embedding,这里 Listing 可理解为一个商品 item。其中 Listing Embedding 对应的是用户的短期兴趣偏好,通过用户在 Session 中的点击序列训练得到。其中用到了一些 trick,比如在有预定的 session 中,在 loss 函数中加入预定 listing;另外可以随机加入几个同目的地的房源作为负样本。最终的目标函数为:



那么怎么解决冷启动问题呢?对于新加入的房源,可以从已有 embedding 的房源中,选择 3 个同种类且距离最近(但是要在半径 10miles 以内)的 3 个房源,并用其 embedding 的平均值来作为新房源的 embedding。


另外为了建模用户的长期兴趣,可以拿用户长期的 booking session 序列,但是 booking session 数据是很稀疏的。解决方案是将 listing 和用户进行分类。就可以产生如下的序列:



然后基于 word2vec 方法去训练得到 user type 和 item type 的 embedding 表示。


  1. Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba


可看作是 deep-walk 算法的改进,deep-walk 对于出现次数很少甚至没有用户交互过的商品是学习不到很好的 embedding 表示的。本文使用基于 side information(比如商品品牌、店铺名、类别)的图嵌入学习方法。


首先介绍的是 base 的 Graph Embedding 方法,过程如下图:



然后是 Graph Embedding with Side information,主要就是加入了 side information 来解决冷启动问题。在加入 Side information 之后,商品表示为一种 aggregated embeddings:



其中 W0 代表 item embedding,W1,Wn 代表每种 Side information 对应的 embedding。


最后介绍的是 Enhanced Graph Embedding with Side information ,不同的 side information 在最终的 aggregated embeddings 中所占的权重应该是不同的,比如一个购买了 iphone 的用户,倾向于查看 mac 或者 ipad,这是因为苹果这个品牌的影响力很大。此时 aggregated embeddings 计算公式为:



  1. Deep Neural Networks for YouTube Recommendations


主要在候选集生成阶段使用了下面的模型。



在上面模型进行 serving 的过程中,没有直接使用整个模型去做 inference,而是直接使用 user embedding 和 item embedding 去做相似度的计算。其中 user embedding 是模型最后一层 mlp 的输出,vedio embedding 则直接使用的是 softmax 的权重。


相关文章:


https://zhuanlan.zhihu.com/p/24339183?refer=deeplearning-surfing


https://zhuanlan.zhihu.com/p/55149901


https://zhuanlan.zhihu.com/p/57313656


https://www.jianshu.com/p/229b686535f1


https://zhuanlan.zhihu.com/p/52169807


本文转载自 Alex-zhai 知乎账号。


原文链接:


https://zhuanlan.zhihu.com/p/78144408


2019 年 11 月 29 日 08:00777

评论

发布
暂无评论
发现更多内容

大数据应用及其价值

andy

深入理解Nginx的四级指针

赖猫

c++ nginx Linux Nginx源码

掌上警务,二维码一键报警定位系统

t13823115967

二维码定位报警系统开发

天天CRUD,被领导怼,我是如何从小公司菜鸡到阿里P8架构师?,首次分享Java程序员黄金五年进阶心得

Java架构之路

Java 程序员 架构 面试 编程语言

阿里巴巴Java架构师70W年薪招聘需求,已拿Offer经验分享

Java架构追梦

Java 学习 阿里巴巴 架构 面试

一文汇总数据库基础知识点!(建议收藏)

Java鱼仔

架构师训练营W12作业

Geek_f06ede

量子通信触达消费者

CECBC区块链专委会

量子通信

心酸!在小厂划水八年,婚后苦学三个月,最后京东三面成功拿到offer

Java成神之路

Java 程序员 架构 面试 编程语言

Openresty协程调度对比Go协程调度

行如风

高并发 协程 openresty Go scheduler

系统高可用分析

andy

溯源反制之MySQL蜜罐研究

Java架构师迁哥

架构师训练营大作业(一)

我是谁

架构师训练营第 1 期

“千人斩”阿里面试官同事,被应聘者暴打一顿后!最终洗心革面总结出这份高薪“Java 面试秘籍”

Java成神之路

Java 程序员 架构 面试 编程语言

2020年无人场景市场趋势洞察

IoT云工坊

人工智能 物联网 智慧照明 节能管理 安防报警

MySQL不会丢失数据的秘密,就藏在它的 7种日志里

程序员内点事

MySQL

python 技术面试没过,居然是没有用 pytest 测试框架

和牛

Python 测试 测试框架 pytest

闭关修炼21天,“啃完”283页pdf,我终于“过五关斩六将”拿下字节跳动offer

Java成神之路

Java 程序员 架构 面试 编程语言

浅析整洁架构之道(二) 初步了解The Clean Architecture

御剑

DDD 领域驱动 The Clean Architecture Robert C. Martin

CSS05 - 常用的高级选择器

桃夭十一里

html/css

看完老板哭着让我留下来!带你彻底搞懂Android启动速度优化!Android篇

欢喜学安卓

android 程序员 面试 移动开发

四万字干货 | 《高博士区块链观察18讲》文字稿,带你系统了解区块链

CECBC区块链专委会

区块链

如何通过NGINX的log日志来分析网站的访问情况,试试这些命令

我爱娃哈哈😍

nginx Shell

大数据指标分析思考

andy

吴桐/数字化的下一个十年,你可能不会更幸福

CECBC区块链专委会

数字化时代

惊艳!阿里人用29篇讲明白了多线程与高并发+设计模式,惊呆了!

996小迁

Java 面试 设计模式 多线程 高并发

智慧城市智能化建设,平安社区平台建设综合解决方案

t13823115967

智慧城市

2021 第七季 28天写作训练 测试

将军-技术演讲教练

AQS设计思想与重要字段详解

程序员小毕

Java 源码 jdk 并发编程 AQS

架构师第7周作业

Geek_xq

测开之函数进阶· 第8篇《多个装饰器装饰同一个函数,三个内置的装饰器》

清菡

测试开发

打造 VUCA 时代的 10 倍速 IT 团队

打造 VUCA 时代的 10 倍速 IT 团队

Embedding在推荐算法中的应用总结-InfoQ