机器学习知识点相关总结(五)——CNN相关

机器学习知识点相关总结(一)——基础

机器学习知识点相关总结(二)——决策树相关

机器学习知识点相关总结(三)——LR相关

机器学习知识点相关总结(四)——SVM相关

机器学习知识点相关总结(五)——CNN相关

机器学习知识点相关总结(六)——RNN,LSTM相关

机器学习知识点相关总结(七)——k-means相关

1.卷积层个数计算方式,CNN参数量计算,卷积计算复杂度,如果一个CNN网络的输入channel数目和卷积核数目都减半,总的计算量变为原来的多少

 

2.卷积层的实现

多个滤波器叠加的实现

局部连接,局部感知,在上层将信息综合得到全局的信息

权值共享:用一个相同的卷积核去卷积整个网络,不同的特征靠多个卷积核来实现。

 

3.说一下你理解的卷积核,1x1的卷积核有什么作用?

卷积核:相当于滤波器filter,带着一组固定权重的神经元,通常是nxm的二维矩阵,nm也是神经元的感受野。矩阵中存的是对感受野中数据处理的系数。通过卷积核卷积可以提取某一特定的特征。

1x1卷积核作用?

保留原有的平面结构,达到卷积核通道数的升维与降维的目的;

对于单通道featuremap和单个卷积核之间的卷积来说,1x1卷积核就是对输入的一个缩放,因为它只有一个参数,相当于给输入数据乘以一个系数。对于多通道而言,就是可以再保持featuremap尺寸不变的情况下增加非线性特征,提升网络的表达能力(deep)。多卷积核多通道时,实现多个featuremap的线性组合。

 

3D卷积:每平面分别求2D卷积,然后把每片卷积结果加起来。

 

4.softmax公式

该单元常作为网络的输出层。分类器最后的输出单元需要用softmax进行处理,将分类输出转化为相对概率

 

 

5.batch normalization的原理

动机:训练的本质是学习数据分布,如果训练集与测试数据分布不同会降低模型的泛化能力,因此要进行归一化处理。

批量规范化,把所有训练样本的统计分布标准化,降低了batch内不同样本的差异性。

因为深层神经网络在做非线性变换前的激活输入值随着训练过程,其分布会逐渐发生变动,之所以收敛速度慢,一般是整体分布逐渐往非线性函数的取值区间上下限两端靠近,所以这导致反向传播时低层神经网络梯度消失,这是训练深层神经网络速度越来越慢的本质原因。BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到标准正态分布上,使得激活输入值落在非线性函数对输入比较敏感的区域,使得梯度变大,梯度变大意味着学习收敛的速度快。能大大增加训练速度。

 

总结来说,对于每个隐层神经单元,把逐渐向非线性函数映射后向取值区间饱和区靠拢的输入分布强行拉回到均值为0方差为1的标准正态分布,使得非线性变换函数的输入值落入对输入比较敏感的区域,以此避免梯度消失的问题。因为梯度一直都能保持在比较大的状态,很明显对神经网络的参数调整效率比较高。

具体来说,针对每一批数据,针对每层的第k个神经元,计算这一批数据在第k个神经元的均值与标准差,然后将归一化后的值作为该神经元激活值。

 

为什么训练时不采用移动平均?

因为BN目的就是为了保证每批数据的分布稳定,使用全局统计量反而违背了这一初衷。

 

缺点:

尽管把每层的分布固定了,但是这种分布不一定是前面那一层要学习到的数据分布,强行归一化就会破坏刚刚学习到的特征。

BN算法在第二步设置了两个可学习的变量,用于还原上一层需要学习的数据分布。

其他常见的归一化算法?

线性归一化:等比缩放

sigmoid激活函数

0均值归一化

 

6.shuffle作用

对原来的数组进行重新洗牌(随机打乱原来数组的顺序)

np.random.permutation shuffle

由于数据量过大时,神经网络在训练过程中会遗忘一开始的输入(开始训练的样本对权值的影响变小)

数据量少时,每一轮训练通过打乱样本顺序来增强数据。

 

7.dropout原理(集成方法)

主要用来解决深度学习中由于大量参数而导致的过拟合问题。

在网络训练的过程中,按照一定的概率将一部分中间层的神经源暂时从网络中丢弃,通过把该单元的输出设置为0使其不工作来避免过拟合。可以阻止神经元之间过分的共同适应。

 

8.过拟合的原因和解决方法

过拟合的原因:

建模样本抽取错误:样本数量太少,没有代表性等;

样本里噪声数据干扰太大;

参数太多,模型复杂度过高;

神经网络很容易出现过拟合现象,因为增加的抽象层使得模型能够对模型当中训练数据较为罕见的依赖关系进行建模(迭代次数过高)。

解决方法:权重递减(主要应用在神经网络模型中),交叉验证,,数据增强,稀疏方法,Dropout方法(在训练模型中随机丢弃一部分隐含单元),shuffle,加Batch normalization,正则化,集成学习

数据增强——shufflebatch

