推送软件推送软件推送软件

搜狗深度学习技术在广告推荐领域的应用搜狗输入法自带的搜狗浏览器通知怎么关闭

关闭高级文字服务就可以了。。。。去银行的网站最容易出现这样的问题。

具体步骤如下:

依次单击“开始→设置→控制面板”,打开控制面板,在控制面板中单击“日期、时间、语言和区域设置”,单击“语言和区域设置”,弹出“语言和区域设置”对话框,单击“语言”标签,在“文字服务和输入语言”下单击“详细信息”按钮,弹出“文字服务和输入语言”对话框,单击“高级”标签,在“系统配置”下,把“关闭高级文字服务”勾选,单击“确定”按钮。
不同的通知来源不同处理方法不同。 搜狗本身不会出桌面上的通知,除非是网页弹出的。对比IE浏览器看看。确定是网站弹出的,在浏览器里面的弹窗和浮动元素,可以试试安装广告过滤插件,比如搜狗应用中心的"广告终结者"。 还有一些是扩展插件在浏览器四周出来的浮动功能,可以进右上角那个扩展按钮(蓝色圆形上三个点),进管理,找可能会出浮动内容的扩展,取消启用状态。

搜狗深度学习技术在广告推荐领域的应用

内容来源:2017年4月17日,搜狗移动搜索广告策略研究组负责人舒鹏在七牛云和QCon联合主办的深度学习论坛“深度学习最新进展与实践”上进行《搜狗深度学习技术在广告推荐领域的应用》演讲分享。

搜狗深度学习技术在广告推荐领域的应用

编者按

近来,深度学习成为一个流行词。深度学习可以更好地通过增加数据集的规模来改善学习结果,与传统的机器学习工具相比,深度学习挖掘了神经网络的潜力。基于强大的特征提取,它比其他工具更适合模式识别(图像、文本、音频)。深度学习应用的范畴也越来越广。这次搜狗移动搜索广告策略研究组负责人舒鹏用自身的经验分享搜狗深度学习技术在广告推荐领域的应用,以下为此次演讲内容的整理。

大咖演讲视频

http://t.cn/RKhDk65

搜索广告背景知识

搜狗深度学习技术在广告推荐领域的应用

大家对广告多多少少都有一些了解,现在大家都用搜索引擎,从总体的覆盖率看,大家应该都会碰到广告。大家对广告多少会有些讨厌,但中国互联网领域的很多行业,都靠广告变现来生存,大家手机上有很多免费APP,但天下没有免费的午餐,很多APP都靠广告来盈利,广告是互联网商业的基石。现在也有一些新的流量变现方式,如 O2O、电商,还有直播等。在这些商业模式出现之前,广告为互联网行业提供了商业基础。

如图 1 是搜索广告的流程图,对于搜索广告来说一般有几个处理步骤:首先是查询理解,用户当前的查询到底想干什么、他有什么目的?我们进行分词,以及查询倾向的分析;然后做广告召回,有很多的客户会在搜索广告中买一些他们感兴趣的词,这些词代表了他们对不同流量的感兴趣程度,系统要对这些词进行竞价排序,所以需要先做一个广告召回,判定在当前语境下面哪些客户提供的广告比较合适。这个量比较大,搜狗的广告库在几十亿的量级,所以会做一定筛选,剩下几千几百个广告,然后进行详细评估;同时我们还会做点击率预估,即假定这个广告能够在用户面前展示,实际的点击比例会怎么样,点击率能够反映出很多因素,包括广告的质量,以及广告的价值等。此外,有的时候我们也需要花钱购买流量,如何更有效的利用这些流量,通常都要靠这些来保证;而后会有排序计价,挑选排名靠前的广告来进行结果展示;然后会有后续的日志收集功能,接下来会拿这个日志做各种各样的处理,包括 CTR预估模型的线下实验以及各种各样的事情,如此就完成了整个闭环,这是广告系统的介绍。

深度学习在搜狗搜索广告的一些应用

搜狗深度学习技术在广告推荐领域的应用

下边介绍一下搜狗深度学习在搜索广告领域里面有哪些应用。

