深度学习面试知识点总结

1、过拟合问题解决方案

1、正则化

2、添加dropout层

3、增加数据量

4、early stop

2、ReLU函数的优缺点

优点:

1、减轻梯度消失和梯度爆炸问题

2、计算方便,计算快

3、加速训练过程

缺点:

1、输出结果不以0为中心

2、负数部分恒为零,导致部分节点无法被激活

3、池化层

    池化层有时候也称为下采样层,池化的作用是去掉feature map中的不重要的参数,减少参数数量,降低过拟合的同时也增强了模型的容错性。比较常见的非线性池化是最大池化(Max Pooling)和平均池化(Mean Pooling)。

    最大池化就是在一个n*n的像素矩阵中选出一个最大池作为池化后的结果;相应的,平均池化就是求出平均值作为池化后的输出。


最大池化示例


平均池化示例

4、卷积层

    卷积层是CNN(卷积神经网络)的最主要的特征,也是名称的由来。卷积层由多个卷积核组成,每个卷积核和图像做卷积运算可以得到一个feature map。卷积核具有两个重要的特征:网络局部连接和卷积核权值共享,这意味着卷积核仅仅作用于输入图像的局部,且在卷积运算过程中权值不变。卷积核的通道数一般与图片的通道数一致,图片一般是RGB三通道图像,相应的卷积核也是三通道,每一个通道与图像进行卷积可以得到一个feature map,最后把三个feature map相加,再加上偏移值就变成了一张feature map。卷积层的主要作用就是从图像中提取特征信息,训练网络的过程就是在改变卷积核的权值,使得提取出有效的特征信息,便于网络做图像分类。

卷积运算

卷积运算是CNN中一个比较重要的概念,我们来详细看一下卷积运算的本质。

先看一下数学定义:

(f*g)(n)为f和g的卷积,连续定义为

   离散定义为


举个例子:

假如有一个3*3的卷积核,如下图所示


一个像素矩阵


那么我们对这张图像做卷积运算的过程(本过程主要为了示例卷积运算的过程,并非所有的卷积运算都是这样)

1、卷积核翻转


2、卷积核的中心点对准第一个元素,相对应的元素相加,没元素的位置补0(注意:这里是用的0-padding模式),输出第一个结果-16


3、卷积核移动,输出所有卷积结果


此过程中没有改变卷积结果矩阵的大小,但不是所有的过程都是如此。

下面我们用一种更加抽象一点的描述来解释卷积过程

    卷积公式含义为遍历从负无穷到正无穷所有的s和t的值,把G在(x-s,y-t)上的值与F在(s,t)上的值相乘最后再加和在一起,这样就得到了卷积运算的结果。其实卷积运算就是一种加权求和:以F为权值,以点(x, y)为中心,把G距离中心(-s,-t)位置上的值与G在点(s,t)的值相乘,最后把乘积结果加到一起。那么联系起来图像识别,G函数就可以表示一张10*10像素的灰度图片,每个像素点上的取值为0到255的灰度值,那么x,y的坐标可以取值[0,9],F函数可以看作是一个3*3像素的网格,令s和t在取{-1,0,1}的点为特定值,其他地方的点取值为0,下图展示了卷积运算的过程。


卷积运算过程


这个卷积运算最终输出矩阵的大小就比原始矩阵要小,在实际的模型中采用padding可以保持输出矩阵的大小不变,即在原始矩阵边缘填充0 。

5、步长和边界

步长(stride)指的是权值矩阵在图像上的移动距离。步长越大相应的得到的输出图像越小,但是这样也会带来一些问题,如果在做卷积运算的时候,每次卷积图像都会缩小,图片比较小的话卷积不了几次图像就无法再次计算了,而且相对于靠近于中间的点,边缘的点能够被计算的次数少很多,所以就引入了另一个概念:边界。

边界(padding),有时候也称作填充,简单的来说就是在图片的周围填充一圈空白,这样在计算的时候边缘的数字可以被计算更多的次数,而且在卷积或者池化之后图片能够保持同样的大小。

6、全连接层

    卷积层的作用主要是提取有效的特征信息,那么对于分类网络来说,提取出来的有效特征需要全连接层将特征映射到分类标签上。全连接层的核心就是矩阵向量乘积。


7、激活函数

激活函数的主要作用就是让模型具有非线性特征,来更好的拟合图像。

常见的激活函数如下:

7.1、Sigmoid函数


Sigmoid函数曾经是使用最多的非线性激活函数,函数数学定义和函数图像如下


Sigmoid函数将输入映射到了(0,1)区间上,单调且连续,容易求导,但是容易产生梯度消失,而且因为其输出并不是0均值的,所以会导致训练的时候后一层神经元得到的信号不是0均值的,影响收敛速度。

7.2、Tanh函数

Tanh函数的数学定义和函数图像如下:



Tanh解决了Sigmoid函数的非0均值输出的问题,输入的数据被映射到(-1,1)区间上,提高了收敛速度,但是还是没有解决梯度消失问题。

7.3、ReLU函数

ReLU函数是目前非常受欢迎的非线性激活函数,它的数学定义和函数图像如下:


相对于Tanh和Sigmoid函数来说,ReLU解决了梯度消失问题,收敛更加快速,而且不存在像Tanh和Sigmoid中的指数运算,便于计算,但是仍然存在着一些问题,首先是它的输出也不是0均值的,其次最严重的问题是它会导致神经元死亡,权重无法更新的情况。

8、优化器和损失函数

    损失函数,又叫做目标函数,主要是用于计算模型预测出来的值和实际值之间的差距,可以用来衡量训练出来的模型的好坏。在预测值和实际值之间存在一定的差值,优化模型要做的就是不断的缩小这个差值,损失函数就是衡量这个差值的一个指标。

    计算出来损失之后,自然是要根据损失对模型进行优化进一步减小损失,而优化器正是起着这样的作用,常见的优化函数有GD、SGD和Adam等。

9、梯度消失和梯度爆炸

    在进行模型优化的时候通常采用梯度下降的方法,假设神经网络采用Sigmoid函数作为激活函数,很容易可以得出Sigmoid函数在x较大或者较小的时候导数接近于0和导数的最大值为0.25的结论,如果在初始化权重时选择采用一个均值为0标准差为1的高斯分布,那么所有的权重都小于1,因此根据链式法则和反向传播,当网络比较深的时候,梯度呈指数级衰减,所以在从输出层到输入层反向传播训练过程中,很容易导致导数趋于0,使得靠近输入层的神经网络权重和偏置无法更新,导致神经网络无法被优化,这种情况下实际被训练的网络层数只有靠近输出层的几层而已,这就是梯度消失问题。

    梯度爆炸与此类似,当初始化权重的时候,选择的权重比较大时,随着网络的加深,反向传播时梯度呈指数级增加,在靠近输入层的神经网络得到的梯度会非常大,这就是梯度爆炸问题。

    解决此类问题的方法有:更换成非饱和的激活函数如ReLU,批量规范化(Batch Normalization),梯度截断(Gradient Clipping)等。

10、过拟合和欠拟合问题

当模型足够复杂,很容易能够拟合出数据集的所有数据,这个时候可能会出现过拟合现象:在训练集上取得了非常好的效果,而在测试集上却表现的很差。如图所示,对图中的黄色圆点和黑色加号进行拟合,最终拟合出来的结果为图中绿色的曲线,可以看出拟合曲线几乎包括了分开了所有的两种标签,但是因为拟合程度过高,对于新的测试集却无法达到较高的准确率。对于过拟合,可以采取以下方法解决:

a) 正则化(Regularization),可以在原始的代价函数后面加一个正则化项。

b) 数据扩增,可以扩充数据集中图像的数量,或者采用数据增强的手段来扩充数据,如增加随机噪声,对图片进行旋转、裁剪、改变亮度值等。

c) Droupout,在训练的过程中,随机的选择一些神经元抛弃其输出的特征信息,相当于是对一层网络的输出信息进行采样。

d) Early stopping,在训练的过程中,发现验证集损失出现增大趋势的时候及时停止训练,这样可以减轻过拟合情况。


过拟合问题

相应的欠拟合就是在训练数据和验证数据集上都无法达到很好的准确率,同样采用上面的分类问题作为例子,如下图,可以看出训练出来的拟合曲线并不能很好的拟合分类边界,因此在训练集上也无法达到很好的效果,对于欠拟合问题,可以选择增加模型的拟合能力来解决。


欠拟合问题

    对于过拟合和欠拟合,我们可以采取下图方法进行初步判断是否过拟合或者欠拟合,当然是否真的属于判断出来的情况,需要结合训练过程中损失和准确率等的变化来具体判断。

过拟合和欠拟合的简单判断依据

11、归一化处理

    简单来说,数据归一化处理就是把输入的图像数据进行处理,使得数据限定在一定范围内,常见的范围是[0,1]和[-1,1]。归一化处理可以提升训练模型的收敛速度,训练精度以及防止梯度爆炸。

12、数据增强

图像数据增强是用于图像数据样本扩充的一种方法,增加训练的数据量能够提高模型的泛化能力。常见的数据增强手段如下:

a) 翻转(flip),对图片进行水平翻转和垂直翻转;

b) 旋转(rotation),旋转的时候一定要考虑到图片的尺寸大小问题,否则旋转之后的图像大小可能会发生改变;

c) 裁剪(crop),从图像中选择一部分,裁剪出来得到新的图像;

d) 增加噪声,可以用来减弱高频特征对模型的影响;

e) 颜色增强,可以改变图像的饱和度、亮度、对比度等。

13、CNN网络的训练过程

a) 初始化网络权重。

b) 获取当前网络权重和输入数据。

c) 前向传播计算预测值。

d) 根据预测值和实际值计算loss,准确率等。

e) 反向传播优化网络权重。

f) 继续b到e的过程,直到迭代结束。

14、混淆矩阵

混淆矩阵是一个常见的评估模型的方法,如下图所示

根据混淆矩阵我们可以计算出精确率(P)、召回率(R)、特异度(Specificity)和F1 Score四个指标,如下图所示




文章中部分答案参考:

https://zhuanlan.zhihu.com/p/40590443

https://www.zhihu.com/question/22298352

https://blog.csdn.net/xvshu/article/details/81302441

你可能感兴趣的:(深度学习面试知识点总结)