Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深度学习在推荐领域的应用

深度学习在推荐领域的应用

作者头像
用户1737318
发布于 2018-07-20 08:06:45
发布于 2018-07-20 08:06:45
1.2K0
举报
文章被收录于专栏:人工智能头条人工智能头条

作者: 吴岸城,菱歌科技首席算法科学家,致力于深度学习在文本、图像、预测推荐领域的应用。曾在中兴通讯、亚信(中国)担任研发经理、高级技术经理等职务。 责编:何永灿,欢迎人工智能领域技术投稿、约稿、给文章纠错

当2012年Facebook在广告领域开始应用定制化受众(Facebook Custom Audiences)功能后,“受众发现”这个概念真正得到大规模应用,什么叫“受众发现”?如果你的企业已经积累了一定的客户,无论这些客户是否关注你或者是否跟你在Facebook上有互动,都能通过Facebook的广告系统触达到。“受众发现”实现了什么功能?在没有这个系统之前,广告投放一般情况都是用标签去区分用户,再去给这部分用户发送广告,“受众发现”让你不用选择这些标签,包括用户基本信息、兴趣等。你需要做的只是上传一批你目前已有的用户或者你感兴趣的一批用户,剩下的工作就等着Custom Audiences帮你完成了。

Facebook这种通过一群已有的用户发现并扩展出其他用户的推荐算法就叫Lookalike,当然Facebook的算法细节笔者并不清楚,各个公司实现Lookalike也各有不同。这里也包括腾讯在微信端的广告推荐上的应用、Google在YouTube上推荐感兴趣视频等。下面让我们结合前人的工作,实现自己的Lookalike算法,并尝试着在新浪微博上应用这一算法。

调研

首先要确定微博领域的数据,关于微博的数据可以这样分类:

  • 用户基础数据:年龄、性别、公司、邮箱、地点、公司等。
  • 关系图:根据人↔人,人↔微博的关注、评论、转发信息建立关系图。
  • 内容数据:用户的微博内容,包含文字、图片、视频。

有了这些数据后,怎么做数据的整合分析?来看看现在应用最广的方式——协同过滤、或者叫关联推荐。协同过滤主要是利用某兴趣相投、拥有共同经验群体的喜好来推荐用户可能感兴趣的信息,协同过滤的发展有以下三个阶段:

第一阶段,基于用户喜好做推荐,用户A和用户B相似,用户B购买了物品a、b、c,用户A只购买了物品a,那就将物品b、c推荐给用户A。这就是基于用户的协同过滤,其重点是如何找到相似的用户。因为只有准确的找到相似的用户才能给出正确的推荐。而找到相似用户的方法,一般是根据用户的基本属性贴标签分类,再高级点可以用上用户的行为数据。

第二阶段,某些商品光从用户的属性标签找不到联系,而根据商品本身的内容联系倒是能发现很多有趣的推荐目标,它在某些场景中比基于相似用户的推荐原则更加有效。比如在购书或者电影类网站上,当你看一本书或电影时,推荐引擎会根据内容给你推荐相关的书籍或电影。

第三阶段,如果只把内容推荐单独应用在社交网络上,准确率会比较低,因为社交网络的关键特性还是社交关系。如何将社交关系与用户属性一起融入整个推荐系统就是关键。在神经网络和深度学习算法出现后,提取特征任务就变得可以依靠机器完成,人们只要把相应的数据准备好就可以了,其他数据都可以提取成向量形式,而社交关系作为一种图结构,如何表示为深度学习可以接受的向量形式,而且这种结构还需要有效还原原结构中位置信息?这就需要一种可靠的向量化社交关系的表示方法。基于这一思路,在2016年的论文中出现了一个算法node2vec,使社交关系也可以很好地适应神经网络。这意味着深度学习在推荐领域应用的关键技术点已被解决。

在实现算法前我们主要参考了如下三篇论文:

  • Audience Expansion for Online Social Network Advertising 2016 http://www.kdd.org/kdd2016/papers/files/adf0483-liuA.pdf
  • node2vec: Scalable Feature Learning for Networks Aditya Grover 2016 https://arxiv.org/abs/1607.00653
  • Deep Neural Networks for YouTube Recommendations 2016 http://dl.acm.org/citation.cfm?id=2959190

第一篇论文是LinkedIn给出的,主要谈了针对在线社交网络广告平台,如何根据已有的受众特征做受众群扩展。这涉及到如何定位目标受众和原始受众的相似属性。论文给出了两种方法来扩展受众:

  1. 与营销活动无关的受众扩展;
  2. 与营销活动有关的受众扩展。

图1 LinkedIn的Lookalike算法流程图

在图1中,LinkedIn给出了如何利用营销活动数据、目标受众基础数据去预测目标用户行为进而发现新的用户。今天的推荐系统或广告系统越来越多地利用了多维度信息。如何将这些信息有效加以利用,这篇论文给出了一条路径,而且在工程上这篇论文也论证得比较扎实,值得参考。

第二篇论文,主要讲的是node2vec,这也是本文用到的主要算法之一。node2vec主要用于处理网络结构中的多分类和链路预测任务,具体来说是对网络中的节点和边的特征向量表示方法。

简单来说就是将原有社交网络中的图结构,表达成特征向量矩阵,每一个node(可以是人、物品、内容等)表示成一个特征向量,用向量与向量之间的矩阵运算来得到相互的关系。

下面来看看node2vec中的关键技术——随机游走算法,它定义了一种新的遍历网络中某个节点的邻域的方法,具体策略如图2所示。

图2 随机游走策略

假设我们刚刚从节点t走到节点v,当前处于节点v,现在要选择下一步该怎么走,方案如下:

其中dtx表示节点t到节点x之间的最短路径,dtx=0表示会回到节点t本身,dtx=1表示节点t和节点x直接相连,但是在上一步却选择了节点v,dtx=2表示节点t不与x直接相连,但节点v与x直接相连。其中p和q为模型中的参数,形成一个不均匀的概率分布,最终得到随机游走的路径。与传统的图结构搜索方法(如BFS和DFS)相比,这里提出的随机游走算法具有更高的效率,因为本质上相当于对当前节点的邻域节点的采样,同时保留了该节点在网络中的位置信息。

node2vec由斯坦福大学提出,并有开源代码,这里顺手列出,这一部分大家不用自己动手实现了。

https://github.com/aditya-grover/node2vec 注:本文的方法需要在源码的基础上改动图结构。

第三篇论文讲的是Google如何做YouTube视频推荐,论文是在我做完结构设计和流程设计后看到的,其中模型架构的思想和我们不谋而合,还解释了为什么要引入DNN(后面提到所有的feature将会合并经历几层全连接层):引入DNN的好处在于大多数类型的连续特征和离散特征可以直接添加到模型当中。此外我们还参考了这篇论文对于隐含层(FC)单元个数选择。图3是这篇论文提到的算法结构。

图3 YouTube推荐结构图

实现

  • (a)数据准备
    • 获得用户的属性(User Profile),如性别、年龄、学历、职业、地域、能力标签等;
    • 根据项目内容和活动内容制定一套受众标签(Audience Label);
    • 提取用户之间的关注关系,微博之间的转发关系;
    • 获取微博message中的文本内容;
    • 获得微博message中的图片内容。
  • (b)用户标签特征处理
    • 根据步骤a中用户属性信息和已有的部分受众标签系统。利用GBDT算法(可以直接用xgboost)将没有标签的受众全部打上标签。这个分类问题中请注意处理连续值变量以及归一化。
    • 将标签进行向量化处理,这个问题转化成对中文单词进行向量化,这里用word2vec处理后得到用户标签的向量化信息Label2vec。这一步也可以使用word2vec在中文的大数据样本下进行预训练,再用该模型对标签加以提取,对特征的提取有一定的提高,大约在0.5%左右。
  • (c)文本特征处理 将步骤a中提取到的所有微博message文本内容清洗整理,训练Doc2Vec模型,得到单 个文本的向量化表示,对所得的文本作聚类(KMeans,在30w的微博用户的message上测试,K取128对文本的区分度较强),最后提取每个cluster的中心向量,并根据每个用户所占有的cluster获得用户所发微博的文本信息的向量表示Content2vec。
  • (d)图像特征(可选) 将步骤a中提取到的所有的message图片信息整理分类,使用预训练卷积网络模型(这里为了平衡效率选取VGG16作为卷积网络)提取图像信息,对每个用户message中的图片做向量化处理,形成Image2vec,如果有多张图片将多张图片分别提取特征值再接一层MaxPooling提取重要信息后输出。
  • (e)社交关系建立(node2vec向量化) 将步骤a中获得到的用户之间的关系和微博之间的转发评论关系转化成图结构,并提取用户关系sub-graph,最后使用node2Vec算法得到每个用户的社交网络图向量化表示。 图4为简历社交关系后的部分图示。

