NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

华为云新一代黑科技核心算法揭秘

  • 2020-04-01
  • 本文字数:3697 字

    阅读完需:约 12 分钟

华为云新一代黑科技核心算法揭秘

推荐技术在社交 APP、电商、音乐视频图片平台、咨讯推送平台等场景中大展身手,带给用户便利的同时,提高了用户平台活跃度,增加了“物品”销量。但是,随着互联网技术的飞速发展,所能够获取的数据量和数据类型越来越多,如何利用这些错综复杂的数据,挖掘背后潜在关系,进行快速有效的推荐成为各公司必须思考的问题。



常见推荐应用场景


目前的推荐算法层出不穷,数据利用效率、推荐的效果、速度也不尽相同。例如,在电影推荐场景,传统基于协同过滤(CF)的方法仅考虑到左半边人对电影的 feedback 数据,而传统基于内容(CB)的方法仅考虑右半边电影的特性数据,这样单纯的依赖部分数据进行推荐难以满足用户更深层次的推荐需求,同时存在稀疏性等问题;基于深度学习的推荐是近期比较热火的方向,推荐效果较传统方法也有很大的提高,但却以牺牲时间性能为代价,推荐的结果解释性也较低。



电影推荐

1. Pixie 实时推荐算法介绍:

Pixie 实时推荐过程如图所示,主要基于对图上多起点的 Pixie Random Walk:其根据各节点的重要性给各请求节点分配不同的游走步数, 同时对各请求节点进行 Pixie Random Walk,综合各起点 Pixie Random Walk 下候选节点的得分结果,进行推荐。



Pixie 实时推荐过程示意图


其中,Pixie Random Walk 过程:从请求节点(如下图中的节点 V4)沿着边,根据一定的倾向性不断地“游走“到相邻的节点,达到一定步数(步长)时返回起点重新游走。


游走步长:CurrSteps = SampleWalkLength(α)


多次这样的游走后, 当高频率经过的点的个数超过一定数量时,或者达到分配的步数上限时结束。


Pixie Random Walk 游走过程中,随着被经过的次数的增加,候选节点被推荐的得分也相应增加;当所有的 Pixie Random Walk 结束时,Pixie 将给出各候选节点的综合得分,得分越高被推荐的程度越大。



Pixie RandomWalk 过程示意图

2. Pixie 实时推荐特点:

(1)考虑多重关系共同作用:


Pixie 推荐基于多重关系的评价,不仅仅是基于用户与商品之间的历史交互关系,同时考虑到用户之间、商品之间等多层隐含关系。推荐结果是在多重关系下共同作用的结果,推荐某种程度上相较于单纯的利用用户历史交互数据或商品属性进行推荐更为精准。同时,可以避免“信息茧房”的问题。


例如:某电影平台用户 Frank 打开电影平台,Pixe 实时推荐算法向其推荐电影:Artificial Intelligence> Lincoln>Ready Player One


这里,Pixie 首推 Artificial Intelligence,是多个重关系多个原因的叠加:


①从用户与电影交互角度,与 Frank 有相似爱好的 Sarah 观看了 Artificial Intelligence: The Sixth Sense ->Sarah-> Artificial Intelligence,


②社交关系上,Frank 的好友 Mike 也观看了此电影:Frank->Mike-> Artificial Intelligence


Frank 的好友 Sarah 也观看了此电影:Frank->Sarah-> Artificial Intelligence


③电影特性关系上,电影 Artificial Intelligence 与 The Sixth Sense 具有相同的主演: The Sixth Sense-> Haley Joel Osment ->Artificial Intelligence;


相同的主题:The Sixth Sense ->Drama->Artificial Intelligence


④更多深层潜在关系:Frank->Mike->Alice->Artificial Intelligence。


以上各种关系在 Pixie 实时推荐中进行了叠加,最终向 Frank 首推 Artificial Intelligence。



(2)支持多请求节点(qurey vertices)下综合推荐,满足各种复合型、时变、多样性推荐场景需求


