【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

深度学习在搜狗无线搜索广告中的应用

  • 2016-08-07
  • 本文字数:4827 字

    阅读完需:约 16 分钟

搜索引擎广告是用户获取网络信息的渠道之一,同时也是互联网收入的来源之一,通过传统的浅层模型对搜索广告进行预估排序已不能满足市场需求。近年来,深度学习在很多领域得到广泛应用并已取得较好的成果,本次演讲就是分享深度学习如何有效的运用在搜狗无线搜索广告中。

本次分享主要介绍深度学习在搜狗无线搜索广告中有哪些应用场景,以及分享了我们的一些成果,重点讲解了如何实现基于多模型融合的 CTR 预估,以及模型效果如何评估,最后和大家探讨 DL、CTR 预估的特点及未来的一些方向。

一、深度学习在搜索广告中有哪些应用场景

比较典型的深度学习应用场景包括语音识别、人脸识别、博奕等,也可以应用于搜索广告中。首先介绍下搜索广告的基本架构,如下图:

  1. 首先用户查询。
  2. 查询词给 Bidding Server 处理,Bidding Server 主要负责业务逻辑。例如某种广告在什么情况下不能展现,或这个客户同一个广告在什么时间段什么地域展现。
  3. Bidding Server 请求 Retriever Server,Retriever Server 主要负责召回,广告库很庞大(搜狗的广告库大概在几十亿这个规模), 因为数据量非常大,所以需要根据一些算法从中找出和当前查询词最相关的一批广告, 这就是 Retriever Server 做的事情。
  4. Retriever Server 处理完后,会把这些比较好的广告回传给 Quality Server,Quality Server 主要负责点击率预估和排序,此时的候选集数量相对较少,Quality Server 会采用复杂的算法针对每条广告预估它当前场景的点击率,并据此排序。
  5. Quality Server 将排序结果的 top 回传给 Retriever Server。
  6. Retriever Server 回传给 Bidding Server。
  7. Bidding Server 做封装最后展示给用户。

以上过程中可应用到深度学习的场景如下:

二、基于多模型融合的 CTR 预估2.1 CTR 预估流程

CTR 预估的流程图如下:

  1. Data 是原始数据,包括点击及查询日志,从这些原始数据里抽出一些特征。
  2. Feature 包括查询特征、广告特征、匹配特征。查询特征是和查询词相关的特征,查询发生的地域、时间等。广告特征是指广告本身的信息,例如:来自哪个客户,是哪个行业的,它的关键词是什么,它的标题、描述、网址是什么等各种信息。匹配特征是指查询词和广告的匹配关系。
  3. 然后会进行模型的训练,包括线性和非线性。
  4. 模型在线下训练完后会到线上, 线上 Server 会实时做特征抽取并预估。例如:线上实时收到查询请求后,就会知道查询词是什么。前面讲的 Retriever server,它会召回一系列广告,并抽出相关信息,比如广告的标题、关键词、描述等信息,有了这些信息后会利用加载的模型给出预估 CTR,最终会进行 Rank 排序,从而筛选出满足指定条件的一些广告进行展示。

2.2 特征设计 **** 离散特征

离散特征是指把东西分散出来表示,比如 OneHot,非常直观,例如用户当天所处的时间段,他和最终点击率有关系,那么我把一天 24 小时分成 24 个点,他在哪个小时就把哪个点点亮置 1,这个特征就设计完了。它的刻画比较细致,设计比较简单,但他的特征非常稀疏,我们线上特征空间非常大,有上十亿,但任何一个请求场景到来,它真正有效的特征大概只有几百个,绝大部分都是空的。因为特征量非常大,不能设计太复杂的模型,否则无法用于线上。

离散特征总结:容易设计,刻画细致,特征稀疏,特征量巨大,模型复杂度受限。

连续特征

还是以时间举例,离散特征会把它变成 24 个点,连续特征就会变成一个值,比如 1、2、3、4、5 一直到 24,它只会占一个位置。需要仔细设计,很难找到一个直接的方法来描述查询词中包括哪些东西。它是定长的,所以一个请求场景到来,它有多少特征是固定的。不像离散特征是不定长,查询词不一样,有的是两个特征或三个特征,对于特征点可能有两个或三个,这对于我们后面的工作也有一定的影响。连续特征比较稠密,每个位置都会有值,它特征量相对较小,如果用连续特征设计的话可能需要几百维就可以,因此可以使用多种模型来训练。

