排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
首页
/
【技术分享】美团王兴星:在线学习在广告系统的应用
【技术分享】美团王兴星:在线学习在广告系统的应用
数据库技术大会
2016-08-04
353
本文整理自DTCC2016主题演讲内容,录音整理及文字编辑IT168@ZYY@老鱼。如需转载,请先联系本公众号获取授权!
演讲嘉宾
王兴星
美团高级技术专家
目前任职于美团外卖技术部数据组,高级技术专家,负责外卖变现相关技术工作。加入美团前,任职于搜狗广告技术部,担任资深研究员,负责搜狗PC、无线联盟检索、排序等算法。所研发的特征框架、训练系统应用于搜狗联盟广告、DSP等多个产品线。曾获商业技术部犀牛、MVP等奖项。也是数据挖掘爱好者,曾获百度电影推荐大赛第一名、品友互动RTB算法竞赛Offline/Online第一名,KDDCUP2012全球第三名等奖项。
分享内容
大家下午好!我是来自美团的王兴星。我今天分享的主题是《在线学习在广告系统中的应用》,首先先来回顾一下互联网广告的发展历史:
互联网广告的发展历史跟互联网的发展历史息息相关。首先看一下互联网的发展历史,最开始是门户,之后是搜索引擎。就像百度一开始跟新浪合作做搜索应用,后来独立出来做搜索引擎一样,再往后就是垂直类网站,随后是移动互联网的兴起。互联网广告的发展历史和互联网的发展历史是相对应的,门户时代的互联网广告其实是照搬杂志的广告模式,通常以Banner广告为主,搜索时代以搜索广告为主,随着垂直类网站地兴起,这部分站长有流量变现有强烈诉求,在这种情况下诞生了广告网络或RTB广告,移动广告到目前一个成功的产品是原生广告Native Ads,比如我们熟知的Feed流广告。
下面我们简单看一下搜索广告,当一个用户输入预查询文字之后,我们会反馈一个检索结果。通常来说,排在前面的都是一些商业门户,比如上图所示的京东商城。
展示广告,若你去一些地图的网站,看到一些旅游相关的信息,因为它们可能判断我们会想去旅游。
再比如,我们在搜索里面输入了一些感兴趣的东西,比如我对编程感兴趣。当我在其他网站浏览时,就可能会看到一些搜索给我推送这方面的广告,我们把这种广告称之为文字链广告或搜索词广告,这些是目前展示广告的形式。
这里也罗列了两个信息流产品,我们将广告插入到用户的流量流中,这样自然结果与商业形式上更加统一,用户体验更加好,商业结果的效果也就更加好。还有一些产品线,例如淘宝的广告,商业结果与自然结果天然就是一样的,效果会更加好。
我们再看两个典型的例子,一是搜索广告,二是展示广告,首先看建模对象,在搜索广告里,用户输入一个查询词,就会显示一个广告列表,所以建模对象是查询词和广告对,在展示广告里,还会根据用户去触发广告,所以会考虑ad,user,context三个因素。为什么搜索广告没有考虑用户呢?因为做搜索广告就会发现,query是一个非常强烈的情况,他基本能够表达80%或90%的信息,所以个性化在这之中就不是非常重要了。索引规模以数量展示方面,搜索广告通常是十亿级规模,展示广告大概是百万、千万的规模。特征规模二者大概都是从亿到千亿,当然每个公司会不太一样,综合上面几点会发现这其实是一个非常大的规模。这时就会涉及到效率问题,因为我们要做线上策略迭代,如果问题很大,框架又不能有效处理的话,就会非常影响效果。
我们简单看一下广告的投放过程,比如有两个广告主要买广告,我们会根据这些信息形成广告库,当用户在网上输入query时,我们会对query进行一些分析,然后将这些分析结果在广告库里进行检索,这样我们就拿到了广告候选集,但最终展示的数量是有些的,就会进行广告排序筛选,最终得到合适的结果。
这个过程大致可以分为这样几个阶段,我们把它称之为漏斗模型,这个名字十分形象,就像广告库有10万个广告,经过层层筛选,最终展现出来的只有3个,这其实就像一个漏斗,每一层都会进行一次过滤,这个漏斗可能会经过几个重要的步骤,第一个称之为检索,我们根据用户的query检索相关的广告,第二个称之为排序,第三步就是展现。对应各个领域也会有核心的技术,跟检索相关的通常是用信息检索和数据挖掘的方法,至于排序,熟悉的都是CTR,最后的展现和物料技术十分重要。今天主要讲的是在线学习在检索、CTR预估方面应用。
我们首先看一下CTR常见的技术方案,我们需要的因素,第一是Query,第二是User,第三是Ad,三者彼此之间会有一些组合,所以我们需要考虑七种情况,比如交互其实是不同特征象限之间的关系,可以通过人工feature学习这种关系,也可以通过模型学习这些关系。通常有两种处理方式,一种是只挖掘1、2、3象限特征,通过非信息模型学习,它的特征方程比较简单,但计算量很大。采用这种方法线上预测的耗时会稍长一点。另外人工做feature分析线性模型其中的关系,资源消耗可能会少一点,进行线上预测也比较节约时间,这对于不同应用来说影响是不一样的,比如你每天有10亿的数据和展示广告,由于规模比较大,会要求响应时间尽可能降低,这时线性模型比较适合。
传统的解决方案是Batch Learning,联盟广告每天的展示大概是百亿级别,每个公司的数据量具体不一样,每次使用30到90天的数据,特征量级别是1亿到百亿的量级,如果我们用50台机器去训练的话,大概需要迭代100个左右,这样花的时间是10小时左右。10个小时是什么意义呢?每天24个小时,这个模型只能训练两次,第一次供线上使用,第二次可以做试验,如果要进行第三次,时间是不够用的。所以我们需要一套更加高效的系统。
在Batch Learning做消息同步,需要把所有机器上的信息集合,大概分为两步,第一步把整个节点建成二叉树的组织形式,第二步每个子节点会把它上面的信息发给父节点,父节点将子节点以及它支撑的信息合成之后,汇总到root节点,这时就可以拿到全局的和了。有了这个之后,再经过一些逆向操作,节点就可以达到信息同步的状态了。
上面提到Batch learning不够高效,Online Learning相比于Batch Learning来说,除了效率有所提高,时效性也有改善。比如一天的training model供线上使用,如果线上环境实时发生变化,那我们的模型是捕获不到的,这时需要模型做实时反馈。理论依据:low regret f*为全局最优解,regret的值越小,其实是保证在线算法的效果越好,与看到的整个样本得到的算法效果尽可能接近,这是该模型背后的理论依据。
广告通常来说二值类型比较多,稀疏的线性模型比较合适,我下面列举的是我们曾经尝试过的一些稀疏线性模型:
我们尝试完一圈之后的感想就是,Online之所以获得稀疏在线模型,非常核心的原因是能够把历史信息利用起来,这样可以提高效率。
除此之外,微软在CTR方面做了一个贝叶斯方法,不再假设参数是一个固定的值而是一个分布,学习是Sequential Learning,通过后验代替先验,所以是一个天然的在线学习。
有了模型之后还需要一个框架,以上是一个典型的框架。线上用户浏览和点击是实时发生的,我们有基于storm做的collector,它会实时在线上抓取PV/Click,除了抓之外也会做一些日志清洗、拼接,我们会把log发给实时训练器,它根据数据做出训练,然后把参数实时更新到参数服务器,参数服务器除了接收训练器实时的参数推送外,也会接收一些线上预估请求,参数服务器反馈预估结果,这是整个过程。
这里大概列举了三种方案,如果说展示广告的点击率非常低,正负样本非常失衡,比如点击率是千分之一或万分之一的时候,我们会做采样,使正样本和负样本达到1比10的比率,这是一种方案。其缺点是点击率较高时,采用采样会有一些损失。另一个方法是单个机器计算完后用AllReduce的方法进行各个机器间的同步,第三个是异步学习方法,通常来说异步的效果会更好一点,但也会有一些不好控制的地方,比如调试时因为是异步的,所以每次的调试信息都不一样,这些可能需要注意的。
第二个方案是L2M信息检索,传统的检索大概分为三部分,第一部分是做数据采集,比如用户浏览的网页,我们会把类似的这些信息收集下来,之后我们会做一些结构化分析,我们称之为离线分析,分析完之后会有结构化的结果线上使用,比如一个线上请求来的时候会看到该用户以前浏览的网页,兴趣点是什么,这时线上就会用到线下的分析结果,我们把该阶段称之为在线触发。
获取信息有哪些具体方法呢?大概是这样几个方面,第一根据用户行为猜测当前应该展示的广告类型,比如可以看用户的历史query,用户的兴趣标签,第二个方法是基于上下文,比如我们看用户当前在浏览什么网页,就展示相关类型的广告,第三个方法称之为基于站点的方法,因为基于用户的当前页面可能太细了,太细了之后就会造成范围过小,如果粗一点,就会照顾到更多的点。另外,Look-alike的效果也比较好,通常在实践中都是几种方法混合在一起,那传统做触发的方法会有什么问题呢?比如我们在PC到无线网触发过程中遇到的问题。
首先,我们做广告的最终目标就是追求更高的ECPM处理,在这里可能不那么直接,比如做检索的时候,通常人多的情况下不是跟ECPM直接相关,这样会带来一个问题——效果打折,第二是数据覆盖问题,比如PC时,用户覆盖率很高,到无线时,用户覆盖率就很低,这时候我们怎么办呢?比如以前收集符合用户的query,那到无线的时候,有些设备跟用户都不一样;其次,用户信息覆盖率较低时,如何做触发?我们也发现了无线跟PC的其他不同之处,比如PC时,用户浏览的是一些商业价值比较高的网页,比如医疗网页,但无线时,通常会有很多商业价值比较低的网页,比如小说,这对我们的广告投放帮助不是特别大,这种情况下应该怎么办呢?
想解决上述问题,可以把信息分为AB两类,A类称之源信息,比如用户当前用的OS是什么,设备是什么,浏览器是什么,我们称为弱信息。这时,我们根据A去检索广告,广告就是我们的检索对象,把它称之为B,其实我们是想在AB之间做一个匹配,这样成本低,也非常直接,我们需要对AB预估ECPM,ECPM大概可以分为两部分,第一部分称之为CTR,第二部分称之为Bid,Bid可以通过一些简单的统计方法去做,CTR要难一些,有几种做的方法:
第一种方法人工设计A跟B的匹配关系,第二种稀疏特征,使用隐因子模型;第三种是使用稠密特征,使用非线性模型。
隐因子模型是给推荐中的常见的方法,需要预测用户对电源的打分,用户、电源各有一个隐因子模型,到后面发现用户、电源会有偏置,就诞生了Bias-LFM,在往后发现有些人会认为时间比较重要,我们又把时间加进去,做了Times Bias-LFM,每次变化需要做哪些工作呢?更新预测函数、学习过程及对应的代码。后来经过改进,思路是:每个features都会有Bias,任意两个features之间都会做一个拓展,这样增加特征就不需要修改function,也不需要动code,我直接通过这样一个模型,只加这样一个特征,就可以表达的更清楚,L2M就是基于这样一个模型做的。
L2M针对传统的FM有几点改进:1,改为分类;2,学习方法借鉴FTRL的Adaptive Learning Rate;3,超参数的学习。
该模型使用大概分为两步,一是探索,在线上单独开一份流量出来做探索,比如我们会拿5%的流量出来,假设在A里面有100个B,做随机的尝试,我们把它称之为探索,这时我们会有一些样本,首先根据这些样本做一些训练,然后是利用模型进行反馈,大概是这样一个过程。
我今天的演讲到此结束,谢谢大家!
关于DTCC
中国数据库技术大会(DTCC)是目前国内数据库与大数据领域最大规模的技术盛宴,于每年春季召开,迄今已成功举办了七届。大会云集了国内外顶尖专家,共同探讨MySQL、NoSQL、Oracle、缓存技术、云端数据库、智能数据平台、大数据安全、数据治理、大数据和开源、大数据创业、大数据深度学习等领域的前瞻性热点话题与技术,吸引IT人士参会5000余名,为数据库人群、大数据从业人员、广大互联网人士及行业相关人士提供了极具价值的交流平台。
数据库
文章转载自
数据库技术大会
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