转载

让机器搞懂100万种隐含语义,腾讯Peacock大规模主题模型首次全揭秘

编者按:LDA是一个简洁、优雅、实用的隐含主题模型,腾讯效果广告平台部(广点通)的工程师们为了应对互联网的大数据处理,开发了大规模隐含主题模型建模系统Peacock,通过并行计算对10亿 x1亿级别的大规模矩阵进行分解,从而从海量样本数据中学习10万到100万量级的隐含语义。Peacock已应用在腾讯的文本语义理解、QQ群的推荐、用户商业兴趣挖掘、相似用户扩展、广告点击率转化率预估等多个业务数据中。本文节选自Peacock团队的论文《Peacock:大规模主题模型及其在腾讯业务中的应用》,分享了广点通Peacock研发和训练的技术思想和技术细节,以及Peacock在腾讯业务中的应用,供读者参考。以下为节选章节:

三、十亿文档、百万词汇、百万主题?

LDA 的训练算法貌似并不复杂,主要的工作就是在维护两个频率计数矩阵N_td 和N_wt。然而在这个时代,我们要面对的是互联网的海量数据,想象一下,如果在图15中,左边的文档节点是十亿、中间的主题个数是百万、右边不同的词的个数也是百万,我们将需要处理一张多大的图!

让机器搞懂100万种隐含语义,腾讯Peacock大规模主题模型首次全揭秘

图15文档d_1中词w主题重新采样

在实际应用中,我们希望使用更多的数据训练更大的模型,这包含了两重意思:

“更多的数据”,我们希望训练器能处理海量的训练数据,因为更多的数据蕴含着更加丰富的隐含语义,同时模型也更加准确,效果更好。上一小节提到单机版LDA训练器显然是处理不了海量数据的,使用它训练模型,我们估计要等到天荒地老了。

“更大的模型”,我们希望训练器能归纳出更多更具体更长尾的隐含语义,比如一百万主题。抛开标准LDA算法本身的问题,更大的模型意味着N_wt矩阵规模更大。N_wt的大小为V×K,V表示词表大小,K表示主题个数。取V=1,000,000且K=1,000,000,N_wt需要消耗3000G以上内存(假设int型密集存储,因为模型随机初始化并不稀疏),显然单机内存是无法满足需求的,必须对模型进行切分。

下面分别从数据并行和模型并行两个方面来介绍怎样解决上述两个问题。“数据并行”和“模型并行“是Google大神Jeff Dean在深度学习训练系统DistBelief[13]中新提出的两个概念,尽管Peacock系统开发的时候,DistBelief还没有真正对外公布。随着深度学习的持续升温,大家现在已经逐渐熟悉了这两个形象的名词,此处请允许我们借用一下这两个概念。

3.1 数据并行——处理更多的数据

“数据并行”通俗的理解:通过多任务(每个任务都包含一份完整的模型)并行的处理数据训练模型,任务之间的模型或同步或异步的进行融合。借用王益[3]的说法,“如果一个算法可以做数据并行,很可能就是可扩展的了”。幸运的是,David Newman团队发现基于吉布斯采样的LDA训练算法可以“数据并行”,并给这个算法取了一个名字叫AD-LDA[14]。

注意,AD- LDA算法是吉布斯采样的近似算法,因为严格的吉布斯采样要求串行采样,不能并行。直观的理解就是语料中前一个词w_1采样更新后的N_wt和N_t应该应用于后一个词w_2的采样,而不是w_1和w_2的采样都基于相同状态的N_wt和N_t。AD-LDA算法会使得LDA的训练收敛速度变慢,但在多几轮迭代后,AD-LDA算法可以收敛到与串行吉布斯采样相同的点。

图17给出了AD-LDA算法的示意图:

假设我们有三个可执行单元,每个都启动一个采样任务,每个任务中都有一个完整的“本地”模型L N_wt;

任务并行的处理训练语料数据块(W,T)和N_td,更新模型L N_wt,同时序列化更新后的训练语料数据块(W,T)和N_td到磁盘;

