当前位置: 首页 > 科技观察

彻底理解深度学习背后的各种思想和思考

时间:2023-03-21 11:20:38 科技观察

深度神经网络于2012年出现,当时深度学习模型能够在图像分类和语音识别等传统机器学习问题上击败最先进的传统方法.这是由于支持深度学习的各种哲学和思想。抓住主要矛盾,忽略次要矛盾——在池化神经网络中进行池化后,得到的是突出的泛化特征。与使用所有提取的特征相比,它不仅维数低得多,而且可以防止过拟合。比如max_pooling:在夜晚鸟瞰地球时,光的刺眼穿透力让人只注意到最max的部分,造成亮光区域扩大的视觉错觉。因此,max_pooling更适合提取更抽象的特征(比如纹理)。池化是一种下采样技术,可以减少参数数量并防止过度拟合。和卷积核一样,池化层的每个神经元都连接到上一层的输出神经元,只对应感受野的一小块区域。集中体现了“抓住主要矛盾,忽视次要矛盾”的哲学思想。在特征提取的过程中,抓住了图片特征中最关键的部分,丢弃了一些不重要的、非确定性的小特征。AvoidGradientVanishing-ReLUandBatchNormalizationDeepNeuralNetworks随着层数的增加,梯度消失是一个非常棘手的问题。ReLU的主要好处是减少梯度弥散的可能性,增加稀疏性。线性整流函数ReLU(整流线性单元)定义为h=max(0,a),其中a=Wx+b。减少梯度消失的可能性。特别是当a>0时,梯度具有恒定值。相反,随着x的绝对值增大,sigmoid函数的梯度越来越小。ReLU的恒定梯度导致更快的学习。增加稀疏性。当≤0稀疏性发生时。网络层中存在的此类单元越多,表示稀疏性就越大。另一方面,sigmoid激活函数总是有可能产生一些非零值,从而导致密集表示。稀疏表示比密集表示更有益。批量归一化BN(BatchNormalization)很好的解决了梯度消失的问题,这是由它的均值相减和方差来保证的:对每一层的输出均值和方差进行归一化处理,将输出从饱和区拉到非饱和区(导数),很好的解决了梯度消失的问题。对于下图中第二层和第一层之间的梯度变化,不使用BN时,sigmoid激活函数的梯度消失了5倍,而使用BN时,梯度只消失了33%;使用BN时,relu激活函数的梯度不会消失。集成学习的思想——DropoutDropout是一种可以避免过拟合的正则化技术。Dropout是一种正则化形式,它限制了网络在训练时适应数据的能力,以防止它在学习输入数据时变得“太聪明”,从而有助于避免过度拟合。Dropout本质上体现了集成学习的思想。在集成学习中,我们采用一些“较弱”的分类器并分别对其进行训练。由于每个分类器都是单独训练的,它学习数据的不同“方面”,它们的误差也不同。将它们结合起来有助于产生更强大的分类器,不易过度拟合。随机森林和GBDT是典型的集成算法。一种类型的集成算法是装袋,其中每个成员都使用输入数据的不同子集进行训练,因此仅学习整个输入特征空间的一个子集。Dropout,可以看作是bagging的一个极端版本。在mini-batch的每个训练步骤中,dropout过程都会创建一个不同的网络(通过随机删除一些单元),该网络像往常一样使用反向传播进行训练。从概念上讲,整个过程类似于使用许多不同网络的集合(每个步骤一个),每个网络都使用一个样本进行训练(即极端装袋)。测试时,使用整个网络(所有单元)但按比例缩小。从数学上讲,这近似于总体平均值。显然这是一个综合的思想,非常好地应用到深度学习中。深度提取复杂特征的思想在今天的深度学习中取得了很大的成功。深度神经网络,从AlexNet的8层到GoogLeNet的22层,再到ResNet的152层,随着层数的增加,top5错误率越来越低,达到了3.57%。由于图像和文本包含复杂的层次关系,因此在特征提取器中很难找到表示这些关系的公式。深度学习系统具有多层表示功能,允许网络对所有这些复杂关系进行建模。因此,在学习和应用深度学习时,不要害怕深度网络层面。正是这种深层结构提取了图像、文本、语音等原始数据的抽象本质特征。神经网络构建了一个渐进抽象的特征层次结构。每个后续层都充当过滤器,以过滤越来越复杂的特征,这些特征结合了前一层的特征。每个层对其输入应用非线性变换并在其输出中提供表示。每层中的每个神经元都将信息发送到下一层神经元,从而学习更多抽象数据。所以你升得越高,你学到的抽象特征就越多。.目标是通过将数据传递到多个转换层,以分层方式学习复杂和抽象的数据表示。感官数据(例如图像中的像素)被馈送到顶层。因此,每一层的输出都作为其下一层的输入。深度网络结构强大的抽象学习和表示能力以图像识别为例。在最底层,有像素之类的东西。当我们一层一层往上走的时候,慢慢的可能会有边缘,然后可能会有轮廓,甚至是物体的局部等等。总的来说,当我们逐渐往上走的时候,确实是在不断抽象对象。但是,在从现象到本质的抽象过程中,需要经过很多阶段和过程,需要逐步去粗提精,逐步突出,才能最终完成。为什么有这么多层?这体现了从整体到部分、从具体到抽象的认识论哲学。提取共同和必要的特征并丢弃非必要的特征。这个过程本来就是一个逐渐抽象的过程。是一个抽丝剥茧,层层提炼,逐步理清,统一归纳的过程。层数少提取出来的特征是模糊的,无法表示!每一层非线性思维的非线性变换就是深度学习。算法的基本思想。数据在深层架构中经过的层数越多,构建的非线性变换就越复杂。这些转换代表数据,因此深度学习可以被视为表示学习算法的一个特例,它学习在深层架构中具有多层次表示的数据表示。最终实现的表示是输入数据的高度非线性函数。深层架构层中的非线性转换试图提取数据中的潜在解释因素。线性变换不能用作像PCA这样的深层结构层中的变换算法,因为线性变换的组合会产生另一个线性变换。所以拥有一个深层次的模式是没有意义的。例如,通过将一些人脸图像输入深度学习算法,在第一层,它可以学习不同方向的边缘;在第二层,它组合这些边缘来学习更复杂的特征,如嘴唇、鼻子和眼睛等面部不同部位的特征。在第三层,它组合这些特征来学习更复杂的特征,比如不同人的面部形状。这些最终表示可以用作面部识别应用程序中的特征。提供此示例是为了以易于理解的方式简单地解释深度学习算法如何通过组合在分层架构中获得的表示来找到更抽象和复杂的数据表示。没有特征工程的思考在传统的机器学习中,特征工程被用作机器学习技能的一部分。在这种情况下,数据需要进行转换并以可理解的形式输入算法。然而,由于在训练和测试模型之前不知道这些特征的用处,数据挖掘者经常陷入开发新特征、重建模型和测量结果直到他们对结果满意为止的繁琐循环。这是一项非常耗时的任务,需要花费大量时间。一个穿着黑色衬衫弹吉他的男人图片下方的说明是由神经网络生成的,其方式与我们想象这幅图片的方式非常相似。对于涉及此类复杂解释的案例,必须使用深度学习。这背后的主要原因是超参数。题图需要的超参数数量会非常多,手动选择这些超参数在SVM的情况下几乎是不可能的。但是深度神经网络可以通过训练集自主学习。