第一块是文本相关性计算,简单来讲就是一个广告的标题、描述等整个信息跟当前的查询词是否相关,健康性有没有问题,是否会影响用户体验?有时候一些客户买词不规矩,可能会买一些当下流行的热点词,但最后填写的标题、描述等创意信息跟这个热点词并没有关系,如果展示出来就会引起大家的反感,因此我们需要围绕相关性做一些工作,来避免这种情况。

如图2是去年做的一项工作,后来也是投了一篇论文发表在CIKM2016上面去,这个论文是关于 Question Answering的,解决如何选出和 Question 最合适答案的问题,采用了典型的深度学习网络结构。这篇论文的主要创新点在于无需分词,做一些传统的文本相关性计算时,一般会先做分词,比如你会把论文进行分词,把广告标题进行分词等,分词之后再做处理。这个分词算法设计也有很多讲究,你需要不断的更新语料库,以及其它相关性工作,当时就想能不能不做分词,把这个绕开直接搞定。就做了个实验,简单来讲就是把英文的 26 个小写字母,以及 26 个大写字母,还有 0-9这些数字,以及标点符号等,每个字符都看成是一个标记,每个标记对应一个向量,这个向量可以通过向量表查询得到,并在训练中逐步更新,这样每个句子就可以转化为一个矩阵,矩阵得到之后可通过卷积和pooling等方法最终转化成向量,这个向量通过全连接层形成一个输出值,而后和样本标注结果( 1 还是 0)进行比对和误差回传,从而形成一个网络。有了这个网络之后,就可以拿一些语料进行训练,结束之后就会得到最终每个字符的vector,用以后续的处理。这样做不需要分词,可避免外部系统的干扰。最近我们依赖的一个分词库需要进行升级,很多事情都要重新做一遍,特别麻烦。如果这个架构全面应用的话,将会避免这些问题。

搜狗深度学习技术在广告推荐领域的应用

如图 3 是广告物料推荐,假设有一张图片想知道含义,想知道跟这个图片相关的文本有哪些。图片采用 CNN 来处理,文本采用 LSTM 进行处理,最后把两者通过cosine的方式结合在一起训练以达到最终目的。

搜狗深度学习技术在广告推荐领域的应用

深度学习的应用很广泛,具体到广告领域:如图像理解,像刚才介绍的图像物料推荐,这个是用 CNN 技术来做;还有文本相关性,通常可以来做广告召回,以及创意生成等事情,相关技术比如 LSTM,以及刚才提到的 CSR;还有CTR预估,深度学习可用来做广告排序和相关的特征挖掘,相关技术如CNN、MxNet和TensorFlow等。图 4 举的例子是一个典型应用,具体到这个广告而言,蛋糕的小图片是通过刚才的技术做上去的,有很多客户是属于中小客户,自己不具备强大的运营能力,他可能想为广告配一些图,但没有精力做这件事情,我们就会帮他自动匹配一些图片,这会影响后续的很多东西,包括订单转化等事情。广告下方的三行子标题也是自动生成,系统会判断一下当前有哪些东西用户比较感兴趣,而且和客户有关,就会放在这里,这部分涉及到文本相关性计算。这是主要介绍的三点深度学习在广告中的应用。

基于多模型融合的CTR预估

搜狗深度学习技术在广告推荐领域的应用

下边我们重点介绍一下 CTR 预估模块。通常单个模型的能力有限,每个模型都有自己的特点,比如 LR 模型比较稳定,DNN 模型擅长做特征交叉。每个模型都有自己的特点,需要根据模型的特点去最大化利用它。我就这个领域详细介绍一下。

首先介绍一下CTR预估的流程:首先搜集原始数据,包括查询请求和点击信息,这两项每天都会实时产生并且量级很大;有这些之后就可以做特征的抽取,比如查询相关特征,用户查询词是什么?他所处哪个地域?今天是星期几?还有广告特征,广告本身的标题是什么?描述是什么?客户购买的关键词是什么,以及这个广告和查询词之间的匹配相关性。有了特征之后会进行线下模型训练。图 5 中有两类模型,一个是线性模型,一个是非线性模型,线性模型主要指LR ,非线性模型主要是指GBDT、DNN等。模型训练完毕之后会加载到线上,同时线上 Server 会把整个特征抽取流程在线完成,而后会进行模型计算,然后形成 CTR 预估的完整结果。最后 Online 本身会产生实时日志,形成完整的流程。

搜狗深度学习技术在广告推荐领域的应用