连续特征总结:需要仔细设计,定长,特征稠密,特征量相对较小,可以使用多种模型训练。

2.3 模型类别

线性

优点:简单、处理特征量大、稳定性好,缺点:不能学习特征间的交叉关系,需要自己去设计。比较典型的如 Logistic Regression,有开源的工具包,部署简单且效果不错。

非线性

优点:能够学习特征间非线性关系,缺点:模型复杂、计算耗时。

比如 LR 模型就算特征再多,它只是查表加在一起做指数运算就出来了,像 DNN、GBDT 就会非常复杂,导致计算过程比较慢。

总结:Logistic Regression 即能处理连续值又能处理离散值。DNN 几乎不能处理离散值,除非做特殊的预处理。

2.4 模型融合

前面讲过每个模型都有自己的特点:Logistic Regression 处理特征量大,大概在 2010 年前后开始大量应用于业界,很难有模型能完全超越它;DNN 可以挖掘原来没有的东西。我们就想这两个模型能不能将优点进行融合,扬长避短,从而得到更好的结果。

第一种方案:CTR Bagging

  • 有多个模型,将多个模型的输出 CTR 加权平均。
  • 实现方法简单,模型之间不产生耦合。
  • 可调参数有限,只能调 Bagging 权重的参数,不能调其他东西,所以改进空间相对较小。

第二种方案:模型融合

  • 任一模型的输出作为另一模型的特征输入, 彼此进行交叉。
  • 实现方法复杂,模型之间有依赖关系,因依赖关系复杂,风险也比较高。
  • 好处是实验方案较多,改进空间较大。

我们选了后一种方案,因为单纯 CTR Bagging 太过简单粗暴了。

2.5 模型融合的工程实现

目标

  • 可支持多个不同模型的加载和计算
  • 可支持模型之间的交叉和 CTR 的 bagging
  • 可通过配置项随时调整模型融合方案
  • 避免不必要的重复操作,减少时间复杂度

解决方法 (引入 ModelFeature 的概念)

  • 模型本身也看做一个抽象特征
  • 模型特征依赖于其他特征,通过计算得到新的特征
  • 模型特征输出可作为 CTR,也可作为特征为其他模型使用
  • 限定 ModelFeature 的计算顺序,即可实现 bagging 模型交叉等功能

2.6 模型融合模型融合流程图如下:

  1. 首先线下,将 PV、Click、Session 做成一个 sample。
  2. 然后把 sample 做成特征,包括 OneHot、CTR。
  3. 分别将 OneHot、CTR 传送到各自模块的 train,就会得到相应的模型。
  4. 线上,Bidding Server 会经过 Retriever Server 召回广告。
  5. 然后传给 Quality Server 进行计算,它是通过 One Case 存储和这个查询相关的所有信息。
  6. Quality Server 会把 One Case 里的信息转换成 One Hot 特征。
  7. 然后将结果存到特征池,特征池包含所有特征。
  8. LR 模型从特征池里读取数据,而后计算出 CTR,还包括其他增量信息。
  9. 将这些回送到特征池。
  10. 此外 DNN 模型也会读取特征池里的信息,并将最终计算结果回传给特征池。
  11. CTR 可以从特征池里直接取出,然后进行后续的操作。

我们去年将这套框架部署到线上,并持续进行改进,在线上运行了半年多,基本能适用于业务的发展:曾经上线了 LR 和 DNN 的交叉,还上线了 LR 和 GBDT 的融合。GBDT 会将过程信息回传给 LR, 由 LR 完成最终输出。此架构经过生产系统的检验,运转正常。

2.7 模型效果评估

期间我们会做很多实验,比如 DNN 训练比较耗时,线上也比较耗时,因此我们会进行多种优化和评估。那么就涉及到一个问题,如何评估一个模型的好坏?线下指标主要采用 AUC, 定义如下图所示:

我们来分析下这个图,选定一系列阈值将对应一系列点对,形成一条曲线,曲线下方的面积总和就是 AUC 的值:红线就是纯随机的结果,对应的 AUC 是 0.5;模型越好,曲线离左上角就越近。这个值在我们模型评估里用得非常多,该值考察的是模型预估的排序能力,它会把模型预估排序结果和实际结果进行比对运算。该值很难优化,一般而言,AUC 高,模型的排序能力就强。

线下指标 AUC 很重要,但我们发现单纯靠这指标也是有问题的,不一定是我们的线上模型出了问题,可能是其他的问题。做广告预估,AUC 是线下指标,除此之外,最核心的指标是上线收益,有时这两个指标会有不一致的地方,我们也尝试去定位,可能的原因主要有:

  1. Survivorship bias 问题:线下训练时所有的数据都是线上模型筛选过的比较好的样本,是我们展示过的比较好的广告,一次查询三条左右,但实际上到了线上之后,面临的场景完全不一样。前面讲过 RS 筛选出最多近千条广告,这些广告都会让模型去评判它的 CTR 大概是多少,但实际上训练的样本只有最终的三条,对于特别差的广告模型其实是没有经验的。如果一个模型只适用于对比较好的广告进行排序,就会在线上表现很差,因为从来没有见过那些特别差的广告是什么样的,就会做误判。
  2. 特征覆盖率的问题,例如:我们有个特征是和这个广告自身 ID 相关的,该信息在在线下都能拿到,但真正到了线上之后,因为广告库非常大,很多广告是未展示过的,相关的信息可能会缺失,原有的特征就会失效,线上该特征的覆盖率比较低,最终将不会发挥作用。

2.8、并行化训练做 DNN 会遇到各种各样的问题,尤其是数据量的问题。大家都知道模型依赖的数据量越大效果越好,因为能知道更多的信息,从而提升模型稳定性,所以我们就会涉及到并行化训练的事情。

加大数据量,提升模型稳定性

我们做搜索广告有一个重要指标:覆盖率,是指此情况下是否需要显示广告。覆盖率高了,用户可能会不满意,而且多出来那些广告多半不太好;但如果覆盖率很低,又等于没赚到钱。这个指标很重要,所以我们希望融合模型上到线上后覆盖率是可预测的。

我们发现这个融合模型会有自己的特点,上到线上之后会有些波动。例如:今天我们刚把模型覆盖率调好了,但第二天它又变了。然后我们分析,可能是因为数据量的问题,需要在一个更大的数据集上训练来提升模型的稳定性。

加大数据量,提升模型收益

其实就是见多识广的意思,模型见得多,碰到的情况多,在遇到新问题的时候,就知道用什么方法去解决它,就能更合理的预估结果。

我们调研了一些方案,如下:

  • Caffe只支持单机单卡
  • TensorFlow不支持较大 BatchSize
  • MxNet支持多机多卡,底层 C++, 上层 Python 接口

MxNet 我们用得还不错,基本能达到预期的效果。

三、若干思考

3.1 Deep Learing 的强项

输入不规整,而结果确定。

例如:图像理解,这个图像到底是什么,人很难描述出到底是哪些指标表明它是一个人脸还是猫或狗。但结果非常确定,任何人看一眼就知道图片是什么,没有争议。

具体到我们的广告场景,广告特征都是有具体的含义。例如:时间信息,说是几点就是几点,客户的关键词信息,它写的是什么就是什么,文本匹配度是多少,是高还是低,都有确定的含义。

3.2 CTR 预估

输入含义明确,场景相关,结果以用户为导向。

例如:一个查询词,出现一条广告,大家来评判它是好是坏,其实它的结果是因人而异的,有人觉得结果很好,而有人却觉得一般,它没有一个客观度量的标准。所以我们认为 CTR 预估跟传统的 DL 应用场景不太一样。

我们 DNN 用到线上后,收益大概提升了百分之五左右,但相对 Deep Learing 在其他场景的应用,这个提升还是少了些。语音输入法很早就有人做,因为准确率的问题一直没有太大应用,但 Deep Learing 出来后,比如讯飞及我们搜狗的语音输入法,用起来很不错,准确率相比之前提高了一大截。

3.3 未来方向

Deep Learing 既然有这些特性,我们会根据特定的业务场景进行应用,比如在某些情况下把它用上去效果会很好,我们还想做一些模型融合的事情。

