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

简介: 今天,我们带来深度学习基础知识和深度学习的14种推荐算法介绍,两篇文章结合起来就是对业界主流推荐算法的一些总结,希望能增加大家对主流推荐算法底层实现的了解。

image.png

小叽导读:昨天的文章《10种传统机器学习算法,阿里工程师帮你总结了》我们介绍了传统机器学习算法,今天,我们带来深度学习基础知识和深度学习的14种推荐算法介绍,两篇文章结合起来就是对业界主流推荐算法的一些总结,希望能增加大家对主流推荐算法底层实现的了解。


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

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

1.1MLP网络

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

image.png

各个层级关系:image.png

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

sigmod函数:
image.png

tanh函数:

image.png

ReLU函数:

image.png

1.2RNN网络

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

image.png

展开如下:

image.png

各层关系:image.png

1.3CNN网络

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

image.png

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

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

image.png

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

image.png

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

image.png

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

1.4AE网络

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

image.png

1.5RBM网络

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

image.png

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

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

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

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

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

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

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

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

(1)交叉熵损失函数:

image.png

(2)均方差损失函数:

image.png

1.8梯度下降法

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

image.png

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

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

2.1 FM模型

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

image.png

网络结构:

image.png

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

2.2 FNN模型

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

image.png

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

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

2.3 PNN模型

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

image.png

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。网络结构如下:

image.png

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

image.png

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

2.5 deepFM模型

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

image.png

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

image.png

2.6 NFM模型

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

image.png

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

image.png

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

image.png

2.7 AFM模型

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

image.png

改进后的Bi层公式如下:

image.png

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

image.png

2.8 DSSM模型

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

image.png

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

image.png

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

image.png

损失函数定义为:

image.png

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

2.9 MV-DNN模型

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

image.png

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

image.png

2.10 DCN模型

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

image.png

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

Deep网络是一个MLP网络。

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

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

2.11 NCF模型

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

image.png

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:数据准备,设原始的训练样本为image.png

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

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

image.png

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

image.png

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

2.12.2 GBDT与LR融合的算法

image.png

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

2.12.3 扩展

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

image.png

2.13 seq2seq模型

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

2.13.1 LSTM模型

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

image.png

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

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

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

(2)LSTM内部逻辑

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

image.png

第5次计算:

image.png

第6次计算:

image.png

第7次计算:

image.png

第8次计算:

image.png

第9次计算:

image.png

(3)LSTM的使用

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

image.png

2.13.2 seq2seq

模型结构图如下:

image.png

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

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

image.png

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

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

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

2.14 DNN在youtube应用

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

image.png

其中视频的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

目录
相关文章
|
机器学习/深度学习 自然语言处理 算法
深度学习基础知识:介绍深度学习的发展历程、基本概念和主要应用
深度学习基础知识:介绍深度学习的发展历程、基本概念和主要应用
4655 0
|
6月前
|
机器学习/深度学习 运维 算法
深度学习基础知识扫盲(3)
信息增益(Information Gain) P96 熵的减少/减少杂质/增大纯度称为信息增益。 在构建决策树中,如何选择特征先后?如何停止构建树?
146 1
|
6月前
|
机器学习/深度学习 算法
深度学习基础知识扫盲(2)
Training Set/ Validation Set/ Test Set 训练集:用来训练w,b的参数。生成w,b。 交叉验证集、开发集、验证集:用来选择具体的模型。生成d。 测试集:要有泛化评估能力,不能参与参数生成。
167 0
|
6月前
|
机器学习/深度学习 算法 搜索推荐
深度学习基础知识扫盲(1)
监督学习(Supervised learning) 计算机通过示例进行学习,它从过去的数据进行学习,并将学习结果应用到当前数据中,以预测未来事件,在这种情况下,输入和期望的输出数据都有助于预测未来事件。
178 0
|
机器学习/深度学习 人工智能 数据挖掘
【人工智能】45测试深度学习基础知识的数据科学家的问题(以及解决方案)(下)
【人工智能】45测试深度学习基础知识的数据科学家的问题(以及解决方案
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能】45测试深度学习基础知识的数据科学家的问题(以及解决方案)(上)
【人工智能】45测试深度学习基础知识的数据科学家的问题(以及解决方案)
|
机器学习/深度学习 Python
使用Anaconda运行深度学习基础知识
使用Anaconda运行深度学习基础知识
133 0
使用Anaconda运行深度学习基础知识
|
机器学习/深度学习 人工智能 自然语言处理
DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略
深度学习(Deep Learning, DL)或阶层学习(hierarchical learning)是机器学习的技术和研究领域之一,通过建立具有阶层结构的人工神经网络(Artifitial Neural Networks, ANNs),在计算系统中实现人工智能 。由于阶层ANN能够对输入信息进行逐层提取和筛选,因此深度学习具有表征学习(representation learning)能力 ,可以实现端到端的监督学习和非监督学习 。此外,深度学习也可参与构建强化学习(reinforcement learning)系统,形成深度强化学习 。
DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略
|
机器学习/深度学习 算法 程序员
DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略
DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略
DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略
|
机器学习/深度学习 人工智能 自然语言处理
DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略
DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略
DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略