怎样将Embedding融入传统机器学习框架?

文 | 石塔西

源 | 知乎


LR本身是一个经典的CTR模型,广泛应用于推荐/广告系统。输入的特征大多数是离散型/组合型。那么对于Embedding技术,如何在不使用深度学习模型的情况下(假设就是不能用DNN),融入到LR框架中呢?让我们来看看清华大学的博士石塔西大佬是如何解答的。

问题实战意义

其实这个问题可以再扩展一下,即,如何在传统机器学习算法(LR/GBDT)中使用Embedding信息。

这个问题并非空穴来风,而是有一定的实战价值。 目前DNN热度不减,基本上成为推荐、搜索系统的标配算法。传统机器学习算法,如LR、GBDT,纷纷被打入冷宫,得不到关注。至于为什么DNN能够成功上位,独占各位打工人的欢心,请参考我的文章《无中生有:论推荐算法中的Embedding思想》[1]

但是,DNN有一个致命缺点,就是上线困难。 训练的时候,各位调参侠,把各种酷炫的结构,什么attention, transformer, capsule,能加上的都给它加上,看着离线指标一路上涨,心里和脸上都乐开了花,却全然无视旁边的后端工程师恨得咬紧了牙根。模型越复杂,离线和线上指标未必就更好,但是线上的时间开销肯定会增加,轻则影响算法与后端的同事关系(打工人何苦为难打工人),重则你那离线指标完美的模型压根没有上线的机会。虽说,目前已经有TF Serving这样的线上serving框架,但是它也不是开箱即用的,也需要一系列的性能调优,才能满足线上的实时性要求。

所以,如果你身处一个小团队,后端工程人员的技术能力不强,在线DNN就会成为一个难题,这个时候,传统的LR、GBDT就凸显出优势。 如果全部使用ID类特征(实数特征也桶化成ID类特征),那么LR在线上就简化成“查表取权重,再累加“,连乘法都省了,实时性自然有保证。

但是,如果你想鱼与熊掌兼得,既不得不使用简单的传统机器学习算法,又想利用Embedding带来扩展能力上的提升, 你该怎么办?唉,费了半天口舌,只是解了题而已,目的是为了说明这一问题的实战意义,引起大家对这一问题的重视。

不推荐直接使用Embedding本身

首先,如果你的主框架是传统机器学习算法,那么Embedding肯定就不能是End-To-End学习得到的,而需要离线用另外的算法先学习好。比如,你使用DeepWalk先学习用户的购买序列,离线学习好商品的Embedding。

第二个问题才是传统机器学习如何利用这些Embedding。当然最简单的方法就是直接使用,为了使用一个64维的向量,就相当于LR增加了64维特征。但是,我不推荐使用这种方式:

  • 之所以线上使用LR,看中就是使用其处理高维、稀疏的ID类特征的能力,线上操作简化成“查表、累加权重”的快速便捷。如果你使用了向量这样的稠密特征,那么LR的优点就不复存在了。更何况有的Embedding,比如图片的Embedding可能上千维,破坏了稀疏性,线上的存储与计算都很困难。

  • LR所使用的Embedding是离线计算得到的,黑盒,可解释性不强。而我们使用LR,图的就是其可解释性强,方便debug。

  • 另外,Embedding还不稳定,因为计算Embedding的离线程序可能也需要升级。一旦升级,之前累积的训练样本就全部作废,因为新老Embedding肯定不处于同一个坐标系下,不能混用。

推荐使用基于Embedding的衍生指标

所以,我不推荐在LR中直接使用Embedding。 在我看来,正确的姿势,应该是基于离线生成的Embedding,衍生出一系列衡量<user,item>相关度的指标,然后在LR中使用这些衍生指标。 这种作法也并非我的空想,也是有出处、经过实践检验的。Airbnb的《Real-time Personalization using Embeddings for Search Ranking at Airbnb》[2] 中就采用这种方法,将离线计算好的Embedding,喂入他们的GBDT排序模型。

详细算法,请阅读Airbnb论文的第4.4节,我这里将Airbnb的做法简述如下:

1.前提,Airbnb已经将listing(房屋) embedding离线计算好

2.从多种角度来收集用户的历史,

  1. 比如Hc代表用户过去2周点击过的listing集合,

  2. Hs代表曝光给用户但被忽略的listing集合,

  3. Hw是用户收藏的listing的集合,

  4. Hb是用户预订过的listing的集合,......

3.将以上某个集合中所有listing的embedding取平均,当成user在这个行为(点击、忽略、收藏、预订、......)下的embedding

