深度学习进阶篇:从五大常用模型说起

李涛
12578     
摘要:从理论到模型,你需要的深度学习资源都在这里!
开发只是窥探深度学习的一个视角,对于更广大的受众而言,站在深度学习的全局视野上,会有更多惊喜的发现。今天,我们就跟着李涛博士一起来聊聊深度学习的全面知识入门和深度学习几大常用模型的深度介绍。


深度学习基础


一、高等数学基础
在整个机器学习过程中涉及大量矩阵运算和微积分导数的概念,因此建议初学者至少要有较为扎实的数学基础,对矩阵和微积分的概念了解比较清楚。同时具备大数定理、贝叶斯统计等概率论和数理统计方面的知识。否则,在一些公式推导过程中会遇到较大障碍,而不断反复回来复习数学知识。

二、神经网络
经典神经网络是深度学习的基础,神经元是神经网络的原子结构,要理解双曲函数、校正线性单元和径向基函数、小波函数等神经元转换函数的作用。我们要理解多层前馈神经网络的工作原理,BP反向传播算法如何训练神经网络。进一步能够将径向基函数、小波函数或其他模型与神经网络结合起来进行应用。

三、数据预处理
数据是深度学习训练的基石,为了更好地应用深度学习的模型,数据往往需要结构化和预处理。数据预处理中,基础的是数据归一化。虽然这里有一系列可行的方法,但是这一步通常是根据数据的具体情况而明确选择的。特征归一化常用的方法包含如下几种:
1、简单缩放
2、逐样本均值消减
3、特征标准化(使数据集中所有特征都具有零均值和单位方差)

在做完简单的归一化后,PCA/ZCA白化通常会被用来作为接下来的预处理步骤,它会使深度学习的算法工作得更好。实际上许多深度学习算法都依赖于白化来获得好的特征。对于含有较多噪音的数据,需要进行降噪处理,如金融时序数据通常会使用小波转换,过滤超短期波动的数据。当然,有时为增强神经网络的鲁棒性,也会在数据中刻意增加一些噪音进行神经网络的训练。


深度学习模型


一、数据特征的表达
我们认识事物的抽象概念是分层的特征表达的过程,比如像素—〉线段—〉轮廓—〉部件—〉物体的逐层特征表达。深度神经网络的分层结构恰好符合事物特征分层抽象的特点。逐层学习的过程,也就是特征逐层抽象的过程。对于特征表达的基础模型是多层自编码器,我们要理解逐层贪婪训练的无监督学习的过程中,自动编码/解码器的工作原理,知晓为了增加模型的泛化能力引入稀疏性的自编码器,进一步学习和掌握受限波尔兹曼机建立海量数据统计特征、以及主要针对矩阵数据的卷积、池化等特征提取方法。

二、深度学习的常用模型
深度学习模型的基础是深度神经网络DNN,无监督学习的前馈训练方法和有监督学习的反向微调构成了深度学习模型训练的主要方法。针对不同的应用问题,多层自编码器、深度置信网络、卷积神经网络、循环神经网络、以及长短期记忆神经网络的结构和工作方式要逐步了解。尤其是针对图像、语音数据处理的卷积神经网络,针对自然语言处理、机器翻译和时序数据的循环神经网络及长短期记忆神经网络需要重点掌握。

多层自编码器

假设DNN每一层其输出与输入是相同的,然后训练调整其参数,得到每一层中的权重。自然地,就得到了输入的几种不同表示(特征)。自动编码器就是一种尽可能复现输入信号的多层神经网络。逐层贪婪训练的方法就是针对多层自编码器的优化理论,我们要理解逐层贪婪训练是为什么解决BP算法的梯度弥散和局部最优的。


深度置信网络

DBNs由多个限制玻尔兹曼机层组成是一个概率生成模型,生成模型是建立一个观察数据和标签之间的联合分布,对P(观测|标签)和 P(标签|观测)都做了评估。一个DBN的连接是通过自顶向下的生成权值来指导确定的,这也是逐层贪婪训练的方法。


卷积神经网络

CNN起先是针对图像数据进行建模的深度学习模型,通过权值局部共享来使得大型链接的网络计算可行。CNN包含特征提取层和特征映射层,特征提取的主要是通过卷积和池化,卷积可以看作是不同的滤波器,而池化的目的是解决平移、扭转等图像特征不变性。特征映射一般采用全连接处理和softmax分类。CNN的特殊结构使得其在图像和语言识别应用中有着独特的优越性。


循环神经网络