在迭代结束或任务处理训练语料数据块过程中,任务之间或同步或异步的融合模型。模型融合的方式可以类似MPI中的AllReduce,也可以借助全局的参数服务器G N_wt。

AD-LDA算法的整个过程和MapReduce的执行过程非常一致,所以早期有非常多的团队使用MapReduce来实现AD-LDA算法[5]:

MapReduce的一个Job进行AD-LDA算法的一个迭代;

训练语料数据块(W,T)和N_td作为Job输入,Mapper加载上个迭代生成的G N_wt作为 L N_wt,对数据块中的词进行主题采样;

Reducer融合各个L N_wt,生成下一个迭代需要加载的G N_wt。

因为MapReduce使用磁盘进行数据交换,同时整个训练任务需要调度几百个Jobs,所以基于MapReduce的AD-LDA实现是非常低效的。

让机器搞懂100万种隐含语义,腾讯Peacock大规模主题模型首次全揭秘

图17 AD-LDA算法

3.2 模型并行——训练更大的模型

让机器搞懂100万种隐含语义,腾讯Peacock大规模主题模型首次全揭秘

图18 模型并行1

上文提到,训练大模型时,N_wt太大而无法整体放入任务的内存,直观的解决方法如图18所示,将N_wt沿词的维度进行分片,每个采样任务只加载一个模型分片N_wt^((i))。相应的,语料数据块也需要做对应的词维度切分,因为单个任务i只能采样N_wt^((i))包含的词w。细心的童鞋可能已经发现,图18所示的模型并行方式在N_td上采用了类似AD-LDA算法的近似,L N_td间的融合与L N_wt间的融合类似,相应的算法也会减缓收敛(因为N_wt是所有训练语料上的聚合结果,而N_td只和具体文档d有关,后者变化比前者更加“快速”, N_td的并行近似采样更加“危险”,很容易造成训练不收敛)。

让机器搞懂100万种隐含语义,腾讯Peacock大规模主题模型首次全揭秘

图19 模型并行2

有没有办法不进行N_td的并行近似采样,同时保持上述的模型切片方式呢?Peacock系统设计了图19所示的并行采样方式:加载了不同 N_wt^((i))切片的任务并行的沿对角线方向对训练语料数据块(W,T)进行采样,一条对角线采样完成后,依次进行下一条对角线。这样在对同一个文档的不同数据块间的词进行采样时,仍然保持了“串行性”,应用了之前数据块中的词对N_td的更新。图19的模型并行采样方式收敛性同AD-LDA是一致的。

3.3 大规模主题模型训练系统Peacock

让机器搞懂100万种隐含语义,腾讯Peacock大规模主题模型首次全揭秘

图20 Peacock中的数据并行和模型并行

为了“利用更多的数据训练更大的模型”,Peacock系统结合了上述的“数据并行”和“模型并行”(图20):

多组“模型并行”任务之间采用“数据并行”的方式工作,“模型并行”任务组内部,依然保持图19所示的并行采样方式;

在迭代结束或任务处理训练语料数据块过程中,不同“模型并行”任务组之间或同步或异步的融合模型分片L N_wt^i。模型融合的方式可以类似MPI中的AllReduce,也可以借助全局的参数服务器G N_wt^i。

同上一小节“模型并行”的分析类似,Peacock系统的采样方式收敛性同AD-LDA是一致的。Max Welling团队提出的Async-LDA[6]证明了异步融合L N_wt^i方式的收敛性。当Peacock采用异步方式融合L N_wt^i时,相当于同时结合了AD-LDA和Async-LDA算法,实践证明收敛性是没有问题的。

当然,Peacock系统在具体实现上除了上述的主要设计思想,还有很多的实用技巧,比如:

数据传输和文档采样之间的流水线。

图19所示的模型并行方式在每条对角线并行采样结束后都需要同步,怎样去掉这种同步?

怎样的模型N_wt分片方式,能尽可能的保证采样服务器之间的负载均衡?

我们是否需要每个迭代都重采样所有词的主题?

怎样快速的计算对数似然度?