4.再拿user在某个行为下的user embedding,与当前要排序的listing embedding,计算cosine similarity,作为user对当前listing执行某动作(点击、忽略、收藏、预订、......)的倾向性。将这种“执行某动作的倾向性得分”作为实数特征,喂入GBDT,训练排序模型。

5.将这种“执行某动作的倾向性得分”作为实数特征,喂入GBDT,训练排序模型。

6.除了以上用户的长期兴趣(H*都是以周为单位收集的),Airbnb还计算当前待排序的listing embedding与用户最后一次点击的listing embedding的相似性,来刻画用户的短期兴趣。

Airbnb使用的全部基于listing embedding的衍生指标见论文中的表6 

总结

  • 在传统机器学习中使用Embedding,这个问题,有一定的实战意义。特别是你想规避DNN模型复杂的上线流程,而又想获得Embedding带来的扩展性的提升的时候。

  • 在传统机器学习模型中使用Embedding,我不推荐直接使用Embedding,而建议使用基于Embedding计算得到的衍生指标。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

 

[1]https://zhuanlan.zhihu.com/p/320196402

[2]https://zhuanlan.zhihu.com/p/162163054

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐系统中的Embedding

推荐系统之Embedding一、什么是embedding&#xff1f;1. 让embedding空前流行的word2vec&#xff1a;2. 从word2vec到item2vec二、Graph Embedding1. 经典的Graph Embedding方法 — DeepWalk2. DeepWalk改进 — Node2vec3. 阿里的Graph Embedding方法EGES三、深度学习推荐系统中…

美团下一代服务治理系统 OCTO 2.0 的探索与实践

本文根据美团基础架构部服务治理团队工程师郭继东在2019 QCon&#xff08;全球软件开发大会&#xff09;上的演讲内容整理而成&#xff0c;主要阐述美团大规模治理体系结合 Service Mesh 演进的探索实践&#xff0c;希望对从事此领域的同学有所帮助。 一、OCTO 现状分析 OCTO 是…

技术动态 | 跨句多元关系抽取

本文转载自公众号&#xff1a;知识工场。第一部分 概述关系抽取简介关系抽取是从自由文本中获取实体间所具有的语义关系。这种语义关系常以三元组 <E1,R,E2> 的形式表达&#xff0c;其中&#xff0c;E1 和E2 表示实体&#xff0c;R 表示实体间所具有的语义关系。如图1所示…

JAVA1.6实现动态编译加载运行

一直以为我们写好的程序都需要预先编译好&#xff0c;然后再运行&#xff0c;直到今天在看书的时候才看到书上说JAVA1.6之后可以动态的编译JAVA文件&#xff0c;这着实让我高兴了一把&#xff0c;为什么这么兴奋呢&#xff0c;我一心想着能用技术实现动态更新APK&#xff0c;不…

网络解析(一):LeNet-5详解

原文链接&#xff1a;https://cuijiahua.com/blog/2018/01/dl_3.html 2018年1月9日21:03:313994,282 C摘要LeNet-5出自论文Gradient-Based Learning Applied to Document Recognition&#xff0c;是一种用于手写体字符识别的非常高效的卷积神经网络。一、前言LeNet-5出自论文Gr…

LeetCode 69. x 的平方根(二分查找)

文章目录1. 题目2.解题2.1 二分查找2.2 牛顿迭代1. 题目 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根&#xff0c;其中 x 是非负整数。 由于返回类型是整数&#xff0c;结果只保留整数的部分&#xff0c;小数部分将被舍去。 示例 1:输入: 4 输出: 2 示例 2:输入: 8…

(设计模式)简单工厂模式之通过配置文件动态创建实现类

通常我们在使用简单工厂模式的时候会由创建方法create通过传入的参数来判断要实例化哪个对象&#xff0c;就像下面这样&#xff1a; public static class ImageSelectFactory {public static IImageSelect createIImageSelect(ImageSelectClientMode mode) {IImageSelect image…

Google综述:细数Transformer模型的17大高效变种

文 | 黄浴来源 | 知乎在NLP领域transformer已经是成功地取代了RNN&#xff08;LSTM/GRU&#xff09;&#xff0c;在CV领域也出现了应用&#xff0c;比如目标检测和图像加注&#xff0c;还有RL领域。这是一篇谷歌2020年9月份在arXiv发表的综述论文 “Efficient Transformers: A …

Tensorflow2.0模型构建与训练

