Py学习  »  机器学习算法

深度学习基础知识汇总,你想了解的都在这

天池大数据科研平台 • 4 年前 • 388 次点击  

小天导读:上周的文章《10种传统机器学习算法》我们介绍了传统机器学习算法,今天,我们带来深度学习基础知识和深度学习的14种推荐算法介绍,两篇文章结合起来就是对业界主流推荐算法的一些总结,希望能增加大家对主流推荐算法底层实现的了解。也欢迎评论区补充。


1.深度学习基础知识介绍


本章会介绍各自常用的网络结构,以及模型训练过程中常用的方法。


1.1MLP网络


MLP网络是一种应用最为广泛的一种网络,其中DNN就是属于MLP网络,它是一个前向结构的人工神经网络,输入一组向量向前传播输出向量,网络结构如下:



各个层级关系:


其中σ表示激活函数,集中常见的激活函数有:sigmod函数,tanh函数,ReLU函数。


sigmod函数:

tanh函数:

ReLU函数:

 

1.2RNN网络


RNN是一种节点定向连接成环的人工神经网络,与DNN网络相比,RNN可以利用上一个时序的输出及当前输入计算输出,网络结构如下:



展开如下:

    


各层关系:

 

1.3CNN网络


卷积神经网络,是一种前馈神经网络,通过卷积操作可以对一个连续区域进行识别,在图像处理取得不错效果。卷积神经网络的结构有原始图像输入层、卷积层、池化层、全连接层、输出层。网络结构如下:



各个层之间的连接关系如下:


输入层X与卷积层C的关系:


卷积层C与采样层S的关系:


采样层S与输出层Y的关系:


其中K={km,n}表示一个卷积核。

 

1.4AE网络


AE自编码器,属于无监督网络。自编码器的目的是输入X与输出X’尽可能接近,网络结构为两层的MLP,这种接近程度通过重构误差表示,误差的函数有均方差和交叉熵,为了保证网络的稀疏性误差函数加L1正则项,为了保证网络的鲁棒性输入增加随机噪声数据。网络结构如下:



1.5RBM网络


Restricted Boltzmann Machine受限波尔兹曼机 )RBM是无监督的网络。具有两层结构、对称连接且无自反馈的随机神经网络模型,层间全连接,层内无连接。RBM是一种有效的特征提取方法,用于初始化前馈神经网络可明显提高泛化能力,堆叠多个RBM组成的深度信念网络(DBN)能提取更抽象的特征。网络结构如下:



RBM网络参数的训练原理较为复杂,简单来讲就是求网络的能量函数最小时对应的参数。

 

1.6深度学习与传统模型融合


深度学习与传统模型融合,例如:利用wide&deep就是MLP结合LR的模型,根据模型的训练方式融合模型可以分为松耦合模型和紧耦合模型。


松耦合模型:模型的不同部分是独自训练,例如FNN模型就是预先训练好embedding层参数,然后在训练MLP参数。


紧耦合模型:模型的不同部分是一起训练的,这类模型也可以称为end-to-end模型,例如wide&deep就是LR模型的参数和MLP的参数是一起训练的。


两种方式各有利弊,松耦合模型的优势是可以灵活组装,紧耦合模型的优势是通过联合在一起训练得到整体效果最优的参数。

 

1.7深度学习常见的损失函数


常用的损失损失函数有两种:交叉熵损失函数、均方差损失函数


(1)交叉熵损失函数:



(2)均方差损失函数:



1.8梯度下降法


在机器学习的许多算法的模型求解过程中,都是通过构造损失函数,然后求解损失函数最小时对应的参数作为模型的解。梯度函数的求解过程如下:


第1步:把模型所有参数统一记到一个集合,不妨记为,随机给定一组在0-1之间,设为,初始化迭代步数 k=0。


第2步:迭代计算其中用于控制收敛速度,取0.01。


第3步,判断是否收敛,如果满足下列两个条件之一则返回,两个条件分别为:


  • 条件1:,其中iteNums是最大迭代次数。

  • 条件2:,其中是参数的数量,是一个很小的值,可以取

 