我们做实验发现把 DNN 和 LR 融合后,最好的结果相比 LR 本身,AUC 大概高不到一个百分点。我们也尝试过直接把 DNN 模型用到线上去,效果很差,就算在线下跟 LR 可比,但到线上后会有一系列问题,不管是从覆盖率还是从最终收益都会有较大的差异,这是我们在搜狗无线搜索数据上得出的实验结论,大家在各自的业务场景下可能有所区别。

如果你们没有足够经验去手工做各种交叉特征的设计,直接用 DNN 可能会有好的成果。如果在非常成熟的模型上做,可能需要考虑下,收益预期不要太高。

本文来自搜狗资深研究员舒鹏在携程技术中心主办的深度学习 Meetup 中的主题演讲。演讲整理:余清兰。


感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2016-08-07 19:002961

评论

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

es 笔记二之基础查询

Hunter熊

elasticsearch

软件测试/测试开发丨接口测试学习笔记分享

测试人

Python 程序员 软件测试 接口测试 Mock

IPQ6010 QCA8075 QCN5052 QCN5022 WiFi Embedded Motherboard

wifi6module

IPQ6000 ipq4029

保险业务连续性保障:从测试到生产,混沌平台建设节奏如何把控?

TakinTalks稳定性社区

会是调用第三方接口那么简单吗?

高端章鱼哥

程序员 前端 接口 系统

人脸识别技术在智慧城市建设中的应用

来自四九城儿

人脸识别技术的未来发展方向

来自四九城儿

起风了,泛娱乐企业出海如何正确扬帆?

ToB行业头条

代码随想录训练营 Day02 - 数组(下)

jjn0703

算法

通过构建背景图学习CSS径向渐变

南城FE

CSS 前端开发 渐变

筑牢三大新型能源基础设施,能源变革的分水岭和路线图

脑极体

新能源

倒计时1天 | 诚邀见证“九章云极DataCanvas新产品发布会”!

九章云极DataCanvas

为什么负数的补码等于反码加一

xzy

【汽车虚拟仿真】VR技术如何加速自动驾驶进程?

3DCAT实时渲染

虚拟仿真 云仿真 汽车虚拟仿真

让沉寂的数据“活”起来,用友BIP资产云提升港口企业决策效率

用友BIP

港口 资产云

数智时代的守护者:低代码开发平台如何解决AI安全挑战?

快乐非自愿限量之名

AI 低代码 数智时代

重磅发布 | 博睿数据发布互联网行业精选案例集

博睿数据

互联网 可观测性 博睿数据 One 精选案例

C++实现简单的ls命令以及原理

智趣匠

未来已来!探索AI医疗与低代码开发平台:引领健康浪潮的科技巨潮

不在线第一只蜗牛

人工智能 医疗健康领域 AI医疗

九章云极DataCanvas公司加入中国移动信息现代产业链“十百千万”计划

九章云极DataCanvas

教你如何用Vue3搭配Spring Framework

华为云开发者联盟

前端 开发 华为云 华为云开发者联盟 企业号 6

人脸识别技术的分类和实现方法

来自四九城儿

我为什么选择多边形架构做为工程的基础思想

软件工程师-罗小东

《巫师》系列游戏及《赛博朋克2077》本地化总监 Mikołaj Szwed 将出席 2023 中国游戏开发者大会(CGDC)

CGDC中国游戏开发者大会

本地化 游戏开发 ChinaJoy

保姆级教程:带你体验华为云测试计划CodeArts TestPlan

华为云PaaS服务小智

云计算 开发者 软件开发 华为云

一文吃透MAUI、WinUI3和WPF的优势及劣势

这我可不懂

WPF MAUI

Spring Cloud 如何引入云原生网关,创新微服务架构

阿里巴巴云原生

阿里云 微服务 云原生 Higress

参展有礼|华秋电子诚邀您参加2023慕尼黑上海电子展

华秋电子

神级外挂 | 网络性能优化,2个补丁就足够

鼎道智联

我在中小型项目SuperCell模式实战经验

软件工程师-罗小东

HTML5 游戏开发实战 | 俄罗斯方块

TiAmo

html html5 6 月 优质更文活动

深度学习在搜狗无线搜索广告中的应用_语言 & 开发_舒鹏_InfoQ精选文章