例如:电影平台上的用户,小雨近期看了 2 部电影 Ready Player One、;小易刚浏览了好友 Gina 主页,添加巨星 Haley Joel Osment 的动态关注;小桐刚刚进行了关键词搜索 Drama,Sci-Fi;等等,对于用户一些列实时的多样性组合操作行为,Pixie 实时推荐算法均可以综合各类操作,考虑各请求类型起点出发的多重关系,快速给出最相关的推荐排序。



不仅如此, Pixie 不同于以往那种单一性的推荐方法, 其推荐的范围更加多样,可以是不同类的商品,也可以是人,避免推荐结果局限于单一类型。同样以电影推荐场景为例,针对同一组数据,不需要重新建模,只需要改变输入参数,即可推荐电影,兴趣好友(Sarah>Alice>Gina), 甚至系列主演(Haley Joel Osment>Tye Sheridan)等等。


(3)可扩展性更强,对大数据量依然能够满足实时性推荐需求


社交巨头 facebook 从 2007 年的 5000 万用户,已增长之 20 亿+;拥有图片版 Twitter 之称的 Pinterest 目前坐拥 30 亿+的图片,2 亿+用户月活。在如此庞大的数据量下,传统方法(例如 CF)计算量随着数据量呈线性(或者不止线性)增长,很难满足实时性推荐需求,Pixie 算法与之不同,其计算量几乎独立于数据量。Pinterest 曾用其业务数据测试对 Pixie 实时推荐算法进行测试发现,在 10 亿+数据时,Pixie 实时推荐算法依然能够秒极内产生推荐结果。大数据量下,依然能够达到较好的实时推荐效果。相较于过去传统算法,通过 Pixie 算法新增的推荐量增长了 50%以上。


  1. 基于图引擎(GES)平台的 Pixie 实时推荐使用:

  2. 首先,在 GES 创建图,这里以图 2 所示的电影推荐场景为例

  3. 首先,在元数据管理栏创建 schema 如下:



图管理栏创建图,根据提示上传点边数据文件:


其中,点数据文件 vertex.csv 内容:


Frank,user,弗兰克M,18-24,college/grad student,2906Mike,user,麦克,M,25-34,other or not specified,30606Sarah,user,莎拉,F,18-24,other or not specified,55105Alice,user,爱丽丝,F,25-34,academic/educator,79928Gina,user,吉娜,F,35-44,sales/marketing,60202Ready Player One,movie,头号玩家,2011Lincoln,movie,林肯,2012Artificial Intelligence,movie,人工智能,2001The Sixth Sense,movie,灵异第六感,1999Haley Joel Osment,actorTye Sheridan,actorSteven Spielberg,directorDrama,genreSci-Fi,genre边数据文件edge.csv内容:Frank,The Sixth Sense,like,2017/12/22 23:24Mike,Artificial Intelligence,like,2017/12/22 20:20Mike,Lincoln,like,2017/12/23 13:08Sarah,The Sixth Sense,like,2017/12/22 22:00Sarah,Artificial Intelligence,like,2017/12/23 21:05Alice,Artificial Intelligence,like,2017/12/22 10:24Alice,Ready Player One,like,2017/12/23 17:25Gina,Lincoln,like,2017/12/22 16:30Gina,Ready Player One,like,2017/12/22 21:37Frank,Mike,friendsFrank,Sarah,friendsMike,Sarah,friendsMike,Alice,friendsAlice,Gina,friendsThe Sixth Sense,Haley Joel Osment,hasActorThe Sixth Sense,Drama,hasGenreArtificial Intelligence,Drama,hasGenreArtificial Intelligence,Sci-Fi,hasGenreArtificial Intelligence,Haley Joel Osment,hasActorArtificial Intelligence,Steven Spielberg,hasDirectorLincoln,Steven Spielberg,hasDirectorLincoln,Sci-Fi,hasGenreReady Player One,Steven Spielberg,hasDirectorReady Player One,Sci-Fi,hasGenreReady Player One,Tye Sheridan,hasActor
复制代码


创建图成功后,访问所创建成功的图,左栏可以看到目前 GES 上的图分析算法,选择“实时推荐”(Real-time Recommendation)算法根据提示选择左侧栏的参数,这里 sources 栏用于输入请求节点(可以多个,标准的 csv 数据格式输入),label 参数过滤出期望得到的节点类型。


