深度学习基础原理
深度学习
1.深度学习是否⽆所不能?
适合掌握深度学习的任务应具备这样⼀些特点:
(1)具备⼤量样本数据。如果样本数据难以获取或者数量太少,我们认为就不适合深度学习技术解决
(2)样本数据对场景的覆盖度⾜够完善。深度学习模型的效果完全依赖样本数据表现,如果出现样本数据外的情况,模型的推⼴性会变差
(3)结果对可解释性的要求不⾼。如果应⽤场景不仅要机器能够完成某项任务,还需对完成过程有明确的可解释性,这样的场景就不那么
适合深度学习。
2.深度学习的基本流程
(1)模型搭建
(2)数据预处理
(3)训练模型
(4)结果可视化
(5)测试(预测)
3.常见的CNN模型有哪些?各有什么优缺点,如何选择模型
【1】⽤于图像分类问题的卷积神经⽹络架构正则表达式:
输⼊层-->(卷积层+-->池化层?)+-->全连接层+
⼀般不会连续使⽤超过三个卷积层。部分论⽂中发现可以通过调整卷积层步长来代替池化层的减少参数作⽤,有些⽹络中没有池化层。卷积
神经⽹络在输出之前⼀般有着1-2个全连接层;每经过⼀次池化,卷积核的深度⼀般会乘以2倍(逐层递增);卷积步长⼀般为1;卷积核的
尺⼨⼤⼩⼀般不超过5;池化层的步长⼀般为2或者3;步长⼀般为2或者3;
【2】模型的另⼀种设计模式(Inception)
将不同的卷积层通过并联的⽅式结合在⼀起。每条之路使⽤不同的卷积核尺⼨(原始图像通过填充可以使得卷积后的featuremap⼤⼩⼀致)
(1)LeNet5(1998)
lecun⼤神设计的第⼀个卷积神经⽹络,结构:(7层)卷积+池化+卷积+池化+三个全连接层,第⼀个成功应⽤于数字识别问题的CNN
(2)AlexNet(2012)
Hinton跟其学⽣在2012提出。特点:引⼊了ReLU和dropout,引⼊数据增强、池化相互之间有覆盖,三个卷积⼀个最⼤池化+三个全连接层
(3)ZFNet(2013)
(4)VGGNet(2014)
采⽤1x1和3x3的卷积核以及2x2的最⼤池化使得层数变得更深。常⽤VGGNet-16和VGGNet19
优点:(1)模型⽹络简洁:使⽤统⼀的3x3卷积核+2x2的maxpool(2)⼏个⼩的卷积核效果⽐⼀个⼤的卷积核效果好原因:更多的激活函
数,更多的⾮线性,模型提取特征更加深层;同时参数更少(3)模型变得更深,如此可以提⾼⽹络的性能
缺点:(1)耗费更多的计算资源,更多的参数,更多的内存,因为有三个全连接层
(5)GoogleNet(2014Inceptionv1)
这个在控制了计算量和参数量的同时,获得了⽐较好的分类性能,和上⾯相⽐有⼏个⼤的改进:
【1】去除了最后的全连接层,⽽是⽤⼀个全局的平均池化来取代它;
【2】引⼊InceptionModule,这是⼀个4个分⽀结合的结构。所有的分⽀都⽤到了11的卷积,这是因为11性价⽐很⾼,可以⽤很少的参数达
到⾮线性和特征变换。
【3】InceptionV2第⼆版将所有的55变成2个33,⽽且提出来著名的BatchNormalization;(2015)
【4】InceptionV3第三版就更变态了,把较⼤的⼆维卷积拆成了两个较⼩的⼀维卷积,加速运算、减少过拟合,同时还更改了Inception
Module的结构。(2015)
(6)ResNet(2015)
引⼊残差模块,让模型变得更深
、GRU、RNN⼜是什么样的模型结构
LSTM:长短时记忆⽹络
RNN:递归神经⽹络
GRU:
5.常见的数据预处理有哪些
(1)数据增强:翻转、剪切、加噪声、调节亮度饱和度⾊度等
(2)⼤⼩调整:NN的输⼊节点数是固定的,需要将图像的⼤⼩统⼀
(3)标准化:消除量纲的影响;加速GD算法的收敛速度;提⾼模型的精度(KNN)
(4)PCA算法降维:⼀种⽆监督的降维算法
(5)图像编码:存储时先是压缩编码,⽤时进⾏解码还原成三维矩阵(Tensorflow)
(6)处理标注框:关注需要识别的对象⽬标
6.数据增强的⽅式有哪些?
(1)对图像数据的翻转、剪切、加噪声等
(2)⽣成模型:GAN⽣成数据
(3)机器翻译:翻译成需要的语种数据
7.训练模型的基本步骤
(1)初始化权值
(2)前向反馈计算loss
(3)反向传播计算loss相对权值的梯度
(4)更新权值,梯度下降
(5)直⾄模型收敛
7.初始化权重的⽅法有哪些?(如何初始化权重)
(1)⼀般使⽤服从的⾼斯分布(mean=0,stddev=1)或均匀分布的随机值作为权重的初始化参数;使⽤0作为偏置的初始化参数
(2)⼀些启发式⽅法会根据输⼊与输出的单元数来决定初始值的范围(均匀分布,Xiver初始化)
(3)随机正交矩阵、截断⾼斯分布(tensorflow⾥⾯很常见)
(4)使⽤pretrain的⽅法进⾏初始化
随机初始化、正太分布初始化、hekaiming的初始化⽅式、Xiver初始化算法
注意:
(1)不能把神经⽹络的参数初始化为0,因为初始化为0,每⼀层学习到的东西⼀样(输出值⼀样),在反向传播的时候,每层内的神经元
也⼀样,因为他们的梯度⼀样。
(2)简单的随机初始化:实际上是从均值为0,⽅差为1的⾼斯分布中采样,当层数加深时,激活函数的输出值接近0,梯度也会接近0,由此
可能产⽣梯度消失问题。
(3)Xiver初始化:解决随机初始化的问题。可以有效应对tanh激活函数,但对relu函数⽆能为⼒。
基本思想:保持输⼊和输出的⽅差⼀致,这样就避免了所有输出值都趋向于0
(4)He初始化:专门针对relu函数的初始化⽅法。很有效。现在的神经⽹络常⽤relu激活函数,初始化⽅式常⽤He初始化⽅法。(⾼斯分
布)
基本思想:在ReLU⽹络中,假定每⼀层有⼀半的神经元被激活,另⼀半为0,所以,要保持variance不变,只需要在Xavier的基础上再除以
2
(5)BN层的应⽤可以缓解对初始化的依赖
5.前向反馈中设计到哪些操作?
(1)卷积运算(卷积层):对应元素相乘再相加
(2)池化(最⼤池化与平均池化)
(3)激活函数的选择
(4)1x1卷积(降维)、BN层、dropout
(5)全连接层
6.引⼊激活函数的⽬的是啥?常见的激活函数有哪些?各有什么特点,如何选择激活函数
⽬的:是为了向⽹络中引⼊⾮线性,从⽽加强⽹络的表⽰能⼒,解决线性模型⽆法解决的问题
注:没有激活函数的神经⽹络,每⼀层的输出都是输⼊的线性组合,是线性模型;不过部分层是纯线性的话可以减少参数的数量
为何引⼊⾮线性可以加强⽹络的表⽰能⼒?
神经⽹络的万能近似定理:只要神经⽹络具有⾄少⼀个⾮线性隐藏层,那么只要给予⽹络⾜够数量的隐藏单元,它就可以以任意的精度来近
似任何从⼀个有限维空间到另⼀个有限维空间的函数(已经有数学证明)
sigmoid:取值范围在[0,1]之间,符合概率的取值范围,在分类问题中⽐较受欢迎
公式:$sigma(x)=frac{1}{1+exp(-x)}$取值在0-1之间,关于((0,frac{1}{2}))对称
缺点:(1)会出现梯度消失(弥散)现象(2)图像不是关于原点对称(3)计算(exp(-x))值⽐较慢,耗时
优点:(1)引⼊⾮线性,加强⽹络的表征能⼒(2)输出值在0-1之间,符合概率的取值范围,在分类中效果⽐较好
tanh:双曲正切函数,范围在[-1,1]之间,形状同sigmoid
公式:(tanh(x)=2sigma(x)-1)关于原点对称
缺点:(1)梯度弥散现象没有解决
优点:(1)关于原点对称(2)收敛速度⽐sigmoid函数快
RELU:⼩于0时输出0,⼤于0时输出本⾝
公式:(f(x)=max(0,x))
缺点:(1)梯度弥散问题没有完全解决(2)在(-)部分神经元死亡且不会复活
优点:(1)很⼤程度解决了梯度消失问题(2)收敛速度更快
LeakyReLU:针对RELU函数的改进,(-)部分改变,解决神经元死亡问题
公式:(f(x)=begin{cas}alphax&text{x<0}x&text{x>=0}end{cas})
maxout:分段线性函数
公式:(f(x)=max(w^T_1x+b_1,w^T_2x+b_2))
缺点:(1)参数⽐较多,本质相当于在结果的后⾯新加⼊⼀个层
优点:(1)解决了RELU的缺点(2)拟合能⼒⾮常强,可以拟合任意的凸函数(3)具备relu的优点
Relu跟Sigmoid函数的⽐较
(1)Relu可以避免梯度消失:
sigmoid函数在输⼊取绝对值⾮常⼤的正值或负值时会出现饱和现象——在图像上表现为变得很平,此时函数会对输⼊的微⼩变化不敏
感——从⽽造成梯度消失;
ReLU的导数始终是⼀个常数——负半区为0,正半区为1——所以不会发⽣梯度消失现象
(2)减缓过拟合
ReLU在负半区的输出为0。⼀旦神经元的激活值进⼊负半区,那么该激活值就不会产⽣梯度/不会被训练,造成了⽹络的稀疏性——稀
疏激活
这有助于减少参数的相互依赖,缓解过拟合问题的发⽣
(3)加速计算:
ReLU的求导不涉及浮点运算,所以速度更快
为什么ReLU不是全程可微/可导也能⽤于基于梯度的学习?
虽然从数学的⾓度看ReLU在0点不可导,因为它的左导数和右导数不相等;
但是在实现时通常会返回左导数或右导数的其中⼀个,⽽不是报告⼀个导数不存在的错误。从⽽避免了这个问题
激活函数的选择跟初始化⽅式也是有关系的,激活函数的选择很重要
7.1x1卷积有什么作⽤(也叫NetworkinNetwork)
(1)实现跨通道的交互和信息整合(卷积都具有的特性)
对于某个卷积层,⽆论输⼊图像有多少个通道,输出图像通道数总是等于卷积核数量!
对多通道图像做1x1卷积,其实就是将输⼊图像于每个通道乘以卷积系数后加在⼀起,即相当于把原图像中本来各个独⽴的通道“联通”在了
⼀起。
(2)降维或者升维:通过改变卷积核的数量达成降维(升维)的⽬的;信息通道的压缩
8.简单说⼀下卷积的原理?
卷积层+池化层+激活函数+全连接层
9.什么是过拟合与⽋拟合?深度学习中防⽌过拟合的⽅式有哪些
⽋拟合:是指模型太简单,不能够学习到训练数据集上的内在规律;具体表现为在训练数据集上取不到⾜够低的训练误差。
过拟合:模型的学习能⼒太强,在训练数据集上可以达到很低的训练误差,⽽在测试集上的误差却是⽐较⾼,也就是泛化能⼒⽐较弱。
防⽌过拟合的策略:数据增强、dropout、BN层、正则化权重、提早停⽌训练模型
层的原理是什么?在什么位置嵌⼊BN层
位置:⼀般在卷积层、全连接层的后⾯,激活函数前加⼊BN层
层的作⽤有哪些?
(1)防⽌过拟合
(2)减少初始化的影响
(3)加速⽹络的训练(缓解梯度消失,⽀持更⼤的学习率)
层在训练、测试时分别是怎么操作的?
t的原理是什么?⼀般⽤在什么位置?为何会work
以⼀定的概率随机使⽹络中的节点不⼯作(相当于丢弃掉),减少⽹络的复杂度,防⽌过拟合。
理解:让节点不⼯作之后,可以避免模型太依赖局部特征,指导⽹络学习数据的本质共性,可以防⽌过拟合
dropout⼀般⽤在全连接层的后⾯
dropout防⽌过拟合的理由
(1)模型在训练过程中取平均:优点类似集成思想:dropout通过参数共享,相当于集成了经过dropout之后的所有⼦⽹络。集成⽅法能够
防⽌过拟合
(2)破坏了⽹络层间隐含节点的固定关系,避免模型太依赖局部特征,倾向于学习更加本质的共性特征
(3)神经⽹络中不同模型的独⽴误差:随机初始化的差异、批训练数据的随机选择、超参数的差异等⾮确定性实现往往⾜以使得集成中的
不同成员具有部分独⽴的误差
集成学习能够防⽌过拟合现象原因解析:
(1)每个模型在测试集上取得的误差不⼀样;如果模型成员的误差是独⽴的,集成将显著提升模型的性能
(2)通过投票裁决(加权⽅式)可以使得⼀些负⾯影响得到消除
t与Bagging的不同
在Bagging的情况下,所有模型都是独⽴的;⽽在Dropout的情况下,所有模型共享参数,其中每个模型继承⽗神经⽹络参数的不同
⼦集。
在Bagging的情况下,每⼀个模型都会在其相应训练集上训练到收敛。⽽在Dropout的情况下,通常⼤部分模型都没有显式地被训
练;取⽽代之的是,在单个步骤中我们训练⼀⼩部分的⼦⽹络,参数共享会使得剩余的⼦⽹络也能有好的参数设定。
层与dropout同时使⽤效果是否会更好?
dropout有些依赖神经⽹络中的随机性,因为这样可以使得模型具有独⽴的误差,效果会好
BN层:统⼀数据的分布,减少模型初始化的影响;感觉有点破坏随机性,如此看来在BN层之前⽤dropout不会使效果更好,反⽽会变差。
论⽂的解释:(⽅差偏移)
当模型状态由训练到测试时,Dropout会使具体神经元的⽅差产⽣偏移。但是,BN在整个测试阶段都会保留它在训练过程学习并累计得到
的⽅差。当在BN之前应⽤Dropout时,该⽅差的不⼀致(我们将该现象命名为「⽅差偏移」)造成推理中的数值不稳定性,最终将导致更
多的错误预测
总的来说就是:⽅差发⽣偏移,导致⽅差不⼀致,造成推理中的数值不稳定,有更多的错误预测
16.如何结合使⽤dropout与BN层
(1)在BN层的后⾯使⽤dropout,避免BN层对dropout的影响;dropout统⼀放在softmax前的最后⼀层上
(2)修改dropout的公式,是的她对⽅差不那么敏感;⽐如⾼斯dropout、均匀dropout,这个⽅案的效果⽐上⾯的⽅案效果好,更加稳定。
17.什么是正则化?常见正则化有哪些?谈谈L1正则与L2正则的区别
正则化是指对经验误差函数加上约束,正则化参数相当于引⼊参数的先验分布,⽐如L1正则化是引⼊拉普拉斯先验;从⽽使得在优化误差
函数的时候倾向于选择满⾜约束的梯度减少的⽅向,使最终的解倾向于符合先验知识;正则化的策略主要是⽤来防⽌过拟合,减少测试误
差,增强模型的泛化能⼒。(本质是以偏差的增加换取⽅差的减少)
常见的正则化有L1正则化、L2正则化;
区别:
(1)定义
(2)先验分布
(3)达到的效果
在神经⽹络中通常只是对权重做惩罚,对偏置不惩罚:因为精确拟合偏置需要的数据量⽐拟合权重要少得多,偏置仅仅控制⼀个单变量,
数量也⽐较少,这意味着我们不⽤惩罚也不会导致太⼤的⽅差。另外,正则化偏置有可能会导致明显的⽋拟合
18.如何选择正则化⽅式
这个主要看我们正则化的附加⽬的。虽然都可以⽤于防⽌过拟合,但是
(1)L1正则化:倾向于产⽣稀疏权重,可⽤于特征选择
(2)L2正则化,也叫岭回归,可以⽤于减缓变量之间的多重共线性,主要⽤于防⽌过拟合
19.L1正则化的先验为何是拉普拉斯分布,L2为何是⾼斯分布,怎么理解?
20.如何降低⽋拟合?
这⾥⽋拟合主要是因为模型过于简单,学习能⼒不够强导致的。可以考虑模型复杂化,或者反着过拟合的思路
(1)增加模型的复杂度
⽐如加⼊⽹络的层数或者神经元的个数;线性模型:加⼊⾼次项
(2)减⼩正则化项的系数
添加正则化项是为了限制模型的学习能⼒,减⼩正则化项的系数则可以放宽这个限制
没有正则化项的模型倾向于选择更加⼤的群众,如此可以更好的拟合数据
(3)加⼊新的特征
⽐如交叉特征、多项式特征等
深度学习:因⼦分解机、Deep-Crossing、⾃编码器
21.最⼤池化与平均池化的区别与联系
相同点:
(1)都是池化⽅式,都可以使参数的数量变少、特征变少、降维,
(2)pooling:最⼤的作⽤是保持某种不变性(旋转、平移、伸缩等)
我的理解:
(1)最⼤池化:⼀定区域内取最⼤值,这⾥可能忽略了这个区域的部分信息,有点相当于提取局部信息
(2)最⼤池化:可以减少参数误差造成的均值偏移
(3)平均池化:⼀定区域内取平均值,这⾥充分利⽤了全部的信息,全部求平均,相当于全局信息特征
(4)平均池化:在⽔平⽅向求平均,可以减少⽔平⽅向上不同视⾓的影响;平均池化可以减⼩由于邻域⼤⼩造成的⽅差误差
最常⽤的还是最⼤池化
有个细节:池化的反向传播如何操作
(1)平均池化:梯度值平均到每⼀个像素值
(2)最⼤池化:⽤⼀个变量记录原始featuremap中最⼤值的位置,传播的时候传播到那个位置即可
22.反向传播的原理是啥?简单说⼀下梯度下降法
梯度下降法:梯度下降法是求解不带约束最优化问题的常⽤⽅法;她通过⼀步步降低损失函数对参数的梯度来寻找局部最优值。特点是实现
简单,但不能保证达到全局最优值,收敛速度也未必是最快的
反向传播算法:就是⽤于损失函数计算全部参数梯度的具体⽅法,其本质是利⽤链式法则对每个参数求偏导
23.权值更新⽅法有哪些?各有什么优缺点?如何选择?
(1)随机梯度下降法(batch-SGD、minibatch-SGD、SGD)
(2)带动量的SGD算法:加快训练,有可能跑出局部最优值
(3)Nesterov动量SGD,跟标准的区别在于梯度的计算
(4)AdaGrad
(5)RMSprop
(6)Adam
(7)基于⼆阶梯度的优化⽅法:⽜顿法、共轭梯度、BFGS等的做法
24.通过什么来评判模型的优越性?
(1)泛化性能
(2)模型训练速度
ize的选择?minibatch是什么?
(1)⼀般⽽⾔:batchsize越⼤,结果越接近梯度下降法的结果
(2)mnibatch:训练速度快,同时收敛结果接近GD算法的结果
26.卷积神经⽹络的特点是什么?为什么要进⾏卷积⽽不是全连接
局部连接,权值共享,池化操作,多层次结构。
(1)权值共享,如此可以减少参数,⼤⼤降低了⽹络的训练难度,防⽌模型过拟合
(2)局部感知:卷积利⽤的是⼩的卷积核进⾏卷积,提取的是局部特征
(3)池化操作与多层次结构,实现了数据的降维,将低层次的局部特征组合成为较⾼层次的特征,从⽽对图像进⾏表⽰。
27.卷积神经⽹络(深度学习)为何在计算机视觉、语⾳识别、⾃然语⾔处理中如此work?在其他⽅⾯是否也可以?
局部相关性
⽬前深度学习表现⽐较好的领域主要是图像/语⾳/⾃然语⾔处理等领域,这些领域的⼀个共性是局部相关性。图像中像素组成物体,语⾳
信号中⾳位组合成单词,⽂本数据中单词组合成句⼦,这些特征元素的组合⼀旦被打乱,表⽰的含义同时也被改变。对于没有这样的局部相
关性的数据集,不适于使⽤深度学习算法进⾏处理。举个例⼦:预测⼀个⼈的健康状况,相关的参数会有年龄、职业、收⼊、家庭状况等各
种元素,将这些元素打乱,并不会影响相关的结果。
28.什么是梯度消失和爆炸?如何解决
梯度消失问题:本质是激活函数的选择导致的,如sigmoid函数。在函数的两端梯度求导结果⾮常⼩(饱和区)导致后向传播过程中由于多
次使⽤到激活函数的导数值使得整体的乘积梯度结果变得越来越⼩,也就是梯度出现了消失现象。
神经⽹络的训练中,通过改变神经元的权重,使⽹络的输出值尽可能逼近标签以降低误差值,训练普遍使⽤BP算法,核⼼思想是,计
算出输出与标签间的损失函数值,然后计算其相对于每个神经元的梯度,进⾏权值的迭代。
梯度消失会造成权值更新缓慢,模型训练难度增加。造成梯度消失的⼀个原因是,许多激活函数将输出值挤压在很⼩的区间内,在激
活函数两端较⼤范围的定义域内梯度为0,造成学习停⽌。
梯度爆炸问题
梯度爆炸:同理,出现在激活函数处在激活区,⽽且权重W过⼤的情况下。但是梯度爆炸不如梯度消失出现的机会多
解决⽅法:通过选择相对较好的激活函数;如RELU激活函数
使⽤2个3*3卷积的优势在哪⾥?其他的常⽤模型类似问题
30.神经⽹络中权值共享如何理解?
CNN中的权值共享就是滤波器共享。滤波器的参数是固定的,在提取特征的时候,⽤滤波器滑动窗⼝扫描⼀遍图像,提取⼀次特征。权值共
享可以很有效地较少神经⽹络的参数。
为何要如此权值共享:
(1)减少⽹络的参数,防⽌过拟合
(2)权值共享意味着在特征图的不同位置使⽤⼀样的特征提取器,可以提取到与位置⽆关的特征模式。可以这样做的前提假设是:图像中
⼀部分的统计特性与其他部分⼀样
31.神经⽹络中局部感知如何理解?
卷积核只是作⽤于featuremap中的局部区域
受到的启发:
我们对外界事物的观察都是由局部到全局,但并不是每个像素每个像素的去认知,⽽是⼀块区域⼀块区域的去认识,通过这些区域得到局部
信息,然后对这些局部信息的汇总,然后才得到整个全局的信息。
(1)图像的像素之间也是局部的相关性较强,距离较远的像素之间相关性较弱
(2)视觉神经元只是接收局部信息,神经元并不对全局信息响应
(3)如此可以有效减少神经⽹络的参数
32.卷积层与池化层的区别?全连接层
相同点:
(1)都有卷积核,尺⼨⼤⼩,步长的选择
(2)都是针对局部区域。卷积是局部连接,池化是局部区域求值
不同点:
(1)卷积中有参数,⽽池化过程没有参数
(2)池化是不跨层进⾏的,即需要对featuremap的每个通道进⾏池化;⽽卷积跨层进⾏运算
全连接层:全连接⽅式,参数⾮常之多。
本文发布于:2022-11-27 09:34:12,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/30201.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |