传统机器学习解决问题的一般思路为:
数据获取 预处理 特征提取(表达) 特征选择
其中的 特征提取(表达) 部分对最终的算法准确性起着非常关键性的作用,而系统主要的计算和测试工作都消耗在这一部分。但实际中这一部分一般都是人工完成的,即人工提取特征。
手工提取特征费力且需要经验、专业知识和运气,难以得到好的特征,因此思考让计算机自动学习特征,即 深度学习。
人脑视觉机理
近几十年以来,认知神经科学、生物学等学科的发展促进了人工智能的发展。而关于人的视觉信息系统:
(1)人的视觉系统信息处理是分级的;
(2)高层特征是低层特征的组合,而抽象层面越高,存在的可能猜测就越少,就越利于分类。
这个生理学的发现,促成了计算机人工智能的突破性发展。
特征表达
而深度学习,则是让机器自动学习良好特征的过程,参考人的视觉分层处理系统,即深度学习需要更多层来获得更抽象的特征表达。
深度学习的基本思想
假设有一个系统 ,有 n 层 ,输入为 ,输出为 ,则可表示为:
,
若输出 等于输入 ,即输入
深度学习需要自动地学习特征,有一堆输入 (如一堆图像或者文本),假设我们设计了一个系统 (有n层),通过调整系统中参数,使它的输出等于输入 ,那么我们就可以自动地获取得到输入I的一系列层次特征,即 。输出 严格等于输入 ,这个限制太严格,可略微放松,只要使得输入与输出的差别尽可能小即可。
深度学习的思想就是堆叠多个层,也就是说这一层的输出作为下一层的输入。通过这种方式,就可以实现对输入信息的分级(hierarchical)表达。
深度学习
传统的多数分类、回归等学习方法为浅层结构算法,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约。深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式表示,并展现了强大的从大样本中集中学习数据集本质特征的能力。而使用多层网络的好处是可以通过多层叠加表示复杂函数。
深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。即利用“深度模型”这一手段来实现“特征学习”的目的。
深度学习与传统浅层学习的不同
(1)深度学习强调模型结构的深度,通常至少有5层、6层,甚至10多层的隐层节点;
(2)深度学习明确突出特征学习的重要性,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,使分类或预测更加容易。与人工规则构造特征的方法相比,利用大数据学习特征,更能够刻画数据的丰富内在信息。
但相较于传统方法,其也存在着劣势:
(1)比较容易过拟合,参数比较难调整,而且需要不少窍门;
(2)训练速度比较慢,在层次比较少(小于等于3)的情况下效果并不比其它方法更优。
深度学习与 神经网络的异同点比较:
相同点:深度学习采用了神经网络相似的分层结构,系统由包括输入层、隐层(多层)、输出层组成的多层网络,只有相邻层节点之间有连接,同一层以及跨层节点之间相互无连接,每一层可以看作是一个逻辑回归模型;这种分层结构,比较接近人类大脑的结构。
不同点:传统神经网络中,采用的是反向传播(BP)算法进行训练。即采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前计算的输出值和实际的标记值之间的差去改变前面各层的参数,直到收敛(整体是一个梯度下降法)。但深度学习整体上是一个layer-wise的训练机制。避免层数多时残差出现所谓的gradient diffusion(梯度扩散)。
BP算法作为传统训练多层网络的典型算法,实际上对仅含几层网络,该训练方法就已经很不理想。其对深度网络的训练存在一些问题:(1)梯度越来越稀疏:从顶层越往下,误差校正信号越来越小;(2)收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生);(3)只能用有标签的数据来训练:但大部分数据是没标签的,而大脑可以从没有标签的数据中学习。
对于深层模型的训练,通常采用BP算法来更新网络参数。但是需要对网络参数进行很小心的初始化,以免网络陷入局部最小点。
深度学习的具体模型及方法
1.自动编码器( AutoEncoder )
2.稀疏自动编码器( Sparse AutoEncoder )
3.降噪自动编码器( Denoising AutoEncoders )
4.受限波尔兹曼机( RBM,Restricted Boltzmann Machine )
5.深度信念网络( Deep Belief Networks )
6.卷积神经网络( Convolutional Neural Networks )
7.生成对抗网络( GAN )