2.深度学习推荐算法的介绍


在本章中,我们挑选了一些业界有影响力会议、期刊的深度学习推荐算法进行介绍。


2.1 FM模型


论文见参考资料:FM。FM模型是由Steffen Rendle于2010年提出的一种方法,模型的公式如下:


网络结构:


FM模型是在LR模型的基础上,增加不同特征之间的交叉项,交叉项的向量可以理解为对特征的embedding,简单来讲就是把特征映射到一个多维空间,所有特征的关系可以表示为多维空间中不同向量的关系。

 

2.2 FNN模型


论文见参考资料FNN。网络结构如下:



FNN模型是FM+MLP的一种模型。Dense Real Layer层,可以理解为embedding层,每个节点代表FM模型的一个参数,然后后面接一个MLP网络。


在训练FNN模型的时候,预先训练Dense Real Layer层,训练的方法和FM模型的训练方法一致。后面在训练MLP参数。由于FNN模型FM和MLP是分开训练的,因此该模型是松耦合模型。

 

2.3 PNN模型


论文见参考资料PNN。网络结构如下:



PNN模型是在FNN模型的基础上,在FM层与MLP层中间加上一层Product Layer层,该层的作用是增加不同field的embedding向量交叉(主要的目的是考虑不同特征组合)。


Product Layer层中,z部分类似FNN模型的Dense Real Layer层,p部分是不同field的embedding向量两两交叉值。

 

2.4 wide&deep模型


论文见附件Wide&deep.pdf。网络结构如下:



Wide&deep模型是MLP + LR的一种模型,LR部分是各种ID类特征的交叉。MLP部分是首先对用户和物品进行embedding,然后接一个MLP模型。模型如下:



由于在训练模型的时候LR部分的参数和MLP部分的参数是一起训练的,因此该模型是紧耦合的模型。

 

2.5 deepFM模型


论文见参考资料deepFM。网络结构如下:



DeepFM模型与wide&deep相比,是将LR部分改为FM,与LR相比,FM的优点在于自动做特征交叉,减少人工特征工程的工作量。模型计算公式:



2.6 NFM模型


NFM模型也是一种融合模型,它是由LR + FM + MLP的模型,融合模型分为两部分,一部分是线性模型部分,另一部分是深度学习网络部分,模型公式如下:


深度学习f(x)的结构如下:

 


其中embedding层:是需要学习的模型参数,Bi层是两两embedding向量交叉,然后求和,公式如下,Bi层后面就是MLP网络。



2.7 AFM模型


论文见参考资料AFM。AFM是在NFM上,引入attention机制,简单来说就是把NFM的Bi层直接求和改进为加权求和,网络结构如下:



改进后的Bi层公式如下:



其中ai,j是需要训练的attention权重,ai,j的节点是embedding层接一个ReLU层,然后在做归一化,表达式如下:



2.8 DSSM模型


论文见参考资料MV-DNN。DSSM模型是MLP + cosine的一个融合算法,该模型主要是运用在搜索场景里面的请求(query)与点击物品(document),首先模型将请求/物品分别运用MLP网络进行特征学习,然后运用余弦值衡量请求对物品的相关性,网络结构如下:



损失函数的定义过程如下,首先定义请求与物品的相关性:


   

然后对请求与不同物品相关性进行标准化处理:



损失函数定义为:



其中损失函数只取用户对物品有点击过的样本(只取正样本),该损失函数对一个Q(请求)训练一次(不同query的MLP网络参数不一样)。

 

2.9 MV-DNN模型


论文见参考资料MV-DNN。MV-DNN是在DSSM上面进行改进,DSSM中所有物品都用同一个MLP网络结构及参数,而MV-DNN则是一个物品一个网络,由于一个物品一个MLP网络该模型取名为“多视角的DNN模型”,网络结构如下:



损失函数的定义与DSSM类似:


 

2.10 DCN模型


论文见参考资料DCN。该模型首先会有一个embedding层,然后并行接入Deep网络和一个CROSS网络,最后合并两个网络的输出接一个sigmoid层作为最终输出,结构如下:



网络结构embedding层主要做的工作就是把稀疏且维度高(一般是特征的one-hot编码)的输入转化为稠密且维度低的向量(低维实数向量),转化通过一个embedding矩阵参数完成,如:


Deep网络是一个MLP网络。


CROSS网络有点类似MLP网络,在MLP网络的基础上,每个层都会与输入的embedding层做交叉,公式如下:


模型的训练:embedding层参数和cross网络参数及deep网络参数,及sigmoid层参数都是一起训练的。

 

2.11 NCF模型


论文见附件NCF.pdf。NCF模型简单来讲就是embedding + MLP网络。模型首先会把用户输入和物品输入分开,并且分别接一层embedding,然后合并两个embedding层作为MLP网络的输入。


 

2.12 GBDT+LR模型


论文见GBDT+LR.pdf。GBDT+LR算法最早是由Facebook在2014年提出的一个推荐算法,该算法分两部分构成,第一部分是GBDT,另一部分是LR.下面先介绍GBDT算法,然后介绍如何将GBDT和LR算法融合


2.12.1 GBDT算法


GBDT是Boost的一种典型算法,Boost的原理:首先对样本集进行训练得到第一个模型,然后对模型分类错误的样本进行提权得到新的样本集,在新的样本集上进行训练得到第二个模型,如此类推得到n个预测模型。预测的时候通过每个模型的预测值进行加权,模型的权重可以用模型的准确率衡量


GBDT算法首先对训练样本建立一颗决策树,然后每个样本的目标变量调整为第一颗决策树预测值与实际值的残差,得到一个新的训练样本,在新的训练样本下建立第二课决策树,依次类推得到m颗决策树。详细构造如下:


Step1:数据准备,设原始的训练样本为


Step2:生成第1颗决策树,运用CART算法,对原始样本生成1颗决策树,第1颗决策树定义为,表示第1颗决策树对样本的预测值。


Step3:生成第2颗决策树,构造第2颗决策树的训练样本数据,对每个样本的目标变量用残差表示,具体如下,同样运用CART算法生成第2课决策树,第2颗决策树定义为DT2,DT2(Xi)表示第2颗决策树对样本Xi的预测值



Step4:生成第m颗决策树,构造第m颗决策树的训练样本数据如下:



运用CART算法生成第m课决策树,第m颗决策树定义为DTm,DTm(Xi)表示第m颗决策树对样本Xi的预测值,预测的时候,将每一颗决策树的预测结果加起来就是GBDT模型的预测值。

 

2.12.2 GBDT与LR融合的算法


Facebook提出来的论文当中,把样本在GBDT模型中决策树的叶子节点作为样本的特征,输入到LR模型里面。简单理解就是让GBDT模型来做特征工程。

 

2.12.3 扩展


沿着上述算法的思路,我们可以将one-hot离散化特征,以及BP模型融合到与GBDT并行的一层,在外面在接一层LR算法。这里面并行的模块有GBDT、one-hot离散化特征、BP,可以理解为3种不同方法的特征工程,结构图如下:


 

2.13 seq2seq模型


论文见参考资料seq2seq。seq2seq模型是由谷歌在2014年提出的一种模型,它由一系列的LSTM构成的模型,而LSTM是RNN的一种变种,RNN前面我们已经介绍了,下面我们先介绍LSTM,在介绍seq2seq模型。

 

2.13.1 LSTM模型


(1)LSTM模型网络结构:LSTM是RNN的一种改进网络,单层LSTM网络结构如下:


设用Xt表示LSTM输入向量,ht表示LSTM的输出值,Ct表示LSTM的状态向量。LSTM模型可以看作是由两个主要两个函数构成的网络,第一个是用于计算记忆向量Ct的函数,另一个是用于计算输出向量ht的函数。


用于计算状态向量Ct的函数定义为,它依赖的向量有3个,分别为前一个输入得到的状态向量Ct-1及输出向量ht-1,和当前输入向量Xt。那么,


用于计算输出向量ht的函数定义为,它同样依赖Ct-1、ht-1、Xt。那么,


(2)LSTM内部逻辑