降低模型复杂度——减少网络层,神经元个数

正则化——L1 L2

集成学习——神经网络dropout

提前终止

 

9.如果训练的神经网络不收敛,可能有哪些原因?

数据太脏乱

神经网络深度不够(函数拟合能力不够)

batch size太小

学习率设置的不对,如果过小,可能会陷入局部最优解;如果太大超过了极值,损失就会停止下降,在某一位置反复震荡。

解决:学习率设小,正则化

 

10.batch size对收敛速度的影响。

过大:跑完一个epoch迭代次数减少了,但要达到相同的精度,所需的时间大大增加,从而对参数的修正也变得更加缓慢,增大到一定程度,其确定的下降方向已基本不再变化。

过小:由于不同权重的梯度差异值比较大,因此选取一个全局的学习率很困难。

在一定范围内,增大size,其确定的下降方向越准确,引起的震荡越小,有助于提高处理速度,迭代次数降低。

 

11.讲一下pooling的作用, 为什么max pooling要更常用?哪些情况下,average poolingmax pooling更合适?

作用:降低特征维度,减少计算量;使得特征具有位移不变性(池化操作都和特征的位置没有关系);去除冗余信息,防止过拟合等问题(减少网络复杂度)。

Max pooling侧重于选出了分类标识度更好的特征,提供了非线性。Average pooling更强调对整体特征信息进行一次下采样,在减少参数维度上贡献更大一些,更多体现在信息完整传递。

Average在全局平均池化中应用也比较广。在减少维度的同时,更有利信息传递到下一个模块进行信息提取。

 

全连接层的作用:

卷积提取的是局部特征,全连接就是把之前的局部特征通过权值矩阵组装成完整的图。因为用到了所有局部特征

 

12.梯度消失和梯度爆炸的原因是什么? 有哪些解决方法?

深度神经网络的优化基于反向传播思想,根据损失函数计算的误差通过梯度反向传播的方式,指导深度网络权值的更新和优化。(优化深度网络就是为了找寻一个权值,使得损失函数取得极小值点,适合采用梯度下降的方式)

梯度消失出现原因:一是在深层网络中,二是不合适的损失函数。

梯度爆炸:一般出现在深层网络和权值初始化太大的情况下。

在反向传播过程中需要对 进行求导,如果大于1,那么随着网络层数的增加梯度将会朝着指数爆炸方式增加。如果小于1,那么随着层数的增加梯度更新信息会朝着指数衰减方向减小。因此消失和爆炸的原因本质上源于反向传播训练法则,属于先天不足。

解决方法:各层预训练+微调;梯度裁剪,设一个阈值(主要针对梯度爆炸);使用relu激活函数;BatchNorm;使用lstm

梯度爆炸解决方法:梯度截断(如果梯度超过某个阈值,就对其进行限制)

 

13.讲一下激活函数sigmoidtanhrelu. 各自的优点和适用场景?

为什么使用:如果没有激活函数,则每一层输出都是上一层输入的线性组合,激活函数引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,应用到非线性模型中。

Sigmoid:将输入压缩至0-1范围内,可以用来做二分类。现在没有那么流行。缺点:反向传播时容易导致梯度递减,收敛缓慢,输出分布不是以0为中心的,幂运算相对来讲比较耗时。(在输入绝对值非常大的时候会出现饱和现象,此时函数会对输入微小的变化不敏感)

Tanh:将会把实数的输入值压缩到[-1,1]范围内,输出值是以0为中心的,可以提高BP的训练效率。在特征相差明显时效果比较好,循环过程会不断扩大特征效果。比sigmoid延迟了饱和期。Tanh函数的导数输出的值更大,因此梯度变化更快,在训练过程中收敛速度更快。

Relu 当输入小于0时为0,大于0时为本身。简单给出一个阈值来达到激活函数的目的。优点:计算速度快,求导不涉及浮点运算;不存在饱和区,不再梯度弥散;会使一部分神经元的输出为0,造成了网络的稀疏性,减少了参数相互依存的关系,缓解了过拟合问题。缺点:训练时候很脆弱,比如一个比较大的梯度流过神经元,在更新完参数后,这个神经元再也不会对任何数据有激活现象了。如果learning rate过大,会出现很多die的神经元。

 

14.relu的负半轴导数都是0,这部分产生的梯度消失怎么办?

一旦神经元的激活值进入负半区,则梯度为0,也就是说这个神经元不会经历训练,也就是稀疏性。

虽然热炉在0的时候不可导,但在实现时通常会返回左或者右导数的一个。

 

15.损失函数的选取

平方损失函数:他能保证预测的结果和真实值的差异是一个正值,此外相对于绝对值来讲还具有连续可导的性质,要和softmax配合使用。

交叉熵:能够更加明显地进行梯度下降,并且能够很好地检测准确率。

均方误差作为损失函数时,会导致大部分情况下梯度偏小,其结果就是权重更新很慢,容易造成梯度消失的现象。

交叉熵当误差大的时候,权重更新就快,误差小时候,圈中更新才慢。

 

