一、简介
基于深度学习的算法研究是近些年的研究热点,不同领域的研究人员将深度学习应用到不同领域的实际应用中,如图像识别、自然语言处理、推荐系统等,都取得了显著的成果。本文主要介绍常用的深度学习算法,并尝试分析它们之间异同。
二、算法介绍
2.1 神经网络
Neural Networks,简称NN。针对机器学习算法需要领域专家进行特征工程,模型泛化性能差的问题,提出了NN可以从数据的原始特征学习特征表示,无需进行复杂的特征处理。其原理可以使用线性回归理解:
y = W x + b y=Wx+b y=Wx+b,
神经网络中的每一层都是在维护一个参数矩阵W和偏置向量b。模型首先通过样本每一层的前向过程得到预测值,然后计算预测值与真实值之间的误差,最后将误差进行反向传播来更新每一层的W和b, 使之更为更拟合数据集的样本分布。NN相对于机器学习算法的优势在于:可以通过多个层叠加来学习更复杂的特征关系,如异或。
2.2 卷积神经网络
Convolutional Neural Networks, 简称CNN。针对NN存在的密集连接和网络参数过多的问题,提出了CNN进行优化。CNN首先将参数矩阵按照不同的作用分为几个类别:卷积层Convolutional Layer (CONV),池化层Pooling Layer (POOL), 全连接层Fully Connected Layer (FC),来引入参数共享机制Parameter Sharing和连接稀疏性Sparsity of Connections的特性。概念解释:
CONV:用于提取样本中的局部特征
POOL:用于将CONV的结果进行再提取,只提取一定区域的主要特征,以减少参数数量,防止模型过拟合。同时扩大感受野,减少冗余:因为在CONV滑动的时候有大量的重叠区域,导致卷积值存在冗余。
Filter:一般由CONV和POOL组成,从将样本输入特征到变为局部输出。
FC:用于将多个CONV提取到的局部特征及进行拼接,得到一个全局特征用于分类。
Parameter Sharing:对于每个Filter对不同的区域进行卷积时,都用了同一个参数矩阵,因此可以认为这个参数矩阵在全局特征间共享。它使得网络的参数数目大大减少,因而可以使用较少的参数训练出更好的模型,同时还能避免过拟合。
平移不变性:由于Filter的参数共享,我们从全局提取了相似的局部特征,如边界就会在图片的上下左右出现多次,就认为通过Filter的提取,我们将相似的特征平移到一起,照样能识别出特征。
Sparsity of Connections:每个Filter的输出只跟输入样本的一部分特征相关,而相比于NN都是全连接导致的输出的每个单元都受到输入样本每个特征影响,这使得识别效果下降。通过Fitler,我们让每个区域都由专属的Filter得到专属的特征,而规避了其他区域的影响。
使用式子进行理解:
单个卷积核得到的局部特征: c i = W i x + b i c_i=W_ix+b_i ci=Wix+bi,
全局特征通过将多个卷积核的局部特征拼接起来: c = [ c 1 , c 2 , . . . , c n ] c=[c_1, c_2, ..., c_n] c=[c1,c2,...,cn]。
2.3 循环神经网络
Recurrent Neural Networks,简称RNN。针对NN没有考虑时序信息的问题,即NN对每个样本都是单独处理而没有考虑前后两个样本之间的关系,在具有时序信息的数据中无法捕获到时序信息。在NLP任务中,前后两个输入是有顺序关系的,比如理解一句话的意思时,我们并非将每个词孤立的理解,而是充分考虑每个词之间的关系来理解。处理视频数据的时候,也不会单独处理某一帧,而是分析这些帧连接起来的整个序列。
而RNN通过将上一个训练步的隐藏状态加入到本次的隐藏状态更新中来捕获时序信息,使用公式理解:
RNN在t时刻(训练步)接收到输入x后的输出为:
o t = f ( V ⋅ s t ) o_t=f(V·s_t) ot=f(