怎样将模型的超参数α_t和β优化融入Peacock系统?

除了标准的吉布斯采样,是否有更加快速的采样算法?

主题数K从100到1,000,000,系统的内部数据结构都保持不变么?

在我们的论文[15]中,部分的解答了上述问题,更详细的Peacock解密请关注我们的博客“火光摇曳”[16]^_^。

四、Peacock在腾讯都有哪些应用?

4.1 文本语义分析

让机器搞懂100万种隐含语义,腾讯Peacock大规模主题模型首次全揭秘

图21 文本分析示例

为了理解互联网上海量、多样化、非结构化的自然语言描述的文本,我们通常会从词法、句法、语义等维度进行分析。受限于文本字面信息量小,存在歧义现象,词法和句法分析容易遭遇 Vocabulary Gap的问题,从海量文本数据中归纳 “知识”,从语义角度帮助理解文本,是一种非常重要的途径。

例如,对于输入文本 “红酒木瓜汤效果怎么样?”,根据人的背景知识,很容易猜到这是一位女性用户在询问丰胸产品“红酒木瓜靓汤”的效果。对于机器而言,通常会先进行词法分析,对原始文本做切词、词性标注、命名实体识别等,然后使用词袋模型(Bag of Words,BOW)或提取关键词来表示文本。不难发现,从字面抽取的信息,很容易理解成“红酒”、“木瓜”等餐饮类语义,并非原始文本真实的意思。当然,我们可以对关键词做扩展,给出一些相似的词条,但是,更好的是直接理解语义。一种常见的方法是文本分类,由于对标注语料库的依赖,类别规模一般不会太大,粒度较粗。还有一种方法就是文本聚类,挖掘语义主题标签,更细粒度的理解文本意思,隐含语义分析技术逐渐发展成为常用的解决方案。能够从十亿级别的文档中归纳上百万语义的Peacock系统更是在腾讯广点通广告系统扮演着核心角色。这些不同维度的文本分析模块,包括词袋、关键词提取、关键词扩展、文本分类和Peacock等(图21),整合在一起构成了我们理解语言的基础文本分析平台TextMiner(图22)。

让机器搞懂100万种隐含语义,腾讯Peacock大规模主题模型首次全揭秘

图22 文本分析平台TextMiner

4.1.1 文本分类器

文本分类是一个典型的有监督的机器学习任务,我们在做在线广告系统过程中遇到的任务就有许多,包括网页分类、广告分类、QQ群分类、用户兴趣分类等。在使用相同的标注数据集和机器学习算法情况下,如何找到有区分力的特征无疑是最为关键的。

以 QQ群分类为例,使用群名称、群简介、群公告等文本描述,类别体系是二级层次结构,共100+节点,标注训练数据80,000。以BOW作为基础特征,新增Peacock主题特征后,一级行业准确率和召回率均有显著提升,达5%左右,二级行业在召回率降低不到1%的情况下,准确率提升达3.86%,达到了实际应用的需求。具体数据如图23所示。

让机器搞懂100万种隐含语义,腾讯Peacock大规模主题模型首次全揭秘

图23 QQ群分类器效果

4.1.2 相关性计算

对给定的查询语句,搜索引擎会将检索到的网页进行排序,把相关性好的排在前面。同样的,在线广告系统应该保证展示给用户的广告与页面内容、用户兴趣相关,以尽量不影响用户体验。这里都涉及到一个共同的任务:排序学习。此问题通常被形式化为有监督的学习问题,我们会将查询、网页、用户、广告表示成语义特征向量,从而在语义空间里比较用户意图(查询、网页内容、用户历史行为)和网页、广告的相关性。

Peacock已成功应用在腾讯搜索广告和情境广告中,用于分析文本数据,归纳自然语言的语义,从而更好地匹配查询词和广告,以及页面内容和广告。在情境广告 Learning To Rank 相关性计算框架下,增加Peacock语义特征后,NDCG@5提升达8.92%,线上A/B Test实验 AdCTR 提升 8.82%。相关性评估效果图24所示。