16.梯度弥散

之前常用的激活函数是softmax函数,当使用反向传播法计算导数的时候,随着网络深度的增加,反向传播的梯度幅值会急剧减小,结果造成了整体损失函数相对于最初几层的权重导数非常小。这样当使用梯度下降法的时候,最初几层的权重变化会非常缓慢,以至于不能从样本中进行有效的学习。(解决:选择合适的激活函数eg:relu)

 

17.AlexNet网络

5个卷积层,3个全连接层,1个softmax层

非线性激活函数:Relu

防止过拟合方法:数据增强,dropout(以0.5的概率将每个隐含神经元的输出设置为0,降低了神经元之间复杂的互适应关系)

大数据训练

引入了局部正则化处理(LRN)(通过正则化让激活函数的输入避免饱和)

 

18.降低欠拟合风险的方法

增加模型复杂度——线性模型提高次项,神经网络增加网络层数,神经元个数

减少正则化项的系数

加入新的特征——交叉验证,多项式特征

 

19.反向传播BP

神经网络在梯度下降法中需要损失函数对参数求梯度的方法寻找局部极小值点。BP就是计算该梯度的具体方法,本质是利用链式法则对每个参数求偏导。

工作流程:

对每个训练样例,先将输入实例提供给输入层神经单元,逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差,再将误差逆向传播至隐层神经元,最后根据隐层神经元的误差对链接权和阈值进行调整。该过程迭代循环进行,直到达到某些停止条件为止。

 

20.参数初始化

一般使用服从的高斯分布或均匀分布的随机值作为权重的初始化参数,使用0作为偏置的初始化参数

keras全连接层根据输入与输出的单元数来决定初始化范围。

 

21.神经网络万能近似定理

一个前馈网络如果至少有一个非线性输出层,,那么只要网络由足够数量的隐藏单元,那么就可以以任意精度近似任何从一个有限维空间到另一个有限维空间的函数。

 

22.神经网络中的深度与宽度

深度是指隐藏层的数量,宽度是隐藏层的维度

万能近似定理表明一个单层的网络就足以表达任意函数,但是该层的维数可能非常大,且几乎没有泛化能力;此时,使用更深的模型能够减少所需的单元数,同时增强泛化能力(减少泛化误差)。参数数量相同的情况下,浅层网络比深层网络更容易过拟合。

 

23.深度学习优化算法

GD , SGD, Momentum, RMSProp, Adam

(1)Momentum:

通常情况在训练深度神经网络时候把数据拆分成一小批进行训练(mini-batch SGD),虽然能带来很好的训练速度,但是在达到嘴有点时并不总是整整最优点,而且需要挑选一个合适的学习率.我们希望网络在优化的时候网络的损失函数有一个很好地收敛速度同时又不至于摆动幅度太大。

Momentum优化器基于梯度的移动指数加权平均。当前迭代步骤第t步中优化算法可以写成:

(2)RMSProp

momentum优化算法虽然初步解决了优化中摆动幅度大的问题(在优化中经过更新后参数的变化范围)。

为了进一步优化损失函数在更新中存在摆动幅度过大的问题,并且进一步加快函数的收敛速度,RMSProp算法对权重W和偏置b的梯度使用了微分平方加权平均数

(3)Adam

上面两种算法一种可以使用类似于物理中的动量来积累梯度,另一种可以使得收敛速度更快同时使得波动的幅度更小。Adam将两者进行了一个结合

由于指数哦英俊在迭代开始的初期会导致和开始的值有较大的差异,所以我们需要对上面求得的几个值做偏差修正。

 

24.如何解决局部极小与全局极小的问题

以多组不同的参数值初始化神经网络,按照标准化进行训练后,取其中误差最小的解作为最终参数(相当于从不同的初始点开始搜索);

随机梯度下降法,在计算梯度时引入了随机因素;

“模拟退火”技术,在每一步以一定的概率接收比当前解更差的结果,从而有助于跳出局部极小。

 

25.卷积都有哪几种?

  1x1卷积

  3D卷积(可以描述3D空间中目标的空间关系)

  转置卷积:执行一个上采样,与普通卷积反向相反的转换(在一个 2×2 的输入(周围加了 2×2 的单位步长的零填充)上应用一个 3×3 核的转置卷积。上采样输出的大小是 4×4。)

  扩张卷积:核元素之间插入空格(观察更大的感受野不会有额外的成本,廉价增加输出单元的感受野)

26.学习率的作用

学习率对原步长(梯度下降法中就是梯度)进行调整,梯度下降法每次以学习率*梯度来调整步长

梯度下降之类的搜索算法,这些算法会先初始化一个解,在这个解的基础上,确定一个搜索方向和一个移动步长,使初始解根据这个方向和步长移动后,能使目标函数的输出(在神经网络中就是预测误差)下降。 然后将它更新为新的解,再继续寻找下一步的移动方向的步长,这样不断的迭代下去,目标函数也不断下降,最终就能找到一个解,使得目标函数预测误差)比较小。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值