模型构建 class Encoder(layers.Layer):def __init__(self, latent_dim32, intermediate_dim64, name"encoder", **kwargs):super(Encoder, self).__init__(namename, **kwargs)w_init tf.random_normal_initializer()self.w tf.Variable(initial_valuew_init(shap…

从ReentrantLock的实现看AQS的原理及应用

前言 Java中的大部分同步类&#xff08;Lock、Semaphore、ReentrantLock等&#xff09;都是基于AbstractQueuedSynchronizer&#xff08;简称为AQS&#xff09;实现的。AQS是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架。本文会从应用层逐渐深入到…

论文浅尝 | 利用知识-意识阅读器改进的不完整知识图谱问答方法

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士生&#xff0c;研究方向为知识库问答。来源&#xff1a;ACL2019链接&#xff1a;https://www.aclweb.org/anthology/P19-1417/本文提出了一种融合不完整知识图谱与文档集信息的end2end问答模型&#xff0c;旨在利用结构…

机器学习十大经典算法之岭回归和LASSO回归

机器学习十大经典算法之岭回归和LASSO回归&#xff08;学习笔记整理:https://blog.csdn.net/weixin_43374551/article/details/83688913

MVP模式在Android中的应用(附UML高清大图,使用RecyclerView举例)

传了一张图&#xff0c;图比较大&#xff0c;请移步下载&#xff1a;http://download.csdn.net/detail/u011064099/9266245 在看代码之前&#xff0c;首先简单看一下什么是MVP模式&#xff1a;http://www.cnblogs.com/end/archive/2011/06/02/2068512.html MVP最核心就是将界面…

Facebook大公开:解决NLG模型落地难题!工业界的新一波春天?

文 | 小喂老师编 | 小轶作为NLP领域的“三高”用户&#xff08;高产、高能、高钞&#xff09;&#xff0c;FaceBook最近&#xff08;2020年11月&#xff09;又发表了一篇高水准文章&#xff0c;目前已被COLING-2020接收&#xff0c;号称解决了自然语言生成&#xff08;NLG&…

Tensorflow2.0 tf.function和AutoGraph模式

一个简单记录&#xff0c;后续慢慢补充。。。。。 一、函数 # 类似一个tensorflow操作 tf.function def add(a, b):return ab # 即使传入数字&#xff0c;函数运算也是python基本运算&#xff0c;发返回值的类型也会变成tensor。print(add(1,2)) # tf.Tensor(3, shape(),…

论文浅尝 | 如何利用外部知识提高预训练模型在阅读理解任务中的性能

论文笔记整理&#xff1a;吴桐桐&#xff0c;东南大学博士生&#xff0c;研究方向为自然语言处理。链接&#xff1a;https://www.aclweb.org/anthology/P19-1226/近年来&#xff0c;机器阅读理解已经逐渐发展为自然语言理解方向的主流任务之一。最近&#xff0c;预训练模型尤其…

美团外卖前端容器化演进实践

背景 提单页的位置 提单页是美团外卖交易链路中非常关键的一个页面。外卖下单的所有入口&#xff0c;包括首页商家列表、订单列表页再来一单、二级频道页的今日推荐等&#xff0c;最终都会进入提单页&#xff0c;在确认各项信息之后&#xff0c;点击提交订单按钮&#xff0c;完…

LeetCode 807. 保持城市天际线

文章目录1. 题目2. 解题1. 题目 在二维数组grid中&#xff0c;grid[i][j]代表位于某处的建筑物的高度。 我们被允许增加任何数量&#xff08;不同建筑物的数量可能不同&#xff09;的建筑物的高度。 高度 0 也被认为是建筑物。 最后&#xff0c;从新数组的所有四个方向&#…

机器学习数据集汇总(附下载地址)

大学公开数据集(Stanford)69G大规模无人机(校园)图像数据集【Stanford】http://cvgl.stanford.edu/projects/uav_data/人脸素描数据集【CUHK】http://mmlab.ie.cuhk.edu.hk/archive/facesketch.html自然语言推理(文本蕴含标记)数据集【NYU】https://www.nyu.edu/projects/bowma…

提供一个Android原生的Progress——SwipeToRefreshLayout下拉刷新时的等待动画

先来上个图看看效果&#xff1a; 这里我为什么要单独把这个拿出来呢&#xff0c;因为最近才开始接触Android最新的东西&#xff0c;也就是5.0以上的东西&#xff0c;发现Android提供的SwipeToRefreshLayout是没有上拉加载更多的&#xff0c;在网上找了不少第三方提供加载更多的…