深度学习利用篇-举荐零碎[12]:经典模型-DeepFM模型、DSSM模型召回排序策略以及和其余模型比照

1.DeepFM模型

1.1.模型简介

CTR预估是目前举荐零碎的核心技术,其指标是预估用户点击举荐内容的概率。DeepFM模型蕴含FM和DNN两局部,FM模型能够抽取low-order(低阶)特色,DNN能够抽取high-order(高阶)特色。低阶特色能够了解为线性的特色组合,高阶特色,能够了解为通过屡次线性-非线性组合操作之后造成的特色,为高度形象特色。无需Wide&Deep模型人工特色工程。因为输出仅为原始特色,而且FM和DNN共享输出向量特色,DeepFM模型训练速度很快。

注解:Wide&Deep是一种交融浅层(wide)模型和深层(deep)模型进行联结训练的框架,综合利用浅层模型的记忆能力和深层模型的泛化能力,实现单模型对举荐零碎准确性和扩展性的兼顾。

该模型的Paddle实现请参考链接:PaddleRec版本

1.2.DeepFM模型构造

为了同时利用low-order和high-order特色,DeepFM蕴含FM和DNN两局部,两局部共享输出特色。对于特色i,标量wi是其1阶特色的权重,该特色和其余特色的交互影响用隐向量Vi来示意。Vi输出到FM模型取得特色的2阶示意,输出到DNN模型失去high-order高阶特色。

$$\hat{y} = sigmoid(y_{FM} + y_{DNN})$$

DeepFM模型构造如下图所示,实现对稠密特色的嵌入后,由FM层和DNN层共享输出向量,经前向反馈后输入。

为什么应用FM和DNN进行联合?

  • 在排序模型刚起步的年代,FM很好地解决了LR须要大规模人工特色穿插的痛点,引入任意特色的二阶特色组合,并通过向量内积求特色组合权重的办法大大提高了模型的泛化能力。
  • 规范FM的缺点也恰好是只能做二阶特色穿插。

所以,将FM与DNN联合能够帮忙咱们捕获特色之间更简单的非线性关系。

为什么不应用FM和RNN进行联合?

  • 如果一个工作须要解决序列信息,即本次输出失去的输入后果,不仅和本次输出相干,还和之前的输出相干,那么应用RNN循环神经网络能够很好地利用到这样的序列信息
  • 在预估点击率时,咱们会假如用户每次是否点击的事件是独立的,不须要思考序列信息,因而RNN于FM联合来预估点击率并不适合。还是应用DNN来模拟出特色之间的更简单的非线性关系更能帮忙到FM。

1.3.FM

FM(Factorization Machines,因子合成机)最早由Steffen Rendle于2010年在ICDM上提出,它是一种通用的预测办法,在即便数据十分稠密的状况下,仍然能预计出牢靠的参数进行预测。与传统的简略线性模型不同的是,因子合成机思考了特色间的穿插,对所有嵌套变量交互进行建模(相似于SVM中的核函数),因而在举荐零碎和计算广告畛域关注的点击率CTR(click-through rate)和转化率CVR(conversion rate)两项指标上有着良好的体现。

为什么应用FM?

  • 特色组合是许多机器学习建模过程中遇到的问题,如果对特色间接建模,很有可能疏忽掉特色与特色之间的关联信息,一次能够通过构建新的穿插特色这一特色组合形式进步模型的成果。FM能够失去特色之间的关联信息。
  • 高维的稠密矩阵是理论工程中常见的问题,并且间接导致计算量过大,特色权值更新迟缓。试想一个10000100的表,每一列都有8中元素,通过one-hot编码之后,会产生一个10000800的表。

而FM的劣势就在于对这两方面问题的解决。首先是特色组合,通过两两特色组合,引入穿插项特色(二阶特色),进步模型得分;其次是高维劫难,通过引入隐向量(对参数矩阵进行合成),实现特征参数的预计。

FM模型不单能够建模1阶特色,还能够通过隐向量点积的办法高效的取得2阶特色示意,即便穿插特色在数据集中十分稠密甚至是素来没呈现过。这也是FM的劣势所在。

$$y_{FM}= <w,x> + \sum_{j_1=1}^{d}\sum_{j_2=j_1+1}^{d}<V_i,V_j>x_{j_1}\cdot x_{j_2}$$

独自的FM层构造如下图所示:

1.4.DNN

该局部和Wide&Deep模型相似,是简略的前馈网络。在输出特色局部,因为原始特征向量多是高纬度,高度稠密,间断和类别混合的分域特色,因而将原始的稠密示意特色映射为浓密的特征向量。

假如子网络的输入层为:

$$a^{(0)}=[e1,e2,e3,...en]$$

DNN网络第l层示意为:

$$a^{(l+1)}=\sigma{(W^{(l)}a^{(l)}+b^{(l)})}$$

再假如有H个暗藏层,DNN局部的预测输入可示意为:

$$y_{DNN}= \sigma{(W^{|H|+1}\cdot a^H + b^{|H|+1})}$$

DNN深度神经网络层构造如下图所示:

1.5.Loss及Auc计算

DeepFM模型的损失函数抉择Binary_Cross_Entropy(二值穿插熵)函数

$$H_p(q)=-\frac{1}{N}\sum_{i=1}^Ny_i\cdot log(p(y_i))+(1-y_i) \cdot log(1-p(y_i))$$

对于公式的了解,y是样本点,p(y)是该样本为正样本的概率,log(p(y))可了解为对数概率。

Auc是Area Under Curve的首字母缩写,这里的Curve指的就是ROC曲线,AUC就是ROC曲线上面的面积,作为模型评估指标,他能够用来评估二分类模型。其中,ROC曲线全称为受试者工作特色曲线 (receiver operating characteristic curve),它是依据一系列不同的二分类形式(分界值或决定阈),以真阳性率(敏感性)为纵坐标,假阳性率(1-特异性)为横坐标绘制的曲线。

可应用paddle.metric.Auc()进行调用。

可参考已有的材料:机器学习罕用评估指标

1.6.与其余模型的比照

如表1所示,对于是否须要预训练,高阶特色,低阶特色和是否须要特色工程的比拟上,列出了DeepFM和其余几种模型的比照。DeepFM体现更优。

如表2所示,不同模型在Company*数据集和Criteo数据集上对点击率CTR进行预估的性能体现。DeepFM在各个指标上体现均强于其余模型。

  • 参考文献

