简述深度学习预训练和正则化

简介: 简述深度学习预训练和正则化


1  Deep Neural Network


总的来说,根据神经网络模型的层数、神经元个数、模型复杂度不同,大致可分为两类:Shallow Neural Networks和Deep Neural Networks。上节课介绍的神经网络模型层数较少,属于Shallow Neural Networks,而本节课将着重介绍Deep Neural Networks。首先,比较一下二者之间的优缺点有哪些:

image.png

值得一提的是,近些年来,deep learning越来越火,尤其在电脑视觉和语音识别等领域都有非常广泛的应用。原因在于一层一层的神经网络有助于提取图像或者语音的一些物理特征,即pattern feature extraction,从而帮助人们掌握这些问题的本质,建立准确的模型。


下面举个例子,来看一下深度学习是如何提取出问题潜在的特征从而建立准确的模型的。如下图所示,这是一个手写识别的问题,简单地识别数字1和数字5。

image.png

如何进行准确的手写识别呢?我们可以将写上数字的图片分解提取出一块一块不同部位的特征。例如左边三幅图每张图代表了数字1的某个部位的特征,三幅图片组合起来就是完整的数字1。右边四幅图也是一样,每张图代表了数字5的某个部位的特征,五幅图组合起来就是完整的数字5。对计算机来说,图片由许多像素点组成。要达到识别的目的,每层神经网络从原始像素中提取出更复杂的特征,再由这些特征对图片内容进行匹配和识别。层数越多,提取特征的个数和深度就越大,同时解决复杂问题的能量就越强,其中每一层都具有相应的物理意义。以上就是深度学习的作用和意义。


深度学习很强大,同时它也面临很多挑战和困难:


  • difficult structural decisions
  • high model complexity
  • hard optimization problem
  • huge computational complexity


面对以上深度学习的4个困难,有相应的技术和解决的办法:

image.png

其中,最关键的技术就是regularization和initialization。


深度学习中,权重的初始化选择很重要,好的初始值能够帮助避免出现局部最优解的出现。常用的方法就是pre-train,即先权重进行初始值的选择,选择之后再使用backprop算法训练模型,得到最佳的权重值。在接下来的部分,我们将重点研究pre-training的方法。

image.png


2    Autoencoder


我们已经介绍了深度学习的架构,那么从算法模型上来说,如何进行pre-training,得到较好的权重初始值呢?首先,我们来看看,权重是什么?神经网络模型中,权重代表了特征转换(feature transform)。从另一个方面也可以说,权重表示一种编码(encoding),就是把数据编码成另外一些数据来表示。因为神经网络是一层一层进行的,有先后顺序,所以就单一层来看,好的权重初始值应该是尽可能地包含了该层输入数据的所有特征,即类似于information-preserving encoding。也就是说,能够把第i层的输入数据的特征传输到第i+1层,再把第i+1层的输入数据的特征传输到第i+2层,一层一层进行下去。这样,每层的权重初始值起到了对该层输入数据的编码作用,能够最大限度地保持其特征。


举个例子,上一小节我们讲了简单的手写识别的例子。从原始的一张像素图片转换到分解的不同笔画特征,那么反过来,这几个笔画特征也可以组合成原来的数字。这种可逆的转换被称为information-preserving,即转换后的特征保留了原输入的特征,而且转换是可逆的。这正是pre-train希望做到的,通过encoding将输入转换为一些特征,而这些特征又可以复原原输入x,实现information-preserving。所以,pre-training得到的权重初始值就应该满足这样的information-preserving特性。

image.png

如何在pre-training中得到这样的权重初始值(即转换特征)呢?方法是建立一个简单的三层神经网络(一个输入层、一个隐藏层、一个输出层),如下图所示。

image.png

image.png

那么为什么要使用这样的结构来逼近identity function,有什么好处呢?首先对于监督式学习(supervised learning),这种d−d˘−d的NNet结构中含有隐藏层。隐藏层的输出实际上就是对原始数据合理的特征转换ϕ(x),例如手写识别中隐藏层分解的各个笔画,包含了有用的信息。这样就可以从数据中学习得到一些有用的具有代表性的信息。然后,对于非监督式学习(unsupervised learning),autoencoder也可以用来做density estimation。如果网络最终的输出g(x)x,则表示密度较大;如果g(x)x相差甚远,则表示密度较小。也就是说可以根据g(x)x的接近程度来估计测试数据是落在密度较大的地方还是密度较小的地方。这种方法同样适用于outlier detection,异常检测。这样就可以从数据中学习得到一些典型的具有代表性的信息,找出哪些是典型资料,哪些不是典型资料。所以说,通过autoencoder不断逼近identity function,对监督式学习和非监督式学习都具有深刻的物理意义和非常广泛的应用。