图4 用户社交关系

  • (f)将bcde步骤得到的向量做拼接,经过两层FC,得到表示每个用户的多特征向量集(User Vector Set, UVS)。这里取的输出单元个数时可以根据性能和准确度做平衡,目前我们实现的是输出512个单元,最后的特征输出表达了用户的社交关系、用户属性、发出的内容、感兴趣的内容等的混合特征向量,这些特征向量将作为下一步比对相似性的输入值。
  • (g)分别计算种子用户和潜在目标用户的向量集,并比对相似性,我们使用的是余弦相似度计算相似性,将步骤f得到的用户特征向量集作为输入x,y,代入下面公式计算相似性:

使用余弦相似度要注意:余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感。因此没法衡量每个维度值的差异,这里我们要在每个维度上减去一个均值或者乘以一个系数,或者在之前做好归一化。

  • (h)受众扩展
    • 获取种子受众名单,以及目标受众的数量N;
    • 检查种子用户是否存在于UVS中,将存在的用户向量化;
    • 计算受众名单中用户和UVS中用户的相似度,提取最相似的前N个用户作为目标受众。

最后我们将以上步骤串联起来,形成如图5所示。

图5 Lookalike算法示意图

在以上步骤中特征提取完成后,我们使用一个2层的神经网络做最后的特征提取,算法结构示意图如图6所示。

图6 Lookalike算法结构图

其中FC1层也可以替换成MaxPooling,MaxPooling层具有强解释性,也就是在用户特征群上提取最重要的特征点作为下一层的输入,读者可以自行尝试,这里限于篇幅问题就不做展开了。

讲到这里,算法部分就已基本完结,其中还有些工程问题,并不属于本次主题探讨范围,这里也不做讨论了。

结果

我司算法团队根据Lookalike思想完整实现其算法,并在实际产品中投入试用。针对某客户(乳品领域世界排名前三的品牌主)计算出结果(部分):

表1 部分计算结果

可以观察到以上微博ID的主题基本都是西点企业或西点培训企业,和品牌主售卖的乳品有很高的关联性:乳品是非常重要的西点原料,除终端用户外,西点相关企业就是乳品企业主需要寻找的最重要的受众之一。

探讨

特征表达

除了以上提到的特征外,我们也对其他的重要特征表达做了处理和变换:根据我们的需求,需要抽取出人的兴趣特征,如何表达一个人的兴趣?除了他自己生成的有关内容外,还有比较关键的一点是比如“我”看了一些微博,但并没有转发,大多数情况下都不会转发,但有些“我”转发了,有些“我”评论了;“我”转发了哪些?评论了哪些?这次距上次的浏览该人的列表时间间隔多久?都代表“我”对微博的兴趣,而间接的反应“我”的兴趣特征。这些数据看来非常重要,又无法直接取得,怎么办?

下面来定义一个场景,试图描述出我们对看过的内容中哪些是感兴趣的,哪些不是感兴趣的:

  • (a)用户A,以及用户A关注的用户B;
  • (b)用户A的每天动作时间(比如他转发、评论、收藏、点赞)起始时间,我们定义为苏醒时间A_wake(t);
  • (c)用户B每天发帖(转发、评论)时间:B_action(t);
  • (d)简单假设一下A_wake(t)> B_action(t),也就是B_action(t)的评论都能看到。这就能得到用户A对应了哪些帖子;
  • (e)同理,也可知用户A 在A_wake(t)时间内转发了、评论了哪些帖子;
  • (f)结合上次浏览间隔时间,可以描述用户A对哪些微博感兴趣(post ive),哪些不感兴趣(negative)。

全连接层的激活单元比对提升

在Google那篇论文中比对隐含层(也就是我们结构图中的FC层)各种单元组合产生的结果,Google选择的是最后一种组合,如图7所示。

图7 YouTube推荐模型隐含层单元选择对比

我们初期选用了512 tanh→256 tanh 这种两层组合,后认为输入特征维度过大,512个单元无法完整的表达特征,故又对比了 1024→512组合,发现效果确实有微小提升大概在0.7%。另外我们的FC层输入在(-1,1)区间,考虑到relu函数的特点没有使用它,而是使用elu激活函数。测试效果要比tanh函数提升0.3%-0.5%。

附node2vec伪码:

感谢我司算法组周维在拟写这篇文章时提供的帮助。

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