大家知道,跟CTR预估有关的主要有三个因素,一个是数据、一个是特征、一个是模型。平台是承载这三点的基础。具体到平台而言,我们通常会用多天的数据进行训练,这种情况下单机是跑不完的,因此需要一个并行计算平台来同时处理大数据量。如图 6 左边列出来的几个平台都是较为常用的平台:第一个是 MPI,如果做科学计算的话就会比较熟悉,这是比较早期的,这个平台会偏底层一些,需要修改不少代码才能实现工作,现在大家不大会用,因为做起来比较繁琐;第二种是XgBoost,主要是做 GBDT 相关的东西;然后是 MxNet,在深度学习中的应用比较多,像亚马逊就在利用这个平台做些事情;最后是 TensorFlow,谷歌最近一两年做出来的,主要是提供跨平台的深度学习计算工具。

在模型方面:首先有线性模型,LR 模型又有一些细分算法,实时(FTRL)和特征自动组合(FM);非线性的模型是有GBDT,是决策树的变体,可以看作多个决策树的组合;然后是深度学习模型,如DNN;

以及模型融合,刚才讲到怎么样能把不同模型的优点都集中在一起,具体的做法有多种:第一种是 Bagging,比较实用简单,就是有多个模型,每个模型都有个结果,怎么样把多个结果放在一起呢?直接加权平均一下就可以了,这个方法很简单;其次是级联模型,级联模型相对复杂一些,这个做法不是把最终的评估结果放在一起,而是说每一个模型中间产生的数据也可以送到另外一个模型中去,这样做起来就比较麻烦,但操作空间比较大,而且可以有多种组合方法;最后一个是 Wide&Deep,这是谷歌去年提出的思路,它跟前面两种都不一样,前面两种每个模型训练都是独立的,即使有先后顺序,但是 Wide&Deep 是针对两个模型同时交互训练,我们认为它相比其他两个效果会更好一些。

数据模块:首先要有一个日志收集模块,会收集到最原始的数据,需要进行去噪,是因为原始数据也会有一些噪声点,比如同一个用户同一个查询词连续搜索两次,第一次没点广告,但第二次点了,第一次没点到底是因为广告出的不好,还是因为用户当时不在状态,根本没有看到广告呢。

其次是特征,在搜索广告领域里面特征是非常重要的。有一个专有名词叫特征工程,主要包括特征的设计、选择、组合:所谓设计,就是概率论,你认为哪些因素对用户选择广告有影响,这时你就要把它找到并设计一些新特征出来;单单有这个还不够,我们需要判断这种新特征是否有效,这就涉及到特征选择,特征选择需要进行仔细的分析,看看能不能用;最后是特征组合,也就是交叉特征,有的时候单个因素出现并不能说明问题,而两个因素一块出现时,可能就代表了特殊的含义。

特征设计

搜狗深度学习技术在广告推荐领域的应用

关于特征设计大体上可以分为两类:一类是离散特征,所谓离散特征是指,比如一天 24 个小时,下午16 点整,我认为 16 点整在一天 24 小时当中会占据一个位置,把时间刻画为长度为24的向量,其中 16 点就会占据这个向量中的一个位置。这种设计方法有几个特点:首先比较容易设计,不管什么样的特征,只要它有一个取值就可以映射到系统里,实现特征的产生;还有一个特点,就是特征空间非常大,百亿或者上千亿的量级,但对于任何一个样本最后只有几百个特征是有效的,其他的特征都没有取值,它的稀疏性非常明显,特征空间非常大,这样会导致模型复杂度比较受限制。如果模型过于复杂,比如你把每一个离散特征都连接到DNN输入层的话,参数就会非常多,训练时间会非常长,结果也不一定好。这是离散特征。

其次是连续特征,跟离散特征反着过来的。像上边那个时间的例子,如果说 24 个小时刻画成离散特征是 24 个点的话,连续特征就是一个值,16 点就是 16,13 点就是 13,它只会占据一个位置,但是那个位置的取值范围可以有 24 种,而不仅仅是0和1,跟离散特征正好反过来。像这种特征一般来说需要做一个比较仔细的设计才行,大家都知道连续特征每一个特征只会占一个位置,不像离散特征那样随意占据大量的空间。它的特点是定长,每个特征取值只能有一个,像离散特征中有个特征叫当前查询词分词之后的term分布,如果这个查询词比较长,它的term分布就长一些,占据的位置就多一些;如果只是一个短的查询,占据的位置就比较少,是变长的,这点和连续特征区别很大。此外,基本上每个连续特征都有值。有上面这几个特点,就会导致连续特征量相对小一些,差不多几百维的向量就搞定了,它可以用比较复杂的模型进行训练,像DNN 这种大概只有几百个输入节点,相比图像处理还是比较小儿科的。

