近几年以深度学习技术为核心的人工智能获得普遍的关注,不管是学术界仍是工业界,它们都把深度学习做为研究应用的焦点。而深度学习技术日新月异的发展离不开海量数据的积累、计算能力的提高和算法模型的改进。本文主要介绍深度学习技术在文本领域的应用,文本领域大体可分为4个维度:词、句子、篇章、系统级应用。web
总之,上面这些文本领域的深度学习应用只是冰山一角,深度学习应用还有知识图谱、自动摘要、语音、图像文本生成等。整体趋势是,各文本研究和应用的方向都在尝试深度学习技术,并分别取得了进展。在文本领域,若是想跟图像、语音那样取得突破性进展还面临重重困难,如不一样任务的大规模标注数据缺少,如何建模能捕捉语言的逻辑性以及所蕴含的地域、文化特点等等。限于篇幅,本文只对美团在文本中应用较多的文本匹配、排序模型进行介绍。算法
文本匹配在不少领域都有用到,尤为是信息检索相关场景,好比搜索的Query和Doc、广告中Query-Ad、搜索Suggestion中Query前缀和Query(见图1)、关键词推荐中Query和Query、文档去重时Doc和Doc等。网络
文本匹配主要研究计算两段文本的类似度问题。类似度问题包含两层:一是两段文本如何表示可以使得计算机方便处理,这须要研究不一样的表示方法效果的区别:二是如何定义类似度来做为优化目标,如语义匹配类似度、点击关系类似度、用户行为类似度等,这和业务场景关系很紧密。框架
在解决这两个问题过程当中会遇到不少难题,其中一个难题就是设计模型如何充分考虑语义。由于中文的多义词、同义词很是广泛,它们在不一样的语境中表达的含义是不同的。好比苹果多少钱一台?苹果多少钱一斤?对于前者,根据“一台”能看出它是指苹果品牌的电子设备,后者则是指水果。固然,还有不少语言现象更加困难,好比语气、语境、口语的不一样表述等。dom
文本的表示和匹配是本节的主线,如何作到语义层面匹配就成为本节的主旨。 受到总体技术的演进影响,文本的匹配技术一样有一个顺应时代的技术历程,如图2所示。ide
1970年左右提出的向量空间模型,就是把文档表示词表维度的向量经过TF-IDF计算出词的权重,好比一种标准词表包含词ID、词和IDF,另外一种是停用词表,如图3所示。函数
对文本“丽江的酒店价格”分词去除停用词后,获得丽江、酒店、价格,词出现次数是1,查表IDF获得这句文本的表示:[0, 1.5, 2.1, 0, 0, …, 0, 4.1]。其中权重使用的是TF×IDF,TF是Term在文本里的频次,IDF是逆文档频次,二者定义有不少形式,如图4所示。这里使用第二种定义。性能
向量空间模型用高维稀疏向量来表示文档,简单明了。对应维度使用TF-IDF计算,从信息论角度包含了词和文档的点互信息熵,以及文档的信息编码长度。文档有了向量表示,那么如何计算类似度?度量的公式有Jaccard、Cosine、Euclidean distance、BM25等,其中BM25是衡量文档匹配类似度很是经典的方法,公式以下:学习
向量空间模型虽然不能包含同义词、多义词的信息,且维度随着词典增大变得很大,但由于它简单明了,效果不错,目前仍然是各检索系统必备的特征。测试
向量空间模型的高维度对语义信息刻画很差,文档集合会表示成高维稀疏大矩阵。1990年左右,有人研究经过矩阵分解的方法,把高维稀疏矩阵分解成两个狭长小矩阵,而这两个低维矩阵包含了语义信息,这个过程即潜在语义分析。
假设有N篇文档,共有V个词,用TF-IDF的向量空间表示一个N×V的稀疏矩阵X,词和文档的语义分析就在这个共现矩阵上操做。这个共现矩阵经过奇异值分解, 能变成三个矩阵,狭长矩阵U的维度是N×K,V的维度是K×V,中间是对角阵K×K维,如图5所示。
通过分解后,每一个文档由K维向量表示,(K<<V),表明了潜在语义信息,能够当作是文档须要表达的语义空间表示。V矩阵表明词在潜空间上的分布都是经过共现矩阵分解获得的。
潜在语义分析能对文档或者词作低维度语义表示,在作匹配时其性能较高(好比文档有效词数大于K),它包含语义信息,对于语义相同的一些文档较准确。可是,潜在语义分析对多义词语义的建模很差,而且K维语义向量彻底基于数学分解获得,物理含义不明确。所以,在2000年左右,为解决上述问题,主题模型出现了。
2000~2015年,以几率图模型为基础的主题模型掀起了一股热潮,那么究竟这种模型有什么吸引你们的优点呢?
pLSA(Probabilistic Latent Semantic Analysis)
pLSA在潜在语义分析之上引入了主题概念。它是一种语义含义,对文档的主题建模再也不是矩阵分解,而是几率分布(好比多项式分布),这样就能解决多义词的分布问题,而且主题是有明确含义的。但这种分析的基础仍然是文档和词的共现频率,分析的目标是创建词/文档与这些潜在主题的关系,而这种潜在主题进而成为语义关联的一种桥梁。这种转变过渡可如图6所示。
假设每篇文章都由若干主题构成,每一个主题的几率是p(z|d),在给定主题的条件下,每一个词都以必定的几率p(w|z)产生。这样,文档和词的共现能够用一种产生式的方式来描述:
其几率图模型如图7所示:
能够经过EM算法把p(z|d)和p(w|z)做为参数来学习,具体算法参考Thomas Hofmann的pLSA论文。须要学习的p(z|d)参数数目是主题数和文档数乘的关系,p(w|z)是词表数乘主题数的关系,参数空间很大,容易过拟合。于是咱们引入多项式分布的共轭分布来作贝叶斯建模,即LDA使用的方法。
LDA(Latent Dirichlet Allocation)
若是说pLSA是频度学派表明,那LDA就是贝叶斯学派表明。LDA经过引入Dirichlet分布做为多项式共轭先验,在数学上完整解释了一个文档生成过程,其几率图模型如图8所示。
和pLSA几率图模型不太同样,LDA几率图模型引入了两个随机变量α和β,它们就是控制参数分布的分布,即文档-主题符合多项式分布。这个多项式分布的产生受Dirichlet先验分布控制,可使用变分指望最大化(Variational EM)和吉布斯采样(Gibbs Sampling)来推导参数,这里不展开叙述。
整体来说,主题模型引入了“Topic”这个有物理含义的概念,而且模型经过共现信息能学到同义、多义、语义相关等信息。获得的主题几率分布做为表示,变得更加合理有意义。有了文档的表示,在匹配时,咱们不只可使用以前的度量方式,还能够引入KL等度量分布的公式,这在文本匹配领域应用不少。固然,主题模型会存在一些问题,好比对短文本推断效果很差、训练参数多速度慢、引入随机过程建模避免主题数目人工设定不合理问题等。随着研究进一步发展,这些问题基本都有较好解决,好比针对训练速度慢的问题,从LDA到SparseLDA、AliasLDA, 再到LightLDA、WarpLDA等,采样速度从O(K)下降O(1)到。
2013年,Tomas Mikolov发表了Word2Vec相关的论文,提出的两个模型CBOW(Continuous Bag of Words,连续词袋)和Skip-Gram能极快地训练出词嵌入,而且能对词向量加减运算,这获得了普遍关注。在这项工做以前,神经网络模型经历了很长的演进历程。这里先介绍2003年Yoshua Bengio使用神经网络作语言模型的工做,Word2Vec也是众多改进之一。
神经网络语言模型
在2003年,Yoshua Bengio使用神经网络来训练语言模型比N-Gram的效果好不少,网络结构如图9所示。输入是N-Gram的词,预测下一个词。前n个词经过词向量矩阵Matrix C(维度:n*emb_size)查出该词的稠密向量C(w(t-1)),C(w(t-2));再分别链接到隐含层(Hidden Layer)作非线性变换;再和输出层链接作Softmax预测下一个词的几率;训练时根据最外层偏差反向传播以调节网络权重。能够看出,该模型的训练复杂度为O(n×emb_size + n×emb_size×hidden_size + hidden_size×output_size),其中n为5~10,emb_size为64~1024,hidden_size为64~1023,output_size是词表大小,好比为10^7。由于Softmax在几率归一化时,须要全部词的值,因此复杂度主要体如今最后一层。今后之后,提出了不少优化算法,好比Hierarchical Softmax、噪声对比估计(Noise Contrastive Estimation)等。
Word2Vec
Word2Vec的网络结构有CBOW和Skip-Gram两种,如图10所示。相比NNLM,Word2Vec减小了隐含层,只有投影层。输出层是树状的Softmax,对每一个词作哈夫曼编码,预测词时只须要对路径上的0、1编码作预测,从而复杂度从O(V)下降到O(log(V))。
以CBOW为例,算法流程以下:
(1) 上下文词(窗口大小是Win)的词向量对应维相加映射到投影层。 (2) 投影层经Sigmoid变换后预测当前词的编码路径(哈夫曼树)。 (3) 使用交叉熵损失函数(Cross Entropy Loss)反向传播,更新Embedding层参数和中间层参数。 (4) 训练使用反向传播机制,优化方法使用SGD。
从该算法流程能够看出,最外层的预测复杂度大幅下降,隐含层也去掉,这使得计算速度极大提升。该算法可获得词的Dense 的Word Embedding,这是一个很是好的表示,能够用来计算文本的匹配度。但因为该模型的学习目标是预测词发生几率,即语言模型,因此从海量语料中学习到的是词的通用语义信息,没法直接应用于定制业务的匹配场景。可否根据业务场景对语义表示和匹配同时建模,以提高匹配效果呢?DSSM系列工做就充分考虑了表示和匹配。
DSSM系列
这类方法能够把表示和学习融合起来建模,比较有表明性的是微软的相关工做。下面将介绍DSSM系列内容。
(1) DSSM模型框架
DSSM网络结构如图11所示:
使用搜索的点击数据训练语义模型,输入查询Query(Q)和展示点击的Doc(D)列表,先对Q和D作语义表示,再经过Q-DK的Cosine计算类似度,经过Softmax来区分点击与否。其中,语义表示先使用词散列对词表作降维(好比英文字母的Ngram),通过几层全链接和非线性变化后获得128维的Q和D的表示。从实验结论可知,NDCG指标提高仍是很明显的,如图12所示。
(2) CLSM
在DSSM基础上,CLSM增长了1维卷积和池化操做来获取句子全局信息,如图13所示。经过引入卷积操做,能够充分考虑窗口内上下文的影响,从而保证词在不一样语境下的个性化语义。
对应效果如图14所示:
(3) LSTM-DSSM
LSTM-DSSM使用LSTM做为Q和D的表示,其余框架和DSSM一致,其网络结构图如图15所示。因为LSTM具有语义记忆功能且蕴含了语序信息,所以更适合做为句子的表示。固然也可使用双向LSTM以及注意力模型(Attention Model)。
文本的语义匹配做为天然语言处理经典的问题,能够用在搜索、推荐、广告等检索系统的召回、排序中,还能够用在文本的去重、归1、聚类、抽取等场景。语义匹配的经常使用技术和最新进展前文已经介绍了。
在美团这样典型的O2O应用场景下,结果的呈现除了和用户表达的语言层语义强相关以外,还和用户意图、用户状态强相关。用户意图即用户是来干什么的?好比用户在百度上搜索“关内关外”,其意图多是想知道关内和关外表明的地理区域范围,“关内”和“关外”被做为两个词进行检索。而在美团上搜索“关内关外”,用户想找的多是“关内关外”这家饭店,“关内关外”被做为一个词来对待。再说用户状态,一个在北京的用户和一个在武汉的用户,在百度或淘宝上搜索任何一个词条,他们获得的结果不会差太多。可是在美团这样与地理位置强相关的应用下就会彻底不同。好比在武汉搜“黄鹤楼”,用户找的多是景点门票,而在北京搜索“黄鹤楼”,用户找的极可能是一家饭店。
如何结合语言层信息和用户意图、用户状态来作语义匹配呢?
在短文本外引入部分O2O业务场景相关特征,将其融入到设计的深度学习语义匹配框架中,经过点击/下单数据来指引语义匹配模型的优化方向,最终把训练出的点击相关性模型应用到搜索相关业务中。
针对美团场景设计的点击类似度框架ClickNet,是比较轻量级的模型,兼顾了效果和性能两方面,能很好推广到线上应用,如图16所示。
若是ClickNet算法框架上要训练效果很好的语义模型,还须要根据场景作模型调优。首先,咱们从训练语料作不少优化,好比考虑样本不均衡、样本重要度等问题。其次,在模型参数调优时考虑不一样的优化算法、网络大小层次、超参数的调整等问题。
通过模型训练优化,该语义匹配模型已经在美团平台搜索、广告、酒店、旅游等召回和排序系统中上线,使访购率/收入/点击率等指标有很好的提高。
总结一下,深度学习应用在语义匹配上,须要针对业务场景设计合适的算法框架。此外,深度学习算法虽然减小了特征工程工做,但模型调优的难度会增长。所以能够将框架设计、业务语料处理、模型参数调优三方面综合起来考虑,实现一个效果和性能兼优的模型。
在搜索、广告、推荐、问答等系统中,因为须要在召回的大量候选集合中选择出有限的几个用于展现,所以排序是很重要的一环。如何设计这个排序规则使得最终业务效果更好呢?这就须要复杂的排序模型。好比美团搜索系统中的排序会考虑用户历史行为、本次查询Query、商家信息等多维度信息,抽取设计出各类特征,经过海量数据的训练获得排序模型。这里只简要回顾排序模型类型和演进,重点介绍深度学习用在排序模型中的状况。
排序模型主要分类三类:Pointwise、Pairwise、Listwise,如图17所示。Pointwise对单样本作分类或者回归,即预测 <Query, Doc> 的得分做为排序准则,比较有表明性的模型有逻辑回归、XGBoost。Pairwise会考虑两两样本之间偏序关系,转化成单分类问题,好比 <Query, Doc1> 比 <Query, Doc2> 高,那这个Pair预测正,反之则负,典型的模型有RankSVM、LambdaMART。第三类就是Listwise模型,排序总体做为优化目标,经过预测分布和真实排序分布的差距来优化模型,典型的模型如ListNet。
在排序模型的发展中,神经网络很早就被用来作排序模型,好比2005年微软研究院提出的RankNet使用神经网络作Pairwise学习;2012年谷歌介绍了用深度学习作CTR的方法;与此同时,百度开始在凤巢中用深度学习作CTR,于2013年上线。随着深度学习的普及,各大公司和研究机构都在尝试把深度学习应用在排序中,好比谷歌的Wide & Deep、YouTube的DNN推荐模型等,前面介绍的DSSM也可用来排序。下面将对RankNet、Wide & Deep、YouTube的排序模型做简单介绍。
RankNet
RankNet是Pairwise的模型,一样转化为Pointwise来处理。好比一次查询里,Di和Dj有偏序关系,前者比后者更相关,那把二者的特征做为神经网络的输入,通过一层非线性变化后,接入Loss来学习目标。若是Di比Dj更相关,那么预测的几率为下式,其中Si和Sj是对应Doc的得分。
在计算得分时使用神经网络,如图18所示,每样本的输入特征做为第一层,通过非线性变换后获得打分,计算获得Pair的得分后进行反向传播更新参数,这里可使用Mini-Batch。因为RankNet须要预测的几率公式具备传递性,即Di和Dj的偏序几率能够由Di和Dk以及Dk和Dj获得,所以RankNet把计算复杂度从O(n²)变成了O(n),具体介绍可参考文献。
固然,后续研究发现,RankNet以减小错误Pair为优化目标,对NDCG等指标(关心相关文档所在位置)衡量的效果不是太好,因而后面出现了改进模型,如LambdaRank。RankNet是典型的神经网络排序模型,但当时工业界用得多的仍是简单的线性模型,如逻辑回归,线性模型经过大量的人工设计特征来提升效果,模型解释性好性能也高。当人工设计特征到必定程度就遇到了瓶颈,而深度学习能经过原始的特征学习出复杂的关系,很大程度减轻了特征工程的工做。而且GPU、FPGA等高性能辅助处理器变得普及,从而促进了深度神经网络作排序模型的普遍研究。
Wide&Deep
谷歌发表过一篇论文“Wide & Deep Learning”,其观点能够用在推荐里,好比谷歌的Apps推荐利用此观点取得很好的效果,并把模型发布在TensorFlow中。Wide & Deep总体模型结构分为Wide和Deep两部分,这两部分在最外层合并一块儿来学习模型,如图19所示。输入都是稀疏特征,但特征分为两种:一种适合作Deep的深度网络变化,适合时效性或者记忆性的特征,好比统计特征或者展现位置等;另外一种能够直接连在最外层,适合有推广力但须要深度组合抽样的特征,好比品类、类型等。在模型优化时两部分作联合优化,Wide部分使用FTRL,而Deep使用Adagrad算法。这样,Wide和Deep对不一样类型特征区分开来,充分发挥各自做用,解释性比较好。
这种思路其实能够作些扩展。好比Wide链接不是在最外层,而是在某一层,Deep的某些层也能够链接到最外层,这样能充分利用不一样层抽象的Dense信息。与Wide & Deep的网络链接方式相似,如2003年NNLM和2010年RNNLM模型里的直接链接(Direct Connection),其浅层和深层的结合能很好地加速收敛,深度学习的Highway方式也是相似的。目前Wide & Deep应用较多,好比在阿里巴巴就有比较好的应用。
YouTube DNN排序模型
YouTube用来预测用户观看视频时长,转化为加权的逻辑回归问题。DNN排序模型和前面的工做相似,其网络结构是标准的前馈神经网络,如图20所示。DNN排序模型的特色仍是在输入特征上。虽然深度学习模型对特征工程要求很低,但不少数据须要通过简单处理后才可加入模型。图20中的特征分为不少域,好比语言方面、视频方面、用户历史看过的视频ID,还有以前观看时长的统计量和归一化的值。离散值通过Embedding的处理后变成连续向量,再级联起来通过多层非线性变化后来预测最终的标签。
从上面介绍的深度学习相关排序模型能够看出,排序模型所须要的数据类型多种多样,数据的含义也各有不一样,不一样于图像、语音领域单一的输入形式。所以在作排序模型中,输入特征的选取和表示方式是很重要的,好比连续特征、离散特征处理、用户历史、文档特征的区分等。在美团场景中,设计排序模型需考虑业务特色,对输入特征的表示作不少尝试。
在语义匹配模型中介绍了ClickNet框架,其实该框架同时也可用于排序,与语义匹配的区别主要在表示层,如图21所示。若是ClickNet用做搜索的CTR模型,那表示层的Query和Title的语义特征只是一部分,还有用户查询、用户行为、商家信息以及交叉组合特征均可以做为业务特征,并按特征的类型分不一样的域。进一步讲,若是场景不包含语义匹配,模型的输入能够只有业务特征。下面简单讲解在美团用ClickNet作排序模型的尝试。
ClickNet-v1
ClickNet设计的初衷是它做为文本的匹配模型,并做为一维语义特征加入到业务的Rank模型中以提高效果。但根据上线以后的数据分析,咱们发现以语义特征表示为主、辅以部分业务特征的ClickNet在排序系统中有更好的表现。咱们针对排序模型作了以下改进。
针对业务Rank的目标优化ClickNet后,效果有很大改善,但模型仍是偏重于语义特征。可否直接使用ClickNet作排序模型呢?答案是能够的。只须要加剧业务特征、弱化或者去除语义表示特征就能够,这样修改后的模型就是ClickNet-v2。
ClickNet-v2
ClickNet-v2以业务特征为主,替换业务Rank模型为目标,使用业务特征做为ClickNet的表示层输入,经过对各特征离散化后传入模型。和ClickNet-v1不同的是,ClickNet-v2业务特征种类繁多,须要作深度的分析和模型设计。
好比如何考虑位置偏好问题?由于展现位置会有先后顺序,后面的展现不容易被用户看到,从而自然点击率会偏低。一种解决思路是能够把位置信息直接链接到最外层,不作特征组合处理。
再好比各业务特征经过多层非线性变化后,特征组合是否充分?一种解决思路是使用多项式非线性变换,这能很好组合多层的特征。
又好比模型组合的效果是否更好?一种解决思路是尝试FM和ClickNet的级联,或者各模型的Bagging。
此外还有模型的解释性等不少和业务场景相关的状况须要考虑。
ClickNet是基于自研的深度学习框架Ginger实现的,收敛速度和效果都很是理想。咱们来看看分类任务上的一些测试,如图22所示。在Higgs数据上,基于Ginger的ClickNet比基于XGBoost的AUC提高34个千分点,使用TensorFlow实现的ClickNet比基于Ginger的AUC差3个千分点,且其速度慢于Ginger。如图23所示,ClickNet相比线性模型,其准确率都有较好的提高。
由于深度学习的拟合能力强、对特征工程要求低,它在文本领域已经有不少应用。本章以语义匹配和排序模型为例,分别介绍了业界进展和美团场景的应用。
第一部分介绍了语义匹配经历的向量空间、潜在语义分析、主题模型、深度学习几个阶段,重点介绍了深度学习应用在语义匹配上的Embedding和DSSM系列模型,以及美团尝试的ClickNet模型。第二部分介绍了深度学习在排序模型的一些进展和美团的一些尝试。除了这两部份内容外,深度学习几乎渗透了文本的各方面,美团还有不少尝试方式,好比情感分析、对话系统、摘要生成、关键词生成等,限于篇幅不作介绍。总之,认知智能还有很长的路须要走,语言文字是人类历史的文化沉淀,涉及语义、逻辑、文化、情感等众多复杂的问题。咱们相信,深度学习在文本领域很快会有很大突破。
参考文献
[1] Thomas Hofmann. “Probabilistic Latent Semantic Analysis”. 1999.
[2] David M.Blei, Andrew Y.Ng, Michael Jordan. “Latent Dirichlet Allocation” . 2002.
[3] Huang, Po-Sen et al. “Learning deep structured semantic models for web search using clickthrough data” in CIKM 2013.
[4] Shen, Yelong, He, Xiaodong, Gao, Jianfeng, et al. “A latent semantic model with convolutional-pooling structure for information retrieval” in CIKM 2014.
[5] H. Palangi et al. “Semantic modeling with long-short-term memory for information retrieval”. 2015.
美团点评算法团队是整个美团点评技术团队的“大脑”,涵盖搜索、推荐、广告、智能调度、天然语言处理、计算机视觉、机器人以及无人驾驶等多个技术领域。帮助美团点评数亿活跃用户改善了用户体验,也帮助餐饮、酒店、结婚、丽人、亲子等200多个品类的数百万商户提高了运营效率。目前,美团点评算法团队在人工智能领域进行积极的探索和研究,不断创新与实践,致力于应用最前沿的技术,给广告大消费者带来更好的生活服务体验。