本文分享自 人工智能头条 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用万字长文聊一聊 Embedding 技术
作者:qfan,腾讯 WXG 应用研究员 随着深度学习在工业届不断火热,Embedding 技术便作为“基本操作”广泛应用于推荐、广告、搜索等互联网核心领域中。Embedding 作为深度学习的热门研究方向,经历了从序列样本、图样本、再到异构的多特征样本的发展过程。本文主要系统总结了现在主流的 Embedding 技术,简单介绍它们的基本原理,希望对大家快速整理相关知识有所帮助。 一、引言 在提到 Embedding 时,首先想到的是“向量化”,主要作用是将高维稀疏向量转化为稠密向量,从而方便下游模
腾讯技术工程官方号
2020/11/19
16K2
搜推广遇上用户画像:Lookalike相似人群拓展算法
在《当推荐系统遇上用户画像:你的画像是怎么来的?》一文中,我们介绍了怎么通过TF-IDF的方式得到用户的画像。而在本文中,我们来聊一下在搜索、推荐、计算广告系统中“画像是怎么用的?”。
Houye
2021/05/31
4.5K0
搜推广遇上用户画像:Lookalike相似人群拓展算法
深度学习推荐系统中各类流行的Embedding方法(上)
Embedding,中文直译为“嵌入”,常被翻译为“向量化”或者“向量映射”。在整个深度学习框架中都是十分重要的“基本操作”,不论是NLP(Natural Language Processing,自然语言处理)、搜索排序,还是推荐系统,或是CTR(Click-Through-Rate)模型,Embedding都扮演着重要的角色。
OpenCV学堂
2020/05/26
6K0
社会化推荐浅谈
不知道大家有没有这样的感觉,本人一直觉得社交网络这个东西是一个很有意思的玩意儿,起初觉得它有意思也可能是由于这个可爱的名词-Social Network,也可能是被五颜六色的社交网络示意图所吸引,总之并没有什么高大上的名词来解释我对于它的喜爱。也正是由于这种莫名的好感,基于社交网络的推荐系统也成了我后来硕士阶段研究的课题。随着后续学习与研究的深入,逐渐了解到了社交网络中包含的有意思的结论以及所蕴含的强大知识,也更加确定了自己对于这一领域的喜欢。
张小磊
2019/12/25
9960
网络新闻真假难辨?机器学习来助你一臂之力
拥有超过一百万粉丝的认证用户的推特网络。圆圈(节点)代表用户,连接圆圈的线条代表一个用户「关注」另一个用户。颜色表示通过模块化聚类确定的类别。
机器之心
2019/03/12
8300
网络新闻真假难辨?机器学习来助你一臂之力
Embedding 背景 发展 生成方法 在推荐中的应用
随着深度学习在工业届不断火热,Embedding技术便作为“基本操作”广泛应用于推荐、广告、搜索等互联网核心领域中。Embedding作为深度学习的热门研究方向,经历了从序列样本、图样本、再到异构的多特征样本的发展过程。本文主要主要参考几个篇大神写的文章,总结了现在主流的Embedding技术,简单介绍它们的基本原理,以及在推荐下的使用场景,希望对大家快速整理相关知识有所帮助。
大鹅
2021/01/26
3.6K0
Embedding 背景 发展 生成方法 在推荐中的应用
CS224W 7.1 Graph Representation Learning
自Deepwalk开始,图表示学习已经成为图挖掘领域最热门的方向之一. 现在火热的图神经网络可以说是图表示学习2.0
Houye
2020/04/07
5990
CS224W 7.1 Graph Representation Learning
图神经网络适合做推荐系统吗?
最近在看相关资料,发现相关论文不是特别多,所以比较疑惑为什么。是因为这个方向比较新,做的人还比较少呢,还是说相比其他深度学习方法(比如CNN)并没有优势,所以本身没有研究价值呢?
张小磊
2021/12/15
1.9K0
图神经网络适合做推荐系统吗?
关系图谱在贝壳的构建和应用
导读:贝壳找房积累了大量房、客、人的行为关系数据,我们通过关系图谱的相关技术对这些行为关系进行挖掘,并在实际应用中取得了不错的效果。本次分享将主要介绍关系图谱在贝壳找房的构建历程和落地应用探索。
Spark学习技巧
2021/03/05
1.8K0
关系图谱在贝壳的构建和应用
Graph Neural Network(GNN)综述
图(graph)是一个非常常用的数据结构,现实世界中很多很多任务可以描述为图问题,比如社交网络,蛋白体结构,交通路网数据,以及很火的知识图谱等,甚至规则网格结构数据(如图像,视频等)也是图数据的一种特殊形式,因此图是一个很值得研究的领域。
SIGAI学习与实践平台
2019/05/16
2.4K0
Graph Neural Network(GNN)综述
浅谈微博精准推荐——用户行为挖掘与相似用户挖掘
在微博中,用户可以通过“关注”行为成为另一个用户的粉丝,“关注”行为是有向的。通过“关注”一个用户后,我们可以在我们的feed流中看到对方的信息。在微博中,通过这样的方式,我们可以接触到更多的信息。
博文视点Broadview
2020/06/11
1.5K0
浅谈微博精准推荐——用户行为挖掘与相似用户挖掘
社交网络SNS的好友推荐算法
花了几天看了些做社交的好友推荐,现在很多App都有社交场景,本身就是做用户的场景,所以以后肯定要在这块有一些应用。像早期的论坛类的更偏重资讯类的信息,后来像优酷土豆这又是做视频类,网易云音乐做音乐类。豆瓣相对来说还比较全一些,有包含资讯、音乐电台等这些。也用了一些其他做社交场景的App,包括像脉脉、钉钉这些。感觉不是太好,具体原因就是都不是什么认识的人,活跃度也不高。很多App基本上就是属于少数意见领袖,这些人有大量的粉丝。而还有一帮大量用户,他们粉丝不多活跃也不高。本质上来说,还是没有找到他们感兴趣的内容。就跟昨天一样,突然腾讯视频给我推了下2007出的《远古入侵》,这推的太给力了!一部科幻、时空穿越、冒险题材的英剧就应该推给我这样tag的用户。
学到老
2019/02/13
2.7K0
《深度学习推荐系统》-阅读笔记
本文是《深度学习推荐系统》一书的阅读笔记和思维导图,建议大家入手一本王喆老师的新书,看完绝对会收获颇丰!
guichen1013
2020/09/25
1.9K0
《深度学习推荐系统》-阅读笔记
[AI安全论文] 22.图神经网络及认知推理总结和普及-清华唐杰老师
前一篇从个人角度介绍S&P21的离地攻击(Living-Off-The-Land)系统分析,这是一篇非常经典的论文。这篇文章将带来清华唐杰老师的分享“图神经网络及认知推理总结和普及”或“Graph Neural Networks and Applications—A Review”。唐老师也是学术界大牛,真心值得我们学习。同时文章融合了自己十年NLP的理解及相关资料补充,只希望帮助更多初学者,且看且珍惜,写得不好的地方请海涵。这些大佬是真的厉害,献上小弟的膝盖~fighting!
Eastmount
2022/08/31
8600
[AI安全论文] 22.图神经网络及认知推理总结和普及-清华唐杰老师
广告行业中那些趣事系列11:推荐系统领域必学的Graph Embedding
摘要:推荐系统领域最近大火的Graph Embedding可以很好的解决传统的Sequence Embedding无法解决现实世界中诸如社交关系等图结构的问题。本文重点讲解了Graph Embedding中具有代表性的DeepWalk、LINE、SDNE、Node2Vec和阿里的EGES等模型,希望对Graph Embedding感兴趣的小伙伴有所帮助。
数据拾光者
2022/05/05
5990
广告行业中那些趣事系列11:推荐系统领域必学的Graph Embedding
基于图嵌入的推荐算法那些?
图嵌入的推荐算法是一种基于图嵌入技术的推荐系统算法。图嵌入技术是一种将图结构数据(如社交网络、用户-物品交互图等)中的节点和边转换为低维向量表示的方法。通过图嵌入,可以捕捉图的结构信息和节点之间的相似性,从而用于推荐任务。这些算法在推荐系统、社交网络分析等领域都有广泛的应用。
jack.yang
2025/04/05
1520
基于SPARK的大规模网络表征算法及其在腾讯游戏中的应用
本文介绍了腾讯游戏社交算法团队研发的能够处理百亿级大规模图数据的分布式网络表征算法,及其在多个游戏业务场景落地应用,并且取得明显的实际业务效果提升。
腾讯云开发者
2024/05/29
2170
基于SPARK的大规模网络表征算法及其在腾讯游戏中的应用
在图数据上做机器学习,应该从哪个点切入?
自从我们在伦敦互联数据中心(Connected Data London)的演讲以来,我已经与许多拥有图数据的研究团队进行了交谈,他们希望对图进行机器学习,但不确定从哪里开始。
AI科技大本营
2019/09/03
1.2K0
在图数据上做机器学习,应该从哪个点切入?
当推荐系统邂逅深度学习
推荐系统之于用户的角色,有时更像是无微不至的男朋友,你口渴时递给你符合口味的饮料,你饥饿时还你以常吃的披萨,你无聊时帮你推荐有趣的音乐亦或带你欣赏感兴趣的电影。
张小磊
2019/08/16
8150
当推荐系统邂逅深度学习
Paddle Graph Learning (PGL)图学习之图游走类deepwalk、node2vec模型[系列四]
更多详情参考:Paddle Graph Learning 图学习之图游走类模型系列四
汀丶人工智能
2022/11/22
3930
推荐阅读
相关推荐
用万字长文聊一聊 Embedding 技术
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档