让机器搞懂100万种隐含语义,腾讯Peacock大规模主题模型首次全揭秘

图24 情境广告相关性(相关性标注样本包括4,000 查询,200,000对(查询, 广告),标注0~3四档打分)

4.2 广告 CTR 预估

广告点击率预估是预测给定场景下一个广告被点击的概率:P(click=1 | ad, user, context),user 表示当前用户,context 表示当前的环境信息,譬如当前所在的网页。点击率预估是在线广告系统最核心的技术之一,它决定着广告的排序和计价。

业界一般做法是将广告展示、点击日志作为训练数据,抽取特征,通过机器学习方法拟合训练数据得到预估模型,进而做在线点击率预估。选取有效的特征对得到一个精准的点击率预估模型起着至关重要的作用。

Peacock 是我们理解广告语义的关键技术,被引入到广告点击率预估模型中提升效果。具体的,与 KDD Cup 2012 Track2 的数据集产生过程类似,我们使用了腾讯情境广告系统的广告展示、点击日志,使用L1范数正则的逻辑回归训练预估模型,通过 AUC 评估模型精度。 Baseline 使用一些基础特征,优化实验分别在 baseline 特征集合的基础上引入主题规模为 1000、10,000 和 100,000 的 Peacock Top-N语义特征。

让机器搞懂100万种隐含语义,腾讯Peacock大规模主题模型首次全揭秘

图25 pCTR增加不同粒度topic特征模型AUC的提升

从图25可以看出,加入Peacock 语义特征后 AUC得到了显著提升,尤其当增加 topic 规模为 100,000的Peacock语义特征时,AUC 提升最大,约为1.8%,线上 A/B Test 实验AdCTR 有 8.82% 的提升。

4.3 精准广告定向

在腾讯效果广告平台广点通系统里,Peacock被用于理解用户行为数据,从中归纳用户兴趣,提供广告精准定向技术。

腾讯丰富的产品线拥有中国互联网公司最多的用户,有着海量、丰富的用户关系和行为数据,如QQ好友关系,QQ 群关系,电商浏览、交易,新闻浏览,查询 Query,UGC 内容(如微博、说说等),移动App 安装,微信公众号文章阅读和广告点击行为等。通过用户行为数据的挖掘可以帮助我们更好的了解用户,以推送精准的广告。而这些数据都可以形式化为用户-物品矩阵,如用户-用户、QQ-QQ群,用户-应用(Apps),用户-搜索词(或搜索Session),用户-URLs等。我们利用Peacock系统对上述用户-物品做矩阵分解(如图3),从不同数据来源,多视角理解用户兴趣,进而挖掘相似用户,提供给广告主丰富的定向策略,如用户商业兴趣定向、关键词定向和Look-Alike定向等。同时,获取到的用户特征,也可以作为广告CTR、CVR预估系统的重要特征。

4.4 QQ 群推荐

让机器搞懂100万种隐含语义,腾讯Peacock大规模主题模型首次全揭秘

图26 QQ群推荐

根据用户已加QQ群社交关系数据,利用Peacock对QQ-QQ群做矩阵分解,我们发现语义相近的QQ群被比较好的归到了相同的主题下,如图8、9、10 所示。非常直观的,我们将Peacock 模型应用在QQ群消息面板推荐产品中(如图26),相比基于QQ好友关系链的推荐算法,推荐群的点击率和转化率(即点击后是否加入了该群)均有2~3倍的提升(图27)。

让机器搞懂100万种隐含语义,腾讯Peacock大规模主题模型首次全揭秘

图27 QQ群推荐效果

论文《Peacock:大规模主题模型及其在腾讯业务中的应用》由赵学敏、王莉峰、王流斌执笔,靳志辉、孙振龙等修订,相关工作由腾讯SNG效果广告平台部(广点通)质量研发中心Peacock团队王益、赵学敏、孙振龙、严浩、王莉峰、靳志辉、王流斌为主完成,苏州大学曾嘉教授、实习生高洋等持续大力支持,是多人合作的结果。

正文到此结束
Loading...