模型类别

搜狗深度学习技术在广告推荐领域的应用

关于模型,刚才提到分为线性和非线性,线性模型中最典型的就是 LR,逻辑斯特回归,这个模型比较简单,它的公式大概是一个权重分量×特征分量+偏置,而后再做一个变换得到最终结果,它比较简单,比较适合处理离散特征,而且稳定性比较好。但它有一个缺点,LR 本身没法做特征交叉,只能通过线下分析,尝试两种特征的交叉是否可以改善线下指标,这样才能得到比较好的结果。这件事情很多公司都有自动化的学习平台,会自动进行特征的交叉并评估哪个特征比较好,尽管如此,这些工作还是比较耗时间的。

非线性模型有特别明显的优点,能够自动学习特征之间的交叉关系,如哪两个特征交叉在一起比较好,模型会帮你实现。比如说 DNN 输入 100 维特征,隐藏层中每层都有交叉关联。如果两个特征之间有很强的依赖关系,且对结果有影响的话,在权重分量上会有相应的侧重,最后会达到特征自动交叉的目的,这就是为什么 DNN 出来之后用户非常广泛的原因。像刚才 LR 这种特征组合,非常耗费人力和精力,可能一个公司一个特征组有几个人或十几个人,都在做这件事情,大家都在研究哪些特征会好,或者交叉在一起会好。但如果用非线性模型的话就会相对规避这一点,从这一点来看它比较适合做新领域的探索,可能效果会好一些。

但因为有上面优点的存在,它就会有一些缺点,模型比较复杂,计算比较耗时。这点对于在线计算任务就比较关键一些,像做广告CTR预估,每天有几亿次查询,每次查询有成百上千条广告需要处理,查询配对在千亿量级,对计算资源的要求非常高。如果模型太复杂的话,就需要把计算资源扩充一些,买机器这些都要考虑,最后收益怎么样,到底值不值得,这是比较有风险的一点。

模型融合

搜狗深度学习技术在广告推荐领域的应用

上边提到,因为每个模型都有优点,比如说 LR 模型最突出的优点是简单、可靠、文本类特征处理比较好,但又不具备交叉能力;而DNN有这种能力,但没有前边说的优点,怎么把它们融合在一起呢?因此会用到模型融合:

CTRbagging 将多个模型的输出 CTR 加权平均,实现方法简单,模型之间不会产生耦合,但是可调参数有限,改进空间相对较小。

再有模型融合,每个模型中间的结果或者是输出结果可以作为另外一个模型的输入,这个模型会学习上一个模型哪个地方处理的好或者不好,自动做出调整。实现的方法比较复杂,因为模型之间有依赖关系。但优点是实现方案较多,改进空间大一些。

搜狗深度学习技术在广告推荐领域的应用

由于第一种方式 (CTRbagging) 的空间有限,我们就选择第二种。并针对性的做了一些设计,这些跟工程设计的关系大一些。如何做这件事情?要定一个目标,要做成什么样子来达成这个目的?首先希望这个东西能支持多个模型的加载的和计算;第二点,可支持模型之间的交叉和 CTR 的 Bagging;第三点,可通过配置项随时调整模型融合方案;第四点,避免不必要的重复操作,以降低时间复杂度。根据这 4 个要求我们做了个解决方案,核心理念是引入了ModelFeature 的概念,即把模型本身看做一个特征,模型通过计算得到新的特征,对于模型输出可作为 CTR,也可以作为特征为其它模型使用。限定 ModelFeature 的计算顺序,即可实现 Bagging 和模型交叉等功能。