RNN也被称为递归神经网络,RNN主要处理序列时间关联的数据。RNN可以看成是DNN的一种变型,在DNN中的隐含层的输出在下一个时间戳上会作用到本层神经元上,即循环递归的概念。RNN可以很好地处理历史序列数据的应用模式,如自然语言处理中。


长短期记忆模型

LSTM是RNN的改进,通过隐含层上增加输入、输出和遗忘门,改变了历史数据对当前隐含层的影响方式。使得RNN中较远历史数据梯度弥散的问题得以解决。LSTM是现在语言翻译的重要应用模型。对于sequence to sequence应用场景,LSTM有着先天优势。


事实上,不论是那种模型,他们在实际应用中也常常都混合着使用,比如CNN和RNN在顶层输出之前往往会接上全连接层。不难想象随着深度学习研究的深入,针对解决特定问题,更灵活的组合方式、更多的网络结构将被研发出来。


深度学习模型学习训练优化理论


深度学习模型的最终训练过程是对各层神经网络参数进行调优,这里主要运用的是梯度下降算法,运用梯度下降算法进行优化时,在梯度项前会乘以一个系数,这个系数就叫学习速率,我们要理解学习速率对网络训练的结果收敛程度的影响。通常在训练时可以采用变学习速率的方式,即在训练的初期采用较大的学习速率,随着训练的迭代,模型的精度提高则逐渐减少学习速率,AdaDelta、自适应梯度等方法就是关于学习速率变换的迭代调整。关于梯度下降,这方面有Momentum、NAG、AdaGrad等各种优化模型,实践中经常采用Mini-Batch的随机梯度下降方法,用样本中随机采样的小批量进行参数的训练。

人工智能应用于预测和分类中最棘手的问题就是对于历史数据的“过拟合”。“过拟合”的表现是模型在训练集上表现得非常好,但在不同于训练集的测试数据上则表现较差。解决模型训练的过拟合,首先就是early stopping,即在每一个epoch结束时计算测试集的模型精度,当精度不再提高时,就停止训练。次是数据的扩充,避免过拟合最根本的还是训练的数据是海量的为好,数据能够覆盖各种各样的场景。并通过随机洗牌来减少数据之间的自相关性。再者是模型连接和惩罚项参数的调整,如正则化和Drop Out/Drop Connect,这两者其实本质上是简化深度神经网络模型的复杂程度,为使得模型具备一定的稀疏性。 

在企业数据应用的场景下, 人们最常用的可能就是监督式学习和非监督式学习的模型。 在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据,目前将二者结合起来的半监督式学习是主要的训练方式。而增强学习更多的应用在机器人控制及其他需要进行系统控制的领域。

  • 监督式学习:从标记好的训练数据中进行模型的训练,常用来做分类和回归。
  • 无监督式学习:根据数据的特征直接对数据的结构和数值进行归纳,常用来做聚类和关联规则。
  • 半监督式学习:根据部分标记的和部分没有标记的训练数据进行模型的学习,常用来做回归和分类。
  • 增强式学习:其通过不断的试错、反馈进行学习,常用来做序列决策或者控制问题。 

此外,迁移学习的训练方法也是现在研究的重点,其目标是将从一个环境中学到的知识用来帮助新环境中的学习任务。就是当前只有少量新的标记的数据,但是有大量旧的已标记的数据(甚至是其他类别的有效数据),这时通过挑选这些旧数据中的有效的数据,加入到当前的训练数据中,训练新的模型。



深度学习优质理论参考


  • 关于机器学习和深度学习模型理论方面(点击链接直达),大家可以参考如下:

1、Andrew NG的Coursera的机器学习入门 (https://www.coursera.org/learn/machine-learning)

这个教程非常适合初学者,没有很高深的数学推导,Andrew也是业内大牛但非常谦逊,讲解非常浅显易懂。

2、周志平的机器学习(https://book.douban.com/subject/26708119/)

号称最好的中文机器学习入门,这里有对这本书的详细评价(https://www.zhihu.com/question/39945249)。

3、几本经典著作:An Introduction to Statistical Learning,Pattern Recognition and Machine Learning,The Elements of Statistical Learning



  • 关于深度学习方面,大家可以参考如下:


1、Neural Networks and Deep Learning:Michael Nielsen用非常浅显易懂的方式介绍了神经网络和深度学习,并且提供了一个手写数字识别的例子,非常适合入门。

2、UFLDL Tutorial I UFLDL Tutorial II:Andrew NG主导的Deep Learning的学习资料,内容非常精炼,适合稍微有些基础的同学。

3、Deep Learning: 几位大神共同编写的关于深度学习的free book。


未经授权禁止转载,详情见转载须知

联系我们

恒 生 技 术 之 眼