例如:


(1)“当 Frank 打开电影平台,向其推荐电影“时,可以输入 sources 为 Frank, label 为 movie,其他参数如下图(左),点击运行。


算法运行结束后,页面画布上将会出现含有推荐节点的子图(大小反映了推荐程度,点击右上角图例上的相关项目,可以快速锁定相应类型节点);Pixie 的结果将会出现在下方“查询结果”栏:



由图引擎的运算结果可以很清晰显示用户、电影、演员、导演等之间的关系,根据多因素共同作用结果,演算出最为精确的推荐结果,相较于过去的推荐结果,精度更高,解释能力更强。


(2)当某“游客”用户小易登陆平台,浏览了 Gina 主页以及搜索了演员 Haley Joel Osment 动态,这一行为具有很强的个人偏好属性说明他对 Gina 以及 Heley Joel Osment 有兴趣,这时,我们可以输入参数如下图左,综合考虑这两种兴趣(“Gina”、“Haley Joel Osment”)进行实时推荐:


sources: Gina, Haley Joel Osmentlabel: movie
复制代码



值得注意的是,图引擎因为是基于图的结构进行实时计算,因此可以适应数据的动态变化,如上图“小易刚浏览了好友 Gina 主页,添加巨星 Matt Damon 的动态关注”这一行为,可以通过 gremlin 等语句实时更新到当前图数据里,做到实时更新,实时推荐。不仅可以考虑到考虑小易的近期倾向性行为,同时考虑小易特有的各类关系(人->电影,人->人,电影->电影等等),这样的实时推荐,可以极大增加推荐的准确度,从而增加点击率,提高转化率。


综上,可以看出,图引擎服务提供的实时推荐算法,在多重关系(用户与商品的历史交互信息,人与人、商品与商品等背后潜在关系)共同作用下进行推荐,精度更高;支持多请求节点下综合推荐,满足各种复合型、时变、多样性推荐场景需求;大数据量下速度,依然能够达到较好的实时推荐效果,可扩展性强,欢迎大家进行试用。


本文转载自 华为云产品与解决方案 公众号。


原文链接:https://mp.weixin.qq.com/s/pTxc8wi7By8qy_uqcmHQqw


2020-04-01 21:12662

评论

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

JavaEE框架学习笔记——Mybatis篇

Java 程序员 后端

Java并发关键字-volatile

Java 程序员 后端

Java并发编程-AQS

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day28】—

Java 程序员 后端

JavaWeb之HTTP协议(一)

Java 程序员 后端

JavaWeb快速入门--Ajax&Json

Java 程序员 后端

Java中级面试题及答案整理

Java 程序员 后端

Java多线程知识点总结(思维导图+源码笔记),已整理成PDF版文档

Java 程序员 后端

Java并发源码:阻塞队列实现之DelayQueue源码解析

Java 程序员 后端

Java个人知识点总结(基础篇)

Java 程序员 后端

Java实现:二叉搜索树(Binary Search Tree)

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day6】 —

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day40】—

Java 程序员 后端

Java之Spring基础与IOC

Java 程序员 后端

Java反射的简单入门

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day19】—

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day26】—

Java 程序员 后端

Java常量池理解与总结

Java 程序员 后端

JavaEE框架学习笔记——Spring篇

Java 程序员 后端

Java书城项目第三阶段:优化

Java 程序员 后端

Java反射的简单入门(1)

Java 程序员 后端

javaSE基础复习之面向对象(多态,内部类,内存回收)

Java 程序员 后端

Java基础复习(DayNight):克隆与两个比较接口

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day36】—

Java 程序员 后端

Java基础26~反射

Java 程序员 后端

Java基础复习(DayEleven):内部类与代理

Java 程序员 后端

Java基础面试题——多线程

Java 程序员 后端

Java学习笔记——多态(实例详解)

Java 程序员 后端

Java个人知识点总结(基础篇)(1)

Java 程序员 后端

Java入门 if分支结构 switch分支结构

Java 程序员 后端

java反射-变量键值对排序

Java 程序员 后端

华为云新一代黑科技核心算法揭秘_文化 & 方法_华为云产品与解决方案_InfoQ精选文章