如上图,我们队LSTM内部的计算做了红色标记,总共有9次计算,每次计算的公式如下:


第1次计算其中σ是sigmod函数   , Wf和bf是模型参数,ft是0到1之间的实数。


第2次计算:其中Ct-1是上一个输入的状态向量。


第3次计算:其中Wi和bi是模型参数,it是0到1之间的实数。


第4次计算:其WC和bC是模型参数,tanh是双曲正切函数,表达式为  


第5次计算:


第6次计算:


第7次计算:


第8次计算:


第9次计算:

 

(3)LSTM的使用


LSTM模型使用,首先把所有事件按照顺序排列成一个序列,逐个输入到LSTM模型,通过状态向量Ct-1使模型记忆和理解上下文,例如:用户输入一串字符ABC,预测用户下一个输入,把A、B、C进行one-hot向量化,得到X1,X2,X3,依次带入计算(其中C0,h0为初始化向量):



 2.13.2  seq2seq


模型结构图如下:


上图中左边为输入ABC,后边为输出WXYZ,整个模型分为左右两个LSTM网络,左边为encoder的LSTM网络,右边为decoder的LSTM网络。在谷歌发表的论文中,他们采用的是4层的LSTM网络。


为了便于说明,我们以单层LSTM的seq2seq模型为例,模型展开如下:



其中Input每个输入的LSTM网络参数都是一样,同理output的每个输出的LSTM网络参数是一样的。ENCODER的输入是one-hot编码的词,DECODER输出的是one-hot编码的词。

 

2.13.4 如何将seq2seq运用到推荐算法


seq2seq模型的优点,序列化预测,一个输入序列输出一个序列。在推荐场景中可以将用户历史浏览的物品按照时间顺序排列形成输入序列,将用户在输入节点后的物品浏览记录按照时间顺序形成输出序列,然后运用seq2seq算法进行预测

 

 2.14  DNN在youtube应用


论文见参考资料DNN-YouTube。在该模型中,首先会用一个MLP网络对用户进行特征抽取得到向量u,然后与视频的向量相乘做归一化作为输出,网络结构如下:



其中视频的embedding该论文只是一笔带过(把稀疏实数向量映射到低维的稠密向量),实际上可以embedding的方法根据目标函数的不同及模型的不同分为很多种,例如:FM模型,W2V模型都可以用来做embedding的方法。


Deep网络把用户的历史观看视频记录、搜索记录、地理位置embedding后、及用户社会属性联合起来作为Deep模型的输入MLP模型的输入。


参考资料:

wide&deep: https://arxiv.org/pdf/1606.07792.pdf


seq2seq:

https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf


PNN: https://arxiv.org/pdf/1611.00144.pdf


NFM: https://www.comp.nus.edu.sg/~xiangnan/papers/sigir17-nfm.pdf


NCF: https://www.comp.nus.edu.sg/~xiangnan/papers/ncf.pdf


MV-DNN:

https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/frp1159-songA.pdf


GBDT+LR: http://quinonero.net/Publications/predicting-clicks-facebook.pdf


FNN: https://arxiv.org/pdf/1601.02376.pdf


FM: https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf


DNN-YouTube: https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf


deepFM: https://www.ijcai.org/proceedings/2017/0239.pdf


DCN:https://arxiv.org/pdf/1708.05123.pdf


AFM: https://arxiv.org/pdf/1708.04617.pdf




「 感恩一直陪伴天池的你 



简单几笔就能精准抠图,阿里妈妈智能抠图算法介绍


Apache Flink 零基础入门系列



天池大赛

如果你在学习过程中,有看到一些比较优质的文章或Paper,或者你平时自己学习笔记和原创文章,请投稿到天池,让更多的人看到。除了精美的丰富的神秘天池大礼以及粮票奖励,更有现金大礼在等着你。

分享成功后你也可以通过下方钉钉群👇主动联系我们的社区运营同学(钉钉号: modestt

天池宝贝们有任何问题,可在戳“留言”评论或加入钉钉群留言,小天会认真倾听每一个你的建议!





感恩一直陪伴天池的你

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50573
 
388 次点击