12.2 上下文定向
我们先来看那些归类为 t(c) 的受众定向方式。这样的定向中有一些根据广告请求中的参数信息经过简单运算就可以得到,如地域定向、频道/URL定向、操作系统定向等;另外一类则是根据上下文页面的一些特征标签,如关键词、主题、分类等进行定向,我们重点讨论这样的上下文定向技术。
抛开标签体系不谈,仅从打标签的方法上来看,上下文定向主要有以下几种思路。
(1)用规则将页面归类到一些频道或主题分类。例如,将auto.sohu.com下的网页归在“汽车”这个分类中。这种方法相对简单。
(2)提取页面中的关键词。这是在将搜索引擎的关键词匹配技术推广到媒体广告上时自然产生的,也是上下文定向的基本方法。
(3)提取页面入链锚文本中的关键词。这需要一个全网的爬虫作支持,因此已经超出了一般意义下广告系统的范畴,有兴趣的读者可以参考搜索引擎方面的有关文献。
(4)提取页面流量来源中的搜索关键词。这种方法除了页面内容,也需要页面访问的日志数据作支持,从技术方案上看更接近后面介绍的行为定向。
(5)用主题模型将页面内容映射到语义空间的一组主题上,这样做的目的是为了泛化广告主的需求,提高市场的流动性和竞价水平。
在以上各种思路中,关键词提取是一项基础技术。上下文定向中的关键词提取可以按照信息检索中的一般方法,即选取页面内容中TF-IDF较高的词作为关键词(见10.1.2节中的具体介绍);也可以采用需求方驱动的思路,从广告商相关描述中得到商业价值高的关键词表和IDF,再与页面内容中关键词的TF一起计算TF-IDF来选取关键词。当能够得到比较丰富的广告信息时,如运营搜索引擎的文本广告,或者可以拿到广告主 SEM词表时,后一种方法往往更加有效。
确定了对上下文页面打标签的方法以后,在在线广告投放时,页面标签系统需要对广告投放机查询的某一个URL快速返回其对应的标签。复杂的打标签计算是不可能马上完成的,不过在广告的问题中,某一次展示时标签的缺失并不是致命性的。根据广告的这一特点,可以用一种半在线的方式实现页面抓取和打标签的逻辑。
12.2.1 半在线抓取系统
上下文页面的有关信息显然不可能在广告请求发生时实时分析得到,那么是否需要一个类似于搜索引擎爬虫的系统来预先抓取呢?对于广告系统来说,是没有这个必要的。因为页面信息对搜索引擎而言是服务的主体内容,而对广告系统而言,只是锦上添花的补充信息,完全可以设计一个更轻量级、效率更高的页面抓取系统。这一系统的设计关键是不作任何离线抓取,而在在线服务产生实际需求后才尽快抓取,我们把它叫作半在线(near-line)的抓取系统。
图12-3 上下文定向半在线抓取系统示意
半在线抓取系统的工作原理如图12-3 所示,系统用一个缓存(如 9.5.7 节中介绍的Redis)来保存每个URL对应的标签,当在线的广告请求到来时进行如下操作。
(1)如果该请求的上下文URL在缓存中存在,那么直接返回其对应的标签。
(2)如果该URL在服务中不存在,为了广告请求能及时得到处理,当时返回空的标签集合,同时立刻向后台的抓取队列中加入此URL,这样在较短的一段时间(通常为秒至分钟量级)之后该URL就被抓取下来并打上标签存入缓存中。
(3)考虑到页面内容可能会不定期更新,可以设置缓存合适的TTL(Time to Live)以做到自动更新标签。
这样的方案有以下的两点好处。首先是在线缓存的使用效率非常高,仅仅那些最近有广告请求发生的URL才会被抓取,这样不需要耗费大量的爬虫资源去抓取可能根本用不到的URL。其次,因为只抓取需要的页面,并且可以在该页面第一次广告请求后很快得到页面标签,页面的信息覆盖率就会很高。
半在线的上下文抓取系统非常典型地揭示了在线广告系统弱一致的业务需求:只要保证大多数的广告决策最优正常,很少量的次优决策甚至随机决策都是可以接受的。充分把握这一特点,对于设计高效率、低成本的广告系统至关重要。
12.2.2 文本主题挖掘
根据上下文内容进行受众定向的粒度可以精细到关键词,也可以粗略到页面的类型。除了这两种极端情况,我们也可以考虑将页面内容直接映射到一组有概括性意义的主题上,比如将一个讲编程语言的博客页面映射到“IT 技术”这样的主题上。如果把页面视为一个文档,这就对应于文本主题模型(topic model)的研究问题。文本主题模型有两大类别:一种是预先定义好主题的集合,用监督学习的方法将文档映射到这一集合的元素上;一种是不预先定义主题集合,而是控制主题的总个数或聚类程度,用非监督学习的方法自动学习出主题集合以及文档到这些主题的映射函数。
广告中的主题挖掘有两种用途:如果仅仅用于广告效果优化的特征提取,那么监督或非监督的方法都可以;如果是用于对广告主售卖的标签体系,那么应该优先考虑采用监督学习的方法,因为这样可以预先定义好对广告主有意义且可解释的标签体系,对售卖会有很大帮助。
我们从非监督方法说起。假设有一个由M个词组成的词表以及一组文档{d1,d2,···,dN},采用BoW表示,文档dn表示为{xn1,xn2,···,xnM}的形式,其中xnm为词表中第m个词wm在dn中对应的词频或TF-IDF值。显然,一般情况下,矩阵X={xnm}N×M是非常稀疏的。假设这一文档集合主题模型对应着{1,2,···,T}这一组主题,我们的目的就是对每个文档得到其在这些主题上的强度{zn1,zn2,···,znT}
1.LSA 模型
文本主题模型最初的解决思路是对上面文档和词组成的矩阵X进行奇异值分解(Singular Value Decomposition,SVD),找到这一矩阵的主要模式,这一方法称为潜在语义分析(Latent Semantic Analysis,LSA)[27]。LSA的分解过程可以表示如下:
其中K为矩阵X的秩,为X的K个奇异值。左侧的矩阵就是将潜在语义空间中的主题映射到某个文档的变换矩阵,而右侧的矩阵则是主题映射到某个文档词表中某个词的变换矩阵。最多可以得到的主题数目等于矩阵X 的秩K,不过一般情况下,都会选择一个远小于K 的主题数目用来建模。当选择的主题数目为K 时,实际上是用下式的X0对X 进行了近似:
这等价于令所有的都等于0,换句话说,通过这种方式去掉了大多数非主要因素的影响,从而得到了整个语义空间比较平滑的描述。实际上,从上述的 SVD分解结果可以很容易得到每个文档的相应主题,请参见参考文献[39]。
根据奇异值的性质,我们知道所有的奇异值都是非负的,但是 LSA得到的两个变换矩阵不能保证每个元素都为非负值。这一点对应的直觉意义是:如果一篇文档有某个主题的话,可能该文档中出现某些词的频次的期望值为负。这一点,直观上并不十分容易理解,也是LSA模型与后面几种概率文档主题模型不太一样的地方。
2.PLSI 模型和 GaP 模型
LSA 方法的物理意义清楚,也有成熟的数学工具可以利用,因而在信息检索中得到了比较早的应用。类似的思想也可以用概率建模的方式来表达,这就是概率潜在语义索引(Probabilistic Latent Semantic Indexing,PLSI)方法[39]。PLSI方法是通过对文档生成的过程进行概率建模来进行主题分析。这一模型下的文档生成过程可以表述为以下两个步骤。
(1)根据每个文档dn 生成对应的一个主题z。
(2)给定主题,对应一个词的多项式分布p(wn|z,β),据此生成一个词wi;其中的参数β=(β1,···,βK)>,而βk 即为当zk=1时对应的多项式分布参数。
PLSI的图模型如图12-4所示。
图12-4 PLSI概率图模型表示
对应于上面的生成过程,文档集X 的生成似然值可以表达为:
其中P(z)为多项式分布Multi(z;ω),显然,这也是一个混合模型的形式,如果P(dn|z)和P(wm|z)也都采用多项式分布形式,就是PLSI模型。PLSI是概率化了的LSA模型,可以将P(dn|z)和P(wm|z)的参数分别对应于LSA中的两个变换矩阵。这两个模型的形式很相似,不过物理意义有所不同:在PLSI中,变换矩阵即两个条件分布的元素都大于0,即在给定一个主题的情况下,某个词频的期望值不会为负,这一点与直觉更为吻合,也更加合理。在PLSI模型下,给定一个新文档,求得相应主题分布的过程,请参见参考文献[39]。
概率模型的另一个好处是可以较容易地实现分布式求解。可以看出,PLSI模型是10.3.2节中介绍的指数族混合分布的特例,其中的基本分布为多项式分布。因此,可以直接套用EM算法以及对应的MapReduce或MPI迭代解法来求解。而LSA模型用到的SVD分解,需要一定的技巧才能变成分布式版本。因此,PLSI比LSA在实际海量数据上的文档主题模型更具有实用优势。
PLSI模型用多项式分布来描述主题分布和主题中的词分布,而如果采用γ 泊松过程来建模,即假设每个主题生成的概率用独立的 γ 分布来描述,而主题中某词的产生服从泊松分布,就构成了γ 泊松(GaP)模型[18]。从变量的依赖关系上看,GaP与PLSI很相似,只不过两者中条件分布的指数族形式不同。GaP与PLSI相比,由于没有将每个文档中各个主题变量的强度进行归一化[9],因此对内容相似的长文本和短文本的概率描述是不同的,而泊松词产生概率也更加适合离散到达事件的描述,因而GaP模型在主题建模上有一定的合理性。不过,GaP模型的EM最大似然解不像PLSI那样有简单的闭式更新公式,在参考文献[18]中,作者也是采用一种近似的方法来优化,因此,这一模型在工程中的实用性受到了一定的限制。
3.LDA 模型
10.3.3节中介绍的贝叶斯方法也可以应用于PLSI模型,这样做的目的是在文档信息不足或者噪声较大时能够利用贝叶斯的框架对结果进行有效的平滑。这一思路也就产生了潜在狄利克雷分配(Latent Dirichlet Allocation,LDA)方法[10]。在LDA方法中,我们视PLSI模型的参数为随机变量,对于某一篇文档,其生成过程可以描述如下。
(1)根据一个泊松分布选择文档的长度M。
(2)根据ω 的先验分布Dir(α)生成ω。
(3)对每个文档中的词 m∈{1,···,M},根据 Multi(ω)分布选择一个主题 z;给定主题,对应一个词的多项式分布p(wm|z,β),据此生成一个词wm。
其对应的图模型如图12-5所示。
图12-5 LDA概率图模型表示
把这一生成过程与 PLSI对比可以知道,这相当于 PLSI的贝叶斯版本,即给 Topic的分布 w 加上了先验分布,而先验分布采用的是共轭形式,即狄利克雷分布。当然也可以对主题的词频分布 β 用贝叶斯的方法加以平滑,这实际上对应了参考文献 [10] 中的 LDA Smoothing方法。从10.3.3节中的介绍可知,可以采用经验贝叶斯的方案来确定这两个超参数α。由PLSI模型到LDA模型对文档生成过程的描述更为清晰,而根据贝叶斯学习的作用可知,LDA模型在数据噪声较大或者每个文档内容较少时可以达到比较稳健估计的效果。
如果采用经验贝叶斯的方法来确定超参数α,那么此时原来的参数ω就变成了隐变量,优化的参数除了α,还包括参数β,优化的目标函数可以写成:
由于 PLSI 模型不是指数族分布,因而其对应经验贝叶斯模型的解不能通过 EM 方法得到闭式解,而是需要采用变分法[43]近似求解。在参考文献[10]中,对这一模型的变分解法进行了详细的介绍。不过在实际的工程实践中,LDA 模型更为常用的更新方法是吉布斯采样(Gibbs sampling)法,而且这种方法更容易实现分布式更新求解。关于分布式吉布斯采样方法可以参考参考文献[61]。
4.有监督主题模型
无监督的主题模型技术上发展比较充分,但结合广告的业务来看,其得到的主题有时会存在混淆、不易解释等问题。因此,其结果主要适用于非直接售卖的场景,如用作点击率预测的特征。
当标签直接用于售卖时,它们往往是预先定义好的。因此,有监督的主题模型对于这种场景更加适用。根据前面的讨论,它可以是一组非结构化的标签集合,也可以是一个结构化的层次标签体系。有两种思路来解决此问题:一是采用多标签分类(multi-label classification)的方法,二是沿用上面的主题模型方法,将其变成有监督主题模型。关于有监督主体模型,以上述的LDA为出发点,研究者也提出了若干种相关的方法。
结合广告定向的情景,可以关注两种有监督主题模型。
(1)有监督的 LDA(supervised LDA,sLDA)[11],这是在某种标签监督下进行主题挖掘的通用模型,适用于标签为各种分布的情形。当标签为离散值时,就对应于根据某种分类进行主题挖掘。
(2)层次化的有监督的LDA(Hierarchically Supervised LDA,HSLDA)[65]。在此模型中,标注的类型是一个 Hierarchy上的层次标签,这非常契合于广告中的需求。关于这方面的具体技术可以参考上面提到的文献。
值得注意的是,在文档主题挖掘领域,还有一类方法也与Hierarchy有关,如HLDA或HDP,但是其问题定义是在某个数据集上学习得到一个Hierarchy结构,而不是根据一个给定的Hierarchy上的标准挖掘潜在主题。因此,这类工作不属于有监督主题模型的范畴。
将有监督的文本主题模型应用于上下文定向,虽然在标签体系的设计上可以做到更加合理,更有针对性,但也给训练过程带来了麻烦:除了准备文档集合,还需要准备对应的标签标注,这么一来训练集能够覆盖到的文档规模就受到很大限制。因此,在有监督文本主题模型的实用过程中,最关键的一点是找到系统性地进行批量标注的方法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论