image.png

image.png

以上就是basic autoencoder的结构和一些限定条件。深度学习中,basic autoencoder的过程也就对应着pre-training的过程,使用这种方法,对无label的原始数据进行编码和解码,得到的编码权重就可以作为pre-trained的比较不错的初始化权重,也就是作为深度学习中层与层之间的初始化权重。

image.png

image.png

当然,除了basic autoencoder之外还有许多其它表现不错的pre-training方法。这些方法大都采用不同的结构和正则化技巧来得到不同的’fancier’ autoencoders,这里不再赘述。


3    Denoising Autoencoder


上一部分,我们使用autoencoder解决了deep learning中pre-training的问题。接下来,我们将讨论deep learning中有什么样的regularization方式来控制模型的复杂度。

image.png

由于深度学习网络中神经元和权重的个数非常多,相应的模型复杂度就会很大,因此,regularization非常必要。之前我门也介绍过一些regularization的方法,包括:


  • structural decisions/constraints
  • weight decay or weight elimination regularizers
  • early stopping


image.png

下面我们将介绍另外一种regularization的方式,它在deep learning和autoencoder中都有很好的效果。


首先我们来复习一下之前介绍的overfitting产生的原因有哪些。如下图所示,我们知道overfitting与样本数量、噪声大小都有关系,数据量减少或者noise增大都会造成overfitting。如果数据量是固定的,那么noise的影响就非常大,此时,实现regularization的一个方法就是消除noise的影响。

image.png

这种做法的idea来自于如何建立一个健壮(robust)的autoencoder。在autoencoder中,编码解码后的输出g(x)会非常接近真实样本值x。此时,如果对原始输入加入一些noise,对于健壮的autoencoder,编码解码后的输出g(x)同样会与真实样本值x很接近。举个例子,手写识别中,通常情况下,写的很规范的数字1经过autoencoder后能够复原为数字1。如果原始图片数字1歪斜或加入噪声,经过autoencoder后应该仍然能够解码为数字1。这表明该autoencoder是robust的,一定程度上起到了抗噪声和regularization的作用,这正是我们希望看到的。


所以,这就引出了denoising autoencoder的概念。denoising autoencoder不仅能实现编码和解码的功能,还能起到去噪声、抗干扰的效果,即输入一些混入noise的数据,经过autoencoder之后能够得到较纯净的数据。这样,autoencoder的样本集为:

image.png

autoencoder训练的目的就是让x˘n经过编码解码后能够复原为纯净的样本xn。那么,在deep learning的pre-training中,如果使用这种denoising autoencoder,不仅能从纯净的样本中编解码得到纯净的样本,还能从混入noise的样本中编解码得到纯净的样本。这样得到的权重初始值更好,因为它具有更好的抗噪声能力,即健壮性好。实际应用中,denoising autoencoder非常有用,在训练过程中,输入混入人工noise,输出纯净信号,让模型本身具有抗噪声的效果,让模型健壮性更强,最关键的是起到了regularization的作用。

image.png



4   Principal Component Analysis


刚刚我们介绍的autoencoder是非线性的,因为其神经网络模型中包含了tanh()函数。这部分我们将介绍linear autoencoder。nonlinear autoencoder通常比较复杂,多应用于深度学习中;而linear autoencoder通常比较简单,我们熟知的主成分分析(Principal Component Analysis,PCA),其实跟linear autoencoder有很大的关系。


对于一个linear autoencoder,它的第k层输出不包含tanh()函数,可表示为:

image.pngimage.png

image.pngimage.png

image.png

image.png

值得一提的是,linear autoencoder与PCA推导过程十分相似。但有一点不同的是,一般情况下,PCA会对原始数据x进行处理,即减去其平均值。这是为了在推导过程中的便利。这两种算法的计算流程大致如下:

image.png

linear autoencoder与PCA也有差别,PCA是基于统计学分析得到的。一般我们认为,将高维数据投影(降维)到低维空间中,应该保证数据本身的方差越大越好,而噪声方差越小越好,而PCA正是基于此原理推导的。linear autoencoder与PCA都可以用来进行数据压缩,但是PCA应用更加广泛一些。

image.png

以上关于PCA的推导基本上是从几何的角度,而没有从代数角度进行详细的数学推导。网上关于PCA的资料很多,这里附上一篇个人觉得讲解得通俗易懂的PCA原理介绍:


http://blog.codinglabs.org/articles/pca-tutorial.html


有兴趣的朋友可以看一看。


5  Summary


本文主要介绍了深度学习(deep learning)的数学模型,也是上节课讲的神经网络的延伸。由于深度学习网络的复杂性,其建模优化是比较困难的。通常,我们可以从pre-training和regularization的角度来解决这些困难。首先,autoencoder可以得到比较不错的初始化权重,起到pre-training的效果。然后,denoising autoencoder通过引入人工噪声,训练得到初始化权重,从而使模型本身抗噪声能力更强,更具有健壮性,起到了regularization的效果。最后,我们介绍了linear autoencoder并从几何角度详述了其推导过程。linear autoencoder与PCA十分类似,都可以用来进行数据压缩和数据降维处理。

相关文章
|
8月前
|
机器学习/深度学习 自然语言处理
深度学习中的正则化技术:防止过拟合的利器
在深度学习领域,模型的复杂度往往与其性能成正比,但过高的复杂度也容易导致过拟合现象。本文将深入探讨正则化技术在深度学习中的应用,分析其如何通过引入额外信息或限制来优化模型,从而在保持模型复杂度的同时,有效避免过拟合问题。我们将通过具体实例和数据,展示正则化技术的实际效果,并讨论其在不同场景下的应用策略。
|
9月前
|
机器学习/深度学习 自然语言处理
深度学习中的正则化技术:防止过拟合的策略
深度学习模型因其强大的特征提取能力而广受关注,但复杂的网络结构也容易陷入过拟合的困境。本文将探讨如何通过正则化技术来缓解这一问题,包括L1和L2正则化、Dropout、数据增强以及早停等方法。文章将详细解释每种技术的工作原理,并讨论它们在实际应用中的效果与挑战。
|
8月前
|
机器学习/深度学习 自然语言处理
深入解析深度学习中的正则化技术
【7月更文挑战第21天】深度学习模型在追求高精度的同时,也面临着过拟合的风险。本文将探讨如何通过正则化技术来平衡模型复杂度与泛化能力,包括L1与L2正则化、Dropout、数据增强和早停等策略。我们将分析这些方法的工作原理及其在实际问题中的应用效果,并讨论如何选择合适的正则化技术以优化深度学习模型的性能。
|
8月前
|
机器学习/深度学习
深度学习中的正则化技术探究
【7月更文挑战第15天】 在深度学习的海洋中,正则化技术如同导航灯塔,指引着模型训练的方向,避免其偏离航线进入过拟合的暗礁区。本文将深入探讨正则化技术的奥秘,从它们的起源、种类到实际应用,揭示这些技术如何在防止过拟合的同时,提升模型的泛化能力。我们将穿越不同类型的正则化方法,包括传统的L1和L2正则化,以及更现代的技术如Dropout和数据增强。每种技术都将被剖析其工作原理及适用场景,为深度学习的实践者提供一盏明灯,照亮模型优化之路。
|
9月前
|
机器学习/深度学习
深度学习中的正则化技术
【6月更文挑战第21天】在深度学习领域,正则化技术是防止模型过拟合的重要手段。本文将深入探讨几种常见的正则化方法,包括L1和L2正则化、Dropout、以及数据增强等,并分析它们在实际应用中的效果与挑战。通过比较不同正则化策略的优劣,我们旨在为深度学习研究者和实践者提供实用的指导和建议。
|
9月前
|
机器学习/深度学习 人工智能 算法
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
140 3
|
10月前
|
机器学习/深度学习 算法 算法框架/工具
【Python机器学习专栏】深度学习中的正则化与优化技术
【4月更文挑战第30天】本文探讨了深度学习中的正则化和优化技术,以提升模型的泛化能力和训练效率。正则化包括L1和L2正则化以及Dropout,防止过拟合。优化技术涵盖梯度下降法、动量法和Adam优化器,加速模型收敛。Python示例展示了如何在Keras中应用这些技术,如L2正则化、Dropout及Adam优化器。
146 0
|
机器学习/深度学习 算法
深度学习正则化
深度学习正则化
120 0
|
机器学习/深度学习 算法 网络架构
深度学习中的正则化的应用(最全)
深度学习中的正则化的应用(最全)
428 0
|
机器学习/深度学习 算法 Serverless
瞎聊深度学习——神经网络基础(概念,正则化)
瞎聊深度学习——神经网络基础(概念,正则化)