但是必须要注意数据一致性,线上依赖的数据源是否跟线下完全一致,如果数据不一致,所有的结论和实验都是空中楼阁没有根基。我们之前碰到过一个问题,做了一个特征线下效果很好,但线上效果不怎么样,可能就会有数据不一致的问题。拿刚才时间的例子,如果线下计算离散值时,比如说是 0 点占到第一个位置,1 点占到第二个位置,24 点占到第 24 个位置,但是线上有一个错误,0 点占到第 24 个位置,24 点占到第一个位置,就给它反过来,虽然线下做的很好,但是线上的使用效果会很差。

第二点,流程的稳定性,如果设计一个很复杂的流程,包括融合模型操作的话,流程之间就会有很强的依赖性,任何一个前面的流程失败,后面的流程就跑不下去,所以你的流程必须要稳定,要有机制保证。

搜狗深度学习技术在广告推荐领域的应用

如图 11 是一个流程图,线下流程会把这些数据重组抽取特征进行训练。在线下会训练一个 LR 模型,这个结果反馈到 DNN 模型里再进行训练。到了线上之后,针对每个查询请求都会抽取这些特征,得到特征值后进行 LR 模型计算,LR 模型产生的最终结果放在特征池里面,后续的 DNN 模型也会依赖这个东西计算。通过这套架构设计,基本上保证了刚才提到的要点。这套框架在线上跑了快一年时间,比较稳定。

模型效果评估

搜狗深度学习技术在广告推荐领域的应用

线下做实验,以及线上上线,必须要评价一下这套流程是好还是坏。所以有一套模型效果的评估方法,用来判定新特征到底是好还是坏?

一、如图 12的 AUC,这是搜索广告领域以及现在的信息流推荐中常用的指标,只要涉及到排序结果通常都会用到 AUC,这个指标表征排序能力,用于分析模型是不是把一些好的排在前面差的排在后面,它不一定能反映出数据的绝对值。AUC 还是比较稳定的,据有些人讲,只要这个指标在线下提升到一定幅度,线上一定会有效果。如果线上没有效果的话,通常来讲肯定是某一块出了问题,包括刚才讲的线上线不一致等。

二、最直接的评估方法,上线收益。如果线下发现 AUC 是有提升的,要到线上去看最终收益有没有涨,看到底多赚多少钱?这两个指标有一定的关联性,AUC 比较高的话收益一定会涨,也有一些例外的情况。为什么线下效果很好,到了线上之后没有变化?通常从两个角度来看:特征的覆盖率,你这个特征如果非常好,但覆盖的东西很有限,线上 100 个指征只覆盖了 2 个,即使这两个获得很大的提升,最终的收益也比较有限;Survival Bias,线下训练时用到的数据都是自动筛选过的结果,一般凡是能展现的广告通常都是之前系统认为比较好的广告,在这个数据集上表现比较好,不代表你在真正放到线上之后表现好。因为真正上线之后你会对所有的广告进行扫描计算,这时把坏广告干掉的能力就会显得比较关键。这两点可能会导致线上和线下不一致,其实做别的事情也会有同样的问题,一个是理论一个是实际,这两个如果不一致时,应该想一想到底哪一块出了问题?

并行化训练

搜狗深度学习技术在广告推荐领域的应用

此外,我们还需要并行化训练,因为单机不可能处理这么大的数据量。

数据量小的时候波动很大,做的很多改进没有效果,一些小修改效果反而好。数据量变大之后,模型收益会更高而且比较可控。

我们选择的深度学习并行化训练方案是 MxNet,它支持多机多卡,使用成本比较低。我们每天都需要进行模型更新,对时效性要求很高,如果把 MxNet 直接用过来的话,效果不一定好,训练时间比较久,需要优化,比如 怎么样做调度来提升GPU的加速比等。

现状和计划

我们目前已经实现了 LR+DNN 融合模型的上线,收益比好。但是受限于线上计算资源,模型复杂度有限,线下训练流程有依赖关系,繁琐易出错。

我们针对这几点情况做了个计划。

一、做一个线上服务拆分,跟深度学习的模块独立出来,采用低功耗的 GPU 加速。这个现在做的差不多了,区别还是很明显的。按目前线上 CPU 版本的服务器,其实它做这种工作时非常吃力,负载量不够,但上了 GPU 之后,就能处理

未经允许不得转载:推送软件 » 搜狗深度学习技术在广告推荐领域的应用搜狗输入法自带的搜狗浏览器通知怎么关闭