[[IJCAI 2017]Guo, Huifeng,Tang, Ruiming,Ye, Yunming,Li, Zhenguo,He, Xiuqiang. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction](https://arxiv.org/pdf/1703.04247.pdf)

2.DSSM

以搜索引擎和搜寻广告为例,最重要的也最难解决的问题是语义类似度,这里次要体现在两个方面:召回和排序。
在召回时,传统的文本相似性如 BM25,无奈无效发现语义类 query-Doc 后果对,如"从北京到上海的机票"与"携程网"的相似性、"快递软件"与"菜鸟裹裹"的相似性。
在排序时,一些轻微的语言变动往往带来微小的语义变动,如"小宝宝生病怎么办"和"狗宝宝生病怎么办"、"深度学习"和"学习深度"。
DSSM(Deep Structured Semantic Models)为计算语义类似度提供了一种思路。

该模型的Paddle实现请参考链接:PaddleRec版本

2.1DSSM模型构造

DSSM(Deep Structured Semantic Models)的原理很简略,通过搜索引擎里 Query 和 Title 的海量的点击曝光日志,用 DNN 把 Query 和 Title 表白为低纬语义向量,并通过 cosine 间隔来计算两个语义向量的间隔,最终训练出语义类似度模型。该模型既能够用来预测两个句子的语义类似度,又能够取得某句子的低纬语义向量表白。

DSSM 从下往上能够分为三层构造:输出层、表示层、匹配层

2.1.1 输出层

输出层做的事件是把句子映射到一个向量空间里并输出到 DNN 中,这里英文和中文的解决形式有很大的不同。

英文

英文的输出层解决形式是通过word hashing。举个例子,假如用 letter-trigams 来切分单词(3 个字母为一组,#示意开始和结束符),boy 这个单词会被切为 #-b-o, b-o-y, o-y-#

![word hashing](https://raw.githubusercontent.com/w5688414/paddleImage/main/dssm_img/word_hashing.png)

这样做的益处有两个:首先是压缩空间,50 万个词的 one-hot 向量空间能够通过 letter-trigram 压缩为一个 3 万维的向量空间。其次是加强范化能力,三个字母的表白往往能代表英文中的前缀和后缀,而前缀后缀往往具备通用的语义。

这里之所以用 3 个字母的切分粒度,是综合思考了向量空间和单词抵触:

Letter-BigramLetter-Trigram
word SizeToken SizeCollisionToken SizeCollision
40k110718103062
500k160711923062122

如上表,以 50 万个单词的词库为例,2 个字母的切分粒度的单词抵触为 1192(抵触的定义:至多有两个单词的 letter-bigram 向量完全相同),而 3 个字母的单词抵触降为 22 成果很好,且转化后的向量空间 3 万维不是很大,综合思考抉择 3 个字母的切分粒度。

中文

中文的输出层解决形式与英文有很大不同,首先中文分词是个让所有 NLP 从业者头疼的事件,即使业界号称能做到 95%左右的分词准确性,但分词后果极为不可控,往往会在分词阶段引入误差。所以这里咱们不分词,而是仿照英文的解决形式,对应到中文的最小粒度就是单字了。

因为罕用的单字为 1.5 万左右,而罕用的双字大概到百万级别了,所以这里出于向量空间的思考,采纳字向量(one-hot)作为输出,向量空间约为 1.5 万维。

2.1.2表示层

DSSM 的表示层采纳 BOW(Bag of words)的形式,相当于把字向量的地位信息摈弃了,整个句子里的词都放在一个袋子里了,不分先后顺序。
紧接着是一个含有多个隐层的 DNN,如下图所示:

用$W_{i}$ 示意第 i 层的权值矩阵,$b_{i}$示意第 i 层的偏置项。则第一隐层向量 l2(300 维),第 二个隐层向量 l3(300 维),输入向量 y(128 维),用数学公式能够别离示意为:

$$l_{1}=W_{1}x$$
$$l_{i}=f(W_{i}l_{i-1}+b_{i}) ,i=2,...,N-1$$
$$y=f(W_{N}l_{N-1}+b_{N})$$

用 tanh 作为隐层和输入层的激活函数:

$$f(x)=\frac{1-e^{-2x}}{1+e^{-2x}}$$
最终输入一个 128 维的低纬语义向量。

2.1.3 匹配层

Query 和 Doc 的语义相似性能够用这两个语义向量(128 维) 的 cosine 间隔来示意:

$$R(Q,D)=cosine(y_{Q},y_{D})=\frac{y_{Q}^Ty_{D}}{||y_{Q}|| ||y_{D}||}$$

通过softmax 函数能够把Query 与正样本 Doc 的语义相似性转化为一个后验概率:

$$P(D^{+}|Q)=\frac{exp(\gamma R(Q,D^{+}))}{\sum_{D^{'}\in D}exp(\gamma R(Q,D^{'}))}$$

其中 r 为 softmax 的平滑因子,D 为 Query 下的正样本,D-为 Query 下的负样本(采取随机负采样),D 为 Query 下的整个样本空间。

在训练阶段,通过极大似然预计,咱们最小化损失函数:

$$L(\Lambda)=-log \prod_{(Q,D^{+})}P(D^{+}|Q)$$

残差会在表示层的 DNN 中反向流传,最终通过随机梯度降落(SGD)使模型收敛,失去各网络层的参数$\{W_{i},b_{i}\}$。

负样本呈现在计算softmax中,loss反向流传只用正样本。

2.1.4优缺点

  • 长处:DSSM 用字向量作为输出既能够缩小切词的依赖,又能够进步模型的泛化能力,因为每个汉字所能表白的语义是能够复用的。另一方面,传统的输出层是用 Embedding 的形式(如 Word2Vec 的词向量)或者主题模型的形式(如 LDA 的主题向量)来间接做词的映射,再把各个词的向量累加或者拼接起来,因为 Word2Vec 和 LDA 都是无监督的训练,这样会给整个模型引入误差,DSSM 采纳对立的有监督训练,不须要在两头过程做无监督模型的映射,因而精准度会比拟高。
  • 毛病:上文提到 DSSM 采纳词袋模型(BOW),因而丢失了语序信息和上下文信息。另一方面,DSSM 采纳弱监督、端到端的模型,预测后果不可控。

更多优质内容请关注公重号:汀丶人工智能

  • 参考文献

[1]. Huang P S, He X, Gao J, et al. Learning deep structured semantic models for web search using clickthrough data[C]// ACM International Conference on Conference on Information & Knowledge Management. ACM, 2013:2333-2338.