Professional Documents
Culture Documents
互联网核心应用(搜索、推荐、广告)算法宝藏书
互联网核心应用(搜索、推荐、广告)算法宝藏书
DataFun:成就百万数据科学家!
关于 DataFun:
关于宝藏书:
有所帮助~
DataFun:成就百万数据科学家!
DataFun:成就百万数据科学家!
目录
01. 搜索篇
Query 理解在美团搜索中的应用..................................................................... 6
知乎搜索排序模型的演进................................................................................ 25
京东电商搜索中的语义检索与商品排序....................................................... 42
阿里飞猪搜索技术的应用与创新....................................................................56
5G+智能时代的多模搜索技术........................................................................80
知乎搜索文本相关性与知识蒸馏....................................................................92
京东搜索在线学习探索实践......................................................................... 109
阿里文娱搜索算法实践与思考..................................................................... 121
02. 推荐篇
网易云音乐推荐中的用户行为序列深度建模............................................. 138
推荐系统解构.................................................................................................. 161
推荐系统架构治理..........................................................................................185
阿里粗排技术体系与最新进展..................................................................... 207
阿里深度树匹配召回体系演进..................................................................... 228
多目标排序在快手短视频推荐中的实践..................................................... 246
如何将知识图谱引入推荐系统?................................................................. 267
蜻蜓 FM 信息流推荐探索与实践................................................................. 289
03. 广告篇
算力经济时代:阿里展示广告引擎的"柔性"变形之路.............................. 303
阿里定向广告智能投放技术体系................................................................. 320
DataFun:成就百万数据科学家!
同义变换在百度搜索广告中的应用............................................................. 360
大规模图算法在京东广告的实践................................................................. 416
内容理解在新浪微博广告中的应用............................................................. 436
CSCNN:新一代京东电商广告排序模型................................................... 449
因果推断在阿里飞猪广告算法中的实践..................................................... 471
DataFun:成就百万数据科学家!
Query 理解在美团搜索中的应用
分享嘉宾:刘亮 美团 资深算法工程师
编辑整理:吴雪松
出 品 社 区 : DataFunTalk
导读:在过去的 20 年中,搜索过程中处理查询的方式以及向用户显示结果的方
式已完全改变。该过程已经从仅基于文本匹配的检索发展到现阶段——尝试基于
对查询的真实语义理解以及上下文,位置,时间,用户的先前短期和长期浏览活
动来获得搜索结果。本文主要介绍美团搜索场景下,查询理解系统的一些建设和
相关的工作。主要围绕以下几点展开:
Query 理解简介
实体识别&实体链接
查询改写
意图识别
▌Query 理解简介
1. 美团搜索
DataFun:成就百万数据科学家!
页的截图,中间是美团承接的业务,可以看出美团的业务非常多,包括了像外卖、
美食、酒店住宿等大家比较熟悉的业务,也有像婚纱摄影、机票预定等相对低频
业务。顶部的搜索框,是美团搜索的主入口,美团的搜索就是通过这个搜索框来
品类,最后返回给用户想要的结果。
些差异。
首先是搜索目标,美团搜索的核心是提供服务,包括团单、套餐等本地生活服务。
另外也会对一些信息和商品提供查询服务,像天气或者医美百科等;另外还有商
品,相对于传统电商,美团主要是本地的一些商品,包括周边的便利店,周边的
商场中的商超类的产品,以及周边能配送的商品的搜索。
的服务形态。供给约束方面,网页搜索基本不用考虑;电商搜索的供给是全国的
DataFun:成就百万数据科学家!
商家,购买后全国配送;O2O 场景下,从蜂窝到城市到全国这些维度都有涵盖,
像美食到餐团购类,是到店里消费,基本是一个城市维度的;另外像酒店旅游这
种业务,它可能是全国性质的供给,所以说它涵盖的范围会比较广。
以上就是美团搜索的大概介绍。
2. QU
信号会应用到整个搜索链路的召回、排序等各个阶段。
举个例子来说的话,用户输入:杭州东附近的 7 天酒店,可以通过查询的变换,
纠错和扩展,把杭州东扩展成杭州东站,扩大召回。
在往下是成分识别,这个后面也会重点介绍,包括了实体识别、实体链接,它可
以把 Query 再进行一个成分粒度的识别,把杭州东识别成车站类的地理位置,7
天识别成一个商家品牌,通过实体链接可以将杭州东对应的经纬度返回,7 天链
DataFun:成就百万数据科学家!
接到具体的品牌 ID 等。在最后是一些业务应用,包括查询意图的识别方面,我们
还需要把它识别出它具体是本地意图,还是异地意图。
右图是我们目前线上应用的搜索结果,可以看到首先它识别出杭州东这个主点,
并链接到了杭州东站这个实体。在意图方面,由于是在北京的搜索,但是我们需
要找杭州东附近的酒店,所以会有异地的提示,最终的结果是在杭州东站坐标点
一定距离半径内召回 7 天品牌酒店。
3. DQU
公司有非常多的业务,很多业务也有自己的垂搜系统,在业务快速迭代的阶段是
独立运行的,随着业务的不断发展,如何避免低水平重复建设,更好的积累技术、
的搜索场景,包括美团点评大搜,还有度假、住宿等业务频道内搜索。
以提供通用和业务个性化的信号输出。中间是业务逻辑层,适配不同的垂搜业务
DataFun:成就百万数据科学家!
逻辑。最上层是适配层,对于不同的业务搜索可能有不同的接口,需要接口适配
再返回最终结果。
接下来重点介绍下几个核心的查询理解模块。
▌实体识别&实体链接
1. 实体识别
① 简介
举个例子,上图中间的“如家上地”,需要把它的商家和地址身份进行识别,然
因为在我们的场景下,Doc 端的数据包含了很多结构化的字段,不同字段之间的
语义差距会非常大,如果我们进行全字段检索,经常会出现一些语义漂移的问题。
比如,搜“肯德基”,可能召回一个理发店,因为它的地址字段有“在肯德基对
信号。
DataFun:成就百万数据科学家!
② 整体架构
实体识别的整体框架,主要分两个部分:下面的离线端和上面的在线部分。
线上的识别来源主要分两部分,一部分是词典的实体匹配,一部分是模型预测,
然后再往上是消歧策略,实体词典匹配,主要解决一些热门和词库里能够匹配的
词,对一些长尾和泛化的词识别,还是依赖于模型。但是这两个部分中间的结果
可能会有一些冲突,所以需要一个消歧策略,包括多粒度、多结果选择。我们主
要通过一些模板规则,进行优先级的消歧,最终输出一个多路的结果,因为某些
query 会有粒度和类别的歧义。
离线部分主要是两个大的部分:一部分是实体挖掘,这个主要是为线上的实体匹
配提供基础的实体库,模型方面主要是一些基础的模型训练、优化相关的工作。
③ 模型迭代
DataFun:成就百万数据科学家!
还有基于用户行为统计的半自动化生成的一些语料,来扩充训练数据。使模型训
练效果,能够更好的拟合线上的应用。
④ 自动标注训练数据
DataFun:成就百万数据科学家!
这里简单介绍下,根据词典扩充训练数据的工作。
来说还是比较难以去自动化的获取这些训练语料,我们的一个核心思路是如何利
用已有的标注数据、词典来指导内容半自动化的生成训练语料。首先用原始的人
分 有 差 异 的部 分 , 进 行 校 正 , 然 后把 校 正 后 的 结 果 合 并原 始 数 据 , 再 训 练 一个
Model B,最终应用到线上。其中的核心就是校正的过程。
它的前提假设是,实体库和模型的质量,都是比较高的,但是其中模型预测和词
典它中间还是有差异的部分,就是我们的模型预测相对于它可以提供更细的粒度。
比如下面这个例子:“兄弟烧烤个性 diy”,它其实是一个商家的名称,因为有比
较全的美团商家库的信息,所以能够通过词典来挖掘出我们的商家信息。
但是模型预测的话,由于兄弟这个词,有影视类的电影,可能是电影名,模型也
可能会识别错误,所以需要根据词典的信息进行修正。修正的方法是对模型预测
DataFun:成就百万数据科学家!
的序列,进行轮巡替换,找出替换概率最高的一个,然后作为替换类型,最终生
成一条校正后的训练数据,和原始数据进行联合训练。
⑤ 数据挖掘
另外一个部分就是离线词库的挖掘。
除了已有的商家库和一些结构化数据以外,线上的用户行为,也是非常重要的,
怎么通过海量的用户行为数据,泛化我们的实体库,是我们的核心工作。这部分
工作主要利用我们线上的用户点击日志,结合召回命中信息,来识别出 Query 的
息。由于我们是结构化召回,所以可能存在多个字段同时命中,通过统计所有 Doc
的命中分布情况,来考虑它的切分方式,最终转化成一个整数线性规划的问题,
索与实践》。有了这个切分边界后,再对它的每一个成分进行二分类模型识别,
DataFun:成就百万数据科学家!
把识别概率比较高的目标成分,进行人工抽检,将符合要求的实体补充到实体库
中。最终,通过这样的循环来扩充我们的实体库。
2. 实体链接
① 背景
很多用户都有地址类搜索的习惯,所以地址识别也是我们的一个重点。实体识别
把地址成分识别出来之后,后面很重要的工作是把它的经纬度坐标找到,通过半
径距离召回,满足用户搜索某个地址周边结果的诉求。这就需要实体链接把用户
Query 中的文本链接到具体的实体,并返回实体的属性。另外实体链接模块,本
② 整体框架
DataFun:成就百万数据科学家!
上图是实体链接的整体框架,它主要分为两个部分:
名,用来扩大实体链接召回。
线上部分,首先通过别名进行实体召回,然后对召回的实体进行消歧排序。消歧
③ 核心算法
DataFun:成就百万数据科学家!
前主要有三种方式:
抽取式:对已有的核心实体库进行核心词的一个识别,然后再通过核心词
的组合,来泛化出标准实体的一些别名
挖掘用户对于实体的一些别名输入
体的别名
右下角是一些例子,比如说标准的别名,凯德茂望京,能够挖掘出它的一些相关
的子成分(凯德 mall)。
在线消歧部分,主要是一些相关性的计算和消歧排序,不再展开了。
▌查询改写
1. 背景
DataFun:成就百万数据科学家!
录入的商家介绍等相关字段,会标准化一些。另外一个问题就是一义多词,通常
一个含义的表达会有非常多种输入的方式。
右图是线上真实的搜索日志,是“理发”相关的搜索词。可以看到有非常多的变
换形式。还有一词多义的问题,比如:结婚照,它可能包含两类的含义,一类是
要找婚纱照,另外还有可能是去拍结婚证需要的证件照,如果我们不进行 Query
查询的改写,直接通过原词文本匹配,很可能会漏召回。
2. 技术演进
DataFun:成就百万数据科学家!
查询改写这块,技术演进主要分 4 个阶段,最初是基于词典规则,它的优点是精
度高,但是召回率非常低。后面加入了基于用户行为统计挖掘的相关扩召回的方
式,但由于是基于整串的匹配,召回虽然有一定提升,还是没法满足线上用户很
为了解决长尾问题,引入了基于翻译模型的统计翻译改写,主要是通过用户行为
日志,训练翻译模型和语言模型,从子串片段级别来解决覆盖问题,极大的提升
了改写的召回。但它的问题是会比较容易产生语义的漂移,因为它主要是基于文
本对齐和文本替换的统计概率,并未考虑语义信息。所以我们又引入了基于 Bert
的语义规范化,进行过滤,很大程度的缓解了语义漂移的问题。
3. 为什么选择 SMT
DataFun:成就百万数据科学家!
接下来重点介绍一下我们线上的翻译改写模型。
为什么要选择这样一个翻译模型呢?首先翻译所需的平行语料,在搜索场景下,
据来补充,通过这样的平行语料,就能够自动化的获取海量的标注数据,覆盖足
够多的语言现象,解决表达多样的问题。
另外翻译模型很重要一个特点,是它能够支持子串级别的替换,并充分考虑上下
文。所以说它能够很好的进行召回泛化。
4. SMT 改写过程
DataFun:成就百万数据科学家!
这是 SMT 改写的一个大致的过程。它主要分为三个部分:
最 上 面 是 句 对 挖 掘 , 通 过 海 量 的 用 户 行 为 , 包 括 Session 、 Query-Title 、
Query-Doc-Query 数据,对这些数据进行特征抽取,然后再结合句对的判别模
型,生成片段级别的对齐语料。
第二部分翻译模型训练,它的输入是上一步生成的对齐语料,然后生成 N-gram
的片段,再结合语义计算和统计规则,去生产翻译模型和语言模型。它主要是通
过 N-Gram 这种方式进行子串级别的泛化。
第三部分是线上的解码和终判,主要考虑性能问题。因为线上替换时,子串候选
进行改写路径的生成。
▌意图识别
1. 背景
DataFun:成就百万数据科学家!
目前我们意图模块的核心是识别用户的业务需求,因为我们涵盖的业务品类非常
多,不同的业务,展示模板和展示样式也都不同,比如酒店的查询,可能会有用
户的入离时间展示模板。所以需要把不同的业务需求识别出来,进行多形态的召
回。
上面是我们意图的划分,包括左边的业务意图,例如美食、酒店、旅游等等,会
直接访问业务相关索引进行召回。中间是阿拉丁(开放平台),主要获取一些活
动、第三方结果。最右边还会有一些基于知识内容的信息类召回,比如根据评论
内容召回结果。最下面是对应的一些场景,比如时间、空间、人和事件的场景。
2. 整体框架
DataFun:成就百万数据科学家!
意图识别的整体框架,主要分为两个部分:
意图召回。这块是转换为了分类任务,只判断某个查询是否包含某种意图。线上
采用词典匹配+规则+模型的方式进行识别,词典主要包含业务和领域相关数据,
型来解决泛化识别问题。
意图分布。意图召回完了以后,我们还要知道当前搜索的各个意图的强弱,尤其
是找到主意图,就是图上面部分的意图分布,我们将其转化成排序问题。由于线
务归属信息和用户点击行为,获得有标注的训练语料,来训练排序模型。模型特
▌总结和展望
DataFun:成就百万数据科学家!
最后总结下,本文主要介绍了美团查询理解系统中的主要模块,包括实体识别、
关的一些文本理解任务。除了文本本身,后续我们还会考虑引入更多包括时空、
用户,场景的信息来做到更深入的理解搜索场景下的用户查询意图。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
知乎搜索排序模型的演进
分享嘉宾:王瑞欣 知乎 算法工程师
编辑整理:郭真继
出 品 平 台 : DataFunTalk
导读:搜索,是用户获取信息,找答案最方便快捷的方式。一次用户搜索会经历
Query 解析、召回、排序多个环节,排序作为最后整个过程一环,对用户的体验
有最直接的影响。今天分享的内容是知乎搜索排序模型的演进。
主要内容包括:
知乎搜索发展历程
排序算法的迭代升级
一些未上线的尝试
未来方向
01
知乎搜索发展历程
DataFun:成就百万数据科学家!
1. 知乎搜索
知乎作为一个大型的中文问答社区,有超过四千万的提问和超过两亿条回答,其
中蕴含了丰富的知识、经验和见解,知乎搜索是帮助用户快速获取信息,找到答
案的重要途径,随着媒介的升级,搜索结果的形式也不在局限于图文,视频解答
也越来越多。
2. 知乎搜索算法发展历程
3. 知乎搜索架构
入多队列的召回模块,召回阶段从召回方式上说可以分为倒排召回和向量召回,
序两个环节,精排阶段通过模型对多召回源的文档进行统一打分,之后将 Top16
的文档送入重排序模型进行位置的微调,最终呈现给用户。本次主要分享精排和
重排序阶段两部分的模型演进。
DataFun:成就百万数据科学家!
02
排序算法的迭代升级
到两点:
较有限。
新的研究成果都是基于深度学习的研究,采用深度神经网络之后可以更好
的应用新的研究成果,比如后面介绍的多目标排序。
2. DNN 排序模型结构
我 们的 DNN 排 序模 型整 体 是在 谷 歌开 源的 TF-Ranking[1] 框 架的 基础 上 开发
了多目标训练。整体的代码结构根据训练流程可以拆分成特征输入、特征转化、
模型打分和损失计算等几个独立的模块。清晰合理的模块划分为后续的快速迭代
提供了很大的方便和灵活性。下面简单介绍下各个模块:
征等输入模型。
特征转化模块,做一些常见的特征处理工作,比如取 log、归一化、onehot
和类别特征转 Embeding 等。
介绍。
DataFun:成就百万数据科学家!
3. 多目标排序
搜索排序任务的学习目标首先能想到的就是预测用户点击,我们最初的排序模型
也是这样做的。但是用户点击只是第一步,单纯的点击行为并不能代表用户对搜
索结果的满意,我们需要同时考虑用户在点击之后的一系列行为,比如阅读时长、
点赞、收藏、关注、分享、评论等等。这些行为都可以作为排序任务的训练目标,
由于可选的目标比较多,我们通过分析这些指标与用户留存的关系进行了筛选,
与点击率一起构成了排序模型的目标,开启了我们在多目标排序方面的探索。
DataFun:成就百万数据科学家!
第一版的多目标排序采用的是共享参数层+任务独立参数层的结构。共同学习的多
个目标是有内在联系的,对一个目标的训练会帮助到其他目标,通过共享底层参
数可以实现这个目的。在共享参数层之上又加了任务独立的参数层,使各个训练
任务之间可以独立更新参数,保证互不影响。需要注意的是,不同目标的训练数
据是不一样的,转化类的目标比如阅读时长、点赞、收藏,这些要用户点击之后
才能发生,所以只在有点击的数据上计算 Loss。另外由于阅读时长呈长尾分布,
需要用对数时长作为训练目标。在多目标模型中每个目标都会对应一个模型打分,
在线上预测是需要多多个分数进行加权融合。至于不同的目标对应的具体权重我
们是通过 AB 实验确定的。
DataFun:成就百万数据科学家!
② 基于 MMOE 的第二版多目标排序
Experts 加权相加的方式,这些参数既是各个任务共享的,又通过独立权重的方
式给了各个任务一定的独立性。这一版的更新在上线之后也是取得了一定的收益。
4. Unbias LTR
DataFun:成就百万数据科学家!
在使用用户点击日志作为训练数据时,点击日志中的一些噪声会对训练带来一定
到下的,所以同样的内容出现的位置越靠前越容易获得点击。以用户搜索小儿感
冒为例,比如同时给用户展示了五条结果,用户在点击第一条之后获得了满足退
出了这次搜索,这时就会生成一条训练数据,第一条作为正样本,其他的作为负
样本,但是其实后面几条结果质量也比较好,如果后面的结果出现在第一条的位
置也会发生点击,所以点击是受到位置影响的。在这种情况下训练数据是有偏的。
对于这个问题,有两种解决思路:
① 降低 Top 位置的样本权重
既然 Top 位置更容易受到位置偏差的影响,那么我们就降低头部样本的权重。
至于样本权重的确定,我们尝试过两种方案:
根据点击模型预估每个位置的权重,预估出来的结果可能是第一位 0.7 然
后一直增加,到第五位是 0.9
DataFun:成就百万数据科学家!
通过模型在训练的过程中自动学习权重
但是这两种方案上线之后都没有正向效果。
② 对 Position bias 建模
用户点击是由文档的真实点击率和文档的展示位置共同决定的,那就将这两部分
分 开 预 测 , 用 文 档 的 展 示 位 置 作 为 特 征 通 过 一 个 独 立 的 shallow tower 对
结构建模文档的真实点击率,将两部分分数相加来预测用户点击。在线预测时,
只需考虑真实点击率的部分。另外在训练的时候有两点需要注意,一个是最好在
赖,另一个是只有点击目标会受到位置偏差的影响,所以只需要在点击目标上应
用这个策略,在转化类目标上则无需这种处理。这一版的策略上线对点击比带来
了显著的提升。
DataFun:成就百万数据科学家!
对于排序任务可以有几种理解:
Point wise:确定每个文档独立打分,最终根据分数排序
Pair wise:确定两两文档对的相对顺序,推导出最终排序
List wise:直接优化待排序的文档的整体顺序
排序文档的特征取平均值或者中位数作为模型排序特征,实现起来比较简单,当
然也是有效的。
常规的模型对不同文档的打分是相互独立的,我们希望可以实现一个模型在对单
条文档打分时,同时可以考虑到其他的文档。在实践中我们借鉴了 CV 中的 SE
练日志只是有展现的一小部分文档,但是在精排线上打分时候选集是比较大的,
大。为了解决这种的不一致的问题,我们在精排之后加了一个重排序阶段,把精
下的一致性。这一版的策略更新对于头部位置的点击比提升比较明显。
Se Block 结构之所以能发挥作用,本质上是因为在单条样本打分过程中融合了所
结构模型可能可以学到这样的信息,来帮助模型更好的打分。
6. End2End 学习
将其输入相关性模型将计算得到的相关分数做为上层排序模型的特征,所以我们
层的 Transformer。但是训练时长依然过长,且离线指标无提升。之后我们进行
定的线上收益。
DataFun:成就百万数据科学家!
7. 个性化 LTR
用户在发生点击行为之前,可能已经产生了很多的行为,比如有过搜索,或者点
击过首页推荐的内容,这些交互行为都可以提供一些用户额外的信息用于排序。
作为特征,这样操作虽然比较简单,但是拿到了很好的线上收益。除此之外我们
还尝试了一些更为复杂特征交互结构,但是上线之后发现效果都不如这个简单的
策略好。
03
一些未上线的尝试
1. GBDT 特征编码模型
DataFun:成就百万数据科学家!
征,但是这个方案没有线上收益。
2. IRGAN,生成对抗网络模型
利用生成对抗网络训练排序任务[7],具体实现:实现一个生成网络一个判别网络,
把展示未点击的样本喂给生成器,采样出疑似的正样本(作为判别器的负样本)
和用户真实点击的样本一起喂给判别器。判别器的错误率作为生成器的 reward。
核心思想是希望通过生成器生成的难负样本提高判别器的分类性能。但是实际训
练时发现在一定步数之后模型会训练发散,并不能达到比较好的性能。
DataFun:成就百万数据科学家!
04
未来方向
1. Online learning
我们之前发现模型在上线一段时间后指标有逐渐下降的趋势,之后尝试了模型日
更,结果表明日更模型表现较好。提高模型更新频率可以让模型更快的适应新的
数据分布,如果可以实时更新模型预计效果会进一步提高。
2. Graph embedding
中挖掘出更多的信息,提高排序模型的性能。
3. 个性化
我们目前关于个性化的尝试只是通过用户的近期交互行为挖掘了一些用户的短期
化的排序,更好的满足用户的个性化需求。
DataFun:成就百万数据科学家!
4. 边缘计算
与云计算方式不同,边缘计算可以利用用户更细粒度的交互信息,通过端上计算
即时的对排序结果进行调整,进一步提升排序质量,是一个非常有潜力的发展方
向。
参考资料:
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
京东电商搜索中的语义检索与商品排序
文章作者:王松林、唐国瑜 京东算法工程师
编辑整理:Hoh
出品平台:DataFunTalk
导读:本文将介绍京东搜索场景中的两块技术,语义检索与商品排序。在业界
检索算法基础上,我们提出一系列更适用于电商场景的检索排序算法,在业务
01
背景介绍
电子商务搜索是京东等电商重要组成部分,用户通过搜索找到自己需要的商品,然
后下单购买。一个典型电商搜索引擎的架构,包括三个重要组成部分:query 理解、
DataFun:成就百万数据科学家!
召回和排序。
召回阶段:给定一个查询词,从商品库中召回有效正确的商品候选集,并将
结果返回给排序。召回方式有很多种,这里我们只介绍基于向量检索的召回。
排序阶段:给定召回商品的候选集合,根据众多因子对这些商品进行排序,
挑选出最好的候选商品展示给用户。
下面我们分别介绍,基于向量检索召回和商品排序:
02
向量召回
向量检索作为一种信息检索方式在工业界已经被广泛应用,它能解决传统倒排检索
不能解决的问题。倒排通过字面匹配方式召回商品,这种方式存在一种缺陷,不能
回 sku='托马斯小火车'的。
DataFun:成就百万数据科学家!
在该空间中,相似的商品距离近,不相近的商品距离较远。如上图例子,query=奶
常多,通常是十亿级,不可能做线性遍历,考虑到时效性,会引入快速向量近似检
这里不再赘述,网上有很多材料介绍其算法。下面重点介绍我们的模型及在线检索
同一 query 针对不同用户、同一用户不同时刻检索出更具有个性化的商品。我们
1. 检索系统 overview
DataFun:成就百万数据科学家!
2. 模型详细设计
比性。
以是笔记本、手机 ) 等等。
③ Attention Loss
④ Negative Sampling
我们采用的是用户点击数据,数据量在 10 亿级作为正样本。负样本并未使用同
session 未点击的样本,因为搜索手机,展示了小米和华为手机,不能说未点击就
模型训练算法具体如下:
3. 训练优化
好一些。然而一个短延时的模型更适用于工业生产建模,这样可以使用更少的服务
DataFun:成就百万数据科学家!
器做有效的离线训练和在线服务。模型系统方面,我们也做了一系列训练优化,简
单描述其中的几点:
训练数据压缩,修改训练数据格式,把共用的特征数据加载内存,训练时展
开从而降低数据存储。也便于训练时做负例采样。
worker/ps 带宽瓶颈。
混合部署。
DataFun:成就百万数据科学家!
4. 语义检索效果展示
语义检索上线后获得了很好的体验效果,不仅提升了转化,长尾流量降低了近
的商品结果。
DataFun:成就百万数据科学家!
03
商品排序
下面介绍下商品排序:商品排序主要是根据用户的输入对商品进行打分排序。商品
模型通常有成百乃至上千的数值型人工特征,不能有效的从原始特征比如用户历史
点击购买数据、商品文本和图像中直接学习。近年来,深度学习在各种应用中验证
DataFun:成就百万数据科学家!
了从原始特征中学习的有效性,在业界被广泛使用,比如 wide&Deep、DIN 等。
下面介绍一个我们在商品搜索排序中尝试的方法。
1. 双胞胎网络
( 商品 a ) 和没有购买的商品 ( 商品 b ) 配对起来,并把购买未购买作为最终学习
的 label,从而构造了用户查询-商品对训练集。根据训练数据,我们首先设计了双
胞胎网络结构:
双胞胎网络结构有两个共享参数的模块,每个模块分别输入用户、查询和商品特征,
据 label 作为交叉熵损失函数的输入。在特征方面,我们使用以下几种不同类型的
特征:
数值型特征:包括商品销量、用户购买力和用户是否点过、购买过商品等。
文本特征:包括用户输入的查询和商品名称等。
用户历史行为:包括历史点击、购买、加购商品 list 等
商品、用户 id 等
文本特征可以学习到一定的相关性信息,用户历史行为可以学习到个性化信息,id
类特征我们做了 pretrain。
2. 个性化升级
缺乏和搜索商品的交互,无法精准的表示用户的兴趣;为了加强用户的交互,我们
型离线指标和收敛速度。
3. 时效性优化
值得一提的是,为了增强排序捕捉变化的能力,提升排序的流动性,我们从三个方
面:特征时效性、模型时效性、线上预估校准进行了优化。
提升特征时效性:接入商品小时级的点击加购订单等实时信号,训练模型学
习实时变化
实时在线校准:根据商品全站的点击订单等实时反馈信号,对模型原来的预
测分数及时校准
提升模型的更新频率:优化训练数据生产流程,推动训练平台升级,提升模
型训练速度
搜索排序是商品检索最重要的模块之一,我们在个性化、时效性、多目标等方向不
断迭代,提升了排序体验,也提升了商品成交量。
04
总结
DataFun:成就百万数据科学家!
我们介绍了语义检索召回和商品排序,在京东搜索服务上部署并取得了良好效果。
得了不错的成绩。
文章作者:王松林、唐国瑜,京东算法工程师。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
阿里飞猪搜索技术的应用与创新
分享嘉宾:林睿 阿里飞猪
编 辑 整 理 : 杜 正 海 、 Hoh
出 品 平 台 : DataFunTalk
导读:旅行场景的搜索起初是为了满足用户某种特定的强需求而出现的,如机票、
火车票、酒店等搜索。这些需求有着各自不同的特点,传统的旅行搜索往往会对
不同业务进行定制化搜索策略。随着人工智能技术的不断发展,用户对产品的易
用性提出了更高的要求。旅行场景的搜索逐渐发展为一个拥有旅行定制搜索策略
的全文检索引擎。本文将为大家介绍阿里飞猪在旅行场景下搜索技术的应用与创
新,主要内容包括:
猪搜背景
基础建设
召回策略
思考总结
01
DataFun:成就百万数据科学家!
猪搜背景
1. 飞猪搜索
飞猪搜索业务分为两大部分:一是全局搜索,二是行业小搜。右边飞猪界面的全
局搜索就是最上方的输入框。直接对应飞猪内部所有内容的搜索入口,都可以从
全局搜索获得。右图中间部分就是产业小搜的垂直入口。比如搜索酒店机票和旅
游度假产品,一般用户会使用行业小搜,垂直搜索需求。随着飞猪业务的发展,
以及用户需求的变化,流量会从行业小搜逐渐迁移到飞猪的全局搜索上。主要是
因为:
旅游行业是一个跨类目的需求。用户天然的需要定机票、酒店以及一些网
络的门票,如果全部通过垂直搜索,需要进行多次点击,对用户来说不是
很方便。
飞猪很多流量是由手淘引流过来的,手淘是一个全局的搜索。所以用户会
习惯性的使用全局搜索来满足他的需求。
DataFun:成就百万数据科学家!
对用户来说,用全局搜索的操作是最方便的,路径最短。
2. 猪搜框架
户。这里主要介绍下 QP 的工作。
3. QP
DataFun:成就百万数据科学家!
QP 即 Query 理解与召回生成服务。在这个服务中,我们面临的挑战主要有:
对性能要求比较高,响应时间不能过长,需要提供良好的线上服务体验。
理解,提供文本相关性的能力。
能力,能够提供空间上的相关性。
特征理解:从业务发展角度,我们还需要用户特征的理解,可以提供个性
化的相关性,来满足用户的需求。
02
基础建设
接下来,为大家介绍下飞猪在具体基础建设上的一些工作。
DataFun:成就百万数据科学家!
1. Query tagging
图。举个例子,“北京自由行”中“北京”就是用户的目的地,“自由行”是用
户的意图需求,可以看出用户希望的是一个自由行的商品,而不是跟团游这类的
产品,可能会更希望获得一些机票+酒店或者是无购物的产品。
这里的工作,主要分为以下几层:
由于线上性能的限制,我们主要依赖于离线的挖掘。这里以我们内部比较重要的
2. 商品 POI 挖掘
① QueryTagging
DataFun:成就百万数据科学家!
因此,我们需要从这些内容中挖掘出有价值的信息,来扩充词表。例如图中的景
实体,会有比较大的难度。
② 建模方式
DataFun:成就百万数据科学家!
我们采用了典型的序列标注问题来解决这个问题。我们通过一些特征,如词特征、
数字特征、类目特征,进行筛选,通过人工标注来训练我们的 CRF++模型。后续
了大量的文本数据,进行序列标注。最终,我们达到了 99%以上的准确率,召回
3. 同义词挖掘
在旅行行业,存在四种类型的同义词:
翻译类:如“迪斯尼”,可能有不同的中文描述方式
中英文词:有的用户用英文来描述,而有的用户用中文来表述,但是商家
错别字:比如“国色天香”,在图中应该是“国色天乡”
我们希望可以用一个通用的模型来解决这种同义词关系。
另外,在特征工程上,我们会利用中英文的编辑距离、共现数目以及是否包含关
系、余弦相似度等来构建特征。
然后,我们通过人工标注来构建正样本,负样本按照编辑距离倒排随机采样,使
最后,我们还会经过一层人工审核,因为同义词的影响面积比较大,如果直接通
过算法挖掘,在线上的效果可能不会特别好。所以我们没有采用复杂的模型,只
是够用就可以了。这样在万级别的人工标注上,我们的准确率可以达到 94%。
4. 纠错
DataFun:成就百万数据科学家!
① 背景
② 方案
我们的方案是采用传统的隐马尔科夫模型,基于统计的方式来做,能够达到线上
的性能要求。将错误分为同音字与形近字,可以获得比较强的可解释性。
同音字:因为汉字都可以查到拼音码表,我们可以很容易的构建一个同音
字的集合,然后通过一些统计的方式,就能获得同音词生成概率。
形近字:比较难获得,因为很难判断两个字是否有些相似。我们这里,通
过字体图像和字体结构来解决的。
DataFun:成就百万数据科学家!
③ 基于图像
出于性能方面的考虑,这种方法的效果往往达不到我们的性能要求,所以我们采
用了一个比较简单且有效的方法,就是我们直接对两个可能形近的字的图像进行
计算。对形近字而言,我们在标准的字体库中,发现它有两个特点:
如鸟和乌两个字,在字体库里的图直接对比,它们的重合度是非常高的,由于字
体库里的字,它的标准化程度是很高的,可以通过这种方式来进行计算。我们这
里基于图像的方式,就是采用我们对字体库里的两个字来进行每个点的一个具体
的计算。
另外,对于鸟和乌这个字,鸟这个字的每一个点在乌字上找到和它最近的一个点,
作为这两个点相似度,那对于每一个点,我们都可以找到一个距离,然后通过求
和的均值计算,我们就可以得到这个两个字距离的相似度。
通过离线对两个字以各自的图像进行计算,那就可以获得比较相似的一些字。
DataFun:成就百万数据科学家!
④ 基于字体结构
另外,我们还会通过字体结构的方式来进行计算。像仓颉、郑码、四角号码的编
码,是基于这个字的情况来做的编码。对于俩个形近字,它们的仓颉码、郑码、
四角号码往往也会比较相似。所以,我们通过序列的相似计算,可以获得这两个
形近字的相似度,然后通过相似度进行阈值计算,就可以得到字形相似的集合。
03
召回策略
接下来为大家介绍下飞猪在召回策略上的一些技术:
航旅召回跟常用的搜索召回有相似的地方,也有不同,面临的挑战主要有:
航旅商品仅百万级,而且城市分割,很容易造成无结果
召回优化时,很容易导致误召回
DataFun:成就百万数据科学家!
旅行是低频行为,用户行为稀疏,算法样本较少
鉴于这种情况,我们对用户的召回分成了以下四种召回方式:经典召回(同义词
以及向量模型),来满足用户的需求。
1. 经典召回
以“上海迪士尼乐园门票”为例,其实标准的商品是“上海迪士尼度假区”,而
“黄山风景区”的标准商品其实是“黄山”。在这样的情况下,如果我们直接创
Learning To Rewrite:
DataFun:成就百万数据科学家!
果。
选中是想要获得他想要的结果。如果用户第一个 query,没有得到想要的结果,
用户会进行一些改写。就相当于用户帮助我们完成了一次改写,我们从中可以学
18%。
2. 航旅特色召回:LBS 召回
户,可能会定阿里巴巴园区附近的酒店,如果是旅游用户,可能会定黄山风景区
建模过程:
DataFun:成就百万数据科学家!
embedding 相似距离,以及用户当前位置输入后,与历史点击的商品地点的距离
做特征。然后用特征构建模型算出一个分数,通过一定的阈值得到结果。
3. 深度召回:向量召回
① 背景
DataFun:成就百万数据科学家!
我们的商品按照目的地切换后,还是很稀疏,还会存在无召回的情况。对于这种
情况,我们想到引入向量召回的方式进行补充召回。可以覆盖改写没有的情况,
可以召回一些原来不能召回的产品。
② 向量召回整体架构
DataFun:成就百万数据科学家!
③ 模型结构
模型结构,如上所示:
商品侧:我们主要的工作在这里,除了文本上对用户目的地的需求,对商
品类目的需求也是比较关注的。所以在商品特征上,使用了商品 title 文本
的卷积特征,以及目的地类目 id 的特征。
个向量的外积,可以让特征更好的融合。
最后,通过全链接层进行特征抽取,计算向量内积。
DataFun:成就百万数据科学家!
丢弃掉,不再进行学习,让模型更快的达到我们想要的效果。
④ 样本选择
在样本选择上,我们对正负样本也做了一些探索。
集团内通用的方法:
正样本:query 下用户点击的商品
负样本:未点击的商品
这样的方法更适合在排序上使用,而不太适合召回。以左图为例,用户点击了“上
海迪士尼度假区”,未点击的是下面的商品,虽然可能是由于商品的标题标准化
比较低,用户未点击,但不能说它是不相关的商品。
我们的方法:
正样本:和集团一样,使用点击的商品
负样本:随机选取的样本作为负样本
DataFun:成就百万数据科学家!
使用随机选择有两方面:一是在全量商品中,进行随机选择;二是在一个类目或
者目的地下,进行随机选择。这样可以提升训练的难度,达到我们想要的效果。
⑤ 模型产出与使用方式
最终产出的分数,也给排序使用了,作为排序的一个特征,取得了不错的效果,
4. 个性化召回
DataFun:成就百万数据科学家!
为什么做个性化召回?
因为在旅行场景下,会存在一些泛需求搜索。比如搜杭州,我们会对杭州所有的
商品和酒店进行召回。这样大量的召回会给后面的排序造成很大的压力,没办法
另外,还有一种情况是用户搜索的意图不是很明确,可能会存在一些无结果的情
况。对于这种情况,传统的文本相似性、深度召回都无法召回的情况下,可以尝
试个性化的方式,给用户推荐一些商品,直接展示在搜索结果中,提供补充,来
提升用户体验。实践证明,用户也会对这类商品进行点击和购买。
我们的方案有两种方式:
引入推荐的召回结果,在此基础上进行相关性粗排,得到个性化召回
构建了个性化专用的向量召回模型,来得到更好的个性化召回结果
DataFun:成就百万数据科学家!
整体的方式是将召回池分为个性化召回和文本召回两路:
推荐召回结果。
文本相关性过滤:通过文本相关性的过滤(如关键词命中和向量 cos 相似
个性化召回模型:
DataFun:成就百万数据科学家!
在用户侧,通过用户画像属性和用户的 query,进行特征抽取。另外,我
们引入了用户操作序列,来达到个性化目的。比如用户最近搜索时,查看
的商品、点击的商品、加购的商品以及成交的商品,这些操作的商品序列,
作序列做 attention,就能够从用户操作序列中取出跟用户当前搜索最相关
的商品特征,来满足用户当前搜索的需求。
在商品侧,也会引入商品特征。如商品 title、商品目的地、商品类目等特
征,作为商品的优选,然后获得一个向量。
特征更好的融合。
模型优化:
在深度向量召回上,对文本的特征采用卷积模型进行抽取。这里并没有采用卷积,
的文本特征比较强,整体的个性化效果比较弱,这不是我们希望见到的。所以我
们采用了减弱文本特征的限制,突出个性化特征带来的额外检索效果。
04
总结思考
最后,是我们对工作的思考总结:
合用户特征,增加更多的个性化搜索能力。
2. 可解释性升级
我们希望对搜索的可解释性进行升级,不是简单的用文本或者深度向量直接进行
召回。我们希望对用户的意图,进行更多维度、更细力度的理解,能够直接理解
成人类可读的意图。
DataFun:成就百万数据科学家!
另外,我们希望对用户的行为做预测。因为用户搜杭州时,可能根据历史点击推
出来的商品也不能满足用户需求。我们后续希望对这类 query,能够预测出用户
想去的景点。当用户搜酒店时,可以预测出用户想去的目的地,更好的满足用户
需求。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
5G+智能时代的多模搜索技术
分享嘉宾:李国洪 百度资深研发工程师
编辑整理:李斌
出 品 平 台 : DataFunTalk
孩,移动互联网的发展如火如荼。近两年,5G 技术让下载速度变得越来越快,相
较于传统的文本搜索技术,语音搜索和图片搜索等新型搜索方式出现在越来越多
的产品形态当中。
今天的内容主要分为 4 个部分来介绍多模搜索技术:
多模搜索:始于移动,繁荣 5G+智能时代
语音搜索:听清+听懂+满足
视觉搜索:所见即所得
“破圈”:无限可能
01
多模搜索:始于移动,繁荣 5G+智能时代
DataFun:成就百万数据科学家!
1. 多模搜索的概念
分,是语音搜索的入口。在搜索框的右侧相机的按钮,是视觉搜索的入口。语音
搜索可以很好地替代文字搜索,而视觉搜索,可以帮用户方便的找到图片背后所
具有的信息。
以 iphone 手机为代表的智能手机时代到来,使得语音输入成为可能。
DataFun:成就百万数据科学家!
4G 通讯网大大提高了上传下载速度,上传图片不再困难。
我们的网民从中青年开始向两侧的小孩儿和老人扩展。
3. 多模搜索在 5G 新时代产生的变化
沉浸式体验。在 5G 带宽更加强大之后,我们需要有一些超越视频的更加
沉浸式的体验。
延时的降低。在 5G 推广开来之后,尤其是借着云边端三个阶段的服务的
部署,包括很多的模型,从云端前置到端,这样的话可能会带来很大的便
利。
新的硬件。伴随智能音响、蓝牙耳机、智能手表、智能眼镜的广泛使用,
进一步催生多模搜索的用户需求。
02
语音搜索:听清+听懂+满足
1. 语音搜索的目标有三个,听清、听懂、满足
DataFun:成就百万数据科学家!
听清:准确地将我们说话的语音信号转换到文字,这里面临的挑战其实非
听懂:即使当我们去把语音转换成文字,也不代表我们就能按照传统的搜
索的方法把转换后的文字直接丢给搜索引擎去理解。原因:① 口语化的问
在几点”,但下一次他不会再说“巴黎现在几点”,会直接问“巴黎呢”。
满足:一些特定的语音入口,比如智能音箱上,我们不太可能会把前十的
2. 技术方案
整体这三个阶段大的技术框架如下:
首先在听清这个环节。从输入角度来看,有两个:① 语音识别。这个阶段
更多的是把声学的信号转换成基础的文本文字;② 语音纠错,语音纠错会
把用户原始的文字表达改变成适合搜索引擎去真正理解的 query。在最后
DataFun:成就百万数据科学家!
的内容表达的过程中,会经过一些播报生成、语音合成,使得交互更加的
自然。
整个用户的长尾表达,映射到搜索引擎更加好理解的一些比较高频的
在满足这个环节层面。站在整个百度通用搜索的肩膀上,在某一些特定的
场景需要给用户一些更精准的一些表达,所以这里面需要智能问答的技术,
还包括知识图谱的技术,最后提供一些特定服务。
03
视觉搜索:所见即所得
1. 目标
DataFun:成就百万数据科学家!
视觉搜索要做的事情就是所见即所得,无论是用户通过手机拍摄,或者是通过摄
像头实时摄像看到的一些东西,我们都能给到其背后的内容,这里面大概有三个
挑战。
交互。交互技术是一个很重要,影响用户整个的交互效率比较高的环节。
感知。不同于文本搜索把每一段文字或者自己的需求通过比较高级别抽象
的东西去表达出来,视觉搜索需要从像素级来感知和构成更高级的物体级
信息。
识别。理解整个由像素集合所代表的一个个物体背后的信息。
2. 成就
经过几年的努力,百度取得了比较好的技术积累,实现了全球比较领先的视觉感
3. 视觉技术
DataFun:成就百万数据科学家!
整个视觉搜索的技术大概分为三个层面,
第一个层面是视觉感知,这个层面主要再用户的手机本地计算,这里面包
括 2D 和 3D 的检测,2d 和 3D 的跟踪,包括一些简单的场景识别,还有
支持 AR 定位和渲染。
第二个环节是视觉识别,当我们在手机端完成这些感知之后,需要对感知
到的这些物体做更详细的信息搜索和满足。
第三个是基础技术,主要用来支撑上面的感知和识别,包括图像的理解、
文本的理解、视频的理解,还有关于人体、人脸等等一些感知技术,也包
括一些基础的云和端上的性能优化、多模态的 QA 技术等。
4. 视觉感知流程
把视觉感知打造成一个基于视频流的感知计算和 MR 交互的一个框架,这个框架
是完全在端上去计算,主要包含六个流程
检测与分割。主要是发现画面里面的一些基础的物体,以及它的一些物体
类型。
跟踪。因为我们要做连续的交互,画面会有持续移动,所以就会需要做一
些跟踪和定位,去保持住跟踪物体的具体位置。
粗粒度理解。端上对整个流量做一些简单理解,起到流量精准分发的目的。
AR 展现。在云端搜索结果返回之后,把结果信息通过 AR 的方式展现。
MR 交互。通过手指或者肢体表情交互,让用户可以与 AR 内容做更进一
步的交互和交流。
应用场景。最后是支撑已有的几个产品形态,包括动态多目标识别、拍题
搜索、AR 翻译、实时取词等。
DataFun:成就百万数据科学家!
视觉感知算法的演进
从 2017 年开始,我们第一次尝试在端上做物体检测技术,它的目标就是
做轻量级模型。
性的问题。
和网络结构自动搜索上做了一些工作。
步提升整体的检测效果。
算法迭代
第一代检测算法:首先在第一个阶段轻量级的阶段,我们选型直接选了 one
第二代检测算法:刚刚提到我们发现了一个新的问题,在连续检测时检测
的输出会发生很大的变化,这是影响着连续帧的检测稳定性的一个根本的
原因。我们首次提出问题的定义和量化公式,最终结合多帧信息非常好的
解决了检测稳定性问题,同时兼顾了性能。
第三代检测算法:第三代的主要目的是解决小物体召回,基本上从两个阶
段来入手,第一个就是整体的网络模型结构,yolo-v3 对小物体会更加友
好,第二个是引入了网络的结构化搜索,会进一步提升对小物体的优化。
是与 retinanet-50 甚至更大的模型相比,还是有很大的差距。因此希望通
过蒸馏的方式进一步提升检测结果的准确率。
5. 视觉识别检索的流程
我们大概经历了三个阶段的演进:
驱动训练图像以及视频的特征表示。
从 20 年开始,我们从半监督向无监督的方式去升级算法,希望利用到更
多的数据去学习到一个更加适合任务自身场景、泛化能力也更好的特征表
示。
有监督方法存在的问题
第一个有标注的数据,数据规模往往比较小,而且噪声也相对来说比较多
一些。
第二点由于它的规模比较小,所以样本多样性往往是不足的。
第三个问题是通过这种人工标注,有多少人工就有多少智能,标注成本也
是非常高的,而且这个周期也比较长。
无监督方法的选型和演进
相似度,然后将聚类的编号作为数据的 label。
DataFun:成就百万数据科学家!
通过原始图和变形图之间的对比学习,学习到整个图片比较好的特征表达。
04
“破圈”:无限可能
破圈无限可能,未来多模搜索的技术和产品形态会往哪里发展?度晓晓 App 是答
案之一。
DataFun:成就百万数据科学家!
度晓晓是在 20 年百度世界大会上第一次发布的多模搜索新的产品,从技术角度
来看它是语音、视觉、文本三大技术领域的一个交汇,汇聚了语音识别、图像识
别,还有智能搜索、NLU 和多轮对话的技术,同时它本身有一个虚拟形象存在,
富含多种情感的语音合成技术,它的背后是百度多种技术方法和产品的融合,包
含着信息和服务搜索,以及互动娱乐的部分。
未来通过更多的整合多模搜索技术,将产生更多无限可能。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
知乎搜索文本相关性与知识蒸馏
分享嘉宾:申站 知乎 算法工程师
编辑整理:许宴铭
出 品 平 台 : DataFunTalk
导读:大家好,我是申站,知乎搜索团队的算法工程师。今天给大家分享下知乎
搜索中文本相关性和知识蒸馏的工作实践,主要内容包括:
知乎搜索文本相关性的演进
BERT 在知乎搜索的应用和问题
知识蒸馏及常见方案
01
知乎搜索文本相关性的演进
1. 文本相关性的演进
DataFun:成就百万数据科学家!
我们首先来介绍下知乎搜索中的文本相关性。在搜索场景中,文本相关性可以定
型来对这种相关程度进行建模。整体而言,文本的相关性一般可以分为两个维度,
字面匹配和语义相关。知乎搜索中文本相关性模型的演进也是从这两个方面出发
并有所侧重和发展。在知乎搜索的整个架构中,文本相关性模型主要定位于为二
轮精排模型提供更高维/抽象的特征,同时也兼顾了一部分召回相关的工作。
2. Before NN
DataFun:成就百万数据科学家!
知乎搜索中的文本相关性整体演进可以分为三个阶段。在引入深度语义匹配模型
BM25 的公式。词袋模型通常来说是一个系统的工程,除了需要人工设计公式外,
在统计词的权重、词频的基础上,还需要覆盖率、扩展同义词,紧密度等各种模
块的协同配合,才能达到一个较好的效果。知乎搜索相关性的一个比较早期的版
本就是在这个基础上迭代的。右下部分为在基于词袋模型的基础上,可以参考使
用的一些具体特征。
3. Before BERT
DataFun:成就百万数据科学家!
基于 BM25 的词袋模型不管如何设计,主要还是只解决文本相关性中的字面匹
配这部分问题。第二阶段引入的深度语义匹配模型则聚焦于解决语义相关的问题,
主要分为两部分:双塔表示模型和底层交互模型。微软的 DSSM(左下)是双塔
的低维语义句向量表示,然后针对两个语义向量来设计相关性函数(比如
cosine)。DSSM 摆脱了词袋模型复杂的特征工程和子模块设计,但也存在固有
后的精度上,肯定会有部分的损失。
term/char 交互矩阵(中)的设计上,交互矩阵使模型能够在靠近输入层就能获
相关性得分。Match-Pyramid(右下)、KNRM(右上)是交互模型中比较有代
DataFun:成就百万数据科学家!
表 性 的 设 计, 我 们 在 这 两 个 模 型 的基 础 上 做 了 一 些 探 索和 改 进 , 相 比 于 传 统的
BM25 词袋模型取得了很大的提升。
4. BERT
用也分为表示模型和交互模型。
对整体的排序服务性能有比较大的影响。
基 于 上 述 原 因 , 我 们 也 做 了 类 似 于 DSSM 形 式 的 表 示 模 型 , 将 BERT 作 为
的句子输入,得到每个句向量表示,之后再对两个表示向量做点乘,得到得到相
DataFun:成就百万数据科学家!
average 作为句向量的表示。从交互模型到表示模型的妥协本质是空间换时间,
然后 doc 直接通过查表,节省了大量的线上计算。相比于交互模型,精度有一部
分损失。
02
BERT 在知乎搜索的应用和问题
1. 搜索业务架构中的 BERT
在下图中我们可以看到,BERT 在知乎搜索业务的召回和排序阶段都扮演了比较
重要的角色。交互模型的主要服务于二轮精排模型,依赖于线上实时的计算 query
和 doc,为精排模块提供相关性特征。表示模型又分为在线和离线两块,在线表
2. BERT 表示模型语义召回
下面详细介绍下我们的语义召回模型。首先看个例子,对于「玛莎拉蒂 ghlib」
这个 case,用户真正想搜的是「玛莎拉蒂 Ghibli」这款车,但用户一般很难记
搜索的例子)只能召回“玛莎拉蒂”相关的 doc,而无法进行这辆车型的召回,
这种场景下就需要进行语义召回。更通用的来说,语义召回可以理解为增加了字
3. BERT 带来的问题
DataFun:成就百万数据科学家!
BEER 模型上线后,为不同的模块都取得了不错收益的同时,也给整个系统带来
了不少问题。这些问题整体可以归结为线上实时计算、离线存储、模型迭代三个
方面。具体的见上图。
4. 蒸馏前的尝试
试。
DataFun:成就百万数据科学家!
维度压缩来降低存储开销。这两种尝试在离线和在线指标上都有不同程度的损失,
于 显 存 和 计算 量 都 能 得 到 显 著 的 优化 。 前 期 尝 试 过 直 接训 练 小 模 型 , 以 及 使用
指标上的表现就没法达到要求,因此也没有上线。
针对 doc 数量过大,存储开销过大和语义索引构建慢的问题。在这方面做了一个
的 doc 存储表示向量和构建语义索引。该方案会导致部分文档的相关性特征存在
计算,保证性能在部分下降的前提得到部分精度的提升。
03
知识蒸馏及常见方案
DataFun:成就百万数据科学家!
1. 知识蒸馏
下面简单介绍下知识蒸馏。从下图中看,我们可以把知识蒸馏的整体形式简化为:
大模型不考虑性能问题尽量学习更多的知识(数据),小模型通过适量的数据去
模型。
DataFun:成就百万数据科学家!
一步平滑标签,让模型去学习到类别和类别中的知识。这里需要注意的是,
异被完全平滑掉。
2. BERT 蒸馏方案
对与 BERT 的蒸馏我们做了大量的调研,并对目前主流的蒸馏方案做了归纳分类。
预训练阶段和下游任务阶段都有不少的方案涉及。技巧层面来分的话,主要包括
不同的迁移知识和模型结构的设计两方面。后面我会选两个典型的模型简单介绍
一下。
3. 蒸馏-MiniLM
DataFun:成就百万数据科学家!
训 练 模 型 压 缩 算 法 。 主 要 改 进 点 有 三 个 , 一 是 蒸 馏 teacher 模 型 最 后 一 层
4. 蒸馏-BERT to Simple NN
04
知乎搜索在 BERT 蒸馏上的实践
1. BERT 蒸馏上的实践和收益
会有精度的损失。因此,我们做蒸馏的第一目标是离线模型对⽐线上 BERT 精度
以 我 们 尝 试 用 更 大 的 模 型 ( 比 如 BERT-large/Robert-large/XLNET ) 来 作 为
fine-tune,得到微调后的模型再做蒸馏。
2. 蒸馏-Patient KD
DataFun:成就百万数据科学家!
学习 Robert-large 大模型的方案。
其中知识迁移主要有三部分:student 的预测与真实标签的交叉熵、student 与
3. BERT 交互模型蒸馏
DataFun:成就百万数据科学家!
很多。
训练数据方面,我们经历了点击日志数据挖掘到逐渐建立起完善的标注数据集。
目 前 , 相 关 性 任 务 训 练 和 蒸 馏 主 要 均 基 于 标 注 数 据 集 。 标 注 数 据 分 为 title 和
之间。
4. BERT 表示模型蒸馏
在 BERT 表示模型上,蒸馏时我们希望对向量维度和模型层数同时进行压缩,但
5. 蒸馏的收益
蒸馏的收益主要分为在线和离线两部分。
在线方面:
源消耗。
DataFun:成就百万数据科学家!
1/6,
块需要线上实时查询离线计算好的向量,所以查询服务也有提升。
离线方面:
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
京东搜索在线学习探索实践
文章作者:刘露、张颖、段学浩、王东旭
内容来源:京东算法架构
出 品 平 台 : DataFunTalk
导读:随着京东零售搜索业务的快速发展,对数据的时效性要求越来越高,要求
搜索模型有捕捉更实时信号的能力,在线学习体现了业务对模型时效性的追求,
希望能根据在线系统反馈的数据实时得对模型进行调整,使得模型能快速反应环
境的变化,提高在线预估的准确率。
01
背景
DataFun:成就百万数据科学家!
确率较低,比较适合一些简单的场景;第二种是类似增量训练的一种方式,可支
持深度模型预估,这种方式以尽可能短的周期进行模型训练和迭代上线,是一种
类实时的更新方式;第三种是以实时更新方式更新模型的局部结构,可支持深度
模型的预估,模型的一部分参数直接参与实时训练。
02
系统概述
DataFun:成就百万数据科学家!
learning 的任务进行流式更新;
Rank:主要包括一些排序策略,在排序后会实时落特征日志,将当时的特
征写入特征数据流,作为后续实时样本的数据源(feature);
Flink 样 本 拼接 任 务 : 将上 面 的 feature 和 用 户行 为 标 签 数据 作 为 数 据
到新参数后更新 PS。
这里我们介绍整个链路的迭代过程:
经过离线样本拼接之后生成离线样本表,然后在模型训练平台训练之后将
load 这个全量的离线模型;
DataFun:成就百万数据科学家!
据源;
务;
03
实时特征和样本处理
实时特征收集的目标是承接搜索在线预估系统所发出的特征数据,对下游屏蔽掉
缓存、去重、筛选、分页等搜索系统特有的业务逻辑,提前滤除掉下游一定不会
实时样本拼接的目标是将搜索特征与用户端的行为埋点实时关联。目前我们的数
+ timer 的模式实现多任务场景下的样本拼接,该实现策略的特点是可以随意扩
展至 N 流并进行拼接;为了减少与外部存储的交互来降低网络的开销,我们使用
行了相当的优化。
DataFun:成就百万数据科学家!
这 里 首 先 列 举 了 一 些 常 见 的 数 据 倾 斜 , 比 如 说 key 的 设 计 不 合 理 、 flink 的
shuffle 方式选择有问题、任务反压、机器资源的问题等,这里我们着重介绍一
下这个任务的一些数据倾斜问题。
数据量相同,解决数据倾斜问题。
DataFun:成就百万数据科学家!
别。最开始的时候我们将数据放到了内存里面,但是因为数据量巨大,导致 GC
时 间 特 别 长 , 我 们 将 数 据 放 到 了 rocksdb 里 面 , 并 且 我 们 对 rocksdb 的
的 state 里面,这样就少了很耗资源的序列化和反序列化操作,减少了很多系统
销。
DataFun:成就百万数据科学家!
04
Flink 实时训练
在线学习过程对实时样本具有一定要求,上游任务产生样本数据之后,因为是乱
序的,我们为了保证样本流进入训练时最大程度还原真实事件顺序,利用 flink 的
watermark 机 制 对 样 本 进 行 了 保 序 操 作 , 之 后 我 们 实 现 了 带 有 超 时 时 间 的
inference 后端来直接查询。
DataFun:成就百万数据科学家!
证顺序是有序的,尽可能的贴近事件当时的发生场景;样本一旦出现延时,
且超过了系统的最大配置,我们会认为该样本不可用,直接丢弃。
为了允许在线学习任务自主配置每次训练迭代的数据规模,我们内部实现
目前对搜索算法接入了点击、加购、关注、下单、完成等多个标签流,支
持丰富的标签选择。
支持样本比例的定制化,支持按照规则触发训练。
DataFun:成就百万数据科学家!
线和实时共用一套 ps,为了之后的稳定性要求,我们之后会将实时和在线
分开。
模型校准:为了确保模型的准确性,支持天/周粒度的完整模型更新进行校
准。
05
全链路监控
对于端到端的机器学习,全链路的稳定性是很重要的,任何一个节点出问题都会
影响最后的效果,因此我们建设了全链路监控,保证如果出现了问题能在第一时
间发现并且解决问题。
DataFun:成就百万数据科学家!
关的监控、样本的关联率、样本的延时时间、AB 指标等监控。此外在最终的效
果上加监控数据,保证能从效果上得到一个全链路健康度的认知。
东中台实时计算团队提供的监控组件完成了任务的相关监控,保证了任务的稳定
性。这些监控从容器的 cpu、内存等细粒度的方方面面监控,确保我们可以及时
捕捉问题所在。
06
总结
Flink 在实时数据处理方面有优秀的性能、容灾、吞吐等表现、算子丰富易上手使
用、自然支持批流一体化,且已有不少机器学习框架陆续开源。随着机器学习数
DataFun:成就百万数据科学家!
据规模的扩大和对数据时效性、模型时效性要求的提升,在线学习不仅仅作为离
线模型训练的补充,更成为模型系统效率发展的趋势。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
阿里文娱搜索算法实践与思考
机视觉 ( CV ) 等多领域的综合应用场景,随着深度学习在这些领域的长足进
展以及用户对视频生产和消费的广泛需求,视频搜索技术的发展在学术和工业
界都取得了飞速的发展,本文将以优酷为例,分享视频搜索的算法实践,首先
介绍优酷搜索的相关业务和搜索算法体系,从搜索相关性和排序算法的特点和
挑战到技术实践方案的落地,最后会深入介绍优酷在多模态视频搜索上的探索
和实践。
本次分享主要包括:
视频搜索简介
基础相关性和排序模型
多模态视频搜索实践
DataFun:成就百万数据科学家!
▌视频搜索简介
1. 业务背景
优酷搜索为整个阿里大文娱提供了一站式搜索服务,范围包括优酷所有搜索入
等,这些都是文娱搜索业务需求,优酷搜索为其提供统一的搜索服务。
2. 评估指标
DataFun:成就百万数据科学家!
搜索排序业务多目标的评估指标,如图所示,可以拆分成 4 个大类。搜索的用
户价值主要体现在 2 个维度:
第一个维度为工具属性,指的是用户将搜索服务作为一个搜索工具,目标是找
准找全。这是用户价值的基础,也是搜索的基础属性。从这个维度去评估搜索
效果的好坏,主要从体验指标去衡量:跳出率、相关性、时效性、多样性等通
用指标。视频搜索可播性是指由于受版权影响,有些视频在平台是不能播放的,
能给用户提供更大价值的是那些可播的视频。此外,会用人工评测的方式对搜
索的效果做横向纵向的对比,来衡量搜索的满意度。
第二个维度为分发属性,能让用户消费更多的内容,主要是视频观看的 VV 和
消费时长,这些指标对搜索是非常重要的,是用户满意度的直接体现。搜索能
够支持平台的宣发价值和广告会员的商业化价值,前提是服务好用户,用户体
验好。
3. 搜索系统框架
DataFun:成就百万数据科学家!
个模块的功能,比如说用户搜"大明风华",用户在手机上发起这一次请求,接
引擎模块去做相应的检索,如粗排和精排的逻辑,将结果返回回来,再到一个
RankService 排序服务。
整个框架中间层是引擎,下面是离线的索引服务,左边是机器学习平台,包括
特征的流式计算,模型的在线学习,后面主要介绍排序服务模块。
4. 搜索算法框架
DataFun:成就百万数据科学家!
是预测模型这一层。整个排序服务包括预测模型、模型融合、业务策略,整体
上保证了搜索体验和效率。
右图是整个搜索算法的大图,通过这里的介绍希望大家对视频搜索技术有一个
全貌的理解,方便大家对后面内容的理解。
QP 服务在排序中的作用:首先在意图层面,会把用户意图细粒度的切
情赵四跳舞",经过 QP 服务的成分分析后,判断乡村爱情属于一个节
目名,赵四属于角色,跳舞是一个动作。
意图识别后是排序和多媒体相关性,这两个内容后面再详细介绍。
内容召回:主要是多媒体内容的理解,为什么要做多媒体内容理解,因
为视频内容传递的信息非常丰富,不可能用文本标题全面表述,用户在
搜索时表达需求差异非常大,存在语义鸿沟,各个业务的搜索都存在语
义鸿沟,视频搜索中的鸿沟更大,所以不能把视频当成黑盒直接用标题
DataFun:成就百万数据科学家!
概述。我们的问题是从什么维度去理解视频?得益于深度学习在各个领
域的全面发展,现在有能力做相关技术,包括 OCR/ASR,对话的理解,
通过 CV 的技术对人物、动作、物体的元素级的结构识别,视频的指
这些相关技术,不仅仅只是做标题的文本匹配,与相关性匹配密切的关
联起来,能更好的帮助理解视频和视频间的关联关系。
数据层:有实体的关系数据,能够通过技术挖掘这种关系;内容组织,
通过图谱聚合、时效聚合、内容聚合,把内容聚合成更方便用户浏览的
聚合形态。
▌相关性和排序内容
1. 搜索相关性
上。
DataFun:成就百万数据科学家!
第三类是语义层面的匹配,相关性这一块是需要多个层次的匹配的。
下面分为 4 个层次详细分析:
够把文本匹配做的比较好。
知识特征。对于知识特征的匹配需要其他辅助信息的补充才能做好的,
用 NER 等技术把视频的标题等成分识别准确。在这些基础之上,我们
些点击浏览的模型,去消除文本、吸引度的偏差,提高满意度,后面在
相关性特征还会详细的去讲一下。
语义。主要解决语义匹配,视频搜索存在很大的语义鸿沟,DSSM 表
去做。BERT 这一块是做知识蒸馏的方式,这块计算太复杂了,在排序
层 做 的 。 SMT 不 是 在 相 关 性 和 排 序 层 面 去 使 用 的 , 是 语 义 的 扩 展 和
query 的改写,能丰富语义内容的召回。点击行为也是做一些语义层面
的改写扩展。
结合这 4 个层次的匹配,是能够把搜索基础相关性的匹配做到一个比较好的状
态。
2. 相关性数据集构建和特征体系
左图是相关数据集的构建流程,为了衡量相关性的效果,需要标注数据集。首
先要有一个标注规范,主要结合实际业务和用户需求来设定,并没有通用的标
仅标注相关性的等级,还会对同等级的样本做偏序级的标注。我们对标注的质
率和质量,降低标注的成本。数据集也分为验证集和训练集,验证集主要针对
特定问题去构建,具有一定的针对性,对不同验证集解决完问题之后,不一定
对线上体验有正向的效果,因为它会带来对其他维度变差的情况,所以我们需
要训练集和回归集的验证。右图是我们相关性算法的主要特征,大家可以参考
下。
3. 语义匹配
通用简单,我们尝试迭代的过程比较多,具体参数是和语料相关的,不同业务
参数差别比较大。需要特别指出,语料样本的选择,对语义模型特别关键。在
日志处理过程中,没有点击的日志不能当作语义的负样本,垂直搜索引擎语义
类 query 相对还是比较少的,需要借助外部的预料做训练,这和我们集团的
一些搜索比如神马搜索,搜索日志对语义搜索效果的提升是非常大的。
表征形的语义模型,有一个好处是,doc 端的特征是可以离线计算的,可以
在相关性层面快速高效的去做语义上的计算,确保基本的语义内容能够被召
DataFun:成就百万数据科学家!
回,能够排到前面去,能够送到上层的重排序服务上,ranking service 上还
有比较多的语义内容,能够做一些精细化的语义计算。
4. 排序特征体系
排序特征体系,包括各个业务领域类的,基础匹配类的,query 统计类的。有
一些是视频平台特有的,比如说实时的动态的处于宣发周期的一些特征,对控
制节目的排序,可播性,宣发的效果是特别有帮助的;另外,内容质量的评估
对视频平台是非常重要的,优酷的人工智能部有一个非常给力的 CV 团队,
提供基于视频这种无参考质量的评价框架,能够对低层次的一些特征,比如对
比度,亮度,中等的模糊块效应的失真,并综合各种画面质量去解决 UPGC 视
频失真,模糊质量评价的难点,能够从视觉层面去理解视频,还有封面图/标
题的质量去评判,可以很好的区分好视频和差视频。
DataFun:成就百万数据科学家!
在用户层面,用户行为的表征在很多宽泛搜索里都会应用,比如用户在频道页
的搜索排序,OGC 节目宽泛意图的检索场面,用的会比较多。因为在很多通
用的搜索中,这种宽泛意图的比率比较大。
5. 表征学习
上图是表征学习的模型,第一层是特征预编码的编码层,用视频元素、搜索意
频的序列;在搜索意图维度,有搜索的 id,搜索词的视频表达和文本编码的
表达。在视频层,包括视频统计特征、视频播放点击量、视频文本编码、视频
稀疏的编码优化能够全链接到第 1 层。可以对高维特征进行降维,把高维特征
信息投影到低维的向量空间中。第 4 层把不同域的表征信息,内部的编码,综
合到一起,形成一个综合的多模态的向量融合,再经过上面的 2 层的全链接实
现搜索用户意图和搜索视频维度的排序。
整个模型在性能优化后再计算层面是没有什么性能问题的,上线后分发效率提
高明显,分发 ts 观看时长增加。
我们在上线后同样看到了一些问题:这种单一目标的排序模型,它的优化目标
是 ts,就会忽略一些基本体验。比如,相关性约束对整个体验来说不一定在
提高用户体验,可能在头部的一些效果上,我们行为比较多的一些搜索 query
上体验是提升了,但是中长尾的一些效果上其实是比较难以保证的,所以后面
我们也是做了不同的尝试,把表征学习和其它的一些维度的排序效果相融合。
上图为 19 年在排序方面的一些实践,多目标的深度排序学习。这里的多目标
其实是做一个整体的目标学习,我们要确保涵盖相关性技术体验的 loss,分
这里要实现一个端对端的多目标的。
样本标注方面要综合时长和播放完成比,如果我们按照存点击数据,很多情况
是和 ts 目标不一致的。如果只考虑视频时长,那么长视频就会被放在前面,
如果只考虑播放完成比,那么短视频就会被放在前面,因为短视频就几十秒,
很快就能播放完,长视频几十分钟,有的几个小时,不容易看完。所以我们会
综合时长和播放完成比,对时长做分段的处理,在相同时长下作横向比较,形
这里正负样本采样比例 1:8,是通过我们不断迭代调整的结果,并没有一个通
用的方法。
▌多模态视频搜索
1. 多模态视频搜索
多模态搜索就是将语音,文字,图像等各种模态集中起来一起搜索。学术上也
有很多和多模态搜索关联的,比如实例搜索,给定一个实例图像,搜索相关的
视频中搜索相关的视频。这和我们今天的主题多模态视频搜索是非常契合的,
搜索技术可以有很多新的搜索体验,下面讲一些优酷的实践。
DataFun:成就百万数据科学家!
刚刚讲的学术界方法对短小视频搜索效果是比较好的,但对长视频很难做到准
确,视频很长,覆盖的范围很广,用这种表征的方式不容易覆盖那么多丰富的
内容的,所以对工业界的视频搜索,不是端对端的解决方案,现在的做法是将
视频模态信息通过降维的方式,都转换成文本的模态,对视频内容做细粒度的
内容拆解,将图像,动作,人物,声音这些背景信息,通过 CV 检测方法识
光学文本的识别和语音识别的技术将视频中的对话信息转化成文字,关键字和
主题的抽取,再去形成事件的分析和概念主题的理解。
一个完整的视频可以分出不同的片段,然后形成 shot,关键帧,关键元素,
通过对关键元素的分析,可以把动作场景人物做一些识别。举个例子,如上图,
通过人脸识别可以识别出这个片段中出现了哪些人,"周六夜现场"能检测出岳
结构化出来,然后做一些关键词的抽取。
DataFun:成就百万数据科学家!
接下来将作更深次的讨论,如上图,从视频标题看是陶瓷,如果不做内容结构
的分析,根本不知道里面在说什么。所以要对文本进行分析理解,在分析理解
时,会有一个难点:这么多文字,需要一个完整的实体知识库,视频内容涉及
的领域非常广,包含全行业的丰富的实体。辅助我们抽取核心内容的元素,比
如"伯特格尔"是谁,是个人物,"塞夫勒","麦森"这些地名需要理解,以及实
体链接和实体之间的关系的推理。这个视频是介绍欧洲陶瓷发展历史的,欧洲
陶瓷是从哪里开始的,是从"塞夫勒"开始,是由"伯特格尔"这个炼金师发现出
来的,很多对话内容是通过主体引用,要理解指代的实体,上下文引用的主体
是需要识别出来的;另外一个就是实体之间的关系,比如"塞夫勒"、"麦森"是
欧洲的城市,和中国,日本是什么关系,这种实体之间的关系是需要有的,否
则对讲的什么事情是很难理解的,需要知识图谱辅助。在实体知识库的支撑下,
候选的关键字通过分类模型得到关键字分级,分成核心关键词,相关关键词,
提及的关键词,分完级之后,在相关性匹配上做的更有针对性。
2. 视频元素级知识图谱
DataFun:成就百万数据科学家!
但是他是和孙俪一起唱的,标题里没有孙俪,用户经常搜索的内容是"孙俪李
健合唱的风吹麦浪", 我们需要通过人物识别的方式把视频中的关键人物识别
出来。在视频搜索中,需要多模态信息的辅助的,才能提高搜索准确率。左边
是"甄缳传",通过视频元素级识别,可以把关键人物识别出来,并且可以把人
物和角色,人物和 ip 之间的关系获取出来,检索时可以将具体人物出现的关
键位置检索出来,以及台词,歌词,内容关键的一个场景的起止时间,如果用
户在搜索"甄子丹的打斗视频",我们有相应的内容视频的聚合数据,用户可以
搜到开始打斗的起始时间的。
3. 效果案例
DataFun:成就百万数据科学家!
再举几个内容关键词在多模态视频搜索中的应用,如上图,搜索"军情解码张
召忠",搜索结果中标蓝的这些是通过内容理解,人脸识别,多模态搜索召回
的。搜索"军武次位面虎式坦克",通过对话理解提取出来的关键词,搜索"晓说
以色列"也是类似的。这部分在搜索所占的比率不是很大,但是触发的效果还
是非常明显的,效果提升 100%。
多模态视频搜索的应用场景是非常广泛,目前还没有做到故事级别的理解,这
块是需要继续努力的方向。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
网易云音乐推荐中的用户行为序列深度建模
年用户量就突破了 2 亿,而这与它优质的推荐系统必不可分。网易云音乐推荐系
统致力于通过 AI 算法的落地,实现千人千面的个性化音乐推荐系统。本文将重点
介绍推荐系统在云音乐的落地实践,以及在音乐推荐系统中遇到的挑战和解决方
案。使大家了解音乐场景下的多行为域的序列建模,包括用户多兴趣点挖掘、多
空间长短期兴趣建模,以及音乐场景下的用户兴趣演化网络建模。主要内容包括:
网易云音乐简介
召回体系探索
精排模型演化历程
音乐推荐场景 AI 思考
DataFun:成就百万数据科学家!
01
网易云音乐简介
1. 关于网易云音乐
网易云音乐是专注于发现与分享的音乐产品,依托专业的音乐人、好友推荐、算
法推荐,以及社交功能,为用户打造全新的音乐生活方式。网易云音乐有一个非
常受用户喜爱的乐评社区,加深了人和人之间的联系,用户会经常分享与歌曲有
关的想法,形成了一个比较温暖的社区。另一个受用户好评的是云音乐精准推荐
功能,它有很多推荐场景供用户进行选择,可以帮助用户快速发现更多更优质的
歌曲,让我们千万的曲库,能够分发到每一个属于他的用户。同时,为了音乐产
业的发展,我们对音乐人进行了大力支持。目前我们音乐内已经入驻了 10 万+的
音乐人,每年可以产出 2 万多首原创歌曲,给音乐人创造了良好的音乐环境。
DataFun:成就百万数据科学家!
以 UGC 用户创建歌单,使云音乐打破了传统专辑歌手分类组织的方式。以歌单
为核心的播放模式,可以以社交化的分享和个性化的推荐来解决用户发现寻找音
单,这种全新的形式给用户带来了全新的体验。使我们可以有更多优质的歌曲在
歌单中得到有效的曝光。同时,我们还推出了 MLOG,一种图片音乐文字相结合
的产品,让音乐不仅可以听,还可以看和玩。
2. 多形式推荐场景
DataFun:成就百万数据科学家!
回到我们最关注的音乐推荐算法:在云音乐内有非常多形式的推荐场景,供用户
自行选择。
每日推荐:以列表形式展示,该场景会比较关注用户长期的偏好,让用户
每天在这个场景中获得他喜欢的歌曲。
私人 FM:一种流式推荐方式,能根据用户实时播放行为去分析用户对之
前对推荐歌曲的反馈,从而去影响后续要给他推荐的内容。对于那些想要
寻找一些新奇新颖歌曲的用户,这种方式会是很不错的场景。
歌单推荐:同时对于歌单这种特有的播放形式,在首页和歌单广场上,也
会进行丰富的推荐。
3. 音乐推荐 VS 电商推荐
DataFun:成就百万数据科学家!
大家可能对电商领域的推荐系统更了解,并且有很多团队做出了比较优秀的工作。
所以,我们在音乐领域内想要完成一个推荐系统,与电商推荐系统有哪些不同?
又有哪些差异?
两种推荐系统的相同点:
都是帮助用户去更快速的获取他们想要的资源
都是以用户使用体验为导向
但是这里的资源在电商领域是商品,而商品具有特定的功能和用途。所以对用户
来说,有一个特定的现实作用。而对于音乐领域,一首歌曲,该怎么去理解?每
个用户对歌曲的理解是千差万别的,如何把握住用户对音乐的感受是我们非常关
注的。
其次一个非常大的不同点在于:商品是不可重复消费的。例如用户购买了一台电
视机,可能在较长的一段时间之内,用户没有电视机的需求了。但是对于音乐来
说,完全可以重复消费。比如一周之前听过的歌曲,可能今天还在听;昨天听过
DataFun:成就百万数据科学家!
的歌曲,今天还可以单曲循环;甚至一个月之前一年前的那些老歌,都能拿来反
复的进行播放。这一点就是非常大的不同。
同时,消费一首歌曲的时间成本是远高于点击商品的。可能几秒钟之内就曝光了
非常多的商品,并且可以通过浏览商品的图片查看商品的标题。用户就能在短时
间之内大致的了解到这些商品。但是歌曲就不一样,用户可能会对歌手有一定的
了解。但是在很多情况下,演唱者对用户是陌生的。只有真正的去播放这首歌曲,
甚至是需要播放到中间的副歌部分,才能真正感受到这首歌曲,对他的感觉,这
非常多的信息。如何把其中的关联关系挖掘出来,是我们研究的一个重点方向。
02
召回体系探索
接下来介绍下,我们在召回体系中做的一些探索和想法。
云音乐召回系统简化框架:
DataFun:成就百万数据科学家!
我们会从数据库中清洗、抽取用户行为序列,对用户进行偏好分析,对歌曲进行
理解,以及对行为训练的深度建模。我们会从多个角度来进行歌曲的召回。之前
云音乐做的部分召回算法,主要以 CF 协同过滤为主,我们在协同过滤算法中,
也做了非常多的创新和优化,并取得了显著的效果。但是我们也非常想从用户自
身行为中挖掘到隐式的信息。
问题思考:
DataFun:成就百万数据科学家!
所以在准备建立我们全新召回体系时,我们带着两个思考。
用户的兴趣点在哪里能够体现出来?用户的兴趣是单一不变的吗?
对于这两个问题,我们进行了比较多的调研和数据分析。最终,我们找到了两个
方向:
一个是从用户的听歌记录中挖掘用户的兴趣点,就像前面说所说的音乐消
费时间成本,从听歌记录中抓住用户的偏好
其次用户对音乐的感受是非常多样化的,并且会随着时间和用户的兴趣产
生偏移
基于这两点,为大家介绍云音乐结合音乐相关知识的一些召回算法,并且其中的
一些召回算法成功的在云音乐上线了。
1. 实时兴趣向量建模
DataFun:成就百万数据科学家!
首先介绍实时兴趣向量召回模型。这个模型大家应该比较熟悉,原型就是 youtube
提出的视频召回模型。这个模型会将用户和歌曲映射到同一个低维度的向量空间
能有个比较大的要求,因为推荐的歌曲池比较大,所以要有一个比较高效的向量
的支持。
在这个模型上,我们做了一些优化:
云音乐里面,歌曲经常是以列表形式播放的,所以我们更需要关注的是列表中歌
系。
另一个优化是对于原有的搜索序列,我们会用点击的序列代替。因为我们最开始
列数据,很容易造成过拟合。所以我们转向了用户的另外一种主动形式,选择了
DataFun:成就百万数据科学家!
用户点击歌曲的序列。因为从数据上会发现经常有些用户会将音乐一直播放着,
成为一种背景音乐的形式,或者像是商场之类的公共场所,会不停地循环播放。
但是,如果用户有点击,说明当前点击的歌曲是在用户主动意识下的一个行为,
提高了置信度。
在这两点优化下,最后召回模型的效果比之前表现的会更加优异。例如,用户实
时点击并播放了一个电子歌单,我们能及时给用户召回这个电子风格的歌曲。在
模型中我们还对样本做了一些处理。比如说刚刚提到的商场播放歌曲,可以看作
一种机器人行为。网易云音乐有为数众多的用户,他们的行为会非常的活跃,所
以我们避免这些活跃的用户和机器人的行为影响最后的训练,我们会对每个用户
限制样本的数据,避免负向影响。同时,我们在用户侧引入了非常丰富的用户画
像信息,对于没有行为序列的用户,也可以触发这个召回模式,为这些用户召回
歌曲。
2. 动态多兴趣建模
DataFun:成就百万数据科学家!
动态多兴趣挖掘模型:这个模型中,会将用户的行为序列作为输入,通过信息胶
囊网络抽离出用户信息向量,也就是上图中间的网络结构。因为用户听歌记录其
实是多样丰富的。比如说用户会在早上会听一些节奏比较欢快的歌曲,下午工作
时可能会听一些舒缓的慢歌,周末可能会听一些摇滚的歌曲。所以我们需要通过
建模,把用户内部的多个兴趣点挖掘出来。如果用户行为序列并没有那么丰富的
话,可能它内部隐含的信息就相对比较少。此时,会选择动态的兴趣数,根据序
列的长度来进行自适应的选择。这个模型在训练的过程中会使用 attention 的方
对于口味丰富的用户来说,能够训练出比较多的兴趣点,像粤语类的歌曲、英文
的摇滚,欧美电子这一类的风格。
3. 音乐知识图谱
DataFun:成就百万数据科学家!
利用知识图谱的召回。我们的知识图谱,建立了音乐数据中不同实体之间的关系。
这里面每一条知识表示主谓宾的三元组,比如说某一首歌曲是属于某张专辑的,
而这张专辑又是某一个电视剧的原声音乐,这时我们会通曲库内部和外部的信息
挖掘,逐步地把整个音乐知识图谱建立起来,可以得到不同实体之间一步两步甚
至多步的关系,比如表面上看起来可能毫不相干的两个艺人,因为这两位艺人同
时给同一个电视剧演唱的关系,就形成了一个关联关系。或者像一个综艺节目,
例如我是歌手,参与不同季的歌手也可以形成关联关系。我们可以通过用户历史
行为,关联到其他不同的实体歌曲,从而进行召回。而且音乐知识图谱中,不仅
包含了歌曲这种实体。还包含视频、MV、MLOG 这些不同实体的信息,这些对
于其他实体的推荐提供了有力的支持。
4. 长短期兴趣挖掘
模式中,会通过一个门结构来进行长短期兴趣向量的加权。但在我们真实的实践
DataFun:成就百万数据科学家!
中,发现了一个问题,我们把这个门结构中的权重打印出来,发现长期兴趣的权
重非常小,最终用户加权的向量表示基本只包含了短期的兴趣,而对长期的兴趣
影响非常小。这和我们最开始想要挖掘长期兴趣的目的是不符的。
经过非常多的尝试后,我们最终将用户的性质分为长短两个兴趣空间。在长期兴
趣空间和短期兴趣空间中,分别计算它的 loss,解决了我们最开始的问题。由于
化。用户对一首歌曲,如果是具有重复播放的偏爱,他可能是因为喜欢演唱这首
歌曲的歌手,或者喜欢这个歌曲的风格,或者语种是他非常感兴趣的。上层的信
息一直影响用户感受,所以对于长期的信息建模过程中,我们将歌曲的信息进行
了一个上浮,把歌曲的画像进行了详细的建模。这个模型,也是融入了云音乐算
法团队很多的思考和对音乐本身的理解,最后有效的权衡了音乐传感器的兴趣。
DataFun:成就百万数据科学家!
5. 为什么需要多路融合召回?
除了以上介绍的召回模型,我们还有非常多的其他的召回方式。为什么音乐推荐
需要多路融合召回?答案是我们算法对音乐的理解,因为音乐的本质是情感的寄
托。可能这句话会比较抽象,从歌曲和用户两个角度来具体解释下:
DataFun:成就百万数据科学家!
歌曲会有非常多的标签,像常见的语种、风格,就有非常多的类别。而场景情感
主题这些标签,是基于用户对这些歌曲的感受来分类的。而且同一首歌不同的用
户也会听出不一样的感受,所以这就需要我们将歌曲的不同维度、用户的偏好来
进行充分挖掘,精准的找到用户喜欢这首歌的点在哪。然后我们也可以从歌曲的
评论区中,发现很多用户评论表达的一些情感,比如这里有用户说:"这首歌曲他
听了非常多年,还是一直很喜欢"。所以说用户的情感是一直存在的,算法要做的
就是对这些情感进行唤起,来加强用户对于情感的表达。
03
精排模型演化历程
下面分享云音乐在精排系统中关于用户行为序列的一些深度建模经验:
行为链路:
DataFun:成就百万数据科学家!
在具体介绍精排模型之前,简单介绍下用户在云音乐中的行为链路。我们以每日
推荐场景来做具体的介绍。用户进入日推,首先歌曲会得到曝光。用户可能会点
击某些歌曲,也可能直接进行了播放。在播放的过程中或者结束时,用户会进行
显隐式的反馈。比如进行收藏行为或者是切歌的行为,甚至可以将歌曲标注为不
感兴趣,当然也可以什么都不做,继续播放下一首。在用户整个行为里面,可以
或者是曝光时间非常短,不感兴趣的,都是一些负反馈。对用户这些行为进行累
积,我们可以对他之前的语种偏好、风格偏好、艺人、年代热度等等,进行重新
调整,从而更好的进行下一次推荐。
云音乐精排模型迭代历程:
云音乐精排模型的迭代历程,时间跨度比较久。最开始从最简单的线性模型开始,
有比较强的解释性,并且符合当时快速迭代的需求。但是它的缺点还是比较明显
的:表达能力非常有限。所以在此基础上我们逐渐在这个方向进行优化。对于模
DataFun:成就百万数据科学家!
型的拟合能力,希望有更进一步的加强。在后期,也逐渐的引入了外部的特征,
我们做了比较多的特征交叉,使我们的特征维度达到了很高的级别。最后,利用
得整个模型的刻画能力得到了非常大的加强,但因为特征维度过大,计算的复杂
型的表达能力变得更强。我们慢慢将用户的行为序列考虑了进来,学习用户行为
序列中隐藏的关系。
整个过程中,也是我们对业务理解逐渐加深的过程,所以模型也会复杂化。后面
要分享的是我们在深度时序网络阶段中,结合用户相关的行为数据,做的一些创
新和优化。
1. 用户行为序列建模
DataFun:成就百万数据科学家!
首先尝试的是深度兴趣网络模型,这个模型和之前所尝试的模型,一个比较大的
突破,是在用户行为序列数据上的处理。之前会将用户序列行为的 embedding
加强的求和,可以让模型更加关注到它认为有用的信息,着重的影响本次推荐的
行为。每一首在行为序列中的歌曲,我们也会刻画的比较丰富。对于歌曲画像,
丰富的歌曲画像,可以让模型更好的关注到用户本次点击的兴趣点在哪里。
2. 用户兴趣演化模型
在做推荐系统的过程中,很容易体会到一个现象,就是用户越新的行为,能够反
映用户当时的兴趣,对于推测之后的行为发挥的作用也是越大的;旧的行为发挥
的作用就相对弱一些,这说明用户的兴趣是在不断变化的。特别是在音乐中,外
DataFun:成就百万数据科学家!
界的流行趋势会发生非常大的改变。可能在几年内,甚至是几个月内流行的方向,
就发生一次非常大的改变。同时,用户自身的兴趣,也会发生变化。所以我们在
模型中,如何捕捉用户兴趣的演化路线?于是有了用户兴趣演化模型:
合,既保留了原先的注意力机制,又能捕获用户歌曲兴趣发展的路径。在这里我
们使用的序列,是用户实时完整播放的序列。他使用了一个实时数据,所以在线
上预测时,我们可以对用户实时的行为得到快速反馈。另外,我们在做播放序列
长度时,也进行了一些探索。很明显,如果播放序列越多,包含的行为也就越多。
但是过长的数据,在实训模型中容易造成梯度消失问题,如何将更多行为融入进
来,是我们接下来要思考的一个方向。
3. 基于会话的多行为域模型
前面的学习建模过程中,我们使用的都是用户整体的行为训练,忽略了序列内部
的机构。用户的行为序列是由多个会话组成的。然而往往用户会话序列内部,性
DataFun:成就百万数据科学家!
质偏移比较小,目的性会比较一致。但是在会话之间有着比较明显的差异,所以
我 们 会 进 行 session 划 分 。 我 们 可 以 得 到 用 户 session 内 部 的 投 入 行 为 以 及
一个是因为音乐它有非常多的推荐场景,每一个推荐场景使用目的都是有
差别的。用户选择不同的场景,都是基于用户主动意识,所以我们通过场
景就可以将序列进行一个初步的划分
其次,听歌过程中,用户会有一定的疲劳感。如果时间过长的话用户的注
我们在模型中做了更大的尝试,考虑了用户更多行为域的行为模式。之前我们所
使用的用户行为都是完整的播放歌曲序列,在这里我们加入了一个红星收藏序列
和跳过序列。为什么我们要将用户不同的行为序列考虑进来。我们观察播放的整
DataFun:成就百万数据科学家!
个详情页,里面有很多的控件,比如收藏按钮,表示用户将歌曲加入红心收藏歌
单中,这是用户非常强烈的行为。同样下载歌曲或者分享,都是明显的正向行为。
断用户真正情感。如果用户对这首歌曲标了不感兴趣,甚至是拉黑了歌曲或者艺
人,那么这就是显著的负向行为。还有比较隐蔽的负向行为,就是用户在播放的
过程中进行切割操作,这是一个没有消费完全的状态,对用户来说是不好的体验。
所以我们会通过对用户行为的不断扩充,把用户正向和负向的行为,进行完整的
刻画。
4. 再说音乐推荐 VS 电商推荐
回到最开始我们提到的,两个推荐系统的差异。这些问题,其实在刚刚介绍召回
和精排系统中有提到。对于音乐资源我们会从各种维度进行偏好的分析,建立一
个比较完善的歌曲画像。同时,虽然这次分享没有提到,但是云音乐也利用了 NLP、
图像、音频等技术,从内容上去理解歌曲本身。对于是否可以重复消费这个问题
DataFun:成就百万数据科学家!
上,我们会关注用户长期的兴趣偏好,达到长短期用户兴趣的动态平衡。对于用
户的行为序列,进行显隐式的拆解,刻画用户真正的行为意图。对于长短期兴趣
和用户行为确认这两个方向,还是有很多的发展空间的,这也是之后我们需要继
续努力的研究方向。
04
音乐推荐场景 AI 思考
最后分享下在音乐推荐场景下对于 AI 算法的思考。音乐是反映人类现实生活中,
一种情感的艺术;AI 是一个理性的产品,它为人们提供便利的生活。理性和感性
的结合,并不是相互抵消的过程,反而能发挥出更大的效果。我们认为健康良性
乐,让用户能够沉浸在音乐带给他的快乐当中。更多用户的使用行为可以帮助我
们挖掘更多长尾歌曲,挖掘那些小众但是优质的音乐,使优质的歌曲都能得到合
DataFun:成就百万数据科学家!
理的分发。我们的推荐歌曲池也会变得更多更好,可以更好地服务给用户。以上,
就是我们的网易云音乐推荐团队对 AI 和音乐的理解。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
推荐系统解构
分 享 嘉 宾 : 姚 凯 飞 观 变 科 技 CEO
编辑整理:陈家辉
出 品 平 台 : DataFunTalk
导读:由于移动互联网时代用户每时每刻都会产生海量信息,伴随着大数据技术
的快速发展,使得企业能够迎合用户的痛点,分析用户喜好,进行商品推荐。推
荐系统诞生的益处:从用户角度,推荐系统可以缓解信息过载带来的时间成本;
从企业角度,可以帮助企业进行精准营销,解决长尾营销,最大化收益。因此推
荐系统的好坏对于互联网企业来说至关重要。
本次分享主要是以电商平台为例,从以下几个方面对推荐系统进行解构:
DataFun:成就百万数据科学家!
01
推荐概述
1. 工作思路
对于电商平台来讲,一套完整的电商流程应该包含以下完整流程:
推荐系统作为电商平台的一个子系统,其价值体现在商品与用户的匹配上,而匹
配的效率与质量对于电商平台至关重要。
2. 推荐系统面临的挑战
DataFun:成就百万数据科学家!
多场景、多目标、考虑生态、场景间目标的差异
电商推荐系统的优化往往是多目标的,这个体现在场景和优化时效维度;在不同
场景间, 推荐系统的目标侧重点也是不一样的,比如有的目标是提高用户在页面
的停留时间,有的是提高用户短时间内的消费,比如猜你喜欢、购物车、商品详
情页的推荐坑位。而从优化的时效维度来看,比如从短期来讲,目标有点击率、
转化率和客单价等,从长期来讲,目标需要考虑留存、复购等指标。不仅如此,
电商平台需要兼顾用户、商家、平台三者的利益,构建长期健康的生态。由于电
商业务的购物链路较长,往往用户需要先浏览、点击、加购、下单、支付、履约
配送、收货、评价/退货等环节构成,所以推荐系统往往需要将各个环节纳入其中。
当然在其它业务类型的推荐系统中,也存在着链路长的挑战。如招聘行业的推荐
系统,给候选人推荐合适工作只是第一步,后面还会伴随着长时间的简历投递,
招聘人员的审核和邀请,参加面试,最终入职或者进行下一家的应聘。社交场景
也类似,这种推荐系统存在这双向匹配,比电商平台的单项匹配链路更长,挑战
也更大。
DataFun:成就百万数据科学家!
数据闭环
对于电商企业来说,数据是核心,是驱动业务迭代的关键点,从用户、商品、商
家维度,需要持续积累和采集。从用户的角度,存在浏览、点击、成交、评价、
物流全链路闭环数据。从商品角度,有潜力、新品、老品、衰落、下架等信息。
从商家角度,也有价值、非价值和灰黑商家等。
3. 推荐系统中的关键因素建模
我们以电商推荐场景为例,用户的行为旅程包括浏览、点击、加购、购买以及长
期的复购行为,大致可以由下图表示:
推荐系统首先需要在点击(也即流量的转化)这一环节进行建模,引导用户进入
商品详情页,同时对详情页的加购/购买建模,依次引导后续行为。
DataFun:成就百万数据科学家!
购回访的长期价值,只有长期生命周期价值高才能给企业带来持久收益(n 为时间
/天,x 的少许增长可以带来长期巨大复利)。
结合上述用户旅程和公式拆解,如果想将 V 做大,自然的,我们需要构建转化率-
统的观测指标。
在系统更大维度,我们需要关注长短期收益、用户/商家个体满意度和总体满意度
以及兴趣探索成本、流量效率与商品/商家成长等维度。
DataFun:成就百万数据科学家!
02
推荐系统拆解
1. 基本架构
我这里拿一个前几年我刚开始入门推荐系统时候的架构:
最开始的阶段是召回过程,分为多个模块;实时模块会拿到用户实时的信息,比
如用户实时点击、收藏、加购的商品,并获取这些商品的相似商品;历史模块会
获取用户的历史信息,如历史的购买行为;画像模块则会获取用户的静态信息和
偏好标签,如用户的设备型号、年龄、性别、类目偏好等;最后还会包括现在以
及过去的热门商品等。
在经过这些召回的过程后,我们会进行一层过滤。比如曝光过滤,即某个类目已
经曝光了一定次数,但是用户都没有点击,隐式表明用户不感兴趣。还有用户购
买过滤,即已经购买过的短期内不再推荐。同时还有购买率过滤、性别过滤等等。
DataFun:成就百万数据科学家!
经过过滤阶段后,我们可以对过滤后的商品进行一定的预估。如点击率、转化率
预估等。同时可以考虑单价,多样性以及新品率等影响进行排序。随后我们可以
通过规则或者模型,将这些粗排后的物品统一得分进行融合,最后再经过精排阶
段给出最终得分,这个阶段还会增加一些业务规则进行强控,比如考虑多样性的
打散、出于运营需求的置顶等。
上述是大致推荐系统的简单介绍,不同的业务和团队,在构建过程中也存在模块
的差异,推荐系统没有特别强的标准存在。
2. 召回策略
主要策略包括:
① 实时行为召回:在线实时捕捉用户对商品的点击,收藏,加购,购买等反馈行
为,并召回相似商品,迅速抓住用户的短期购物需求。
② 历史行为召回:离线分析用户对商品的历史点击,收藏,加购,购买等反馈行
为,并召回相似商品,兼顾用户的长期购物需求。
③ profile 召回:从性别,年龄段,设备等多个维度,在线和离线同时对用户进行
DataFun:成就百万数据科学家!
画像,并召回相对应的热门商品。不要小看这个召回,非常关键,往往新用户需
要用这些静态信息和标签来做召回,往往可以快速圈定其圈层进行精准的探索和
召回是全局热门召回的更精细化拆解。
④ 热销&趋势召回:分析商品的长期和短期销量变化,召回爆款和近期热点商品。
召回模块特别重要,因为召回的来源/相似分可以作为排序特征(推荐日志
落盘-回看/溯源机制)
召回作为漏斗的顶部,好坏对漏斗底部(排序)的影响很大。
3. 排序策略
DataFun:成就百万数据科学家!
排序阶段的影响因子较多,可以作为特征,也可以独立在外作为排序因子存在。
当然针对不同的产品有不同的侧重点,比如电商的内容差异较大,甚至同是内容
也会因为产品形态存在差异,比如快手的双列可以考虑点击率建模,而抖音单列
下滑不需要考虑点击率建模。甚至还需要考虑多样性,惊喜性,新颖性等更多的
稀疏性、正负比例、预估不准等问题。
DataFun:成就百万数据科学家!
如果一个指标不够,还可以考虑多个指标的结合,形成新的指标。如电商场景下,
的,你把这几个指标的分子分母拆开就看到了,相乘以后就是 gmv。但是由于模
型各自的准确率差异,导致了我们需要学习这几个参数,理论上建模越准确的指
标系数越大。而这三个系数如果相对稳定可以通过离线统一参数学习的情况完成;
如果不稳定,可通过强化学习来解决这个超参的设定。
可参看下图的电商场景建模的相关排序因子,当然部分因子作为特征可纳入排序
模型。
DataFun:成就百万数据科学家!
4. 排序阶段还有一些常见的原则
① 针对不同的召回策略,主要秉持“短期行为优先,兼顾长期行为”,“保证多
样性,避免过度个性化”原则。算法上主要通过长短期用户行为密度建模,正负
反馈反向调节等手段来实现。
② 不同排序因子(商家质量/分发宽度及强度等等)可共用一套底层表征。
③ 覆盖率:通过类目,品牌,频道,场景等多粒度的打散重排,最大化各个维度
的个性化覆盖率。
DataFun:成就百万数据科学家!
④ 疲劳度:通过引入一定的随机因子,针对不同个性化程度,建立合理的轮转机
制,保证一定的新颖性。
⑤ 转化能力:通过对用户,商品,会场等多维度采集特征数据,训练点击转化和
交易转化模型。大促期间 根据不同的阶段,采取差异化的处理策略。比如预热期
强化点击转化,正式售卖期则强调交易转化。
5. 更加精细化的排序
① 考虑到召回和排序的压力,可以再精排和召回中间加一层,少量核心特征+简
单模型进行粗排。
② 多过程建模:如直接购买还是收藏比价使用模型判断。举个例子,在购物车推
荐中,用模型来操控推荐策略。在购物的流程中,通过数据分析可以发现,有一
部分用户是希望通过加入购物车来进行比价, 还有一部分用户加入购物车是直接
购买。通过模型来判断用户的行为,比如用户一直添加同类目的商品,那么比价
的概率就高一些。如果判断出用户是直接购买,那么就尽量推荐相关商品,如果
是比价用户,就推荐相似物品。
③ 粗粒度召回:离线产出不同类目下的精品数据,作为召回补充和兜底
④ E&E 探索解决低置信度预估模型问题
DataFun:成就百万数据科学家!
6. 模型演进
模型的演进路线可以由下图表示:
而模型的时效性也从天级别,慢慢演化成小时(一天几次), 再演化成近实时级
别,而目前主流的推荐系统都是实时级别。
目前模型的演进已经进入到深度学习时代,各个大厂提出的新的深度学习架构也
层出不穷:
这里不对于模型具体结构过过多展开,主要趋势就是通过时序、行为特征的使用,
通过 embedding、LSTM、attention、tansformor 等结构提取特征信息,拟合
用户兴趣,提高预测精度。
DataFun:成就百万数据科学家!
7. 特征构建
这里主要解构一下电商推荐系统中特征的构建方式:
初级的方式,一般大家会对用户和商品进行一些用户画像,然后作为特征加入模
型。但是长期来看,匹配类的特征非常重要,比如待排序的商品和用户历史行为
匹配特征一般是与点击特征结合在一起的,比如用户对于某个商品的点击,对于
某个类别的点击,某类用户对于商品的点击等等。可以总结为下图:
8. 评估方式
DataFun:成就百万数据科学家!
针对于召回的评估方式,绝大部分都是通过命中率、准确率、覆盖率、F1-score
等方式评估,参考下图:
DataFun:成就百万数据科学家!
但是因为推荐系统是串联的,我们往往需要考虑到前置模块对后置模块的影响,
03
系统&全局生态
1. 推荐功能决策链路
DataFun:成就百万数据科学家!
做一个推荐功能之前,我们需要对这个产品功能的作用进行一定的决策,如:
推荐功能对该产品有无价值 ( 可以 )
价值多大 ( 值得 )
成本和收益 ( 现在 )
优先级 ( 怎样 )
同时还要对推荐功能的工程上的要求进行决策,如推荐系统的实时性做到毫秒级
是否有必要。是否是毫秒级,应该以用户的使用习惯来决定,如 80%的用户其实
都是秒级需求,没有必要做到毫秒级的响应。
2. 场景串联与用户旅程
不同的场景需要兼顾业务定位,进行场景间差异化。场景单独优化时往往召回、
排序策略会趋同,带来局部增益与全局增益最优的冲突,解法往往是产品业务层
的干预与算法场景通信两种手段。
DataFun:成就百万数据科学家!
3. 方向&外围
设,如:
更好的流量,但是对于等级较低的 seller,也应该分配流量,帮助其提高等级。
DataFun:成就百万数据科学家!
② 商品理解&建设: 良好的后备力量。每个商品都有生命周期,虽然可能旧款的
商品质量很高,但是我们在推荐的时候也要对新品进行流量分配,进行新品测试、
流量扶持。
③ 智能投放: 低延时、高效率展现。在考虑商品的流量分配时,还需要对用户的
意图、兴趣、负反馈、视觉窄化进行考虑,不能不顾用户的体验。
④ 生态多目标,包括用户体验,如回访、活跃度、复购率、分群倾斜等,也包括
商家层级、价值、收益、良性竞争等目标,同时还需兼顾平台收益。在增长过程
中,一定需要兼顾上述若干指标,若置之不理,则最终用户、商家都会流失,最
终让产品僵化。
4. 生态多目标
从推荐系统的构建之初,我们就需要从以下角度去关注系统,设定合理的目标和
观测指标。不能什么都是先污染后治理,两眼一抹黑。在增长过程中,一定需要
兼顾上述若干指标,若置之不理,则最终用户、商家都会流失,最终使产品僵化。
DataFun:成就百万数据科学家!
从用户体验角度,我们需要关注回访、活跃度、复购率、分群倾斜等;从商家角
度,需要考虑商家层级、价值、收益、良性竞争;最后我们还需要关注平台收益。
04
话题探讨
下面我们在逐个结合业务展开一些相关探讨,这些探讨想要让大家了解到推荐系
统构建过程中,对业务拆解的重要性。
1. 分群
根据用户的活跃度及行为密度进行分群,并对分群后的用户投放对应的热销进行
兜底补足,或者作为主召回源。其中用户行为较多(交互过的物料个数和品类/
主题较多)时,作为兜底召回做补足;而部分用户行为过少(新用户或刚进入 APP
行为数较少的),可以作为主召回策略,这时候可以做更精细化地数据集。
比如针对国家/地区、性别、设备这些新用户也可收集的静态标签分别做热销数据;
表是不一样的。其实其它分群策略也非常有用,比如购买力分群、兴趣分群;群
体对类目的强偏好和弱偏好均可以在推荐中使用。强偏好基本就是喜欢看、喜欢
买什么品类就具有这类偏好;弱偏好就是某类人群从来不会交互或者交互过低的
类目,利用统计概率进行显著性检验,可以挑出群体显著不关心的品类,在推荐
过程中少推荐或不推荐。
2. 电商同店铺用户行为
做一下分析,看一下进入店铺页的用户后续的行为,可以酌情加重同店铺
商品 trigger 的权重(实时获取),往往很多店铺有包邮门槛,这时候同店
铺召回是满足包邮诉求。
数量和召回数量都需要进行控制。
进行,这样就可以进行很好的多召回源融合,当然这个不是同店的情形也
可以用。
3. 购物车推荐策略
DataFun:成就百万数据科学家!
在购物车场景,通过数据分析你会发现用户加购商品基本有 2 种用户,一种是对
比,另一种是马上要买了再凑个单。这时候引入意图建模,通过实时的数据收集,
控制,比如召回相似和相关搭配。
这里推荐的策略可以考虑用加权融合的方式,对于相似和相关搭配召回源,根据
预测的意图强弱进行比例调整;如果有埋点支持,还可以结合实时埋点,在排序
层考虑上述融合。
05
总结
DataFun:成就百万数据科学家!
需要明确的是,业务效果好的并不一定是复杂算法, 建立推荐系统需要遵循“假
中发现新的思路。系统化地思考全局收益、场景串联、局部与全局最优的情况。
最重要的是合理的指标,从健康生态系统的定义出发。以上就是此次分享的主要
内容,谢谢大家阅读。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
推荐系统架构治理
导读:在数字化革命和 AI 赋能的大背景下,推荐场景逻辑越来越复杂,推荐细分
场景越来越丰富,对业务迭代和效果优化的效率有了更高的要求。推荐系统业务
和技术在传统架构支撑下自然堆砌,变得越来越臃肿,开发维护困难,推荐系统
在应用架构上正面临新的挑战。本文就第四范式在智能推荐系统架构方面的探索
实践,聊一聊在应用架构治理方面提升推荐服务开发维护效率,增强系统灵活性
和扩展性的新探索。重点探讨在开发推荐系统乃至智能系统领域时遇到的问题,
解决方法及未来的发展趋势。主要内容包括:
推荐系统业务现状、趋势及挑战
"治理"的指导思想
Flowengine 架构
应用 Flowengine 后推荐的架构
DataFun:成就百万数据科学家!
实例演示
01
推荐系统业务现状,趋势及挑战
1. 推荐系统业务现状
从图中我们可以看出,推荐系统大体可以分为三个阶段,最初的探索阶段,早在
2010 年左右,已经有了千人千面的说法,现在我们在学习推荐系统时,看一些
文档或者资料,大都会拿亚马逊基于协同过滤的推荐、豆瓣基于标签的推荐系统
做介绍,它们都是早期推荐系统应用在工业界的代表。到了第二阶段 ( 普及深入
阶段 ),淘宝、京东以及一些垂直行业开始大范围尝试个性化推荐,此时,工程
架构,算法策略层面都有了一些新的发展,比如一些大型推荐系统已经开始向实
时特征,实时模型方向进行探索,以提升时效性,从而达到更好的推荐效果。到
PC 端的单一场景推荐,出现了移动端及多场景的推荐需求。现今,从拼多多、快
手、抖音的推荐,再到百度、头条的信息流推荐,推荐系统已经成为一个网站的
灵魂,驱动着各种各样的业务场景,在这一阶段,智能化,工程化,标准化,注
重开发效率和成本已成了技术探索的新方向。总体看来,推荐系统的发展趋势是
一个从无到有,从有到精的过程,不管是工程,算法或者场景业务都有了深入的
发展。
2. 业务趋势
推荐系统从业务方面来说,呈现四个趋势:
① 场景更丰富:早期做推荐的时候,推荐的开发门槛和成本很高,一个网站集中
精力维护好一个场景,那时最经典的场景可能就是主页下方的"猜你喜欢"。到了
现在,多端,多个资源位,更多的细分场景都会有推荐需求。举个例子,从进入
页面的"猜你喜欢",导航九宫格的推荐,再到列表页或下单页的"看了又看","买
了又买",乃至在一个资源位上多个时段都有个性化的需求。在技术层面上,过去
DataFun:成就百万数据科学家!
一个系统支撑一个场景或者一种模式,或者为了简单,一个架构,一个数据流,
一个模型勉强应付多个场景,已无法满足业务精细化运作的需要。现在,一个推
荐系统需要支持很多的场景,不同的场景也需要有不同的数据流,业务逻辑,模
型来深入刻画;另一方面,早期做推荐系统是一个门槛很高的事情,对工程、算
法的要求比较高,且业务逻辑高度定制,很难标准化、低门槛的开发,而现在随
着场景越来越丰富,推荐需求的旺盛增加,原来的工作模式已不能满足需要,推
荐场景开发需要向灵活化,标准化,规模化发展。
转变,通用规则向个性化规则转变;技术主导变为技术+业务联营。推荐系统的效
果好坏不再全是技术主导,业务也利用内容物料,规则玩法等运营手段发挥重要
的作用。
③ 服务更实时:早期推荐模型都是基于历史数据采用离线批量的方式构建,离线
的特征,离线的模型,导致系统时效性差,用户实时或近实时行为的影响无法体
现在推荐的结果中,用户体验不好。让用户能够更快感受到变化,批量非实时向
流式实时闭环推荐发展是推荐效果提升的必然趋势。
④ 未来的重要趋势:系统更智能,更知心。早期的一些简单算法或者规则,被更
也是一个很大挑战。
3. 带来的技术挑战
① 当前推荐系统的基本架构
DataFun:成就百万数据科学家!
在前面所讲的业务大趋势下,推荐系统技术层面正面临一些挑战。我们先了解一
下当前推荐系统的基本架构,一般分为五个板块:
数据流:推荐系统的特点就是高度和数据流相关,那么技术层面要解决数
据怎么来,数据怎么用,数据怎么加工处理,正确性和时效性如何保证等
问题。
离线板块:系统内涉及到一些数据加工,任务处理,模型生产,指标报表
等离线任务,怎么协调这些任务有序高效进行,并获得正确有效的结果。
在线板块:推荐系统对外提供实时推荐的能力,涉及到诸多的在线处理过
程和规则。如何在适应业务快速变化的同时保证可用性和性能是至关重要
的。
AI:当下推荐系统的重要组成部分,其包含整个 AI 模型生成到服务的全生
命周期。如何从系统层面支撑 AI 全生命周期以及如何有机集成进系统是一
个挑战。
基础设施:推荐系统是一个多领域交叉的综合应用,需要有众多的中间件、
基础组件做支撑,如何管理和运维,减少依赖,有效利用是一个重要的命
题。
DataFun:成就百万数据科学家!
上面说的五大板块,对照起来实际上就是这张示意图。虚线框是数据流,蓝色框
是离线部分,黄色框是在线部分,绿色的是基础组件。相较于简化的示意图,在
实际系统中,会变得更加复杂。比如就日志或数据收集这一部分,日志就可能因
为来源,收集方式多样,导致开发,维护和管理的复杂度激增。各家公司的推荐
系统涉及到大量的应用服务和中间件,它们的技术选型,实现方式,部署方式并
不完全一致,但是整体逻辑结构却是可以映射到刚才提到的五个板块内。但是这
样的架构存在什么问题呢?我们可以结合四个趋势来看,如果只针对性的支撑一
个场景,这样是可以的,但是当场景变得更多,更精细,问题便出现了。比如"
猜你喜欢","看了又看",召回物料可能不一样,召回的算法逻辑可能不一样,精
排模型可能不同,甚至整个处理流程也可能不一样,而它们却在一个代码模块中,
各场景的逻辑必然会形成耦合,互相影响,继而影响系统稳定性。另一方面,因
为板块割裂,很多领域逻辑分散在服务或中间件中,比如数据处理一般采用
Azkaban/Airflow 一类的中间件系统去调度处理任务,这就不可避免的将业务逻
辑用大量的胶水代码封装在中间件系统中,如果一个开发者想要了解一个推荐系
DataFun:成就百万数据科学家!
统的业务流程,就会变得非常困难。随着业务的不断发展,这一现象会加剧,大
量的场景规则,服务,运营策略,算法模型越来越多,最终导致系统难以维护,
变成谁都不敢动的“老古董”。
② 当前推荐系统面临的技术挑战
我简单的总结了一下,主要有四方面的挑战。
a. 开发运维部署迁移困难,曲线陡峭,效率低下。因为推荐系统等智能系统,都
涉及到大量的基础组件和服务,各有特点,缺乏一体化的管理运维手段,如何把
完整系统搭起来并管理,期间中间件或者服务出问题,都可能会导致系统不可用。
这对于没有丰富的组件维护经验或者人力不足的团队来讲,是一个巨大挑战。
b. 这实际上是一个应用治理的问题,服务,流程,规则,策略,数据,产物繁多,
组织管理困难。图中任何一个框是一种服务,也可能是若干个服务,这些服务之
间的依赖不直观,很难管理。数据流逻辑繁琐复杂,系统有很多的离线数据流,
在线的数据流,还会产生大量数据产物,缺乏标准化的管理,极易出错。不同场
DataFun:成就百万数据科学家!
景的差异化难以组织,不同的服务,策略间相互影响,其中一个可能表现就是在
一个服务模块代码中因为要处理不同场景的逻辑而产生大量 if 分支逻辑。从架构
上讲,一个好的场景服务应该是纵向切分的,不同的场景是不同的系统,场景间
互相隔离,但这又会导致系统资源浪费,管理上面也很麻烦。因此,需要采取更
加系统化的方法去治理它。
c. 系统涉及到数据/在线/离线/AI 各个领域,技术栈割裂,整个推荐流程需要大
量的胶水代码来整合集成。而胶水代码的一个特点就是难以复用,不同人之间也
难以维护。这样的割裂突出表现在以下三点:
众多领域技术,彼此割裂,难以集成
数据质量难以保证,效果也无法保证
定制性胶水代码驱动,无法复用,迁移
d. 大量重复程序化工作难以避免。在面临支持多个场景的情况下,表现很突出。
落地一个新的场景,可能需要各个系统配合开发,部署,而且这个过程是高度重
复和繁琐的,最终导致成本很高。这也是现在大一点的公司,为了效率和标准化,
开始推动推荐系统中台化建设的一个原因,其目的是能够在一个平台上低成本的
完成场景的快速开发和应用。
上述这些问题的表现都可以用一个字来总结,那就是"乱"。
4. 如何戡"乱"
DataFun:成就百万数据科学家!
那么我来讲一讲如何戡乱,首先我们深入分析一下乱的原因。
① "乱"的原因:
a. 智能系统特有的复杂性,涉及到庞大的服务依赖,数据依赖,知识依赖。推荐
系统涉及到的服务模块很多,而一个服务又涉及多个依赖,整个服务的依赖关系
就会很复杂,从而管理上就需要很大的成本。数据依赖层面,系统涉及到大量的
原始摄取数据,中间加工数据,以及最终的结果服务数据,数据的质量对最终的
推荐效果影响是至关重要的,而这种依赖又非常的隐含,极易出错还难以排查。
最后,特别提出"知识依赖"这一概念,推荐系统一直以来在应用系统中以其技术
复杂性著称,其在工程上,策略上,数据处理上,算法模型上,有很多模式经验
及潜在技能门槛。但这些知识在系统中是隐性的,存在于架构师、专家的脑袋里
面,并没有固化和沉淀到系统内。强依赖架构师凭借自己的认知和经验去构建,
驱动整个系统流程。而正是因为是人来主导,那自然会随着人的水平的高低以及
偏好,产生实现上的差异,难以沉淀和继承,后期持续演化也会很脆弱。
DataFun:成就百万数据科学家!
b. 领域架构缺失 现有的框架都在解决局部问题,需要抽象出一层专门解决推荐
Flink 是做数据处理领域相关的框架,这两者都是各自领域很优秀的框架或平台,
但是要解决推荐领域的问题,他们都只能解决其中部分子领域问题,缺失一个面
向推荐领域的一体化平台或框架,其结果就是从业务问题直接穿透到子领域层,
在实现上,缺乏抽象和隔离,使用胶水代码将下层服务拼接在一起完成逻辑实现。
虽然子领域框架能够解决了一些局部问题,但它们之间如何协同,管理,以及在
其之上更有序的解决推荐领域层面的业务问题成为了如何让架构更好服务场景业
务的关键。所谓戡乱,就是需要形成一个中间推荐场景开发的领域层,承接服务
依赖,数据依赖,知识依赖,并协调子领域服务更有效工作。
② 这一层应当如何做?
a. 统一的场景开发和管理接口。对于上层来讲,开发一个"看了又看","买了又买
"等不同的场景,开发过程和接口应该是相似的,只需要面向这一层开发,无需关
注下层细节。
b. 统一的底层架构和集成标准。下层非常复杂,涉及到众多子领域,作为开发者,
常常在选型和集成上犯难,也无法将它们协调起来,那么我们需要这一层能够把
复杂度给屏蔽掉,开发者面对的是统一的数据结构和接口规范,而无需关注具体
的执行层选型和实现。
c. 领域内要素治理:
合适粒度的领域实体抽象及实现。在推荐服务中,有大大小小的服务,规
则,策略及数据,我们称之为领域资源要素,它们需要有合适的领域抽象
和粒度,粒度不能太大,也不能太小。是一个规则那么我们就用规则去承
DataFun:成就百万数据科学家!
载,如果是一个服务,那么我们就应该用一个服务来承载。这样能够在提
供灵活性的同时,控制整体复杂性
统一灵活的管理方式。我们需要针对领域要素有统一灵活的管理方式,领
域的业务逻辑通过统一的编排管理方式来构建。
成熟可复用的单元。资源要素的载体是成熟可复用的单元,组件、策略等
避免重新开发,产生重复的成本,应该通过复用让使用者更低成本使用。
有几个指导思想,来指导我们具体应该如何将这一层做好。
02
推荐系统"治理"的指导思想
1. "治理"的指导思想
没有 k8s 的时候,微服务运维管理是一个复杂的过程,需要人工编写很多的脚本
DataFun:成就百万数据科学家!
完成应用的部署更新扩缩容等工作,使用者必须明确描述其所有操作细节。因为
相对于声明式,这种过程命令式的运维脚本,需要使用的人要能够掌控过程执行
所有细节,这对于大型复杂系统来讲是一个很大挑战。声明式编程的思想流行会
使这样的工作大大简化,服务负责内部自身复杂运行逻辑,上层使用者只需要声
明出自己的目标即可,系统自动帮你完成,无需关注其达成目标的具体过程。就
编程语言。这一思想已经逐步成为架构师解决复杂系统管理的推荐思路。比如,
当下很热门的运维部署框架 Ansible,运维人员只需要按要求编写安装部署剧本,
系统就会自动安装和部署相应的服务。
② 框架平台:在目标定位上,是开发一款工具,还是开发一个框架平台,会直接
影响到我们的系统设计决策。工具的特点是被集成,可以为使用者提供更灵活有
效的手段解决具体问题,但对于使用者本身有比较高的要求,最终结果如何,高
度依赖使用的方式。而对于框架来讲,将实现过程让渡给框架,开发者无需了解
全过程,只需要按照框架提供的规范进行开发即可,这一定程度约束了开发者的
行为,也降低了上手门槛,这实际上是依赖反转思想的体现。我们提到的知识依
赖,就可以通过框架或平台把它们沉淀下来。而使用者自然会在框架的帮助下,
台 Jenkins,它们的作用就是提供一个领域业务模式或流程,能够使得初学者只
需要掌握平台或框架的使用便能在其领域达到一个比较高的水平,获得方法论指
引,避免前人的错误。
③ 组件化:其特点是标准化,复用性和灵活性。框架和它是依存关系,是它的契
约,组件是按照契约去实现及被集成。
DataFun:成就百万数据科学家!
或者平台,不需要写代码或者少写代码就能够完成开发,是基于框架开发基础上
的更进一步,能够将业务过程,核心逻辑封装成一些低代码的模块,这对于简单
化业务过程,降低使用门槛有很大的帮助。
2. FlowEngine
基于上述的挑战及解决思路,第四范式研发了这样一个声明式的、低代码的、组
件化的智能场景开发和管理的框架平台。在这个框架基础上可以快速开发和管理
推荐等智能场景。
03
Flowengine 架构
间。它的出现其目的便是将我们缺失的领域层补充上。
DataFun:成就百万数据科学家!
1. 表现
现为以下方面:
场景沉淀,迁移,快速构建。在框架无状态的前提下,将应用逻辑,业务
规则和服务依赖保存成一个方案文件,从而做到可以在不同的 Flowengine
平台下无痛迁移分享。
开发,发布,集成,运行等全生命周期管理,使得其能够在明确的标准下
被集成和管理。
辑编排,这就使得其天然具备敏捷性,业务上也能做到垂直切分隔离,却
共用相同的执行底层。在业务隔离和资源共享层面达成了统一。
DataFun:成就百万数据科学家!
预置核心组件及标准流程方案。简单的业务可以通过已有方案自动的生成
推荐服务,达到开箱即用的目的。如果存在场景差异也可以在此基础上进
行修改和完善,但修改过程仅仅发生在方案场景层面,从而有效的控制了
修改风险蔓延,做到了框架与方案的分离,从而在易用性,规范性与灵活
性,差异性上达成了统一,这个在传统架构上是一个不可调和的矛盾。
标准化的底层集成方式,上层简单,下层开放。标准化的底层集成方式,
均采用业务组件或技术组件的方式集成,对上层呈现为可被 pipeline 编排
的资源要素,使用者无需关注执行层差异。这样就保证了上层是接口简单,
下层是开放的。
2. 构成与基本实现
简单说一下它的构成:
Flowengine-Hub:用于存放方案,组件,FUNC/JOB 等资源要素的仓库。
EngineManager:用来管理和监控引擎并作为适配层屏蔽下层复杂度。
DataFun:成就百万数据科学家!
EngineKernel:单个引擎的核心,用于管理当前引擎领域实体,业务流程,
并提供运行环境及通信支持。
元数据及对外提供统一的数据流服务。
基本实现:
引擎是由一个或者多个微服务共同组成,运行组件的标准格式是在 docker
撑下,框架对于基础环境的复杂性有了很好的适应能力。
框架,通过进一步的集成优化,使得开发者无需关注这些框架的使用细节,
通过统一的编程接口便能够完成开发。
批流一体的数据流管理及元数据管理,引入数据摄取,加工,服务三个过
程,抽象出一,二,三级表的抽象表概念,开发者无需关注数据的存储和
计算细节,采用统一的方式完成数据流开发,从而降低开发的复杂度及分
散性。
业务编排框架。提供批,流,在线三大可视化业务编排能力,使得业务逻
辑开发变成了无代码的拖拉拽操作。另一方面,通过集中的编排管理及任
务分发,解决了场景业务逻辑散落在各个执行组件中的问题。在引擎层便
能够管理业务全过程,这对于后期开发维护都大有帮助。
04
应用 Flowengine 后推荐的架构
1. 业务分解与技术映射
业务分解:如图,业务上一个推荐的场景大体是这样的,它包含在线的业务流程,
这一个流程大体可以分为召回,过滤,粗排,精排等几个部分,这里通常会因为
业务过程的变化而变化。另一块是数据处理及离线处理,这里会有数据怎么获取,
加工,以及提供给在线服务使用的逻辑。它也会随着业务变化而变化。最后一部
分,对于智能推荐,人工智能的作用举足轻重,它包含数据接入处理,特征工程,
模型训练,模型服务等多个过程,这其中也包含了离线和在线等诸多服务模块。
是一个引擎,如图,这个引擎我们可以起名叫 reco-engine,这个引擎里存在一
DataFun:成就百万数据科学家!
编排表达出来形成在线服务能力。Flowengine-Data 支持数据的接入,它提供数
并提供数据表之间的处理能力,开发者只需要关注数据流本身的处理逻辑,而无
需关注数据的存取和调度。而对于 AI 模型服务来讲,它也是一个引擎,在引擎内
要模型服务时调用该 AI 引擎的服务即可。这样我们一个推荐的场景就变成了一个
主场景引擎及若干 AI 模型引擎构成,而它们的底层资源管理和调度都无需场景开
发者关心。和我们之前讲的传统架构比,结构上清晰了许多,而这一切都归功于
必要的领域层抽象。
2. 带来的价值
面向 Flowengine 声明业务过程,简单,统一。声明元数据,声明编排过
程。我们不需要管理执行层的具体细节,使得复杂度大大降低,业务过程
也变得更加标准化。
服务及中间件数量减少,资源消耗减少,维护方便。推荐系统因为业务上
的发展,会增生很多小服务,这些服务管理麻烦,还占用资源。比如说推
荐系统一般会一个兜底的服务,定期生成静态的推荐结果,用来在正常推
逻辑分层,合适的拆分粒度。服务,策略,脚本,配置都能够合理安排,
体现最小知识原则,其灵活性,复用性更强。
减少大量胶水代码和重复代码,串联流程基于编排框架,无需再自己管理
流程,声明配置即可,低代码,效率高,好管理。开发方案和使用方案分
离,分工会更加清晰,也便于经验及方法论传递。
场景纵向隔离,便于业务差异化发展,业务不能绑架技术,技术更不能绑
架业务。在引擎层面做到相互隔离,一个引擎就是一个场景,开发,升级,
变更都能够互不影响。
服务运维,环境迁移部署更便利,CloudNative 架构,无状态设计,方案
可导入导出。从解决思路上讲,Docker 解决了单一服务的迁移问题,而
Flowengine 解决场景的迁移问题。
最后给大家做一些实例的展示。
05
DataFun:成就百万数据科学家!
实例演示
以及依赖组件的定义。
务的处理过程。
DataFun:成就百万数据科学家!
最后是业务编排的操作界面。它包含离线编排,在线编排,流式编排。
06
总结
DataFun:成就百万数据科学家!
随着智能场景越来越多,原来项目式,单点式的场景开发维护,必然导致整体研
web 开发框架一样,智能场景应用的大发展也将会重演这样的历史。Flowengine
正是我们在这一领域的探索,以我们对智能应用的架构理解,构建一套加速开发
和运维过程的框架平台,跟进未来的发展趋势。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
阿里粗排技术体系与最新进展
分享嘉宾:王哲 阿里巴巴
编辑整理:乐远
语音朗读:蒋志新
出 品 平 台 : DataFunTalk
导读:在搜索、推荐、广告等需要进行大规模排序的场景,级联排序架构得到了
非常广泛的应用。以阿里的在线广告系统为例,按顺序一般包含召回、粗排、精
排、重排等模块。粗排在召回和精排之间,一般需要从上万个广告集合中选择出
几百个符合后链路目标的候选广告,并送给后面的精排模块。粗排有很严格的时
的 RT 需求下,粗排是如何平衡算力、RT 以及最后的打分效果呢?本文将为大家
向广告各主要业务落地并取得了巨大的线上效果提升。
本文的分享,主要围绕下面几点展开:
粗排的发展历史
粗排的最新进展 COLD
粗排技术的总结与展望
DataFun:成就百万数据科学家!
01
粗排的发展历史
首先和大家分享下粗排的发展历史。
1. 粗排的背景
什么是粗排?一般的话,一个大型的工业级排序系统都会采用多阶段的排序架构,
通常会包含四部分:召回、粗排、精排和重排。以阿里巴巴定向广告为例,召回
的规模一般是千万左右,而粗排打分规模一般是一万以上,精排和重排的规模一
般是上百左右。粗排是处于召回和精排的一个中间阶段,目标是在满足算力 RT
约束的情况下,从上万个广告集合中选择满足后链路需求的候选广告集合。
粗排和精排有两点不同:
算力和 RT 的约束更严格:粗排的打分量远高于精排,同时有更严格的延
迟约束,阿里巴巴定向广告的要求是 10-20ms
DataFun:成就百万数据科学家!
解空间问题更严重:粗排和精排训练的时候使用的都是展现样本,但是线
上打分环节粗排打分候选集更大,打分阶段距离展现环节更远,因此粗排
阶段打分集合的分布和展现集合差距相比精排更大,解空间问题也更严重。
2. 粗排的两大技术路线
粗排的技术路线其实就是解决粗排一般该怎么迭代的问题,由于粗排是处于召回
和精排之间的一个模块,因此粗排本身的迭代会受到前后链路的制约,因此需要
站在整个链路的视角来看待这个问题。纵观整个链路,粗排一般存在两种技术路
线:集合选择和精准值预估。
① 集合选择技术
集合选择技术是以集合为建模目标,选出满足后续链路需求的集合的方法,该技
术路线在召回非常典型,这其实也非常符合粗排的定位。该方法优点是算力消耗
一般比较少,缺点是依赖于对后链路的学习,可控性较弱。
什么叫可控性?也就是说如果希望进行一些调整的话,由于这种方式依赖于通过
数据回流对后链路进行学习,而数据回流往往比较慢,同时对数据量也有要求,
DataFun:成就百万数据科学家!
可能需要后面链路的这些策略调整影响到比较大的流量之后,粗排才可以学习到,
因此这种方式可控性比较弱,是偏被动的一种方式。
这种技术路线有以下常见的几种方法:
多通道方法:类似于召回,针对不同的目标构建不同的通道,然后分别选
出不同的集合,然后再进行合并选择。
pointwise 算 法 一 般 是 点 估 计 的 方 式 , 训 练 过 程 只 考 虑 单 条 样 本 ; 而
pairwise 算法训练过程中会考虑当前样本和其它样本的相互关系,会构造
虑 整 个 集 合 , 会 希 望 整 个 集 合 的 指 标 如 NDCG 等 达 到 最 大 化 , 如
LamdaMART 算法。
序列生成方法:直接做集合选择。一般包含集合评估器和集合生成器,算
的,作为集合中的第一个商品。接下来,再挑选第二个商品,把第一个商
品和所有可能的第二个商品进行组合,并用评估器进行打分。之后,选择
得分最高的集合,并持续使用类似于贪心的方式不断的搜索,最终得到一
个最优的集合。
② 精准值预估技术
精准值预估技术直接对最终系统目标进行精确值预估,其实也就是 pointwise 的
方式。
DataFun:成就百万数据科学家!
以广告系统为例,建模的目标一般是 ECPM,即
ECPM=pCTR*bid
因为是直接对整个目标进行建模,如果建模方式做了调整的话,可以直接调整排
序公式,调整预估模型,对整个链路的掌控力更强。缺点就是算力消耗比较大,
而且预估越准确,算力消耗也越大。
3. 粗排的技术发展历史
粗排在工业界的发展历程可以分成下面几个阶段:
① 最早期的第一代粗排是静态质量分,一般是统计广告的历史平均 CTR,只使
用了广告侧的信息,表达能力有限,但是更新上可以做到很快。
② 第二代粗排是以 LR 为代表的早期机器学习模型,模型结构比较简单,有一定
的个性化表达能力,可以在线更新和服务。
其中①②可以合称为“粗排的前深度学习时代(2016 年以前)”。
DataFun:成就百万数据科学家!
③ 当前应用最广泛的第三代粗排模型,是基于向量内积的深度模型。一般为双塔
结构,两侧分别输入用户特征和广告特征,经过深度网络计算后,分别产出用户
向量和广告向量,再通过内积等运算计算得到排序分数。
③ 称为“粗排的深度时代-向量内积模型(2016)”。
向量内积模型相比之前的粗排模型,表达能力有了很显著的提升,其优点:
内积计算简单,节省线上打分算力
线 RT 问题
进行建模
DataFun:成就百万数据科学家!
然而仍然有许多问题:
模型表达能力仍然受限:向量内积虽然极大的提升了运算速度,节省了算
力,但是也导致了模型无法使用交叉特征,能力受到极大限制。
模型实时性较差:因为用户向量和广告向量一般需要提前计算好,而这种
提前计算的时间会拖慢整个系统的更新速度,导致系统难以对数据分布的
快速变化做出及时响应,这个问题在双十一等场景尤为明显。
存在冷启动问题,对新广告、新用户不友好
都做到了上亿的这种级别的话,可能需要一天才能把这些产出更新到线上,
这种迭代效率很低。
针对向量内积模型的问题,也有很多相关的改进,典型的如下面这个方法。
DataFun:成就百万数据科学家!
用交叉特征的问题。然而该方法仍然有一些问题,wide 部分是线性的,受限于
RT 的约束,不能做的过于复杂,因此表达能力仍然受限。
时产出,ad 向量仍然离线产出,但是更新频次增加。
DataFun:成就百万数据科学家!
通过实时打分,可以引入实时特征,实时性加强。然而实时打分使向量内积模型
法还引入了新的打分模型和 ad 向量版本不一致的问题。
④第四代 COLD,下一代粗排框架(2019)-算力感知的在线轻量级的深度粗排
系统。下面将详细介绍该模型。
02
粗排的最新进展 COLD
前面粗排的相关工作仅仅把算力看做系统的一个常量,模型和算力的优化是分离
的。我们重新思考了模型和算力的关系,从两者联合设计优化的视角出发,提出
平衡。COLD 没有对模型结构进行限制,可以支持任意复杂的深度模型。这里我
DataFun:成就百万数据科学家!
征。当然,如果特征和模型过于复杂,算力和延时都会难以接受。因此我们一方
面设计了一个灵活的网络架构可以进行效果和算力的平衡。另一方面进行了很多
工程上的优化以节省算力。
总结为以下几点:
优化
模型结构没有限制,可以任意使用交叉特征
工程优化解决算力瓶颈
在线实时系统,实时训练,实时打分,以应对线上分布快速变化
1. 模型结构
① 特征筛选
筛选以实现效果和算力的平衡,当然其他技术也可以进行尝试。具体来说,我们
于计算机视觉领域以便对不同通道间的内部关系进行建模。这里我们用 SE block
新的加权后的特征向量用于后续计算。
在得到特征的重要性得分之后,我们把所有特征按重要性选择最高的 top K 个特
作为 COLD 最终使用的特征。后续的训练和线上打分都基于选择出来的特征组合。
通过这种方式,可以灵活的进行效果和算力的平衡。
注意 Se Block 仅用于特征筛选阶段,线上模型不包含该结构。
此时该神经元的输出为 0,对此后的模型结构不再有任何影响,即视为该神经元
被剪枝。
行 mask,这样可以保证整个剪枝过程中模型的稀疏率是单调递减的。
DataFun:成就百万数据科学家!
最终模型是 7 层全连接网络。
2. 工程优化
里定向广告系统中,粗排的线上打分主要包含两部分:特征计算和网络计算。特
征计算部分主要负责从索引中拉取用户和广告的特征并且进行交叉特征的相关计
计算。
① 并行化
为了实现低时延高吞吐的目标,并行计算是非常重要的。而粗排对于不同的广告
的计算是相互独立的,因此可以将计算分成并行的多个请求以同时进行计算,并
在最后进行结果合并。特征计算部分使用了多线程方式进一步加速,网络计算部
分使用了 GPU。
DataFun:成就百万数据科学家!
② 行列转换
特征计算的过程可以抽象看做两个稀疏矩阵的计算,一个是用户矩阵,另一个是
法符合通常的计算习惯,组合特征实现也比较简单,但是这种计算方式是访存不
方法相同,因此可以利用这个特性,将行计算重构成列计算,对同一列上的稀疏
③ Float16 加速
是 BN 本身的参数范围也有可能超过 Float16。因此只能使用混合精度的方式,
的时候会输出绝对值较大的数字。因此我们设计了一种分段平滑函数,我们叫做
linear_log 来解决这个问题。
同 时 kernel 的 启 动 时 间 成 为 了 瓶 颈 。 为 了 解 决 这 个 问 题 , 我 们 使 用 了 MPS
3. 在线服务架构
DataFun:成就百万数据科学家!
COLD 没有限制模型的结构,训练和在线打分都是实时化的,可以带来以下两个
优点:
布的变化,对新广告冷启动也更为友好。
使 COLD 模型可以更快的更新,避免了向量内积模型的更新延迟问题。
4. 实验结果
粗 排 选 出 的 , 而 top m 集 合 是 精 排 选 出 的 , 排 序 指 标 是 eCPM(eCPM =
DataFun:成就百万数据科学家!
① 模型效果评估
CTR+9.1%,RPM+10.8%,提升显著。
② 系统性能评估
DataFun:成就百万数据科学家!
能最差,COLD 则在两者之间取得了平衡。
COLD 在得到特征重要性分数以后,会选出不同的候选特征,并基于离线指标进
统性能以后的折中。
效果显著。
5. COLD 的进一步发展
DataFun:成就百万数据科学家!
那么 COLD 的后面进一步怎么发展?答案是与精排进行更加深度的整合。目前粗
排和精排都是各自独立迭代的,这样会造成一个前后不一致的问题,会带来一个
链路的内耗。而且粗排和精排维护两套流程的话,本身维护成本也很高,尤其是
像阿里巴巴定向广告这边,业务多而且复杂。另外,COLD 和精排一样都是非常
实时化的架构,这使得粗排和精排进行更深度的联动成为可能。
具体如何进行更加深度的整合呢?这里我们直接将粗排和精排的生产流程合二为
一,联合训练,共享部分参数。另外也会借助特征蒸馏的方式,使用精排训练过
程中的得分来指导粗排。在这个基础上,尝试引入精排参竞日志,对于未展现样
本借助精排得分进行辅助学习。为什么引入精排参竞日志?其实前面提到过,因
为粗排除了 RT 还有一个就是解空间的问题,粗排本身见到的集合比精排更多,
但是它本身模型的能力却比精排更弱。所以为了缓解这个问题,引入精排参竞日
过蒸馏的方式来引导粗排进行学习。为什么说这种方式在一定程度上能缓解解空
间的问题?其实是建立在精排的模型能力比粗排更强,这个强很大程度体现在精
DataFun:成就百万数据科学家!
对,精排相比于粗排其实是可以给出更精确的预估的,在这个前提下,借助精排
更精确的预估分数,然后对粗排进行指导,在一定程度上是可以缓解解空间问题
的。
这种方案的好处是将粗排和精排的流程合二为一,粗排精排模型一起训练,一起
产出,这样可以提升粗排和精排的对齐程度,解决前面提到的因为前后链路不一
致造成的链路损耗问题。另外引入精排参竞日志,在一定程度上也能缓解解空间
问题。而且还有一个好处就是降低运维成本,减少了训练资源,提升我们的迭代
效率。
03
粗排技术的总结与展望
最后做一下总结,目前整个粗排基本已经全面迈向深度学习时代,而且深度学习
队在向量内积这条路线上持续迭代,其实也是受到本身算力 RT 的一些限制,包
DataFun:成就百万数据科学家!
括本身工程团队等各方面因素的影响。而且很多团队的精排也还是向量内积结构,
粗排就没有必要升级到 COLD 了。
最后,展望一下粗排会怎么发展。粗排未来会存在两种可能的路线。
一个是粗排精排化,也就是说精排技术持续向粗排迁移,粗排和精排的界限逐渐
模糊,走向更深层次的整合和一体化。其实可以看到,粗排的迭代历程本身其实
就是一个粗排精排化的过程,一般很多技术如向量内积,都是先在精排落地拿到
效果后,再逐渐向粗排迁移。而且算力也会更深度的参与到整个模型的迭代过程
中,未来可能的话甚至不会再分粗排和精排,精排本身可能会在引入算力作为一
只是其中一个,跟随精排自动升级和迭代,从而实现全链路算力和效果的平衡。
甚至算力足够大的话,可以不需要粗排了,直接用精排打分就可以了。
另外其实还存在另外一条路,就是回归集合选择的本质,以产出符合后链路需要
的集合为目标,真正以集合为对象进行建模。这里需要清楚粗排的目标是什么?
粗排的目标是选出后链路需要的集合。而目前粗排精排化的迭代思路其实是在做
线还比较新,目前还在探索中。但是这个方向是一个很有希望的方向,因为它回
归了粗排的本质,直接面向粗排的最终目标,因此在算力的利用率和最终的天花
板上是更高的。
参考资料:
【 2 】 Zhe Wang, Liqin Zhao, Biye Jiang. COLD: Towards the Next
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
阿里深度树匹配召回体系演进
分享嘉宾:卓靖炜 阿里巴巴
编辑整理:成鑫鑫
出 品 平 台 : DataFunTalk
导读:目前不管是广告还是推荐业务,最底层的技术都是检索,由于候选集合非
常大,可能从千万甚至亿级别取出数十个用户感兴趣的商品。在算力和时间复杂
度的约束下,往往采用分阶段漏斗的算法体系。具体来说就是分成召
—深度树匹配,分成几个部分:
检索召回技术现状
深度树匹配(TDM)技术演进
TDM 业务应用实践
总结与展望
01
检索召回技术现状
DataFun:成就百万数据科学家!
1. 互联网业务中检索召回技术的发展
对于 match 这一部分来说,我们的核心问题是要从一个大规模的候选集合里面高
效检索出 topK。单点计算消耗和所需计算次数决定了系统性能边界。我们需要在
有单点计算消耗的约束,从广告库里面解锁商品,有计算次数上限,我们需要保
证在现有的系统性能边界下,无论是单点的计算消耗以及所需的计算次数,他们
的乘积不能超过这个性能边界。
在我们系统里面最早期的是一个经典的两段式 match,例如基于商品的协同过滤,
就是说对我们对于每一条用户的请求我们去找到用户历史的 item,然后再通过这
合并取 topK。这个方法它的优势在于模型非常简单,而且实现成本非常低,我们
是一个两段式的召回框架,整个过程是没有办法联合优化的,有一些很多先进的
模型,像深度神经网络没有办法很好的应用,导致召回效果受限。一个很自然的
想法是我们是否能把这种两段式的检索升级成为一段式,并且对整个全库做一段
式检索。
3. 内积模型向量检索
DataFun:成就百万数据科学家!
基于上述思路,有一个非常广泛的应用是通过内积模型来做向量检索,具体思路
对候选商品集合召回的问题转化成一个单点打分以及分类这样一个问题。
具体实现是三个阶段:
建索引;
这样一个流程它的优势非常显然:面向全库一段式检索,从数据里面获取一些发
现能力,而不依赖于用户历史行为触发。但是它的缺点也很明显,对于我们使用
的模型结构上有一个非常强的约束,就是我们的模型必须是类似双塔这样的结构,
DataFun:成就百万数据科学家!
的局限。我们有过好几版升级,最早是类似双塔这样的內积模型,接下来是 DIN
这里面启发我们一个自然的思考,如果我们想要把更加先进的模型引入到 match,
那么我们应该怎么做?第二个问题是我们在向量检索模型里离线做索引构建的时
候,它的目标与我们在线上使用的时候检索目标是完全不一致的,离线索引构建
够把这两点统一起来联合来优化,然后这启发了我们去做深度树匹配召回这件事
情。
02
深度树匹配(TDM)技术演进
模型能力的升级需要相应的索引结构升级来支持,我们需要设计一个通用的索引
如果不依赖双塔这样的模型结构,我们需要什么样的索引结构?
首先,想到散列表,但是散列表同样基于距离度量,融合先进模型比较困难。加
入选择图的话,对于模型结构没有任何要求,但是图的一个问题就是它结构非常
复杂,并且在图上做检索很难有确定性的检索次数的控制,会存在指数爆炸的问
DataFun:成就百万数据科学家!
题,所以我们最后选择了树。树的结构相对简单,可以通过控制树的层高来控制
检索次数。
1. 深度树匹配的提出
聚合成为一个层次的兴趣树,把从商品库里面的检索转换成一个在树上做检索的
过程。
比如说是一个二叉树,由于树的特性,我们能把从十亿商品库里面挑商品的问题
转化成在树上做 30 层的检索问题,这样的话计算次数就会大大减小。
虽然有这样一个想法,但是我们后续需要解决非常多的问题:
如何基于树实现高效检索
如何做兴趣建模保证树检索的有效性
如何学习兴趣模型
如何构建和优化树索引结构
DataFun:成就百万数据科学家!
2. 基于树的高效检索方法—Beam Search
我们让叶子节点表示全部商品,中间节点表示商品的粗力度的聚合,比如是对于
兴趣的聚合,这样的话我们通过构建一个完全平衡二叉树就能够保证这棵树自顶
个数,计算性能是符合线上开销的,那么一个很自然的问题就是怎么保证这样的检
索出的就是全局最优?
我们提出了一套方案,要求模型保证用户的兴趣分布必须服从最大堆的性质
最优 TopK;
4. 最大堆树的模型学习
DataFun:成就百万数据科学家!
如何学习中间节点的兴趣概率?
叶子层节点兴趣:用户对叶子节点的行为数据构建序标签
中间层节点兴趣:基于最大堆定义可推导每层的序标签
用深度学习模型拟合上述两个序标签
采样方案:
叶子节点:用户行为的隐式反馈来建模叶子节点的兴趣概率
中间节点:
传递性:叶子正样本上溯祖先仍为正样本
层次全局性:在每一祖先层随机负采样
5. TDM1.0:容纳任意先进模型
DataFun:成就百万数据科学家!
最大堆树的训练模式和检索模式为容纳任意先进模型提供了坚实的理论基础和强
大的效率保证。我们主要做的工作是在最大堆树这样一个约束之下,我们引入了
一些更加先进的模型,它跟双塔模型最大的区别在于我们模型里面考虑了用户的
为 拆 分 成 一 系 列 时 间 窗 , 然 后 我 们 在 每 个 时 间 窗 里 面 做 一 个 基 于 Item
的。
然后在这种情况下,我们在训练的时候就用之前所说的最大堆树学习的方法,把
棵树检索,得到我们最终想要的结果。大概在两年前,我们已经到线上后取得了
大概两位数的一个性能的提升。
DataFun:成就百万数据科学家!
6. TDM2.0:模型&索引联合学习
在 1.0 的时候,我们是在给定的一个树的范式之下,只考虑模型的学习,但其实
树的结构本身对于我们召回结果有非常大的影响,比如说考虑左下角这样一个例
子,在一些女装女鞋男装拿些这样个商品集合里面去构造一棵树,那么在这种情
况下,树构造有两种办法,一种是把女装和男鞋做一个聚合,然后把女鞋和男装
聚合,但这种方法可以看到它得到的聚合其实是没有什么意义的。一个更加合理
的划分方法是把女装和女鞋、男装和男鞋划分到相同的树节点,这样的话对于高
层的非叶子节点我们就有一些抽象的含义。
题抽象出来,其实就像右上角所示。所以在这种情况下,我们整个树模型的学习
过程就可以看成是对两项的优化问题。一项是模型的参数,也就是对带权二部图
的最大匹配问题,我们用了贪心的算法,最终得到一个分段式树学习算法。这就
7. TDM3.0:模型&索引&检索联合学习
合每层兴趣多分类的概率。正样本上溯路径节点+同层随机负采样。检索目标:召
一个最典型的例子就是我们在训练的时候,所用到的样本是一部分上述的正样本
以及一部分随机采样的。没有考虑到在线上检索的时候,实际上是自顶而下的一
望把线上检索的目标以及过程完全考虑到训练中,保证我们离线训练以及线上使
用的一致性。这样的话,实际上我们又从兴趣分类建模这件事情重新回到对于集
合召回建模这个事情上。
为了达到这一点,我们做了以下两件事情。
DataFun:成就百万数据科学家!
对检索过程建模:对齐数据分布
首先第一是我们对采样方式做了一个升级,就是我们不再通过正样本加负样本采
样这套方式来构造我们的训练样本,我们直接对我们这棵树做一个 BeamSearch
对检索过程建模:对齐训练目标
DataFun:成就百万数据科学家!
我们做的第二件事情就是说我们对于本身模型学习的目标做了一次改造,确保我
最优。我们与之前的方法做一个对比,在之前的方法,我们对于节点的标签的设
样本,从里面随机采样作为它的训练样本。我们后来发现这样一个设定方式,其
最优。所以我们换了一个样本构建的方式,就如右图所示,比如说这里面蓝色节
点都是我们检索到的集合,那么我们对于每个节点的标签,我们不只依赖于本身
item 用户是否点击了这个行为,每个节点的标签还依赖于从它的子节点上溯的标
签,以及模型对于它的子节点的一个预估分数。
分上溯的方式去设计每一层样本的拟合目标,还是一个 H 层的但是存在上下层依
赖的这样一个分类问题来做我们的模型的训练。他的训练方法也是一个循环迭代
的方式,就是我们输入原始样本的 minibatch,使用当前的模型做一遍采样就是
做一 BeamSearch 检索,得到每层的样本,然后采用目标构建的方式,对于这个
样本里面的每一个节点得到它的一个模型的标签,得到标签之后类似一个二分类
问题设计一个 loss,然后去对参数更新,然后如此反复迭代,直到收敛。
9. TDM 显著性效果
DataFun:成就百万数据科学家!
离线的话我们也做了一些公开数据集的测试,可以看到不管是从 1.0、2.0 以及
3.0, 它 的 召 回 率 都 有 一 个 显 著 的 涨 幅 , 跟 现 有 的 方 法 , 比 如 说 ITemCF 以 及
YoutubeDNN 这两个经典的方法来比,有个非常大的提升。
我们在每个阶段的思考也有一些论文产出,如果大家对具体的细节感兴趣的话,
可以参考我们的论文。
最后,讲一下我们在定向广告场景的一些落地使用,广告业务本身它有非常显著
的一个特点,就是我们商品召回的有效性其实比较低的,因为存在广告主的预算
是否花光,商品的上下架以及投放的时间的影响。所以这导致了在广告里面,我
态的结构。
所以在实际中我们采用了静态树结构加动态的正排倒排表这样一个实现方式。具
体来说就是我们本身这个树的结构是以正常的商品作为叶子,我们在这样的结构
之上做了一个实时的商品以及广告的倒排表,以及广告本身的信息做正排表。我
更新广告正排倒排表的顺序结构,这样使得整体能够保持一个比较高的召回有效
性。
04
展望
DataFun:成就百万数据科学家!
最后是总结与展望,然后我们还是回到我们本身检索这样一个问题,因为算力的
约束,导致形成了大家都认可的一个分阶段漏斗的形式,就是把整个检索过程拆
它做得更加扎实一点。大概是三个维度,首先是检索结构上,我们希望利用图对
本身树这样一个召回结构做一些近似的扩展,第二我们希望它能够去对多种目标
进行召回,比如说多考虑一些多样性发现性这些指标,另外还有一点是我们希望
能够把这种形式做一些可解释性的推荐。
最后回到检索问题本身,未来算力&算法升级使得检索不再是瓶颈,Match+Rank
一个整体的技术方案去实现从千万级百万级量级到个位数或者十位数这召回,也
就是所谓的合久必分,分久必合。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
多目标排序在快手短视频推荐中的实践
分享嘉宾:郑东博士 快手 推荐算法技术总监
编辑整理:于洋
出 品 平 台 : DataFunTalk
交数据。快手秉承的价值观是真实、多元、美好、有用,致力于提高每一个用户
独特的幸福感。而推荐覆盖了快手大部分流量,极大地影响整体生态,并直接作
束非常多,包括消费侧指标、生产侧指标和社交侧指标。本文主要讲解多目标排
序在快手短视频推荐中的实践。包括以下几个模块:
快手短视频推荐场景介绍
重排序:Listwise、强化学习和端上重排序
总结和展望
DataFun:成就百万数据科学家!
01
快手短视频推荐场景介绍
1. 关于快手
快手主要的流量形态 有 4 个页面:
① 发现页:致力于让用户看见更大的世界,分为单列和双列两种形态。
双列 点选模式,给用户提供选择的自由
单列 上下滑浏览,给用户沉浸式的浏览体验
② 关注页:一个半熟人半陌生人的社区,是私域流量的入口,比如和自己的好友
互动,浏览关注订阅的生产者作品。
③ 同城页:带给用户身边触手可及的生活。
在这些流量分发的场景中,推荐算法是起着核心主导作用,直接决定了用户的体
验。
DataFun:成就百万数据科学家!
2. 排序目标
快手短视频推荐的主要优化目标是提高用户的整体的 DAU,让更多的用户持续使
用快手,提升用户留存。在具体的排序建模过程,提升使用时长/正向反馈,减少
负向反馈,可以提高用户留存。从上图中部曲线可见,留存提升在累计一段时间
① 隐式正反馈,用户行为稠密,如用户在无意间的行为——播放时长、有效播放、
播放完成率、完播、复播等;
② 显示正反馈,需要用户有意识地做出反馈,不同用户间的行为密度差异比较大,
如收藏、下载、关注、点赞,发表正向评论等;
③ 隐式负反馈,用户行为稠密,如短播放、用户终止一次 session 等;
④ 显示负反馈,需要用户显式表达,如不感兴趣、负向评论、举报等。
而推荐的目标是提高正向反馈、减少负向反馈,提高用户体验。推荐分召回、粗
排、精排、重排几个环节;在排序阶段,模型预估用户对内容的个性化偏好,比
DataFun:成就百万数据科学家!
如,对上述各种用户反馈的预估值,然后,用机制策略将预估值融合成一个排序
分,对视频排序。
02
多目标精排:从手工融合到 Learn To Rank
1. 手工融合和简单模型融合
粗排/精排的个性化多任务学习模型,能预估 20 多个不同的预估值,如点击率、
有效播放率、播放时长、点赞率、关注率等,那如何用它来排序呢?从多任务学
习到多目标排序,中间有一个过渡,即如何把这些预估值融合成一个单一的排序
分?快手推荐追求时长、点赞、关注、分享等多种目标,以及减少不感兴趣等负
向反馈。通过合适的排序目标和机制设计,获得多目标的协同提升。下面,分别
型的 ensemble 打分两阶段工作。
Stage1:手动公式融合
DataFun:成就百万数据科学家!
该方法的缺点是过于依赖规则设计;依赖人工调参,且维护成本高;固定权重,
缺少个性化、场景化。
Stage2:树模型规则 Ensemble 融合
采用加权 Logloss:
上下滑无负样本,通过拷贝正样本实现对目标无偏估计
上线效果:同城页短视频时长提升 4.5%
2. 超参 Learn To Rank
DataFun:成就百万数据科学家!
用 拟合组合收益 label:
首先,介绍一个简单的双塔形式的 DNN,如上图右侧网络结构所示,视频塔直接
把各种个性化预估值拼在一起,形成一个 24 维向量;用户塔的顶层向量通过网
络学习,产出一个 24 维向量。最后,对视频塔和用户塔产出的向量做内积,损
失函数采用加权 Logloss:
由此,相当于通过学习线性加权的超参数去拟合最终的组合收益。其次,用户特
征选用了一种比较轻量级的方式,比如对用户划分不同的时间窗口:过去 1 分钟、
反馈拼接成一个向量,这些反馈包括有效播放、点赞、关注、分享、下载、观看
时长等,最后,将各时间窗口对应的反馈向量和 ID 类特征一起输入到用户侧网络。
融入 pXtr 特征,使用精排模型来学习最终的组合收益。因为这种方式支持更复杂
本质上是一个偏序的关系,即正样本和负样本之间的偏序。
03
复杂多目标:Ensemble Sort 和在线自动调参
前面介绍的是纯粹用模型的方式做多目标排序,但在复杂的业务场景可能不把所
有优化的目标都放在模型里。纯用模型的方式做排序,成本比较高,整个线上也
会比较繁重;包括一些生态上的调节、一些专项调节都不太方便。接下来,介绍
下在复杂的业务场景下,快手是如何做动目标排序的。
1. Ensemble Sort
在上图左侧表格中给出了一些复杂目标,包括用户的互动和时长的多目标线性加
权公式,还有分享后带来的外部效用和用户本身分享效用,其中,外部效用包括
对多种不同打分逻辑常规融合方法是做线性加权:
如点赞率等在不同用户间差异巨大,难以适应统一权重;并且依赖模型预估值绝
对大小,预估值分布变化时需重新调节或校准。
体地,把用户的个性化预估点赞率从小到大排序,把每个具体的值映射成它的序,
异巨大的子项分,保证各子项分权重在同一量级调节,并且隐式反馈的预估分在
能很好地和线上模型的效果保持一致性。通过以上的方式把多种不同的打分策略
融合在一起,适用于快手线上复杂的业务场景。
2. 在线自动调参
DataFun:成就百万数据科学家!
解释性好,缺点是效率低且依赖工程师经验;如果有两三个参数,可能人还能处
调优;并且这些固定参数很难在不同人群上做到个性化和场景化。
解决上述问题的一种方式是 Learn2Rank,即用一个模型离线学习各反馈的组合
权重。
使 用 , 模 型 的 自 由 度 和 复 杂 度 较 高 , 比 如 Learn2Rank 可 以 容 纳 item
embedding,并使用稀疏特征,可训练千亿规模的参数。
简化,比如从精排到最终吐给用户,中间还有重排、多样性的影响,还有
后面的一些和其他如商业化/运营流量的融合等等,所以该方式难以考虑到
线上复杂多模块间的完整影响。此外,线下训练数据和线上也存在不一致
性。
DataFun:成就百万数据科学家!
除上述方法外,其余优化
的离线学习方法,如一些非梯度优化算法:PSO(粒子群算法)、ES(进化策略)等,
即每次产生一组超参数(a,b,...,h),算一下该组参数对应的评估目标:组合 AUC
开发了在线自动调参框架。自动在线调参的工作机制如上图左下角所示,即在基
代,参数即可逐渐向一个多目标协调最优的方向前进。
优点是直接优化线上指标,灵活性高且反馈迅速,并且算法把推荐系统当
作一个黑箱,无需关心内部细节,可以做多场景联合优化,不限于 ranking,
在召回等场景也可以用。
缺点是需要线上拿出一部分流量做探索,用户有感知,会影响少部分用户
体验;每组几万或几十万的用户 积累几个小时的数据,只能产生一个样本
点,由此数据较稀疏,受噪声的影响较大,特别是一些稀疏的 label,如分
享、下载、收藏等 稀疏 label;能容纳的参数量较小,一般几十到数百,
相对离线学习的参数规模小很多。
接下来,介绍下在线自动调参的具体实践。
DataFun:成就百万数据科学家!
线上给 5%流量做探索,每次探索几十组参数。在每次分发时,探索组和基线组
同始同终,以基线组的样本量为准,每轮收集固定数量样本。这里,收集固定数
量样本是因为白天的高峰期和夜晚的低峰期流量大小不一样,如果按时间尺度去
划分,可能不同时间的样本量大小差异会产生方差噪声。
Reward 设计模块主要是衡量在每组参数下,时长和互动指标相比基线的涨跌幅
项:
收益项是主要优化目标,比如视频观看时长、个人页停留时长、评论区的
时长等。
约束项包括各种互动,比如播放、点赞、关注等。约束项使用非线性约束:
阈值内做线性的弱衰减,可以用一些约束轻微的去兑换时长;超出阈值的
做指数强衰减,避免约束项过分被损害。
调参算法主要开发了离线优化使用的各种超参优方法,包括交叉熵算法
了该算法的工作流程:从参数初始的高斯分布出发,一般均值选为线上基线参数,
方差手动设置,然后根据该高斯分布随机生成 N 组参数,每组参数都做在线 AB
组参数的均值和方差,并对方差做微小扰动(防止过早陷入局部最优)后得到新的
高斯分布,根据新高斯分布继续采样获取新样本...经过若干次迭代,最终会收敛
到一组较好的参数。该算法的优点是简洁、高效,超参很少;0 阶方法,TopK 选
棒;参数通过高斯分布扰动探索,偏离基线越多的参数选中的概率越小,线上指
标相对平稳。
在实践中,困扰比较多的是噪声。噪声主要来源是数据稀缺和稀疏 label。比如把
会比较大。上图右侧展示了“随着分组数的增加,不同互动类型的波动”,如播
能会更大一些。
相应地,降噪方法包括:增加探索组的流量、减少分桶数;增加每次累计的样本
量,如从两个小时的累计样本量增加到四个小时的累计样本量;用 PV 粒度替换
UV 粒度分桶,因为一个组 UV 可能就几百万,而每个用户每天会有几十刷,使用
PV 样本量就翻很多倍,所以使用 PV 的方差也更小,图中红线给出了按 PV 采样
分桶得到的方差,可以看到,方差都更小些。
除个性化排序场景外,我们也在其余更多场景尝试了超参优化方法,比如,召回
源配额分配时,主要调控召回源的数量多少、耗时及总收益的最大化;粗排和精
线多场景联合调参,精细寻找系统最优。
此外,考虑人群和上下文的个性化和场景化调参,比如通过一个广义线性模型来
龄段、性别;还有上下文特征,比如一天的上午、中午、晚上 来刻画这些参数的
04
重排序:Listwise、强化学习和端上重排序
介绍完精排,接下来介绍重排序相关部分。相比精排,重排序最大的特点是需要
可能会有损,比如看了一个风景的视频,紧接着再看一个风景的视频,它的效用
就会降低,而如果看一个差异较大的互补的视频,有可能会提高它的效用。
1. Listwise Rerank
有影响,比如在上下滑场景,看了前面的视频可能会对后面的视频有影响,但看
了后面的视频不会对前面的视频有影响。但作为一个组合收益,需要前后组合决
定总收益。比如把五个爱看的视频和五个不太爱看的视频放在一起,如果前五个
全是爱看的,而后面五个全是不爱看的,可能用户翻到第七个视频时,就会退出;
但如果把爱看和不爱看的夹杂着放,有可能用户能看完十个视频,可能还会从之
前五个不爱看的视频里探索出一个新的兴趣,即这种组合的收益会有更大的提升
空间。
DataFun:成就百万数据科学家!
频对后序视频的影响,能改善后序视频的推荐体验。
上线效果:App 时长+0.3%,互动持平或上涨
2. 强化学习 Rerank
试了使用强化学习做 Rerank。
依次贪心的选择动作概率最大的视频。比如上图左上角表示的过程:有 4 个候选
频时,reward 会兼容相关性、多样性及一些约束项。
DataFun:成就百万数据科学家!
过 Softmax 计 算 选 择 每 个 候 选 视 频 (Action)的 概 率 后 , 选 择 概 率 最 大 的 视 频 。
Policy 具 体 实 现 上 , 在 挑选 每 个 位 置 的 视 频 时 , 把 前 序 视 频 的作 用 编 码 成 一 个
大的。
函数加权求和:
和状态值函数组合得到 GAE:
具体训练时,没做 experience-reply,因为不同用户的样本间天然没关联,所以
不需要额外的去关联。而是使用一个仿真器帮助训练,好处是使用仿真器做探索
学习效率更高,基于仿真器做离线学习,再上线会更安全,使用 On-Policy 相比
Off-Policy 训练会更稳定。上图右侧给出了一个排序策略作用后,不同的模式样
例:离线日志有用户快速划过、播放、播放后的点赞行为,通过一个较好的策略
能把好模式排在前面。
3. 端上 Rerank
上 述 介 绍 的 是 在 云 上 服 务 器 做 Rerank , 同 时 , 我 们 也 尝 试 了 在 客 户 端 上 做
Rerank。
DataFun:成就百万数据科学家!
的最新反馈实时调整,每一滑实时从候选集中选择最佳的视频。端上 Rerank 的
优势有如下几方面:
用 户 对 当 前 视 频 的 反 馈 , 可 以 立 刻 影 响 Next-One 推 荐 , 不 必 等 到
PageSize(=6)再去服务端刷新;
上下滑场景替换后续视频后,用户无感知;
可以利用端上丰富的特征,包括一些数据量大、隐私等不便于上传到云上
的特征;
力和资源消耗。
征一起下发至客户端。
DataFun:成就百万数据科学家!
从云端下发到客户端的特征,包括用户特征、视频特征、用户实时反馈序列、视
频服务端的各种静态模型预估值和设备特征等,如上图左上角表格所列。
05
总结和展望
以上介绍了快手在多目标排序方面的部分工作,接下来给一个总结和展望,包括
粗精排阶段的多目标排序、在线自动调参和重排序几方面。
DataFun:成就百万数据科学家!
在多任务学习方面,后续打算解决的问题包括:训练过程不同目标间的差异导致
的梯度冲突问题;帕累托最优的权重设计,在训练过程中根据训练目标难易程度
方式,对噪声做更好的抗性处理;优化留存等更稀疏更有挑战的目标;把交叉熵
这种 0 阶方法升级到 1 阶。
时;在重排序过程,更好的融合相关性和多样性,端到端学习;除了上述,建模
上文对下文的影响外,上下文协同的收益还有提升空间;如何在端上更好地做实
时行为建模、引入丰富特征、云和端的配合等。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
如何将知识图谱引入推荐系统?
导读:在信息爆炸的互联网时代,推荐系统可以理解用户的个性化偏好和需求,
帮助用户筛选出自己感兴趣的产品和服务。然而,传统的基于协同过滤的推荐系
统无法解决数据稀疏和冷启动问题。知识图谱是一种表示实体之间的复杂关系的
异构图。在本文,我会介绍如何将知识图谱作为辅助信息引入推荐系统,以解决
传统方法的缺点和提升推荐系统的性能。主要介绍:
推荐系统
知识图谱
知识图谱辅助推荐系统
01
推荐系统
DataFun:成就百万数据科学家!
推荐系统的目标是满足用户个性化需求,降低用户筛选信息的难度。推荐系统有
的图书推荐会推荐与当前书相似的书,Booking.com 会推荐可能会感兴趣的旅游
的短视频推荐,以及音乐网站对用户可能感兴趣的音乐推荐。
推荐系统有两大任务,评分预测和点击率预测。
评分预测是给定用户对物体的打分,可以直接地反应用户喜好程度,因此
称为显式反馈(Explicit feedback)
点击预测是给定用户对物体的点击情况,并不能显式地反应出用户偏好,
因此称为隐式反馈(Implicit feedback),隐式反馈收集难度更低,因此
史行为算出用户相似度,并用相似度加权平均其他用户的评分来预测该用户未打
分物体的评分。
CF 存在的缺点:
用户、物体矩阵存在稀疏性,用少量数据预测大量缺失的数据存在过拟合
的风险。
冷启动问题,难以解决新用户和新物品没有历史数据的情况。
2. CF + Side Information
通过引入辅助信息(Side Information)来解决协同过滤存在的问题,常用的辅
助信息包括社交网络比如微博间关注的关系、用户物品的属性信息、图片文本音
频视频等多媒体信息、上下文信息比如购买时的位置时间信息。
DataFun:成就百万数据科学家!
02
知识图谱
异构图,它的节点表示实体,边表示实体间关系。一个 KG 通常包含多个三元组,
1. 知识图谱实例
以电影推荐为例,一个用户看过的电影可以靠 KG 中的实体连接到其他电影,通
过合理推断,可以认为用户也会喜欢与该电影紧密连接的电影,因此从电影的属
性和特征出发,一个 KG 可以帮助我们合理地推测用户的兴趣。
DataFun:成就百万数据科学家!
以新闻推荐为例,可以通过用户阅读过的新闻实体,利用 KG 重复扩展并连接到
另一条新闻。虽然下图中上下两条新闻字面上没有重合,但可以通过常识知识图
谱进行判断关联非常紧密。
体 embedding。
embedding 上的投影,计算投影之间的关系。
换后的投影满足三元组的关系。
03
知识图谱辅助推荐系统
问题定义(Problem Formulation):给定用户集合、物品集合、用户参与标签
^
,以及相关知识图谱 G,目标为预测用户点击概率 y u v 。
知识图谱嵌入方法分为两类:
基于嵌入方法(Embedding-based methods)
基于结构方法(Structure-based methods)
将 KG 和用户物品交互的图结构概括在一个统一的框架下,挖掘图结构信息。
① 框架
给定新闻数据,使用实体链接提取出相对应的实体,利用给定实体取出完整知识
Knowledge-Aware CNN
核高度变为 3。
给 定 用 户 历史 新 闻 数 据 和 候 选 新 闻, 判 断 用 户 是 否 对 候选 新 闻 感 兴 趣 。 先 使用
最 后 的 权 重 , 利 用 attention net 的 权 重 加 权 用 户 历 史 数 据 可 以 得 到 用 户 的
得到点击候选新闻的概率。
DataFun:成就百万数据科学家!
② 实验
① 框架
矩阵压缩为向量。
DataFun:成就百万数据科学家!
embedding,最后拼接来计算点击概率。
预测值和真实值之间的差距作为损失函数。
DataFun:成就百万数据科学家!
因此,整体的损失函数分为三块:推荐系统的损失、KGE 的损失和正则损失。
② 实验
分别在四个数据集上进行了实验,实验结果好于其他方法。
DataFun:成就百万数据科学家!
Structure-based 方法,以跳数来表示用户的兴趣传播,类似于水滴的传播过程,
2018.)
① 框架
DataFun:成就百万数据科学家!
输入为用户和物品,输出为用户点击物品的概率。利用用户的历史点击数据 v u ,
点 t 与候选物品 v 的关联概率。
利用关联概率加权平均得到用户的一阶表示,不断重复传播过程,得到多个用户
在给定 KG 和用户物品历史数据时,基于最大化后验概率来计算模型参数,利用
贝叶斯方法将概率公式拆为三项。
第一项为模型参数的先验分布,采用高斯分布作为先验。
第二项为给定模型参数判断观测知识图谱的可能性函数,即通过头实体、尾实体、
关系 embedding 的乘积来模拟出现的概率,如下图公式。
DataFun:成就百万数据科学家!
第三项为给定 KG 和模型参数判断用户历史行为的物品点击概率函数,为伯努利
分布,如下图公式。
将概率公式取负对数后得到最终损失函数。
② 实验
实验结果好于其他方法。
DataFun:成就百万数据科学家!
① 方法
KG 中 的 边 不 存 在 权 值 , 因 此 引 入 , 通 过 用 户 embedding 和 关 系
最终点击概率如下图公式计算。
② 实验
5. 比较
需要重新训练。
观。
DataFun:成就百万数据科学家!
04
总结
知识图谱可以作为解决数据稀疏性和冷启动问题的一种新的推荐系统辅助信息,
引入知识图谱辅助推荐系统,可以提高推荐系统的准确性、多样性和可解释性。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
蜻蜓 FM 信息流推荐探索与实践
文 章 作 者 : 季 飞 蜻 蜓 FM 推 荐 技 术 负 责 人
内容来源:作者授权
出 品 平 台 : DataFunTalk
导读:如今的推荐系统在互联网中随处可见,无论是刷抖音、逛淘宝还是看新闻
背后都有强大的推荐系统的支持。音频行业的内容如何分发?如何提高用户发现
音频内容的效率?蜻蜓 FM 作为国内首家互联网音频媒体平台,在音频行业深耕
了 10 年,对此也有一些沉淀和经验想要和大家分享。
DataFun:成就百万数据科学家!
主要内容包括:
蜻蜓首页场景怎样从人工运营演进到个性化推荐
蜻蜓信息流推荐由哪些算法组成,彼此怎么配合
整体推荐系统架构及算法模型如何部署到线上
蜻蜓信息流推荐场景后续发展的一些思考
01
场景
1. 人工推荐时期
DataFun:成就百万数据科学家!
早期蜻蜓首页流量的分发是以模块形式展示,每个模块可配置横排和竖排的个数。
此时只有个性推荐模块的内容由推荐算法生成,其他模块则是由运营人工维护。
模块中的内容需要运营定期进行更换,展示内容的更新完全依赖人工,效率显得
很低。
为了提高运营人工工作效率,我们引入了策略推荐。
2. 策略推荐时期
策略推荐时期运营的工作由之前每天更新模块中的内容,变成了为模块绑定内容
库和选择合适的排序策略。内容库中的内容是由配置的分类、属性动态生成和更
新,运营为单个模块的配置基本可以做到了一劳永逸。
DataFun:成就百万数据科学家!
模块之间怎么排序?模块中的内容排序策略怎么选才能收益最大化?成了新的挑
战。
3. 个性推荐时期
通过数据发现个性推荐模块效率高于其他策略推荐的模块,首先尝试了扩大个性
推荐模块中内容的数量,由 3 个变 6 个。验证了对首页整体效果有提升后,把多
个模块合并成一个信息流的个性化推荐的想法应运而生,线上 AB 实验结果表明
DataFun:成就百万数据科学家!
信息流的个性化推荐各项指标均高于多个模块的策略推荐。信息流的形态是单排
还是双排?经过 AB 实验,最后选择了效果更优的双排。
个性推荐时期运营对于少数专辑依然会有流量扶持、推广的的述求,在个性化推
荐的基础上增加了投放系统。投放系统中还支持通过不同标题、封面对单个投放
计划生成多个创意,多个创意之间数据表现好的沉淀下来推广到更多的场景中。
运营不再局限于选择内容,更为重要的是重新组织创造了内容,充分发挥出了运
营在想象力、创造力上的价值。
4. 小结
DataFun:成就百万数据科学家!
首页场景经历人工推荐、策略推荐、个性推荐三个阶段。策略推荐基本解决了人
工效率问题,个性推荐进一步解放人力的同时也带来了数据指标的显著提升。
02
算法
伴随着首页场景的演进,蜻蜓的推荐算法也在不断的完善和迭代。
1. 推荐算法流程
DataFun:成就百万数据科学家!
推荐算法的流程大致如下:内容池中达到推荐标准的内容的有几十万个,召回层
从中选出用户可能喜欢的几千个进入粗排层,召回层的覆盖度决定了整体推荐内
容的覆盖上限。粗排层从召回结果中挑选出几百个给到精排层,粗排层主要为了
减小在线算力减轻精排的压力。精排层选几十个给到重排层,精排层专注于推荐
的准确性。最后,重排层对推荐结果进行重新排序给到用户,这一层兼顾准确性
的同时还需要保证多样性。
级联结构简单,分工明确。兼顾了覆盖度、性能、准确性和多样性。
2. 多路召回
熟悉了推荐的算法的大致流程后,首先,我们来了解一下多路召回。多路召回在
不能太高,多路召回的设计可以方便加入新的策略或者算法。我们在实践中发现,
早期建立完善指标,追踪每路召回的效果,有助优胜劣汰;召回的效果并不是召
DataFun:成就百万数据科学家!
回算法越复杂越好,不同的业务特点不一样适合的召回也可能不一样,比如蜻蜓
需要与现有召回有差异性、互补才会有存在的价值。召回环节还会承载业务及平
台建设的使命比如用户和物品的冷启动、业务流量扶持等,召回环节的好坏直接
决定了后续环节的上限。
3. 粗排
接着是粗排,早期的推进系统中粗排常常用简单的融合策略进行,实践中发现粗
排中引入算法是值得的。策略的组合较多测试周期长,双塔模型的应用既解决了
多路召回组合的效率问题,又避免了精排的性能问题。
的计算所需算力小。在蜻蜓为了保障粗排推理数据的实时性,User 向量的生成及
点积的计算都是实时的。粗排的加入在数据指标指标上也获得了不错的收益,其
4. 精排
DataFun:成就百万数据科学家!
然后是精排,精排往往在推荐系统中最受关注,精排直接对准确性负责,相对容
易拿到直接的收益。我们在精排的投入相对较大,从中获得的收益也相对颇多。
及神经网络模型的 DeepFM。
XGBoost 迭代时间最久,其中模型参数的调优、特征挖掘(包括交叉特征和实时
特征的引入)、日志数据的准确性优化以及实时排序,这些整体给在线收听数据
收听相关指标的提升。DeepFM 顺理成章地成为了精排模型的主力,也开启了蜻
蜓推荐算法在深度学习道路上的大门。
5. 重排
最后是重排,重排跟召回一样承载了很多业务向的目标和期许。这里主要讲一下
多样性,提升多样性一方面希望打破推荐系统的信息茧房,另一方面也希望提升
Marginal Relevance)最大边际相关性算法,保证相关性的同时提高多样性。通
过λ参数来调节多样性和相关性的权重,λ越大相关性越高,λ越小则多样性越高。
DataFun:成就百万数据科学家!
MMR 算法中有两个相似度,用户和物品的相似度用精排的打分值来表示,物品
之间的相似度基于协同过滤的物品相似度。重排的预期是达到帕累托最优,在其
他指标都不降低的情况下,提升多样性指标。
最终也达到了预期,人均曝光专辑数量增加 8.84%,人均收听二级分类数量提升
7.06%。
03
DataFun:成就百万数据科学家!
架构
1. 整体架构
推荐系统能高效稳定地运作,离不开优秀的架构支持。蜻蜓的推荐架构是典型的
三层架构,即离线、近线、在线三层。离线层负责数据的处理、模型的训练以及
数据报表;近线层实时特征处理、召回、粗排;在线层承载了用户请求响应、精
排、重排以及投放系统等业务逻辑。
2. 算法模型部署
DataFun:成就百万数据科学家!
算法模型如何高效地部署到线上?是算法和工程同学共同面临的挑战。开始的时
API 测完成,模型预测服务负责加载模型并对对获取的数据进行预测。在线特征
了开发很多的时间。离线和在线能否公用一套算子进行特征的拼接与处理?为此
一致性。同时,模型预测服务中增加了对多模型、多版本的支持以及模型的自动
更新进一步提高了模型部署的效率。
04
展望
首页信息流推荐从 0 到 1 建立起来,迭代、优化、完善到现在取得了不错的增长,
面向未来还有许多工作需要我们去尝试和探索。内容方面,如何帮助新品内容一
DataFun:成就百万数据科学家!
步一步变成曝款,产品、研发、运营如何合作建立出完善的内容生态系统;业务
方面,信息流支持的业务越来越多包括专辑、直播、听单、节目、广播等,多业
务如何更好的融合在一起也是一个挑战;用户方面,新用户的冷启动,沉默用户、
潜在流失用户如何激活还有很长的路要走;算法方面,模型的训练如何做到更加
实时,多目标的排序是否有望代替单目标排序。这些都将是我们接下来探索的方
向。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
算力经济时代:阿里展示广告引擎的"柔性"变形之路
文章作者:阿里展示广告技术团队
内容来源:作者授权
序曲:纵观这两年业界技术的演化趋势,几乎主流的团队都已经完成了深度学习
为代表的技术升级,进入到算力吃紧、模型红利放缓的新瓶颈期。去年在《深度
阶阶段的特征做过一些探讨:
的实践和问题驱动,进一步拓展到更宏大的技术体系整体思考:领域问题特性、
数据、算力、算法、架构及工程系统等将被纳入统一的思考框架中,成为技术创
新的发力点。
从 2018 年开始我们团队就开始做相应的布局。除了在算法层面持续开辟纵深战
场外,对于"算力"这件事我们做了大量细致的工作,这几年支撑了我们的核心广
SIM(2020)、CAN(2020)。值得一提的是,在业界普遍陷入滞涨的这个阶段,今
加在主模型之上的多场景、多目标建模也都有所突破,核心场景取得了 CTR/RPM
第二个技术创新小高峰。
统全流量服务报以怀疑的态度。的确,在这种大规模的广告系统中支持
模型,我们的广告召回模型、粗排模型,甚至后链路的机制策略、rerank 模型等,
都面临着相似的恐怖算力激增挑战。如何解决这个问题呢?18 年的时候我做过一
个断言:
新突破的胜负手。
幸运的是,经过近 3 年的辛苦跋涉,我们终于在转角处闻到了蔷薇的花香。近期
我们陆续开始把一些成型的工作总结和分享出来,希望能够给大家带来一些启发,
co-design,那本文则是我们这一思想的更深度推进:进一步发展"个性化算力"
DataFun:成就百万数据科学家!
技术,将算力融合到广告引擎的设计中,形成更全面立体的算力解决方案,同时
也给古典的引擎系统赋予了全新的动力。"算力经济时代" 看起来有点标题党,但
我认为这是对算力在这个时期技术版图中重要性的最好注解了。
以下是本文的具体内容,来自阿里展示广告技术团队 ( 致谢相关兄弟团队的大力
支持 )。友情提醒,它解决的不是传统的算法或者引擎领域问题,因此不一定适
合所有读者。哪怕是广告、推荐领域的从业者,如果没有接触或者思考过这类命
题,亦或是对引擎系统的细节了解不多,读起来也会有点艰涩。
01
导读
的重塑力度会如此之大、如此之深。这背后的一个重要变量是"算力"。随着深度
学习技术的大量创新,广告、推荐等在线引擎系统中的架构和算法复杂度迅速飙
升,对算力的需求出现了爆发式的增长。以阿里展示广告系统为例,相比于 5 年
前的精排模型,其在线算力的需求暴涨了近 2 个数量级[2,3,4]。如此惊人的算力
逼近摩尔定律极限。
面临着算力供给触及瓶颈的巨大危机,我们看到不论是工业界还是学术界都在积
极寻找解法。阿里展示广告团队从 18 年起就开始布局算力效能技术的研发,目
前已经迈入了第 3 代算力效能体系的阶段:
了显著红利
"个性化"算力的思想去重新审视和改造了整个广告引擎系统,为古典在线
引擎注入了新的活力,让它变得更加"柔性":充分提升给定算力的性价比,
让其在面临任意复杂、动态的业务需求和流量环境时能够自适应地做到算
力最优使用。
结合了算力效能视角的展示广告引擎,我们命名为 Transformers(致敬变形金
刚),本文将分享我们的实践经验和思考。值得一提的是,算力效能感知的柔性
落地于阿里展示广告业务:
系统能力上:具备柔性能力的广告在线系统平稳地应对了双十一的各种流
量波动和日常的各类系统异常,大幅提升了系统稳定性和运维效率。
02
开胃菜:先来看看算力分配这件事
我们可以从微观和宏观的层面来理解在线系统的算力分配问题。
微观上:在某一时刻,不同流量的价值不同,算力消耗也不同——也就是
算力性价比不同。我们可以根据算力性价比,为每个流量分配更合理的算
DataFun:成就百万数据科学家!
务收益的全局最优。
宏观上:由于流量大小和分布会随时间不断变化,那么在总算力约束下,
算力分配策略也需要动态调整,来保持业务收益的动态最优。这种微观和
宏观相结合的视角,能够有效地帮助我们拆解问题。
图 1:算力分配的微观&宏观视角
Transformers 引擎的核心理念,就是将算力分配纳入到系统的设计范畴。对于古
典广告引擎而言,其使命是确保引擎系统能够准确地实现和运行业务逻辑。对任
意一条流量请求,原则上执行的计算逻辑是一致的 ( 这里仅考虑算力差异化视
角 )。在资源充足时这是合理的策略,但在算力紧张、需要腾挪资源甚至算法策
略降级才能在特定的系统资源约束下完成业务逻辑时,这背后就隐藏着巨大的效
能空间。以广告系统为例,我可以选择:
开足算力对每条流量做最精细化最复杂的计算,对超出系统算力的部分流
量做丢弃操作;
对不同价值的流量做差异化的算力规划,确保系统对每条流量都有效服务。
算力伸缩,确保业务收益最大化。
DataFun:成就百万数据科学家!
03
形式化:算力分配的数学化表达
我们来具体分析宏观、微观两个层面的算力分配问题。首先,我们需要具象化地
理解"算力"。系统算力往往被计算相关的参数控制,包括算法策略参数 ( 检索
在线系统通常会包含很多这样的算力参数。我们用"档位"来描述这些算力参数的
取值,不同档位代表不同的算力消耗。档位选择的过程就是算力分配的过程。对
刻 的 算 力 分 配 问 题 , 可 以 描 述 为 该 时 刻 的 N(t) 个 流 量 的 总 算 力 消 耗
在 不超 过 总算 力约 束 C 的 前提 下 ,如 何最 大 化总 业 务收 益
的问题。
图 2:算力分配问题定义
DataFun:成就百万数据科学家!
束 C 通常会相对稳定。我们将某一时刻在 约束下的
策略推广到所有时刻,理论上就可以实现动态的算
力最优分配。
在下文中,我们将分别介绍特定时刻下的算力分配算法和考虑宏观变化下的系统
实现。
04
静态算力最优分配:DCAF 算法
首先我们来看某一时刻的算力最优分配求解。延续上文的形式化定义,将算力配
则优化目标和约束定义如下:
1. Lagrangian 求解思路
DataFun:成就百万数据科学家!
这 里 为 大 家 介 绍 我 们 团 队 自 研 的 DCAF 个 性 化 算 力 分 配 算 法 。 我 们 使 用
Lagrangian 方法来求解这个带约束的优化问题,引入额外变量λ:
并相应地构造对偶函数 g(λ):
可 以 看 出 , 对 于 任 意 给 定 的 λ , 对 偶 函 数 g( λ ) 在
时最优。
中进行线上服务。
2. λ的含义:算力边际收益的约束
对 于 流 量 i , 在 给 定 λ 下 , 若 档 位 j 优 于 档 位 j' , 则 有
λ。也就是说:一个档位相比另一档位更优,当且仅当其算力边际收益△value/
△cost>λ。因此,可以认为λ是对算力边际收益的约束。
DataFun:成就百万数据科学家!
图 3:算力消耗-收益曲线 ( 边际收益递减 )
务收益也越大,反之亦然。因此,总消耗和总收益会随着λ减小而单调递增,而整
体算力性价比会随着λ减小而单调递减。
3. λ的求解:算力约束的临界状态
知道了λ的含义,接下来看使得 g(λ)最优的λ如何计算。由单调性和算力约束可以
想到,尽可能地多用算力可最大化价值。而稍加整理也能看到 g(λ)的现实含义就
是"已使用算力的总收益"+"λ倍的剩余可用算力"。通过分析λ减小/增大时这两部
到极大值。由弱对偶性可知,此时的 g(λ*)对应的解也正是全局最优解。
DataFun:成就百万数据科学家!
因此,在离线静态求解λ时,利用算力总消耗随λ减小而单调增加的性质,我们只
需通过二分查找去找到最接近算力约束 C 的λ即可。而面对在线流量的连续变化,
我们也无须每时每刻重新求解λ,只需根据每一时刻的算力消耗和算力约束的相对
关系,对λ进行实时微调即可——全局维护当前时刻的λ t 并统计当前时刻的总算力
消耗 。 若当前时刻总算力消耗超过了 C,则在下一时刻通过上
调λ t + 1 来降低算力消耗从而满足约束,反之亦然。由此,在流量平稳时,通过动态
维持总算力消耗恰好满足算力约束,几乎可以保证每时每刻系统都处在最优的算
力分配状态;而当流量突变时,系统也可以在较短时间内调整到满足约束的状态。
具体的系统方案将在下面章节展开。
4. 流量价值/消耗预估和最优档位求解
如何预估呢?
消耗预估,取决于算力参数的选取,通常只要找到可量化的算力指标并且在档位
DataFun:成就百万数据科学家!
间相对可比即可 ( 例如,召回阶段选取检索标签数、海选广告数作为参数,预估
阶段选取特征数、广告数作为参数 )。以精排阶段的算力分配为例,个性化算力
为业务增长打开了显著空间,并且该算法方案不局限于单个模块、单个算力参数,
05
动态算力最优分配:AllSpark 架构
1. 实时反馈调节
问题。该方法如果推广到所有时刻,在宏观层面实现动态的算力最优分配,关键
点在于让"作为算力性价比约束的λ"动态保持最优——λ过大则有可能算力用不完
出现浪费,反之λ过小则有可能超出算力约束。上文已经提到了"根据每一时刻的
算力消耗和算力约束的相对关系,对λ进行实时微调"的思路,那么就需要让在线
系统具备实时反馈调节的能力,一方面争取让算力"恰好用完" ( 既满足算力约束
我们选择了"模块调用失败率" ( 由资源不足和其他异常导致的调用超时和错误 )
作为主要调控指标,根据实时反馈的模块失败率来调节全局的λ,从而实现动态的
算力最优分配。当然,这里的调控标的指标在不同的引擎系统中可以选择不同的
锚点,一个可供参考的原则:选择对算力的波动最敏感的系统指标。
DataFun:成就百万数据科学家!
2. 系统设计实现
在所有流量上共享一个全局的λ,也可以认为所有流量的平均档位对应一个全局的
λ。为了便于理解和简化实现,在线系统可以考虑直接对每个参数的平均档位进行
实时调节。另一方面,为了实现系统整体的算力最优分配,系统的每个模块都定
义了不止一个算力参数,这些参数如果分别独立地自我调节,一是非常复杂,二
是不容易形成全局最优。因此真实场景中的算力参数设计需要考虑更加全面。例
如我们采用了模块失败率作为主要调控目标,那么就可以把同一模块内所有按失
败率调节的算力参数聚合成一个调控单元,一个调控单元由一组 { 调控目标、调
控策略、平均档位 } 组成,单元内的所有参数共享调控策略和平均参考档位。
再回到系统设计。实时反馈调节系统可以认为是在线引擎的非侵入式控制器,它
既是一套独立的框架,也能够与在线引擎系统密切配合,共同实现算力调节的能
调节链路、反馈链路、控制面板、监控视图。
图 4:AllSpark 动态算力框架
DataFun:成就百万数据科学家!
单元的平均档位建议,起到动态调节λ的作用,同时让各模块满足算力和可
用性的约束。Controller 作为算力调节的中控,需要做到稳、准、快。为
则等多种调控策略,以及去噪、防抖等平滑机制。Agent 是嵌入在每个应
均档位等调控信息,来确保该模块在平均档位的建议下安全运行。同时,
力。可以看出,Controller-Agent 的两级调控机制,既保证了每个模块整
体满足算力约束,又能够针对不同流量做个性化的算力分配。
反馈链路:各模块用于算力调控的指标会通过反馈链路采集到 Controller。
链路目前具备 5s 左右的反馈时效。
据情况决定每个参数使用固定档位还是动态档位,并且通过版本控制以及
分集群的发布管控,实现可灰度、可回滚的能力。
DataFun:成就百万数据科学家!
监控视图:可以想象,整个系统中数以百计的算力参数实时动态地变化,
如果没有完善的监控和异常发现能力,系统随时可能陷入失控的状态。监
控视图用于透出每个算力参数的实时/历史平均档位,并且将档位的异常变
3. 系统柔性表现
示广告场景在双十一零点高峰时段有十倍于日常流量的洪峰。零点之后,流量呈
阶梯状逐步回落。往年为了扛住流量洪峰,需要手动推动策略降级预案,并且需
要根据流量的变化推送不同版本的降级预案,实现流量和算法策略的最优组合,
来确保业务收益最大化。问题在于人工操作的成本很高,风险也很大。AllSpark
的上线使得双十一的保障有了很大改观。零点时段只需要推送一个基础版本的降
系统在高水位下的平稳运行,同时确保了零点黄金时段的业务效果。事实上,仅
零 点 附 近 1、 2 个 小 时 的 系 统服 务 能 力 增 强 ( 用 更 强 的 算 法策 略 服 务 更 多 的 流
量 ),就给我们的广告收入创造了千万人民币规模的收入增量。
DataFun:成就百万数据科学家!
图 5:2020 双十一大促系统表现示意图
除了能够在大促期间柔性应对各种流量洪峰之外,AllSpark 在系统的日常稳定性
保障上也发挥了重要作用。当系统偶尔出现局部模块的超时抖动时,AllSpark 能
够自动降低问题模块的算力负载、加速问题恢复,从而将故障隔离在局部,确保
系统整体的健壮可用。
06
Beyond 算力:再看 Transformers 柔性引擎
个性化算力分配算法+自适应动态算力系统相结合,使得广告引擎系统具备了柔性
能力。这样的系统就像变形金刚一样,能够自动变形成最适应环境变化的状态,
因此我们也把被赋予了柔性能力的在线系统称作 Transformers。事实上,跳出算
多场景调控:Transformers 不仅能在时间维度的静态和动态层面实现算力
最优分配,还能够在空间维度的多场景复杂业务系统中起到算力调控的角
DataFun:成就百万数据科学家!
色。由于不同业务场景的流量规模和流量价值差异很大,从安全隔离的角
度通常做法是分场景独立地部署系统。那么如何为每个场景分配合理的算
力并且动态维护最优呢?这往往很难,而且对一些场景快速变化的响应速
度是不足的。Transformers 给我们提供了一条新的解决方案:无须多场景
场景资源共享的同时实现跨场景的全局算力最优分配、业务收益最大化,
以及系统整体平稳可用。
业务系统大脑:Transformers 柔性系统区别于传统的负载均衡、自动化限
流降级等系统层面的解决方案,它站在业务系统的全局视角,追求算法策
略的算力最优分配、业务收益最大化,同时让系统在计算资源利用率、
演了业务系统运行时大脑的角色,这也是我们对在线系统未来演进方向的
判断和探索。
Reference:
https://arxiv.org/abs/2006.09684
Behavior Data
https://arxiv.org/abs/2006.05639
[3]. Wang et al, COLD: Towards the Next Generation of Pre-Ranking System
DataFun:成就百万数据科学家!
https://arxiv.org/abs/2007.16122
[4]. Zhou et al, CAN: Revisiting Feature Co-Action for Click-Through Rate
Prediction
https://arxiv.org/abs/2011.05625v1
原文链接:
https://zhuanlan.zhihu.com/p/340467381
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
阿里定向广告智能投放技术体系
导读:随着经济数字化地快速发展,互联网广告在赋能商家营销、帮助消费者高
效了解商品和服务、以及商业平台的变现等方面扮演着越来越重要的角色。互联
网广告生态中,广告主通过付费在媒体上对目标用户进行营销信息传达来完成营
销过程。其中,广告主通常希望在有限的资源投入下最大化营销效果。然而流量
环境、其他参竞广告形成的竞争环境的复杂性、以及广告投放策略中出价、目标
人群、资源位、投放时间等变量的巨大组合复杂度,使得最优广告投放策略的计
算与执行充满了挑战。通过本文,我们将从更好地帮助广告主做营销的视角出发,
比较系统地介绍阿里妈妈定向广告团队基于广告主投放需求不断技术创新,建立
起的一套持续演进的广告智能投放体系,具体包括预算约束下的报价策略、多约
束下的报价策略、合约保量报价策略、基于长期价值的序列投放报价策略、跨渠
道智能投放策略等核心技术能力的算法与实践经验。
DataFun:成就百万数据科学家!
01
背景介绍
今天主要分三个部分,第一部分先介绍广告业务的背景,第二部分会沿着如何帮
助广告主更好地做好营销的历史脉络,讲解智能投放体系和技术的演进过程,最
后会给出整个演进的总结,以及对未来的展望。
1. 广告业务背景概述
首先广告是什么,我把它抽象成了这样三个部分,在广告生态里,包括广告主,
媒体(或者广告平台)和用户。广告的逻辑就是广告主在媒体上付费,通过媒体
对目标用户进行营销信息传达,影响用户,让用户购买广告主的商品,形成信息
和金钱的流动,也形成用户广告之间物质的流动。
作为一个广告平台来说,在中间起到了一个很重要的桥梁作用。一方面是要能够
给广告主提供足够多的功能,让广告主表达诉求,然后广告主也要通过合适的方
式向媒体付费。
DataFun:成就百万数据科学家!
另一方面,媒体还要基于广告主设定的策略,决定把广告投放给谁。所以媒体在
中间起到桥梁的作用,要设定好广告对接机制,向广告主售卖的机制,以及把广
告主的物料用怎样的投放策略投放给用户。
为什么需要这个机制?因为流量类型多种多样,售卖的时候,既可以按点击去卖,
也可以按展现去卖。卖广告的时候,可以卖给品牌类广告主,或者卖给效果类广
告主。另外卖流量的时候,怎么去收费呢?
其实这些问题都是需要去想清楚的,因为只有把这些事情想清楚了,这个商业模
式才能够确定下来,才能够迎合当前市场的整体需求。
这里要考虑的角度是两方面,一方面就是媒体自身业务,要思考它的发展,然后
去设计符合媒体自身的机制,包括商业化率,如何去介入,整个坑位的布局,出
价,溢价等等。另一方面就是广告主方面机制的考虑。媒体以什么样的方式给广
告主定价?广告主是手动类的出价?还是以合约的方式,让平台来去帮广告主计
算出价等等。这两方面都有非常多的概念要去考虑,才能把商业模式确定下来。
DataFun:成就百万数据科学家!
除了考虑机制之外,还要去思考这个平台如何帮助广告主选择合适的广告投放策
略。
场景一:CPM 计划
计费。
场景二:合约计划
流量的情况,只关心整体的投入和产出。在这样的设定下,平台就一定要保证广
告主的投入和产出结果,这种就是合约类的计划。
场景三:序列投放计划
这是我们今年的一个创新:有的客户说要投一个广告计划,这个计划可能投放很
长时间,对用户可能会产生多次的曝光和持续的影响,希望通过这种持续的影响,
DataFun:成就百万数据科学家!
能够优化累计转化数。这种在广告策略上不一定追求短期的收益最大化,而是要
去追求一个长期累积的收益最大化。
所以这里会迎合不同广告主的诉求,平台需要具备给出不同的广告投放策略的能
力,提供一个成体系的工具,服务好广告主。
2. 广告业务迭代的历史脉络
去预估价值,并且基于预估出来价值去对流量粒度做出价调整,衍生出来
OCPM/OCPC 这样能力。为了保证广告主的结果的确定性,又有了合约保量的能
的成本。在这个基础上我们又做了升级,让广告主只表达一个整体的投入和结果
的预期,这样平台能够结合预期去自动的帮广告主在每条流量上出价,所以又有
Constrained Bidding。我们可以跨各种渠道,通过序列的投放广告影响用户,然
后形成预算约束下的效果最大化,所以整个发展的脉络的能力是不断升级。从优
化目标上,我们也是从最早的优化通用的展现/点击,到优化成交/ROI,到优化电
商系统里面用户对商品的加购/收藏/关注以及任意的后验目标,包括从短期价值
到任意的长期价值的优化,所以优化目标能力也是在不断地演进的。我们这些相
3. 广告业务技术能力总结
这里把我们积累的能力做下总结。最早的时候,广告主在广告平台上朴素地按照
PV 或者点击出价。这种出价其实是一视同仁,比如所有 PV 都值 1 元,所有点
点击的价值就可以去做实时地预估。做了预估以后,比如广告主认为一个点击值
度的价值预估和优化。进而再去升级到 BCB,对结果也能有一个提前的确定性保
DataFun:成就百万数据科学家!
销售 KPI 和最终结果的保障性有强烈的要求,他在这一天必须把这钱花出去,拿
到这么多流量。我基于对过去的流量和未来流量的规律把控,能够帮助广告主去
保证它的效果,就迎合了广告主的诉求。预算约束下综合出价,就是帮广告主从
手动挡升级到自动挡。多约束下自动出价,就是我们除了帮助广告主去满足预算
的约束,有些广告主他不希望自己的一个 PV 或者一个点击的花费太高,所以他
约束,在我们平台现在也是可以表达的。表达了之后,这些约束我们都会帮他满
足,然后具有一个相应的自动出价的能力去把这个计划投放出去。
化。这个合约就是我们要去提前保障广告主结果的确定性。但是这种合约在很多
而实时竞价就是按实时的竞争拍卖结果卖,但这种割裂的方式显然是不符合市场
经济,而是用计划经济的方式把两种模式强行分开,然后分别去做优化。最好的
全局的最优化。
做到全局的收入的优化?所以这都是很有挑战的问题。
今年我们提出来序列投放优化长期价值,很多用户看广告不仅是看一次。但是很
多广告平台有频控,用户只能看一次广告,再来广告曝光,就简单粗暴地不允许
用户看了,用这种很生硬的方式进行频控。但根据我们的统计会发现,在电商领
DataFun:成就百万数据科学家!
域有很多用户,第一次看广告,是不会去购买的,但是第二次看了广告,可能就
购买了,而且可能超过 50%的购买都是发生第二次广告曝光或者第三次广告曝
光。这也就出现一个问题,有的用户确实让他只看一次是合理的,因为他这次没
有兴趣,以后就没兴趣。但是有的用户给他多看几次,他的心智会有加强,反而
会形成一个累积的购买结果的最优。所以我们今年也推出序列投放,就是希望能
够去挖掘用户的长期价值,让广告系统再去评估广告投放或者不投放的时候,不
否能做到最优化,对序列化投放基于长期价值这个角度去优化广告的投放。
最后,我们今年也有一个很重要的产品叫 AI 智投,解决广告主的一个很大的痛点。
广告主现在可以有很多的营销平台,去投品牌广告,搜索广告,还有定向广告。
所有这些广告,广告主从传统的角度来看,只能把自己的广告预算按照过去的经
验去分拆到这三种不同的渠道上面,然后在不同渠道内部,再做相关的人群设定、
出价设定方面的优化,但是不同的渠道之间怎么做整体优化呢?这也是一个很重
要的问题,所以我们从单渠道的优化走向各种各样多渠道的全局优化。整个所有
的功能升级,在接下来的智能投放体系和技术里面,我会一个个给大家做一个简
要的介绍。今天我们也重点介绍背后的算法核心思想,因为我们大部分的工作都
是有相关论文的发表,所以对于里面一些数学的细节,大家可以去看论文。
02
智能投放体系和技术
1. OCPC/OCPM
① 广告主需求
DataFun:成就百万数据科学家!
广告主说:“我已经习惯了 CPC,在此基础上,能帮我做点别的吗?”在这个基
② 优化方案
一样的,按统一的出价其实很不合理。
第二,广告主有时候有多维度的优化诉求,不单单只想拿更多点击,可能还有点
击之后的转化价值,比如说购买/加粉,这些诉求广告主也是希望优化的。那么基
于这两点,OCPC 就可以在广告拍卖机制下借助系统的能力进一步优化客户价值。
的原始出价)*pctr(这条流量的点击率),然后就会按照这个做排序。在激励兼
容的机制里面,广告主的原始出价是基于一段时间一个流量的平均价值基础出价
段时间的流量的平均的评估,显然是有缺陷的。在平均的意义上,广告主的出价
跟流量价值确实达成一致了,但是在单条流量上,对广告主的价值有可能是有差
异的。比如广告主如果关注的是点击之后的转化价值,那么有的点击背后是能够
形成高转化的,有的点击背后是不能形成高转化的,因此不同的点击背后价值就
不一样,相应的出价也应该不一样的。造成缺陷的一个主要原因是广告主不能对
单条流量去评估价值,因为他不能钻到我们的系统里面来观察每一个流量的价值,
靠人肉是做不到这一点的。所以改进的办法就是我们要对广告主原始出价做一个
子 pValue 就是在单条流量上,我们利用系统里面的机器学习模型,能够实时地
去感知流量用户的信息和广告的信息,然后利用这两个信息去给出单条流量的价
据去评估广告主表达的流量的平均价值,比如它过去所有这些流量的平均的转化
的价值,这个客户是需要通过在平台上去表达的。比如说他是想去优化转化,或
的去做排序。
③ 效果评估
DataFun:成就百万数据科学家!
在这个情况下,广告主和平台是双赢的。对广告主来说,相同预算下,价值回报
上涨,ROI 提升了。因为他以前买这个东西都是一视同仁的,现在可以选里面最
好的东西去买,除此之外也给广告主提供了多维度的价值优化,比如优化转化,
投资回报率高,应该投入更多的预算,然后获得更多的回报。那么广告主意愿的
思想,它的核心理念就是这样。
① 广告主需求
广告主手动出价之后,我们怎么帮助广告主把手动的出价的价值精细化到流量的
力度?有的广告主说自己还要去评估平均价值,运维成本很高,而且广告主经常
有很多商品,要开很多计划,计划里面又有非常多的定向人群,或者是买词,那
么每个人群或者词上都要去调价,操作成本就非常高。所以广告主能不能就花这
我买到尽量多的粉丝吗?”。广告主不想去关心具体怎么出价,让平台去帮助他去
自动出价。
② 优化方案
预算约束下自动地出价。这里我们给出一个生动的例子,让大家看一下它是一个
什么样的概念。
DataFun:成就百万数据科学家!
比如我们的目标是在广告主有六美元的预算约束下,要尽可能去获得足够多的点
击。底下横坐标轴是时间,就是广告计划,比如今天凌晨 0 点开始投放了,到今
天 24 点结束,那么在这 24 个小时里面,一共有这么多蓝点流量让广告主去竞争。
的是 3 美元。对于广告主来说,为了获得更多的点击,即想要更多的蓝点儿,他
应该怎么去出价呢?广告引擎里面的“小机器人”,根据自己的算法,就会沿着
时间,对于每一条流量会做判断这个蓝点要还是不要。
比。因为 1 美元就可以拿到一个点击,所以它就会把它拿下,之后预算就
从六美元变成了五美元。
DataFun:成就百万数据科学家!
DataFun:成就百万数据科学家!
决定不要这个流量了,那么红色就不竞得。
DataFun:成就百万数据科学家!
再接下来它又看到一个 2 美元的点击,觉得性价比还不错,所以这个也拿
下。
DataFun:成就百万数据科学家!
DataFun:成就百万数据科学家!
然后我们的预算就进一步减小,现在只剩 3 美元的预算了。然后又有一个
低成本的流量,拿下。
DataFun:成就百万数据科学家!
然后第 5 个蓝点的价格很高,不要。
DataFun:成就百万数据科学家!
然后,第 6 个蓝点又拿下。
DataFun:成就百万数据科学家!
DataFun:成就百万数据科学家!
最后一个不要。
DataFun:成就百万数据科学家!
这个时候今天所有的流量也就结束了,预算也花光了。
DataFun:成就百万数据科学家!
点击都扔掉了。从一个点击上的成本来看,它把性价比最好的流量全都拿到手里
去设计的呢?
首先我们要形式化这个问题,在给定预算 b 的前提下,要尽量拿到最多的价值。比
如,这里要拿到最多的点击,那么在竞价广告里就变成了系统要对每条流量出一个
这个示性函数就取值为 1。如果出价小于市场成交价,就没有竞得,示性函数就是
击,vi 就是 0。底下的约束也是一样的。对于所有流量来说,每一条竞得的流量对
应的 ci 是市场成交的价格,所有流量市场成交价格加起来,不能超过总的预算。所
以这个就是预算约束下的价值最大化的建模。如果我们把这个示性函数当做一个变
化问题方面,张伟楠老师的参考文献里面从连续空间做了分析,最后得出这个问题
的最优出价公式 bi*=vi/λ*。他的分析办法,是把它看作一个原问题,然后用拉格朗
日的办法把它转换成一个对偶问题,然后对对偶问题去做分析,得到最优的出价,
就等于单条流量上的价值除以一个固定的参数λ*。大家要注意这个地方的λ*,就是 0
点到 24 点的 24 个小时里,对所有的流量λ*都是一个固定的值,然后 vi 就是每一条
流量的价值。所以它的直观的含义就是:对于任何一个流量来了,流量的价值高,
我出价就高,价值低,出价就低,出价跟价值完全是正比例的线性关系。线性关系
的系数就是 1/λ*,λ*可以通过历史数据,对线性问题直接去求解。这个求解也是非
常容易的,直接能得到一个最优λ*,但是实际情况其实会更复杂一些。我们可以从
下图看出,在实际广告投放的时候,在一天的 24 小时里面,首先,流量的波动是
很大的。其次,我们可以看出不同小时的出价波动也很大。我们再看红线跟蓝线,
天与天级别之间它的差异也很大。所以根据历史数据,虽然利用规划类的软件就能
DataFun:成就百万数据科学家!
把λ*解出来,但它不一定在明天还能够适用。所以λ*求解既要结合过去的数据,也要
结合当天实时的数据,这个解法一般可以用反馈控制的方式去解,也可以用一些强
化学习的方式去解。λ*的含义是什么?其实它是一个性价比的阈值。我们看到 bi*是
出价,如果按照广告的二价计费,小于 bi*的最后市场成交的流量都会被拿下。我们
全天流量里面性价比最高的这部分流量都给竞得了,然后性价比低的流量就全部扔
后核心就是在找λ*,要在所有波动的环境里面去把最好的λ*能够稳定地找到。
的整个流量波动的问题。强化学习建模里,消费者的流量不断请求广告引擎,构建
两个输出端子,一个端子是对λ上调一个αt,另一个端子对λ下调一个αt。当然你也
的 value,比如所有的点击量或者所有的购买量,当做 reward。在这样的一个强化
学习的设定下,我们搭建了一个离线的训练平台。在离线训练平台下,我们可以把
在线的时候,就把训练好的模型部署上去。实际做的时候会发现一个问题,这种预
算约束下,让一个强化学习的智能体去探索的时候,有可能出价高一点,就能在某
多,当然价值就多。但是因为是有预算约束的,强化学习算法可能会比较短视,在
短期内它可能没有触达预算的上限,就拼命地去拿流量,觉得现在的 reward 很高
就很好。但是算法跑到中间的时候发现预算花光了,后面的流量都拿不到了,这样
的话这个算法就相当于是探索出来一个次优的路径。但是强化学习的整个序列探索,
想让它自己去不断探索,探索出前面省吃俭用,到了后面刚刚好,又能最后把钱正
地构思。我们组的同事也提出了一个方法,实践中既能保证效果,而在理论上也是
reward 都能够反映到里边,但是它反映过来以后还给出了一个理论的证明,叫
DataFun:成就百万数据科学家!
了这个问题的收敛。
③ 效果评估
张图,我们用基于强化学习捕捉流量变动,出价变动,天级别之间变动的方法,叫做
DRLB(Deep RL Bidding),加粗的线也比其他传统的方法要好。这些传统的方法包
好的效果。
3. MCB
① 广告主需求
DataFun:成就百万数据科学家!
刚才提到的是预算约束下的情况。广告主除了希望预算约束,还希望点击成本也
② 优化方案
在这个问题里面,我们的建模和刚才类似,目标函数还是要最大化整个流量的
value,约束里面第一项还是预算的约束。第二项就是某种成本下的约束。这里的分
子是所有流量的最后成交价格累积起来,相当于是总的投入(即总的消耗),分母的
wi 就是某种单位。比如说这个里面是 PCTR,分子是总消耗,分母是总点击量,得
到的就是一个平均的点击成本。广告主希望平均一个点击,成本不能超过 1 元钱,
这个约束就会让平均点击成本不会超过 cw。该问题也用对偶的办法,可以分析出来
它的最优的出价形式如下:
关注的是这条流量出价对于平均成本的影响。所以这里面的拉格朗日的对偶的变量
p*、q*,它就起到了去权衡这两个项目的作用。p*、q*一旦求得以后,那么就在一天
里面都是固定不变的,它的解法也可以包括两种。一种是基于强化学习的解法,跟
PCW 也加进来,如果最后违反了平均点击成本,就给一个惩罚,如果没有违反,
有一种方式就是基于反馈控制的办法。
约束,优化某个目标(优化,就是你不能保证结果)。那么还有一类投放策略,既
能满足广告主的预算约束,还能保证最后给多少曝光或者多少点击,就是合约保量。
现。我们可以事先签订合同,但完不成要给我赔偿!我很好奇你们是怎么分配流量
的?”
DataFun:成就百万数据科学家!
们统一在市场经济下,去竞争做优化。
收益是怎么定义的?下面我们给出式子:
达到的总收入的上限。但是你如果保不住量怎么办,那么这里 pj 就是缺量的惩罚,
λj 是一个权衡因子,是固定常数,用来权衡合约保量的流量质量的重要程度。这里
为了优化平台收入时不能让合约保量的这部分流量质量太差,不然广告主它每次一
DataFun:成就百万数据科学家!
他就不会愿意去买合约产品了。虽然你能保证确定性,但你买的都是很垃圾的流量,
收入。
这个问题如果展开,其实也是一个线性的优化问题,用对偶分析,会发现对第 i 条
据前面的思想,我们也可以去给出一套强化学习的解决方案,或者大家也可以去尝
③ 效果评估
DataFun:成就百万数据科学家!
这张图是我们用了一套强化学习的方法,能够比传统的一些固定的α*的出价有更好
个时候涉及到的是很多个智能体在一起配合,所以这里到底应该牺牲谁,应该保障
谁?其实这个并不是一个严格的单增单减的关系,在这种情况下,你一定要有一个
全局的调整,才能保证你最后得到α*真的是面向全局最优的。
4. MSBCB
① 广告主需求
如果广告主问:”有的用户需要多次曝光才会购买,预算有限下我应该如何投放?”
② 优化方案
DataFun:成就百万数据科学家!
如图所示,有的用户可能第一次访问平台它被曝光了,那么他这个时候才稍微对
这个商品有一些心智,那么再去看广告的时候,他就感兴趣了,可能就加到购物
车里面了,那么第三次看这广告的时候,他最后就决定购买了。
对于这种情况下,我们应该怎么去优化广告投放呢?这里面也给出了一个建模的
方案。
应该选哪几次去投放,哪几次不要去投放 ),投放以后最后整个序列的整体预期回
告对这个用户运营的策略πi。优化目标也是显而易见,类似于前面的 budget
对于选定的这个人,我要用怎样的策略πi 去运营用户的序列?它其实整个把频控这
件事情包括进来了,那么约束就是我要选哪些用户,以及我对用户的运营策略下,
整个序列的所有的成本要小于等于预算。那么最后既要优化选哪些用户,又要优化
对不同的用户之间用怎样的策略去优化它,这肯定是一个约束下的优化,又是一个
序列决策的问题,它的解的组合空间非常大,求解起来也非常难。我们实际是怎么
求解呢?我们把它分成两层求解。
第一,选用户假设已经找到了对用户最好的运营策略πi,我们应该怎么挑用户?跟
前面方式也是很类似的,依托性价比最优去选就好了。所谓性价比就是用户的长期
的价值/用户的长期的成本,然后对用户从高到低去选择就可以。在实际情况中,因
DataFun:成就百万数据科学家!
为流量粒度很细,所以这种背包的贪心算法基本是可以取得 99%比率接近最优解
的。第二,运营用户当你知道怎么去选用户之后,对一个用户你应该用什么样的策
略πi 去运营它呢?我们刚才看到选用户的时候,选性价比最优的用户。直观的一个
想法是把每一个用户的性价比运营到最大化是不是最优解呢?这里我们给出了一个
结论,不是最优解!
为什么呢?我们给了一个示意图,这个示意图你可以看作是个大背包,背包里每一
个长方形代表一个用户。每一个长方形的高度,就是整个序列下来的总消耗,它的面
积就是整个序列的总回报。那么底下横轴就是面积/长方形的高度,得到的性价比。
背包已经按性价比从高到低,把用户一个个叠罗汉的方式摞起来了,整个高度累加
起来就是它的预算。整个按性价比优选的话,虚线之上的就相当于被挤到背包之外
的,外面的性价比较低的用户就不要了,而虚线以下的性价比高,都已经装进来了。
这个时候我们来看最下面的蓝色长方形,已经是把用户运营到了性价比最高的状态。
如果对它的运营策略πi 做一些调整,让性价比下降一些,底部蓝色长方形的高度(即
期望的成本)上涨一些,头部低性价比的用户就会被挤出去一些。二者一加一减的
DataFun:成就百万数据科学家!
高度虽然相等,但是我们挤出去的是低性价比变化量,获得了更高的性价比增量。
通过牺牲最下面长方形用户的性价比,从最极致的状态稍微下调一点,整个背包的
容量就增加了。我们也有一系列理论推导,最后能给出一个严格的理论证明。对用
去运营,那么最后就能得到整个背包的最大。而且我们两阶段的优化既要去挑用
户,又要去对单个用户去做运营,这个来回迭代的算法,我们也严格证明了这个
算法能够收敛到全局唯一的最优解。
③ 效果评估
DataFun:成就百万数据科学家!
左图中,当考虑到用户跟一个商品反复交互有这种序列效应的时候,表示长期价
值效果的红色的线是显著高于表示短期价值效果的蓝色的线。从右图可以看出,
红色的线(代表目标函数策略)的确是比蓝色的线(按照"性价比最大化"的思路
5. CCSA
① 广告主需求
DataFun:成就百万数据科学家!
上面介绍的很多都是在局部的一个渠道去投放。广告主预算如何在搜索、推荐和
品牌广告渠道最优分配呢?
② 优化方案
当广告主面对不同的渠道的时候,怎么能够在整体上去做最优化?这个问题的建模
于总预算的情况下去最大化整体的渠道回报之和。广告主面对各种复杂的广告平台
操作,还要再去联合优化,这种操作是很难实现、很难评估的。
所以我们可以把它集中到一个非常简化的、操作便利的单一的操作接口上,广告
口就可以控制所有的渠道去实现整个渠道的最优化。从整体视角来看,最终广告
是相等的,这个状态就是最优的了。
DataFun:成就百万数据科学家!
但实际去做的时候,因为各个渠道是很粗的粒度,你是很难去控制到各个渠道里
面的一些具体的操作的,至少在系统的复杂性上会带来很大的难度。所以我们目
要求等粗粒度的控制策略,然后去影响各个子渠道的投放策略,各个子渠道就可
了一个大一统的优化,各个渠道之间的这种系统的耦合上也是比较低的。
③ 效果评估
这里给大家做一个宣传,阿里妈妈今年推出了 AI 智投的投放产品,这比客户自己
去各个渠道去分预算投广告,投放的效率能够提升 50%,这是一个很大的提升!
03
总结与展望
最后,总结下阿里妈妈广告系统的迭代历史,我们经历了从粗放式价值评估,到
精细的单条流量价值预估和优化升级,以及从单一到多维的目标的优化,从不确
DataFun:成就百万数据科学家!
定到对广告主有合约保量确定的结果保障,以及从广告主自己手动调出价到广告
主只要设定预算,我们就自动帮它运维的这种升级,以及从单一的预算的约束,
到包括各种成本约束(比如曝光成本,点击成本约束)的控制能力,从短期的价
值优化到长期的价值优化,以及从单个渠道的优化到全局所有渠道的整体优化。
面向未来,我们会继续深挖客户的痛点,从数据智能,机制设计,算法升级和产
品迭代方面进行全方位的体系和技术升级。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
同义变换在百度搜索广告中的应用
分享嘉宾:连义江博士@百度
编辑整理:王成林
出品平台:DataFunTalk
照广告主要求的匹配模式连接起来。该问题面临着语义鸿沟,匹配模式判定和可
扩展性方面的挑战。在本文,我们会就同义变换这个主题展开讨论,讲述如何用
数据驱动的方式做同义变换,如何将知识推理融入到变换中,以及如何用这些技
术解决匹配问题中的核心挑战。
01
背景介绍
1. 搜索广告
DataFun:成就百万数据科学家!
搜索广告中有三个角色,分别是用户、广告主、搜索引擎。
广告主侧会向引擎提供物料,同时竞价关键词。比如一个做双眼皮的美容
机构,会买例如“双眼皮手术多少钱”、“双眼皮手术的价格”、“双眼
皮手术哪家好”等关键词。这些关键词会被提交到搜索引擎。需要指出的
是,这里说的关键词不是我们通常所说的关键词,而是指广告主购买的
query。
用户侧会提交 query,比如“双眼皮手术多少钱?”。
进行下一轮的拍卖,最终胜出的广告会被展示出来。
2. 广告主的竞价语言:匹配模式
DataFun:成就百万数据科学家!
和其他广告不一样的是,搜索广告会提供特定的竞价语言,即匹配模式。广告主
可以控制这些关键词对应的匹配模式来控制竞价的精准度。主流的搜索引擎一般
提供三种匹配模式:精确匹配、短语匹配和智能匹配;其定义如图所示。一般的,
这三种匹配模式,从上到下,触达范围由窄到宽,精准度也从高到底,相应的,
出价也会从高到低。
举一个例子,如果广告主购买的关键词是“双眼皮手术的价格”,并且指定其匹
词会被匹配到,而“双眼皮手术疼吗”则不会被匹配到。
3. 广告主的账户结构
DataFun:成就百万数据科学家!
再举广告主的账户结构的例子给大家看一下,广告主会投放若干计划,在计划下
有多个投放单元,在投放单元中,有关键词、出价和匹配模式,在单元下广告主
会提交若干创意。可以看到关键词是处于整个树形账户结构的底部, 我们匹配的
工作会从这个账户底部开始进行,包括索引和匹配。
4. 搜索广告系统概览
DataFun:成就百万数据科学家!
在搜索广告系统中,广告的触发分三步走:
第一步是进行“关键词匹配”,目标是为每个匹配模式召回尽可能多的关
键词。
第二步是在关键词匹配成功后获取广告内容,确定广告对应的广告主、出
价和广告创意。
第三步是广告排序阶段,基于匹配质量,出价和点击率等因素,选择有限
的广告进入拍卖,最后胜出的广告被展现出来。
5. 关键词匹配问题
本次分享的重点是“关键词匹配问题”,抽象来说,这个问题的输入是 query、
匹配模式、关键词库,输出是满足匹配模式的全部关键词,限制是匹配模式。例
如输入是“双眼皮手术多少钱”,在精确匹配模式下,产生的典型目标召回关键
词是“双眼皮手术的价格”、“双眼皮手术多少钱”、“割一个双眼皮花多少钱”
等。
DataFun:成就百万数据科学家!
6. 问题挑战
关键词匹配问题的挑战有:
Semantic Gap:用户和广告主用不同的方式来表达同样的意图。例如“双眼皮
手术的价格”和“双眼皮手术多钱?”是同一个意思,但是他们会用不同的字面
匹配模式的判定:是搜索引擎广告面临的独特问题,用来判定是精确、短语还是
智能匹配。这是产品的根基,由产品对广告主的契约保障。
计算资源都非常有限,这给很多功能实现带来了挑战。
02
同义变换的应用场景
同义变换的应用场景主要有:
DataFun:成就百万数据科学家!
1. 同义匹配
首先是产品定义的同义匹配问题,在刚刚提到的三个匹配模式中精确匹配和短语
一个 query 是“双眼皮手术多少钱”,简单的变体是“双眼皮手术多少钱呢?”,
一个更为复杂的变体是“拉一个双眼皮大概需要多钱?”。如果在一个开放域中
2. Keyword 端
队列压缩:
DataFun:成就百万数据科学家!
常会触发得到大量的候选关键词,这些候选为了保证质量,都需要经过模型校验
计算来确认。我们的思路是基于同义关系压缩的方法减少计算候选。在上图的例
可以极大地减少判别模型的计算压力。
基于代表元来触发:
DataFun:成就百万数据科学家!
更为激进一点,我们可以用基于代表元来触发。通过对原始词库进行同义压缩,
量,只需针对 A1 和 B1 进行触发。在线上使用中,我们采用基于代表元来触发,
然后再扩展回原始词库。
3. Query 端:规范化+改写
DataFun:成就百万数据科学家!
^ ^
命中率,同时整个词表只需存储规约 Q1 和 Q3 来减少 key 的量级。
03
如何做同义匹配?
—— 以精确匹配场景为例 ——
同义匹配的方案:
DataFun:成就百万数据科学家!
在同义匹配中,以精确匹配场景为例,首先可以从规则出发,进行短语粒度的同
今天分享的主要内容是通过数据驱动的模型来提高泛化。主要为三步走:寻找同
义数据源、训练模型并基于模型来泛化。
第一步:寻找大型同义数据源
在如何选择大型同义数据源方面,一方面可以利用系统外部数据,例如搜索点击
日志、Session 日志、协同过滤和规则替换。另一方面可以使用系统内部数据,
例如商业点击日志。
① 数据选择的困惑:
DataFun:成就百万数据科学家!
在数据选择方面会产生一些困惑,使用系统内部数据可以泛化出增量吗?因为使
用最大似然的方式求解就是使用模型来拟合数据,例如使用翻译模型或者图模型,
top1 decode 的 结 果 就 是 该 数 据 , 这 个 过 程 好 像 无 法 产 生 增 量 数 据 , 会 陷 入
下面举例来说明泛化带来的 delta。
② 泛化带来的 delta:
DataFun:成就百万数据科学家!
般 多 钱 ?” 。 使 用 S2S 模 型 来 对 样 本进 行 训 练 , 然 后 对 Q1 做 Decode, 由 于
比较高,所以也能够获取结果 B2,如果模型的泛化能力足够强的话,说不定能得
出 B3。
第二步:训练模型
DataFun:成就百万数据科学家!
型。
第三步:基于模型来泛化召回
DataFun:成就百万数据科学家!
最后是基于模型来泛化召回,使用模型的自反馈来进行泛化,以前 Q1 有 3 个召
回的结果 A,B,C。基于模型,定向在关键词库中做召回,有可能把 A1 和 B1
也召回出来。图中的蓝色标记都是泛化出来的结果。
04
基于 S2S 来泛化
1. 思路
2. 该建模的优缺点
DataFun:成就百万数据科学家!
该建模的优缺点:
优点:
采用端到端的建模,尤其是在语料充分的情况下,质量会非常好,同时简
单,只需要获得一些正例即可。
缺点:
效率比较低,因为是用翻译的方式来做检索的工作,逐词生成。一个 query
果数据不作清洗的话,冗余度会非常高。
关键词。
训练和预测是不一致的,训练时一对一,目标是一对多。
3. 解决效率问题:同义规约
DataFun:成就百万数据科学家!
解决效率问题,可以使用同义规约的方式来解决,直接翻译的话,冗余度是很高,
少一些空格,多一个标点符号,多些副词,感叹词等。所以我们可以对 Query 和
4. 如何做规范化
DataFun:成就百万数据科学家!
具体进行规范化的步骤是,基于冗余词性的去除。例如副词、标点符号的处理;
果是可以极大的压缩训练数据、减少冗余翻译、相同的时间内生成更多的同义候
选。
5. 解决效率问题:同义扩展
回量是不现实的。可以采用基于同义关系来扩大召回量。
6. 更好的泛化:基于概念来泛化
DataFun:成就百万数据科学家!
我们知道,数据驱动有自己的硬伤:那就没有数据就驱动不了。我们的模型最后
往往只学到了数据上的共现,却缺乏概念抽象的推理功能。例如对于样本“北京
我 们很 难 泛化 出 这样 的 case: 乌鲁 木 齐修 眉 的价 格 =在 乌市 做 个修 眉 大概 多 少
钱?。而我们希望模型是有一定的能力来抽象知识并做推理泛化的。
一些解决的思路:
识别的事情如下图所示:
DataFun:成就百万数据科学家!
我们首先把原始的数据先转换到概念空间中去,然后在概念空间中做泛化,然后
对泛化后的概念模板填充实体,得到最后的召回结果。
具体流程:
可以分析得到对应的概念形式是“【地名】【美容项目】多钱”,我们在关键词
概念库中可以召回“在【地名】做【美容项目】需要多少钱”的概念候选,填充
完实体后可以召回在【乌市】做【纹眉】需要多少钱。
05
基于度量模型来做同义泛化
1. 基于语义度量来做同义泛化
还有一种方式是基于语义度量模型来进行同义泛化,大致的意思就是把翻译模型
换成语义向量模型,检索过程是在语义向量空间中寻找 K 近邻。
2. 在度量语义空间中召回同义变体
DataFun:成就百万数据科学家!
方法的实现思路是:
投影到共同的语义度量空间中
分两步来实现:
投影
寻找 k 近邻
获得投影算子:
DataFun:成就百万数据科学家!
虑欧式距离或者余弦相似;在数据方面,因为最后我们会在整个全量空间中做语
义检索,和之前的翻译模型不同,我们需要同时考虑正例和负例,并且要精心的
去设置负例。
寻找近似 K 近邻:
DataFun:成就百万数据科学家!
在投影模型训练出来之后,进行 K 近邻的查找。首先是基于度量对空间做划分,
06
基于图模型来做同义泛化
基 于 图 模 型 来 做 同 义 泛 化 也 是 一 个 很 好 的 方 案 , 可 以 把 匹 配 问 题 看 作 link
来求解匹配问题,我们可以引入更多的数据,因为平时我们使用最多的都是一些
简单的线性数据,如用户点击数据,其实更为海量的数据是以图的形式存在的,
个很大的图,我们可以把数据都融入到网中进行训练。
DataFun:成就百万数据科学家!
2. 基于图表示来做匹配
基于图表示来做匹配分为三步走:第一步是构造图,其次是计算每个节点的低维
表达,最后是为每个阶段寻找 K 近邻。
3. 基于递归图网络来计算表达
DataFun:成就百万数据科学家!
图网络可以选择的方案有很多,比如我们可以选择基于递归图网络来计算表达。
在递归图网络中,每一个节点的向量都是由其邻接的节点的表达聚合而来,这样
表达的好处是节点之间多跳的邻接关系,还有一对多的关系可以同时考虑到建模
4. 总结
简单总结而言,基于数据驱动的方式做同义变换一般是基于种子数据抽象出一个
07
同义判定
1. 匹配模式判定
在 精 确 匹 配 模 式 中 , 如 何 判 定 query-keyword pair 是 不 是 同 义 变 体 关 系
( paraphrase identification ) ?
一种直观的想法是可以基于同义词对齐来做:这种方式的准确率高,但是召回出
来的结果很少,举个例子如“女人生孩子后腹部有赘肉怎么办?”,keyword 是
“产后如何减肚子”。那么“女人”这个词很难找出对应的关系出来。此时需要
一个泛化能力强的模型来做这样的事情。
例如训练一个分类模型,输入,label 是 0 或 1。
Feature-driven 的方式是人工特征+少量标记数据+浅层模型;
DataFun:成就百万数据科学家!
问题的难点:
这个问题的难点,一方面因为 F 是一个全领域内的同义判别模型,在搜索场景中,
知识。
2. 特征驱动的小模型
DataFun:成就百万数据科学家!
在特征驱动的小模型中,利用人工定义特征:
命名实体的相似度、句法依存和文档分类
语义相似性,如基于搜索点击数据的 DSSM
搜索检索结果的相似度
的树模型。
3. 数据驱动的大模型
DataFun:成就百万数据科学家!
数据方面:
需 要 海 量 的 弱 监 督 数 据 例 如 用 户 侧 的 query-query , 商 业 侧 的
keyword-keyword 和 query-keyword
少量人工标记数据。因为标注成本比较高,在标注数据之后,最好做一下
主动学习和数据增强
训练方面:
使用多阶段预训练+finetuning+对抗学习来提高鲁棒性
从结果来看,其效果远超特征驱动的模型,因为是大模型容量+海量的数据预训练
让模型学到海量的同义知识,此外,Transformer 的多头注意力起到软对齐的作
用。
4. 为标记样本做最充分的数据增强
DataFun:成就百万数据科学家!
刚刚提到为标记样本做最充分的数据增强,增强技术在图像中使用较多,在 NLP
中使用较少,可以基于同义变换来增强,另外可以使用概念标注来进行增强。
5. 提升鲁棒性:基于对抗样本来防御
另外一方面,我们迫切需要提升模型的鲁棒性,传统的模型都是基于经验风险最
小化来训练,这本身保证不了模型的鲁棒性,比如模型在小扰动下预测的稳定性。
DataFun:成就百万数据科学家!
例如下面的例子,在图像分类的模型,对熊猫 x 进行预测的效果很好,在输入端
加入一些微弱的的白噪音扰动之后,人可以识别出来,但是模型很快就把它识别
成了其他动物。
基于对抗样本来防御:
基础上,生成一些对抗样本,最后混合起来作为模型的输入,以此来提升模型。
对抗训练是鞍点优化,在输入空间做梯度上升,在参数空间做梯度下降。
6. 开放的问题
DataFun:成就百万数据科学家!
是一个非常巨大的空间,在这么大的空间上的其他盲区怎么办?这个是一个开放
型的问题。之前我们使用的海量的弱监督数据其实是起到了这里的盲区补充的作
用。
08
总结
最后总结一下,本次分享的主要内容是关键词匹配的大背景、同义变换的应用场
义判别。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
CTR 预估在动态样式建模和特征表达学习方面的进展
分享嘉宾:秀武 阿里 高级算法专家
编辑整理:Hoh Xil
出品平台:DataFunTalk
导读:富媒体时代,广告的样式需要千人千面,广告产品形态呈现多样式、多
了组合样式优选的问题。
另 外 , 传 统 的 CTR 预 估 较 少 能 挖 掘 特 征 之 间 的 交 互 信 息 , 我 们 提 出 一 种
MCP 模 型 , 通 过 辅 助 的 网 络 结 构 来 学 习 更 好 的 特 征 表 达 , 同 时 在 线 上
inference 时不会产生额外的计算消耗。
综上,本次分享的内容主要包括:
特征表达辅助学习
01
DataFun:成就百万数据科学家!
▬
业务背景及 CTR 介绍
1. 智能营销平台业务背景
我们的主要业务是搜索广告和信息流广告。搜索广告主要通过搜索 query 触
一个通用的商业广告系统,如右图所示:
前端 server:包括媒体接入、广告样式封装等
以及排序和过滤等策略
广告集合 ( 在搜索广告中称为触发,在信息流广告中称为定向 )
行 Q 值计算
DataFun:成就百万数据科学家!
我们可能还会用到用户维度的实时信息,所以我们还有用户特征
server 和用户信息存储等基础架构。
整个商业广告系统是由做工程架构的同学来维护架构,策略同学进行策略的迭
CTR 预估的重要性:
广告中选出一部分广告进行精排。
给定广告的点击概率。如图中表格所示:
DataFun:成就百万数据科学家!
过用户的行为反馈,可以收集到这个广告用户点击/未点击,作为训练样本就
CTR 预估的问题看似简单,但确实是业界重点研究的方向,主要从如下几个
方向展开:特征优化,模型算法研究,模型应用的创新。
3. CTR 相关工作
回顾下业界常用的模型结构:
逻辑回归模型 ( LR ):模型简单,容易实现,早些年非常流行。
互的学习工作。
DataFun:成就百万数据科学家!
构上对特征做 Embedding,再接几层全连接神经网络,由于我们是分
Wide&Deep:DNN 在泛化和推理上效果比较好,但是在广告系统中,
更希望有一些记忆的特性 ( 如果一个用户对广告有频繁的点击行为,
我们团队的模型现状:
支持 Wide&Deep,DeepFM 模型结构
自研了时空 DNN,深度记忆网络结构,可以更好的处理用户历史行为,
在 CTR 预估中起作用
02
▬
动态样式 CTR 预估建模
——CTR 预估如何赋能广告样式升级?
1. 广告产品样式升级
DataFun:成就百万数据科学家!
在前几年,广告样式主要是普通的样式:标题+描述,信息量非常少,用户真
正感兴趣的内容,需要在落地页中呈现。
近期针对样式方面,我们做了很多的产品升级,如右图所示,增加了商品列表、
图文混排、子链 ( 分组 ) 等样式。这样做的优点:
更多信息前置,内容更吸引人,带来点击率的大量提升
可根据用户意图个性化选择样式和物料,千人千面
转化信息前置,提升转化效率
2. 动态创意的组件化
DataFun:成就百万数据科学家!
广告产品样式升级主要是通过动态创意来实现的,动态创意包含样式布局和组
件两个要素。如左侧的广告,我们将它拆成元素,有标题、图片、描述和分组
等各种子链区,我们将它定义成样式布局。有了样式布局之后,我们需要做的
就是填充,比如从广告库中找到标题,填充进去,同时把图片、描述等等也一
一找出填充进去。这样的方案对广告主来说是很省时省力的,因为广告主主要
关注的是内容的提供。对于内容的提供,我们也提出了策略的解决方案,广告
主只需要提供一些基础的内容,我们可以用算法生成一些相近的物料。对于组
件的样式不需要广告主定制,我们有专业的样式产品团队进行样式设计,然后
由策略团队做样式的策略优选,来确定哪种样式是最好的。
动态创意从产品逻辑上来看很简单,但是从策略上来讲是巨大的难点,首先要
确定哪种样式加物料的组合效果最优,而且针对不同用户和广告主最优;其次
还要考虑同屏展现下的最优组合。所以我们提出了整体的解决方案:先通过样
DataFun:成就百万数据科学家!
分位置拍卖过程。
3. 样式+物料组合优选
首先介绍一个最基本的解法:
一 个 广 告 要 展 示 的 时 候 , 我 们 第 一 层 要 选 Layout, 确 定 样 式 的 布 局 ; 选 定
Layout 之后,要选定每个容器中放哪个物料,从图片到描述,到标题等等,
整个计算就是一个多连乘的公式,在线上如果要实现这一套计算,特别是每种
会检索出上千条广告,哪些创意要进入样式+物料优选,也是非常难的问题。
因此简单的样式优选难以实现,对性能挑战非常大。
4. 一种简单的算法升级
DataFun:成就百万数据科学家!
针对上面的问题,先看一种简化的解决思路:
广告检索,基于原来的检索逻辑,先检索出来创意 ID
估值
广告精排,确定展现队列,排序之后,在搜索广告系统中,可能只剩下
了少数条广告
样式和物料选择计算,确定最终的创意样式
这样做的优点:
样式+物料计算的候选广告大大减少。
同时,缺点也非常明显:
CTR 预估没有体现样式和物料带来的加成,使策略最优的效果没有体
现出来
DataFun:成就百万数据科学家!
样式之间的相互影响没有体现出来,一个强样式排在前面时,会使后面
可以了解下
5. 样式+物料选择建模
最大化 ) + EE
针对组合爆炸的解法是运用贪心算法+EE。这里的贪心策略是将物料组
装的形式分层次来做,比如先选定标题,再放图片,进而放入描述,放
入子链,...,而不是整个展开来计算。如左图所示,树中每一个节点代
优选策略:
① 每层容器优选
DataFun:成就百万数据科学家!
组件多元关系 ( 互斥规则 )
CTR ( 组件 )
Ranking ( max-eCPM )
剪枝 ( EE ):每层留多少个节点
② 每层优选使用前文信息 ( 上一层容器 )
③ 样式优选结束后进行组件物料优选
这里用到的算法和 Model:
CTR 预估:DNN
剪枝 EE:目前这部分还没有做,未来我们准备用深度强化学习 ( DRL )
来做剪枝,来决策哪些内容可以提前去掉,不用参与计算
6. 一种改进的算法流程
DataFun:成就百万数据科学家!
前面的算法,已经解决了大部分的问题,当然还有一部分问题没有解决掉,进
整个广告计算流程:
基于原来的检索逻辑,检索出来创意 ID
针对 Top N 广告进行样式和物料组合优选,确定候选广告的样式+创
PSA 机制按位置从上到下逐个计算广告展现
分别独立进行训练的,这里会存在一些问题。
独立训练存在的问题:由于是独立训练,两个模型都存在幸存者偏差,那么
好的,这两个模型解的不一致性就会带来策略的损失。
上是两个共生网络进行联合训练。
会把上一阶段的 Q 作为下一阶段的输入去使用。
8. 小结
本节内容小结:
在动态样式产品升级的情况下,CTR 预估会面临组合爆炸的难题
为减少计算量,可以先计算出广告展现队列 ( 减少样式物料优选的计
算量 ),然后再进行样式和物料选择
即使单个广告的样式和物料优选也会面临计算量非常大的问题,所以引
入了贪心 + EE 的策略,逐层筛选最优结果
先计算广告队列再进行样式和物料优选时,样式和物料的效果不能影响
排序,不是最优结果,收益不能达到最大化
能大幅提升效果
DSA 模型可以和上游模型进行联合建模,进一步提升模型效果
03
DataFun:成就百万数据科学家!
▬
特征表达辅助学习
达是否相似。因此是否可以建立特征表达之间的约束学习,使模型具有更好的
泛化性?
和特征之间的关系,主要包括:用户和广告之间的关系以及广告和广告之间的
关系。
DataFun:成就百万数据科学家!
2. DeepMCP 概览
具体的解决方案是在原来预测网络的基础上,加入匹配子网络和关联子网络。
DeepMCP 的优点:
训练时,三个子网络均被激活
线上做预估时,只有预测子网络被激活,不需用到两个辅助子网络,不
会消耗额外的线上计算性能
3. Motivating Example
DataFun:成就百万数据科学家!
背景动机:
用户 u 2 点击了广告 a1 ,实际场景中,我们可能会需要预测用户 u 2 对 a 3 的点
系,所以很难预测 u 2 对 a 3 的 pCTR。有了辅助网络之后,由于 u 1 和 a 1 的
Embedding 与 u 2 和 a 2 的 Embedding 比 较 像 , 可 以 推 导 出 a 1 和 a 3 的
4. 细节
DataFun:成就百万数据科学家!
面将整个网络拆开分别进行介绍:
① 预测子网络
DataFun:成就百万数据科学家!
预测子网络就是传统的网络,给定一些特征,然后接几层全连接层,再通过
Network 等等。
② 匹配子网络
匹配子网络主要是建立用户和广告之间的关系,广告是否一定程度上匹配用户
兴趣。我们把用户特征和广告特征分别经过几层神经网络,映射到两个相等维
和广告相关的所有特征,因为我们是要辅助的学习特征的表达,而不是推荐系
统中只对 ID 进行学习。
③ 关联子网络
DataFun:成就百万数据科学家!
关联子网络是建模广告和广告之间的关系。我们首先要构建广告和广告之间的
一段时间内的点击序列,跟点击序列不相关的广告用随机负采样的方法
算 法 的 核 心 思 想 比 较 类 似 。 收 集 完 序 列 之 后 , 把 当 前 广 告 作 为 target ad
Neg ad features,输入到网络中。网络的目标是当前广告跟历史点击的广告
④ DeepMCP
DataFun:成就百万数据科学家!
对 于 整 个 网 络 , 所 有 loss 加 一 起 的 时 候 会 有 调 制 , 我 们 加 入 了 α ( 对 应
处获得。在线上时,只使用预测子网络。
5. 实验
① 预估效果
DataFun:成就百万数据科学家!
我 们 分 别 在 公 开 比 赛 数 据 集 Avito 和 公 司 业 务 数 据 集 , 通 过 对 比 基 础 模 型
( LR、FM、DNN、PNN、Wide&Deep、DeepFM ),并对我们的网络进行拆
② 调权参数的影响
DataFun:成就百万数据科学家!
③ 网络参数的影响
6. 小结
DataFun:成就百万数据科学家!
本节内容小结:
DeepMCP 包含预测、匹配、关联三个子网络
表达能力
实验结果表明匹配子网络比关联子网络带来更大的效果提升
本次的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
大规模图算法在京东广告的实践
分享嘉宾:张泽华 京东 算法工程师
编辑整理:王文婧
出 品 平 台 : DataFunTalk
导读:京东的 9N 算法框架已经被广泛应用于推荐广告、搜索广告、以及其他的
站内外广告场景。本文将为大家介绍如何实现大规模的图算法在京东广告场景的
落地实践,主要内容包括:
基础介绍
算法建模:BVSHG
未来展望
01
基础介绍
1. 电商推荐问题的特点
DataFun:成就百万数据科学家!
电商场景下推荐系统的问题特点:
用户的行为少:电商是一个典型的货多人少的场景,用户行为非常稀疏,
且具有“极度长尾效应”,这个效应我们后面会展开详细讲。
商品的规模大:前面说了货多人少,整个平台的商品规模能达到数十亿,
算上冷门商品及历史商品的话,甚至能到百亿规模。对于推荐问题来说,
数十亿的候选商品集合实在是太大了。对于工程同学,算法同学都是一个
不小的挑战。
用户的需求识别难:电商不像新闻、媒体类的场景,这些场景的用户需求
和反馈都是来自于线上,比如某某上了热搜,这种场景下,信息源来自线
上,用户的反馈也会作用于线上,相对单纯一些;而电商场景,大家的购
物需求的产生和具体消费其实是在线下的,比如今天家里做饭少了一瓶酱
油,这种信息,线上系统很难感知到。
用户的兴趣转移快:用户的购买行为完成后,兴趣会呈现不规则的快速转
移,举个例子,有些用户买了一台电冰箱,按道理说这是一个大件儿,重
DataFun:成就百万数据科学家!
复购买的周期很长,日常生活中不会有人每天都去看,都去购买的,但是
中国消费者有个奇特的行为,叫做“我再回去看看买亏了没”,没事儿就
回去刷一下商品看看价格。再举一个有意思的例子,用户买了一部手机,
那是不是有可能购买手机壳、手机膜这种搭配呢?确实有不少消费者这么
下一个兴趣就是关于如何买拖把和抹布,这就是用户兴趣以及时效性带来
的挑战。
热点更新快:尤其是现代电商网站每天有新品,每周有活动,每月有节日,
半年一大促,用户对新品的交互行为更为稀疏,想要让模型和算法学到甚
至能有预测能力,简直难上加难。
2. Why GRAPH?
DataFun:成就百万数据科学家!
刚刚介绍了电商推荐的问题和难处,我们回到推荐的本质上来思考这个问题,对
于推荐系统来说,其中的重要参与方就是用户和商品,而推荐系统的本质就是在
找用户和商品的关联性:
以用户方来说:人与人之间存在天然的关系图谱,不论是显式的这种朋友
亲属还是隐式的社交关联等等,相信很多偏社交属性的公司早就深入研究
过人与人之间的图关系了;
以商品方来说:商品本身的材质、属性、价格本身就存在关联,甚至是同
品牌、店铺、竞品的关联关系等等,通常很多偏新闻和资讯类的公司早就
已经构建了知识图谱。
能否将用户图和商品图连通起来,利用用户和商品关联性,构建成一张充满不同
02
9N GRAPH 工业化 End2End 算法解决方案
DataFun:成就百万数据科学家!
工业化端到端的算法解决方案,它不仅包含数据能力、算法框架、算法模型还有
一系列的应用。
实现工业化场景的端到端学习,我们遇到了不少挑战,这里举几点出来:
在数据和样本层面,我们遇到了超大规模的图样本生成及存储问题、图的
在线服务以及服务内图信息时效性的问题。
在训练框架层面:如何实现一个训练框架,以及大规模图如何在工业场景
Learning )。
算法建模层面:如何解决端到端建模以及主模型和图模型联合训练,我们
提出了一个典型建模方法,最终也在业务场景上落地取得了收益。
学习的多元化,图的探索和创新,是我们还在进行中的部分,其他颜色部分已经
在提供稳定服务了,其中浅黄色是在线工程团队帮助我们一起建设的在线图服务。
1. 9N GRAPH 数据&样本
① 如何实现大规模的图样本生成及存储问题?
DataFun:成就百万数据科学家!
通过对电商场景的用户行为进行分析,我们发现:行为数据呈现“极度长尾效应”,
换句话说是“旱的旱死,涝的涝死”。像图中呈现的,在 99 分位数之上的用户
行为居然差不多等于剩下的所有用户行为之和。
这种现象,对于传统的深度学习来讲,其实很不友好,传统的深度学习建模方法,
和训练策略比较适用于中高活跃的用户,他们的行为数据较多,但又不过分集中,
在多轮迭代的训练方式下,数据利用效果好。
反过来看,对于 99 分位数之上的那些极度活跃用户,他们的行为数据过于丰富
( 比如单日浏览了好几百个上千个商品 ),在工业场景上通常会因为工程性能问
题做出截断,导致仅有少数最近期的行为信息参与在线预估,反而会导致建模失
真,效果不佳。
对于长尾用户,他们的行为稀疏,甚至还有不少的噪声,建模较难,数据利用的
效果也很差。
我们希望用图的方式,解决这两类数据失真的问题:
DataFun:成就百万数据科学家!
对于极度活跃用户:我们通过图的方式记录下来他的行为,在进行预估时,
通过各种采样的方法,让采出来的信息不像截断那样仅包含最近期的,还
有大量长期的信息。
对于长尾用户:通过图的方式进行不同层面的信息抽取,增加泛化能力,
增强对长尾用户的建模能力。
进行关联后,形成图训练样本,通常能达到 800-1000TB;然后送入到模型训练
框架中,进行主模型和图模型的联合训练。
② 如何解决图服务及信息时效性问题?
高实时的信息可以带来不小的效果提升,因此在线的服务中除了需要包含历史长
期的图信息外,还要对最近期的信息有感知,所以我们设计并实现了一套秒级别
更新的在线服务。如上图所示,上面一条通路是包含数月信息的长期图信息,下
DataFun:成就百万数据科学家!
面的这一条通路是秒级别的实时信息更新,最终打造成了一个高时效性的图数据
服务系统。
接下来看如何实现一个训练框架,以及大规模图如何在工业场景中训练问题。
练也是基于这一套实现的。
弹性扩展和高性能推理服务的算法框架。它基于广告精排的任务特点研发的,支
持了数年来京东广告的高速迭代发展。它包含四大基础设施:
模型数据流:流批一体、离在线一体化的高性能数据流系统
算子库:解决了特征系统及多模态、多业务的高性能实现
DataFun:成就百万数据科学家!
联邦学习、9N GL(图学习)。
也是一站式模型检测及推送中心,还支持了模型指标的异常检测等等。
3. 9N GRAPH End2End 训练
如 右 图 所 示 , 从 下 向 上 看 , 整 个 9N GL 框 架 做 了 多 个 层 级 的 模 块 抽 象 , 通 过
整个 9N GL 将外部数据与样本关联的图信息抽象成了 SubGraph,支持多种不同
形式的 SubGraph,不仅可以支持数据样本级别,甚至可以直接关联到在线检索
系统甚至图引擎。
DataFun:成就百万数据科学家!
9N GL 也支持多种方式的主模型+图模型训练模式,多阶段训练以及端到端联合
训练。
9N GL 中的 API 设计相对简单易用,主要包含有几个层次的训练接口:
图结构的点、边设计,支持多种行为类型,属性类型
图的采样方法种类包含有随机、带权、Meta-Path 等等
左侧是一段实例代码,仅需简单的函数调用,即可完成图解析,图邻居获取等操
作。
接下来,向大家介绍一下图在推荐、广告场景中的典型端到端建模思路。
以 CTR 模型为例,在信息源部分引入用户和商品的交互图结构化信息,通过图的
统一操作接口获取出建模所需要的图特征,然后经过特征编码器编码为常见的 id
表征。
此外,在异构图网络中,我们可以对不同语义空间进行节点信息聚合,来捕捉到
用户的潜在行为意图。
03
BVSHG
他们的思路大同小异,如下图举例来说:
将用户的行为序列按某种标准拆分
在图上随机游走,生成不同的游走序列/游走词
但这种做法通常适用于无监督学习,其监督信号与最终目标通常不一致,只适用
于多阶段训练。也没有充分发掘高阶的潜在关联关系。
他的好处是可以结合最终建模的目标进行端到端学习。
以上的两类建模适用场景不同,我们在其中发现存在一些不足,如:
DataFun:成就百万数据科学家!
商品的品牌、商家店铺等等)
U-I 之间的关系类型很丰富,不仅仅是常见的点击、购买关系,在用户与
商品的长期交互中,往往存在加购、分享、打赏、点赞、收藏等等。
针对我们之前跟大家提及的“极度长尾效应”,不同用户的行为序列长短
而我们非常贪心地希望既要对短期用户行为序列建模,又要对长期用户商品交互
信息的多视图抽取,还要在一定程度上解决序列化建模带来的性能挑战。
为图信息的构建,右侧为图建模方式图,接下来我们会分部分详细讲讲。
首先,我们重点讲讲如何构建的这一张长期用户多种行为 session-based 异构
图。
此外,构图时,我们采用了用户和商品、类目、品牌之间复杂的交互关系,比如
上 方 的 这 个 白 色 框 中 描 述 的 是 我 们 构 建 图 时 候 用 了 用 户 的 长 期 浏 览 session 关
列;
品牌之间的边的情况。
在此特别说明的是,我们只有一张包含多种节点、多种行为边的异构大图,右侧
的三个小图,是在大图中截取的一小段示意图。
当然了,在构建这张大图的时候,我们也有一些超参数需要调节,比如 session
② BVSHG:Multi-Behavior Sample
DataFun:成就百万数据科学家!
这一页我们的模型分为三个部分:
传统主模型部分,包含有 UserFeature、ItemFeature、ContextFeature
图模型输出一个 Embedding
单理解为 1 阶邻居。
权重,对用户的不同行为类型的邻居节点进行加权的随机采样。而对于 target
(Homogeneous Sample)的方式,从图中得到相同类型的邻居节点。
DataFun:成就百万数据科学家!
O。
同理,I2、I3 到 In 形成 O2、O3 到 On
进行序列关系的抽取,用来提取短期兴趣。
清晰容易理解。
4. 业务效果
DataFun:成就百万数据科学家!
相应上涨。当然模型结构也可以作为抛砖引玉,图表征信息与主模型可以采用多
种方式进行交互作用,End2End 训练。
5. 图算法的其他玩法
我们再来看看我们尝试过的其他图算法的玩法:
关系,从中发掘出了连通的节点簇,我们以最大团、正则化割构成更加合
理的兴趣簇的分类标准。
在工业化场景上,很多时候,数据中是存在缺失和错误的,我们利用了 U-I、
U-C 的事实图,两者进行联合修正,对数据做了增强和清洗。
04
未来展望
DataFun:成就百万数据科学家!
未来展望,我们最近一年在图上玩了不少花样,但总起来看,还有两个点我们还
有很强的兴趣继续探索:
AutoML on Graph,由于我们构建一张图,进行联合建模的试验调试成本
高,尤其是在超参的调试上耗费了不少人力,亟待一个可以解放人力的超
代速度。
基于图的强化学习,开篇我们找到了推荐系统的本质问题是在解决用户和
商品之间的关联关系,但这种关联关系既有短期的、也有长期的,但业务
评价标准更多是短期内能带来多少点击、多少商品购买,很难对长期的奖
励进行评估和建模,我们目前正在结合 RL 的方法,对用户长期购物路径、
对京东购物的喜好性分析、品牌影响力分析等等问题进行尝试中。
我们一系列关于广告、推荐算法的探索及工程实践将不止于图,9N AI 团队后续
也会尝试通过开源或分享的方式进一步与同行更好地交流和互相学习。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
内容理解在新浪微博广告中的应用
嘉宾:陈兆基 微博 资深算法专家
整理:付一韬
来源:DataFunTalk
导读:做算法的人常说"数据为王", 而对于做广告的人来说,内容理解则是广
告投放的基础。本次分享将介绍在微博广告中,内容理解起到了哪些作用。主
要内容包括:
广告系统及微博内容商业化简介
内容理解能力不足引发的问题
构建内容理解能力以及具体商业应用
01
广告系统及微博内容商业化简介
1. 广告系统各方利益诉求
DataFun:成就百万数据科学家!
广告投放实际上是广告主、广告平台以及用户三方利益分配的问题,因为需要
平衡三方的利益诉求,所以广告平台的核心任务是如何在尽量不打扰用户正常
的内容消费流程下达成尽可能多的广告主投放 ROI。
2. 广告投放核心任务
简单来讲,广告投放核心任务是让用户在合适的时间看到适合的广告。我们可
以拆解成三个部分,分别是:
DataFun:成就百万数据科学家!
谁在看:对用户的追踪,对用户的历史数据收集及各种用户画像的挖掘;
看的是什么:理解当下用户在平台上消费/交互过的内容;
适合看什么:根据上面两部分加上其他信息,会针对该用户当下适合看
什么广告进行投放。
3. 非内容场景
在微博中,非内容场景主要是关注流/热门流。它主要的特点是内容多样,上
下关联性弱。在这样的场景下,用户对于流内内容没有太多的预判,广告也不
一定需要和紧挨着的自然内容有联系,所以这种情况下广告投放更偏向于选
人。
4. 内容场景
DataFun:成就百万数据科学家!
与非内容场景对应的是内容场景,主要包括正文页、评论和搜索等场景,用户
通过对特定内容消费进去该场景。在这样的场景下,投放广告对内容的相关性
有要求,所以内容理解对这类场景下广告投放的影响更为显著。
02
内容理解能力不足引发的问题
1. 问题及难点:针对单一内容
DataFun:成就百万数据科学家!
首先,针对单一内容/单一广告由于内容理解能力的不足会引发以下几个问题:
营销内容监管:用户有时会抱怨平台的广告太多。经过日志分析,我们
发现除了通过广告系统投放出去的广告外,曝光记录中还包括用户关注
账号自行发布的营销目的较明显的"自然博文",所以这个时候用户刷微
博的时候会认为这些都是广告,比如下图左侧中某明星在双十一发布了
一篇自然博文就带有明显营销属性。我们的解决方案是将非广告营销内
容通过模型自动识别出来,而这方面的难点就是每天发博量太大,而且
缺乏标注。
内容展示时机把握:这个主要体现在相邻自然内容传递的情感不一定适
合做营销内容展示,比如下图中间上下两条自然内容都是关于某品牌的
概念机,但上面一条说它"没有实用价值",是一条负面的博文,而下面
是一条正面的博文。如果下面是一条商业推广的广告,则当下并不是一
个好的展示时机。我们的解决方案是对自然内容进行情感分析和实体标
注,在广告投放是进行规避。难点是微博会"创造"新的表达方式,比如
2018 年的"锦鲤"事件。
效果评估中的噪声:如果不对特定内容进行识别,那么创意模式引起的
特定指标表现"虚高"或"虚低"。比如下图右侧上方是一条"骗点击"的广
低 )。我们的解决方案是识别/标注特定内容模式,其中难点主要是广告
主会对创意进行不断迭代,我们也需要对模型进行不断的迭代。
DataFun:成就百万数据科学家!
2. 问题及难点:非单一内容
其次,针对非单一内容由于内容理解能力的不足会引发以下几个问题:
营销内容同质化:主要的问题是违规内容暴力闯审,频控/负反馈失效,
比如下图左侧中的两个营销内容,乍看一眼两个广告是一样的 ( 发布
视频相同,文字相似 ),但是发布营销内容是不同账号的,这样用户对
一个广告点了不感兴趣,还是会刷到相似的广告。我们的解决方案是识
DataFun:成就百万数据科学家!
别标注相同/相似营销内容,而难点是在不同场景下面相同/相似的定义
是不同的。
自然/营销内容不完全匹配:微博中娱乐明星/幽默搞笑/时事新闻是每日
自然内容曝光大头,这样商业属性并不明显,比如下图中间是微博的热
搜榜,这些自然内容所对应的标签是很难进行广告投放。我们的解决方
案是构建统一的商业内容标签体系,对自然内容进行商业属性挖掘,并
且基于这个进行广告投放。这里的难点是缺乏标注,覆盖率低。
优质内容生产门槛制约中长尾广告:中长尾的广告主缺乏相应能力/资
金创建高质量营销内容,对于任何平台来说广告收入主要来源于一小部
分头 部广 告主 这是 不安 全的 ,所以 通常 情况 是要 拉进 来中长 尾的 广告
主。我们的方案基于过往效果好的广告,智能生成/推荐创意内容,而
难点就是现有模型能力与实际应用是有差距的。
DataFun:成就百万数据科学家!
03
构建内容理解能力以及具体商业应用
1. 内容理解任务
的事情:
分词/实体识别:基本的分词和实体识别 ( 人名、地名、品牌等 );
情感分析:识别内容中的正负面情感,针对负面内容还需要进一步的判
负面内容不适合出特定品牌的广告,但不影响出其它品牌的广告;
相似判定:给定两篇内容,判定是否相似,或者给定一篇内容和查找范
围,返回这个候选范围与之相似的内容;
内容分类:构建一套商业的标签体系,基于不同的内容类型训练分类模
型,其中文本的分类和图片的分类最终结果融合是一个难点。例如卖手
DataFun:成就百万数据科学家!
机壳和卖手机的广告在图片上面是很难区分的,所以需要搭配着文案进
行区分;
特定内容识别与生成:包括关键词识别、创意模式识别、智能创意生成
和基于微博内容构建明星品牌知识图谱。
2. 基于内容的广告投放
基于内容的广告投放是针对内容场景,除了在已有人群定向之外,增加利用内
容理解的方式进行广告投放和优化的能力,主要分为:
标签构建:在标签构建中需要有区分度将内容分开,并且需要合适的颗
粒度来保证标签不会太细导致投放无法产生足够的曝光;
对内容进行标注:有了上面的标签体系之后,需要对内容进行标注,我
们目前有两个模型:
1. 快速响应模型:基于公开语料来作词向量和倒排索引来应对搜索或
新发热门博文等;
DataFun:成就百万数据科学家!
可以通过高速 KV 存储构建缓存,将深度模型的结果倒入线上投放;
基于内容广告投放:将内容的标签打好之后,可以根据内容进行广告的
投放:
1. 隐式优化:在满足广告主人群定向的条件下,根据当前的内容进行
户刷到了汽车相关的内容,在这个场景下面投放汽车相关的广告效果会
更好;
2. 显式优化:开放内容标签给广告主,将广告投放在选定内容标签对
应的内容相关广告位,这时并不关心当前请求对应用户画像标签属性。
上图是我们内容定向的简单流程图。
3. 明星品牌知识图谱构建及应用
DataFun:成就百万数据科学家!
对于为什么要做明星品牌知识图谱,主要原因是娱乐明星是微博内容的护城
河,而品牌广告是微博收入的核心,所以希望利用微博数据挖掘明星和品牌之
间的商业联系,更好的将这两者结合在一起。
构建明星品牌知识图谱的几个方面:
( 别名/行业/粉丝 ) 等实体;
关系:包括明星"代言"品牌、明星"参演"活动、品牌"赞助"活动等等;
服务,对明星/影视作品相关内容进行商业拓展,并针对相似账号进行
投放推荐。
DataFun:成就百万数据科学家!
上图是我们明星/品牌知识图谱的一部分,我们看下上面可以怎么进行应用。
言"味全酸奶,如果味全酸奶在微博投放广告就会出相关的广告,否则可以根
据味全酸奶对应行业信息出相似的广告。
另一方面实体还可以有竞争关系,例如上图右侧的图谱,宝马跟其他汽车的实
体存在"竞争"关系,宝马如果希望对投放内容进行"竞品"排除,可以根据图谱,
避免宝马广告出现在提及其他"竞品"的内容对应广告位。
04
总结与展望
DataFun:成就百万数据科学家!
在微博商业化中,我们对内容理解有以下几方面应用:
构建统一内容分析/表达能力:针对文本/图片/视频这些内容使用算法进
行分析/表示,例如分词、关键词识别、文本向量化等等;
视频的向量化表示,并将这些向量化进行融合;
提供基础内容理解服务:基于获取的统一向量表示可以完成对基础内容
的理解,比如相似性判定、内容分类等等;
灵活支撑各种商业场景:基于上面的基础内容理解服务,我们可以灵活
支撑上层各种的商业场景,例如隐式内容优化、显式内容售卖。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
CSCNN:新一代京东电商广告排序模型
分享嘉宾:刘鹄 京东 算法工程师
编辑整理:李沛欣
出品平台:DataFunTalk
导读:随着电商平台对图像信息的大量引入,通过图像分析来进行广告点击率判
断就成了新的趋势。本次分享的主题为 CSCNN:新一代京东电商广告排序模型,
体优化方案,有助于帮大家对这种算法在整体点击率模型框架中所起到的作用有
更加深入的理解。
本次分享主要包括以下内容:
DataFun:成就百万数据科学家!
背景介绍
CTR 模型的优化方向
我们的工作:CSCNN
效果展示
01
背景介绍
京东搜索广告依托于京东和京准通的数字营销平台实现搜索场景下的流量变现,
每天帮助数百万的广告主触达数亿的京东用户。
1. 京东 9NAI 平台
京东广告算法团队主要做京东电商平台下全场景的广告流量变现,包括的业务
线包括搜索、推荐、站外、线下、品牌,360 营销等等。用到的主要的模型,
DataFun:成就百万数据科学家!
2. 电 商 环 境 下 优 化 ECPM 的 主 要 方 式
前 序 模 块 会 召 回 n 个 广 告 , 都 是 和 连 衣 裙 的 Query 强 相 关 、 符 合 Query
约束的商品。
标就是平台的营收。
展现平台所获得的价值,就等于用户点击广告的概率再乘以这次点击的出价,
虑 Query 下所有展现给用户的商品对平台带来的总价值,即此时需要优化所
拉深度有限,所以该问题是有约束的优化:在用户看到有限深度广告的前提下,
极大化用户对平台的总营收。
02
CTR 模 型 的 优 化 方 向
概率。在搜索的场景下,该概率可以描述成依赖于 4 个不同类型输入的函数:
DataFun:成就百万数据科学家!
Query:描述用户搜索意图。
用户侧特征:描述用户的兴趣、偏好。
商品侧特征:描述这个商品是否优质。
context 特征:描述用户搜索时属于怎样的场景,是上班的时候搜的还
是周末搜的,此时是否有活动。
1. 特 征 工 程 与 提 取 数 据
特征工程主要包括以下几点:
多模态信息建模:
比如说 ID 类的或者是实数的特征。通过构建有区分性的特征来优化模
型的效果。
用户侧特征:对用户和商品之间关系的建模。比如说对用户序列进行建
模,或者是对用户和商品之间的交互关系做图表示建模。
DataFun:成就百万数据科学家!
图像特征:它和前面的信息源的模态不同,但在多媒体的场景下,图像
一般是和文字一起构建完整的商品信息展现给用户,所以这部分的建模
也很有必要。
解决过拟合问题:解决特征长尾稀疏时,embedding 的过拟合问题。
2. 对 CTR 模 型 做 目 标 函 数 刻 画
原因在于在搜索的场景下,候选集很有限。比如说搜连衣裙的时候, n 个商
品都是连衣裙,并不需要区分用户点击连衣裙商品和鞋子商品的概率的高低,
因为它没有可比性。所以在搜索场景下,做得更多的是在小候选集下的优化过
不一致的情况。测试集指的就是线上预估的集合,因为在线上召回几百个商品,
要对这几百个商品进行排序的情况下,因为实际上一页展现的商品有限,可能
建模。
3. 结 合 系 统 架 构 的 工 作
DataFun:成就百万数据科学家!
Online Learning:线上系统中数据分布式是时变的。工程上的传统方式是做
定期重启的全量训练。但由于数据量大,训练很慢,依然会导致训练和预估存
预处理和训练,使模型紧跟线上分布,解决时变带来的 gap。
线上分布式 serving:由于单机内存的限制,线上模型的体积会受到约束。我
们通过分布式和模型并行支持 TB 型的模型的加载,同时保证模型各部分参数
版本一致性。放开了线上内存的限制,增加模型的表达能力。
线上 gpu serving:放开线上计算复杂度的限制,有助于使用更深的更复杂的
模型结构来增加模型的表达能力。
所以说从整体上来看,本研究所探讨的使用视觉信息提升排序模型效果的工
作,主要还是集中在第一部分——特征和数据建模中多模态的建模。通过优化
这些图像的特征建模,能够得到商品侧更好的展现效果,进而提升用户对于商
品的点击率。
03
基 于 视 觉 信 息 的 CTR 广 告 预 测
1. 视 觉 信 息 在 商 品 展 现 中 给 人 呈 现 的 印 象
DataFun:成就百万数据科学家!
具体 Intuition 可以从这张图中看出来:在整个搜索版面中,每个商品都是图
文结合的。商品主图的版面很大,有很强的视觉冲击力,而且主图中会包含很
多细节信息,比如说材质、纹理、款式等,这些信息是难以通过 title、ID 类特
征或者是一些属性信息体现出来的,只能通过图像来提取这些细节信息进行建
模。而且在训练的过程中,只对这些 ID 类特征进行辨别,可能还会遇到一些
免这些事情来提升模型的泛化性。
2. 使 用 图 像 建 模 的 瓶 颈
DataFun:成就百万数据科学家!
工程实现较为困难:此前用到的一些点击率预估模型都是比较简单的 MLP 的
出现性能瓶颈,导致模型更新周期更长;serving 也会出现非常严重的性能瓶
颈,可能会直接影响线上服务的时迟。
建模效果收益有限:
在使用图像特征之前,我们已经提了很多的商品侧的特征,传统建模方式不能
完全保证从图像中来获取到的是增量细节信息。假如只提取到一些和已有属性
和传统图像的任务不同,例如检测分割或者是分类问题的监督信号非常强,但
点击率预估是一个监督信号很弱的场景。用户点或者没点二分类场景中,本身
练好 CNN 是困难的。
3. 问 题 的 解 决
下面我们主要针对这两点做了一些已有方法的调研。
DataFun:成就百万数据科学家!
的评估,很少有做工业级数据的线上 serving。所有工作都直接将传统
以期获得二阶段更好的效果。
04
我 们 的 工 作 : CSCNN
接 下 来 介 绍 的 是 在 KDD 2020 上 发 表 的 :专 门 用 于 视 觉 感 知 的 电 子 商 务 中
的点击率预测场景下的类别特定的神经网络。
DataFun:成就百万数据科学家!
中做了 AB 测试,结果表明本方法可以显著提升线上效果。目前本方法已经在
JD.com 最大的广告位上达成了全量。
1. 研 究 的 出 发 点 : CTR 模 型 建 模 本 身 存 在 的 问 题
DataFun:成就百万数据科学家!
一些问题。
信息浪费:在建模图像之前,模型通过类目等 id 类特征就已经知道这
即这部分的信息被浪费了。假如知道这些先验,CNN 的任务就会更简
单些。换句话说,CNN 的任务应该是:在知道该商品为连衣裙类目的
情况下,提取出连衣裙相关的特征、捕获连衣裙的细节。假如能把已有
好。
包含与类目无关的信息:如果把这些有视觉先验的信息提前告诉 CNN,
它就有可能避免提取到一些与类目无关的信息。对于连衣裙图片,可能
背景中有一些和类目相关性不高的物品。我们可以根据类别先验,避免
将背景噪声耦合进来。
综上,我们整体的方向就是通过已有的图像之外的视觉先验,帮助 CNN 的学
习。
2. SENet 作 为 特 征 再 校 准 模 块 的 作 用
DataFun:成就百万数据科学家!
示图像不同方面的信息,通过自注意力机制的方式去进行选择。但是有没有可
能把这些类目的信息或者是从其他地方得到的视觉先验加进来,做一些基于视
觉先验的特征选择呢?答案是肯定的。
3. 类 目 特 定 的 卷 积 神 经 网 络 : CSCNN
DataFun:成就百万数据科学家!
SENET 稍微有点类似。
还是以连衣裙特征提取任务为例,当给定类目是连衣裙时,可以把连衣裙的
的图像特征的抽取和图像特征选择。
是把很大的图像信息抽取问题特化成小类目下的图像特征抽取问题,进而简化
CNN 的学习任务。
DataFun:成就百万数据科学家!
的图像特征表示。经过全连接,得到类目特定的通道域侧的加权系数。平均池
3. 用 9NAI 进 行 的 工 程 实 现
DataFun:成就百万数据科学家!
再介绍一下为了解决前面说到的一些工程实现的问题,和对应的加速方法。
下来。由于线上预估时实际上没有用到图像,所以这部分特征里也是没有图像
的。
经过对相同商品 ID 及其图像特征的离线拼接,特征中就同时包含了图像特征、
估训练模型。
采 用 了 一 种 空 间 换 时 间 的 加 速 方 式 。 具 体 是 我 们 先 对 全 站 商 品 的 CNN
embedding 进行离线预估,形成词表,把这个词表和模型的其他部分一起加
之所以这样做,是因为统计发现广告主更换商品主图的频次很低。每天更新模
4. 离 线 训 练 加 速
加入 CNN 之后,原来可能一天能训练好的模型需要数天时间才能训练好,CNN
在这部分的离线计算瓶颈比较大。
具体进行离线加速的方式包括两部分:
按照商品的主图进行聚合。我们将至多 25 个对应同商品的不同的请求
聚合 ( 他们可能是来自不同用户的,但是他们看到或者点击了相同的
商 品 )。 这批 聚 合 了的 请 求在 训 练 的过 程 中 由于 图 像是 相 同 的, 所以
训练效果的情况下,能极大提升离线训练效率。
本, 进而 提升 离线 训练 速度 。最终 在百 亿规 模的 训练 集上我 们可 以在
24 小时内完成离线训练。
05
实际效果
接下来介绍整个算法以及工程架构在线上和公开数据集上的实际效果。
1. 算 法 模 型 在 公 共 数 据 集 中 的 效 果
DataFun:成就百万数据科学家!
以亚马逊的数据集为训练集,每个子类里边都有几十类的商品,采用 AUC 评
估指标,主要的对比方法分成以下几种:
不依赖于图像的方法;
依赖图像的方法;
在图像之外加入类别信息的视觉先验的方法。
DataFun:成就百万数据科学家!
作,在卷积的后几层加入空间域和通道域的注意力机制。
对 比 之 后 发 现 , 加 入 图 像 信 息 相 比 不 加 图 像 有 非 常 大 的 AUC 提 升 。 通 过
于非迁移学习的方法可能提取出来的特征可能和已有的特征是有关系的,所以
做迁移学习效果更好一些。
DataFun:成就百万数据科学家!
这三种方法就是加入类别信息的方法。虽然已有工作也加入了类别、视觉先验,
提取了特征之后,再和这些类别、视觉先验进行耦合建模。
果并没有我们好。我们在所有的指标上都大幅领先了 state-of-the-art。
2. 算 法 模 型 在 工 业 数 据 集 中 的 效 果
工业数据相比于公开数据有很大的不同,主要有两大特点:
的人工提取的特征。
DataFun:成就百万数据科学家!
工业数据的特点:长尾、稀疏。
次数不足 10 次。在这种非常稀疏的场景下,特征泛化性差,过拟合和冷启问
题严重。
DataFun:成就百万数据科学家!
块。
征应该加强或者减弱,整个模型效果又得到一点点提升。但主要的提升还是来
前 CSCNN 已经在京东搜索广告上全量,每天服务数亿用户和数百万广告主。
今天的分享就到这里,谢谢大家。
DataFun:成就百万数据科学家!
因果推断在阿里飞猪广告算法中的实践
广告主、平台和用户的利益进行优化,难以准确调优这一平台整体目标。我们通
其中预算分配策略的视角,介绍飞猪广告算法如何利用广告效应模型进行业务目
容包括:
DataFun:成就百万数据科学家!
平台视角下的广告预算分配
因果推断技术
因果推断在广告策略中的实践
未来思考
01
平台视角下的广告预算分配
1. 预算分配:多目标优化问题
广告策略(或者说预算分配),本质上是一个多目标优化的问题。下面结合一个
示例简述一下这类优化问题的目标和约束。
从平台角度上来讲,预算分配的优化目标往往是包含多种复杂的因素的函数:
平台变现效率(即 ecpm)
广告点击率(ctr a d )
广告转化率(cvr a d )
广告主收入(gmv a d )
DataFun:成就百万数据科学家!
平台利润(revenuea d )
同理,从约束角度看,主要包含以下约束:
广告主总预算(budget)
投放计划的投资回收率(ROI)
点击率下限(ctr t h r e s )
广告主收入下限(gmv t h r e s )
平台利润下限(revenue t h r e s )
另一方面,对于平台中的不同的业务,不同的用户,甚至不同产品不同的投放单
元,具体的目标和约束也会存在较大差异。针对不同的目标和约束,需要使用不
同的因子加以控制。
2. 常用控制方法和控制对象
常用的控制算法包括:
PID:最常用的一种传统的工程方法
对偶法:基于线性规划求解拉格朗日系数,得到影子成本,通过影子成本
进行线上控制
线性插值法:通过历史数据拟合控制变量与目标变量的关系
以上提到的几种方法有一个共同的特点:都基于线性模型,因此,要想达到有效
的控制,就需要线性因子。
常用的控制对象包括:
广告主的出价(bidding)
CTR/CVR 准入下限
参竞概率
DataFun:成就百万数据科学家!
3. 使用因果推断的语言建模
广告策略问题,常用的策略因子包括:
CTR 预估(pCTR)
CVR 预估(pCVR)
出价胜出概率分布(Bidding Landscape)
用 pCTR、pCVR 等策略因子是不够的。因为从业务角度看,在电商领域,原生广
告和产品(包括搜索、信息流等)的相似度很高,因此广告投放的分布和对应原
测广告投放的真实效果。
基于此,引入本文的主题——使用因果推断建模。
DataFun:成就百万数据科学家!
模型控制目标是平台的收入(即 GMV)
只有通过建立上述模型,才能优化广告投放的真实效果,实现平台和广告主的共
赢。该模型涉及到的因果推断技术,将在下一章节详细阐述。
02
因果推断技术
1. 基本问题
然而影响平台建模的因素很多,比如不同活跃度的用户、不同的时间段、不同的
行业等,都会影响广告在搜索推荐中的转化效率。
DataFun:成就百万数据科学家!
2. 影响因素的控制和约束
较为朴素的方法就是控制变量法,即人为控制和约束除了广告投放之外的其他相
关因子。
具体来说,有两类实现路径:
定义 confounders:同时影响 T 和 Y 的变量
是天然的随机分配
基于以上这两条假设,从数学上理解,其核心是比较投放广告与否的前提下,平
台 KPI 的期望:
由于 X 与 Y/T 独立,故添加条件概率不影响最终的期望值;这样,待求解的期望
值等同于实际样本分布的期望。从因果推断角度看,这是个比较理想的情况:从
DataFun:成就百万数据科学家!
观察数据上得到的模型,和我们期望的因果效应相等的时候,就可以直接使用机
器学习模型解决问题。
抛开数学公式,从常识角度也能解释以上假设:每组特征下可视为随机实验,得
到局部的无偏估计;那么任意样本上的效应,可以在相应的 X 的分布上积分得到。
3. 从机器学习视角审视
前文简述了一些因果推断领域的技术背景,下面从机器学习视角审视这个问题,
将会遇到两个挑战:
样本结构方面,对两组样本(T=0 和 T=1)的分布要求更加严格:
对于一般的预测问题,只需要保证样本整体无偏,即可预估
对于因果推断问题,除了样本整体无偏,还需要要求两组样本的结构相近;
否则会存在误差累计效应
对变量 T 的推断准确度要求更高,这并不是机器学习所擅长的工作:
传统的统计模型,通过对数据引入假设,可推断参数分布
大数据时代的算法模型,往往关注预测精度而非统计推断能力
4. 样本结构问题
DataFun:成就百万数据科学家!
基于前文提到的两个挑战,首先讲述样本结构问题的处理办法。
GMV;处理组和控制组的用户分布有明显差别(处理组的用户价值较高,控制组
的用户价值较低)。
有 3 种方法可以解决这类问题:
① 随机实验
选取部分流量,线上广告随机投放,不采用任何策略
成本过高,难以落地
② 后采样
通过重采样方法,使两组样本分布一致
③ 特征工程
机器学习常用方法
假 设 X 包 含所 有的 confounders, 则虽 然两 组样 本的 P(T,Y)不 相同 ,但
P(T,X,Y)相同
实际很难做到,且对样本也有较高要求
DataFun:成就百万数据科学家!
在后面的章节中会详细介绍以上方法在广告策略实践中的具体应用。
5. 变量的统计推断问题
第二个问题是变量的统计推断问题:在大数据时代常用的复杂模型中,如何精准
推断某一个变量的效应?具体到我们的广告策略场景上,就是如何推断广告是否
这类问题其实是很多学科里面临的一个终极问题,很难得到真正解决。具体到工
学习到正确的效应。
03
因果推断在广告策略中的实践
1. 特征工程
先从前文提到的两大分支(特征工程,样本重采样)入手,具体讲述工程落地的
方法。
DataFun:成就百万数据科学家!
特征工程方面,目标是捕捉到所有的 confounders(即影响到广告是否投放,以
及影响到我们的平台效率的所有特征)。
对广告效率的预估,会预先将原始的复杂特征做汇总。基于此,整体的思想就是
基于原生的广告搜索模型做迁移学习。
然而,搜索推荐的信息流和广告策略的数据,两者的分布往往存在差异;因此会
涉及到模型的泛化性能问题,需要对模型的拟合精度和泛化能力做权衡。具体来
型训练方式完全不同于 CTR/CVR),将原生信息流样本和广告样本作为两个任务
对 于 刚 刚 提 到 的 模 型 精 度 和 泛 化 能 力 的 权 衡 的 问 题 , 我 们 采 用
样本和广告样本的占比。
DataFun:成就百万数据科学家!
Queue(原生产品队列)、用户画像等,在此不做赘述。
2. 样本重采样
除了特征工程,另外一部分就是样本的重采样。对于纯观察数据,如何在避免 AB
实验的前提下,通过重采样方法在投放广告和不投放广告这两组的样本中构造相
似的分布。
DataFun:成就百万数据科学家!
样本重采样常用的方法包括:
基于样本被分配到处理组的概率进行重采样
采样结果与随机分组相似
维分布,还受到广告本身的很多策略甚至一些产品业务规则的影响,较难
进行机器学习建模,因此实际应用很难
需要注意分析样本分布
实际应用可行
以上述搜索结果页为例,每个商品都可以得到一个模型预估值(pCTR)。可以将
首先对控制组(即未投放广告)的样本进行全量的索引构建;接着对处理组(即
广告投放样本,进行配对。将控制组样本和处理组样本进行两两配对以后,很容
的影响。
3. 模型设计
从模型设计角度,如何捕捉单变量的影响效应?前面提到过,这个问题很难得到
真正的解决;但是我们有几个启发式的方法可以得到落地应用:
connection)将其接入到网络的最后一层,从而避免复杂的非线性因素的
干扰
借助迁移学习中的领域自适应技术(Domain Adaption),通过多任务学
习来实现。具体来说,是将两组样本的投放广告与否,当作 Multi-task 的
方式处理
DataFun:成就百万数据科学家!
投放的效果
4. Uplift Evaluation 简介
因果效应模型的评估,和常见其他用户模型的评估相比,最大的难点在于,每个
样本都没有相反 label。对于这类问题,业界常用分位数分析法进行评估,即对于
每一类样本,按照广告效应的预测值,从大到小来进行分桶(上图左侧,分了十
个桶);每个桶内聚集广告效应的预测值相近的样本(包含不同的 label);将每
上图是个理想的情况:左侧贡献比较大,右侧贡献比较小,甚至是负的。基于柱
状图做累计分布计算,得到下图:
模型预估效果越好。
DataFun:成就百万数据科学家!
假如我们直接做预估模型,选取 SRP(结果搜索页,一部分是广告,一部分是非
的 embedding);模型预测某一条用户请求是否产生订单(listing to order)的
概率。
由此可见,预估任务的预测能力和对广告效应的评价能力并非正相关。
模型加入样本匹配后(表格最后一行),将样本调整成近似随机实验的样本,可
优化的必要性。
DataFun:成就百万数据科学家!
网络对用户搜索请求预期的转换效率进行建模,右侧网络对“广告是否投放”产
生的影响进行建模,最后通过线性模型加以合并。对于广告效应的推断方面,这
的模型,这类基于网络结构的模型在特征权重拟合方面会受到模型结构以及数据
的限制。
这里尝试换了一个思路方向,借助领域自适应中的多任务学习方法,将“是否投
放广告”作为两个不同的任务(而不是一个任务中的二级特征)进行分别预估,
通过建立完全不同的网络来学习“是否投放广告”产生的效果。在重采样后的样
从上图的右表也可以看出,对于未重采样的原始样本,uplift 指数反而会更差。
8. 模型改进思路三: Effect-Net
DataFun:成就百万数据科学家!
的作用方式。类似于前文所述的改进思路一,使用两个网络分别对预测效果和广
告投放相应;与思路一不同的是,在模型结构上可以显式地体现出业务理解的先
重采样的有偏样本)的表现效果最好。
04
未来思考
1. 因果推理与深度表示学习之间的关系
基于已有的工作,学界提出了以下几点思考:
怎样的表征是有利于因果效应的估计的?
表征学习在 debiasing、模型泛化等问题中的应用
DataFun:成就百万数据科学家!
基于以上几点,目前对于表征学习和因果推理方面的前沿研究方向主要是
组和未投放广告组进行分别建模,进而将两个数字相减,得到因果效应。之所以
称之为 balanced,其实是在目标上加了一个约束,促使两组样本上学习到的表征
分布相似。
方法论上因果倒置的问题:随机或自然实验中,正是因为实验分组与协变量的独
DataFun:成就百万数据科学家!
立性,带来了各组样本分布的相似性,而反过来在模型训练中通过目标函数的构
造来获取分布相似的表征,能够带来准确的因果效应估计,是值得怀疑的。
从另一个方面看,在学习相似分布的过程中,必然要求模型忽略掉部分
confounder 的效应,这又进一步违背了因果推断中条件独立的假设。类似的工作,
现有的改进方法和改进思路或多或少存在不足,这一方向存在很大的改进空间;
团队也在着手这一方向的深入研究。
今天的分享就到这里,谢谢大家。