文章目录

  • 1.画出在二元输入的情况下,表示异或逻辑的网络图
  • 2.写出Sigmoid,tanh,relu的激活函数及对应导数
  • 3.为什么Sigmoid和tanh函数会导致梯度消失?
  • 4.ReLU系列的激活函数相对于Sigmoid和Tanh函数的优点是什么,有什么局限性?如何改进?
  • 5. 为什么引入非线性激励函数?
  • 6.如何选择合适的激活函数?
  • 6.多层感知机的前向传播与后向传播过程
    • 6.1 多层感知机反向传播算法推导
  • 7.平方误差损失函数和交叉熵损失函数分别适合什么场景?
  • 8.神经网络参数是否可以初始化为同一个值,为什么?
  • 9.请介绍Dropout,并分析dropout抑制过拟合的工作原理
    • 9.1 什么是Dropout?
    • 9.2 dropout抑制过拟合的工作原理
    • 9.3 dropout内部是怎么实现只让部分信号通过并不更新其余部分
  • 10.为什么需要进行批量归一化?
  • 11.批量归一化在卷积神经网络中是如何使用的?
  • 12.CNN中的权值共享是什么?为什么CNN要用权值共享?
    • 12.1 CNN中的权值共享是什么?
    • 12.2 为什么CNN要用权值共享?
  • 13.CNN中的局部连接是什么?为什么CNN要用局部连接?
    • 13.1 CNN中的局部连接是什么?
    • 13.2 为什么CNN要用局部连接?
  • 14.CNN中卷积层中的操作有哪些?
    • 14.1 Padding
    • 14.2 Stride
    • 14.3 多通道计算
  • 15.CNN中池化层中的操作有哪些?
    • 15.1池化的作用是什么?
  • 16.卷积神经网络如何用于文本分类任务?
  • 17.CNN出现梯度消失怎么办?
  • 18.增加神经网络层数有什么用?
  • 19.ResNet的提出背景是什么?其核心理论是什么?
    • 19.1 ResNet的提出背景是什么?
    • 19.2 Resnet的核心理论是什么?

这是一份精心总结的关于前馈神经网络面试中常见问题,如果对您有帮助的话,不妨点赞、收藏、关注!!!



插眼:

  • 百面机器学习—1.特征工程
  • 百面机器学习—2. 特征工程与模型评估要点总结
  • 百面机器学习—3.逻辑回归与决策树要点总结
  • 百面机器学习—4.SVM模型基础知识
  • 百面机器学习—5.SVM要点总结
  • 百面机器学习—6.PCA与LDA要点总结
  • 百面机器学习—7.K均值算法、EM算法与高斯混合模型要点总结
  • 百面机器学习—8.概率图模型之HMM模型
  • 百面机器学习—9.前馈神经网络面试问题总结
  • 百面机器学习—10.循环神经网络面试问题总结
  • 百面机器学习—11.集成学习(GBDT、XGBoost)面试问题总结
  • 百面机器学习—12.优化算法

1.画出在二元输入的情况下,表示异或逻辑的网络图


其中,Z1Z_1Z1​和Z2Z_2Z2​是两个隐藏单元
在隐藏单元Z1Z_1Z1​中,XXX和YYY的输入权重均为1,偏置为-1,H1=X+Y−1H_1=X+Y-1H1​=X+Y−1,Z1=max(0,H1)Z_1=max(0,H_1)Z1​=max(0,H1​)
在隐藏单元Z2Z_2Z2​中,XXX和YYY的输入权重均为-1,偏置为1,H2=−X−Y+1H_2=-X-Y+1H2​=−X−Y+1,Z2=max(0,H2)Z_2=max(0,H_2)Z2​=max(0,H2​)
Z=−Z1−Z2+1=XxorYZ=-Z_1-Z_2+1=X xor YZ=−Z1​−Z2​+1=XxorY

2.写出Sigmoid,tanh,relu的激活函数及对应导数


3.为什么Sigmoid和tanh函数会导致梯度消失?


由图像我们可知,当zzz取很大或者很小时,f′(z)f'(z)f′(z)都趋近于0,出现梯度消失的现象。

Sigmoid和tanhSigmoid和tanhSigmoid和tanh函数都是饱和函数
右饱和:
当x趋向于正无穷时,函数的导数趋近于0,此时称为右饱和。
左饱和:
当x趋向于负无穷时,函数的导数趋近于0,此时称为左饱和。
饱和函数和非饱和函数:
当一个函数既满足右饱和,又满足左饱和,则称为饱和函数,否则称为非饱和函数。

Sigmoid和tanhSigmoid和tanhSigmoid和tanh函数比较:
  对于隐藏层的激活函数来说,tanh函数要比sigmoid函数表现更好一些,因为tanh函数的取值范围在[-1,1]之间,隐藏层的输出被限定在[-1,1]之间,可以看成是在0值附近分布,均值为0。这样从隐藏层到输出层,数据起到了归一化的效果。

4.ReLU系列的激活函数相对于Sigmoid和Tanh函数的优点是什么,有什么局限性?如何改进?

优点:

  1. 从计算角度来说,Sigmoid和tanhSigmoid和tanhSigmoid和tanh激活函数均需要计算指数,复杂度高,而ReLUReLUReLU激活函数只需要一个阈值即可得到激活值
  2. ReLUReLUReLU激活函数的非饱和性可以有效的解决梯度消失的问题,提供相对较宽的激活边界
  3. ReLUReLUReLU的单侧抑制提供了网络的稀疏表达能力

    稀疏表达约束深度网络大部分神经元节点处于抑制状态,即输出值为0;只有少数神经元处于活跃状态,输出值非0。稀疏表示的目的就是希望通过少量的神经元来辨识出输入模式内部的驱动要素,在提取出驱动要素的过程中降低网络的计算复杂度。

局限性:
  ReLUReLUReLU激活函数的局限性在于其训练过程中会导致神经元死亡的问题。在实际训练中,如果学习率( Learning Rate ))设置较大,使得某个神经元的ReLu 输入为负数,由于函数f(z)=max(0,z)f(z) = max(0,z)f(z)=max(0,z)导致负梯度在经过该ReLU单元时被置为0,且在之后也不被任何数据激活,会导致超过一定比例的神经元不可逆死亡,进而参数梯度无法更新,整个训练过程失败。
如何改进:
  为了解决这个问题,设计了ReLUReLUReLU的变种LeakyReLULeaky ReLULeakyReLU,其形式表达为:

两者的区别在于:当z<0z<0z<0时其值不为0,而是一个斜率为aaa的线性函数,一般aaa为一个很小的正常数,这样既实现了单侧抑制,又保留了部分负梯度信息以致不完全丢失。但另一方面,aaa值的选择增加了问题难度,需要较强的人工先验或多次重复训练以确定合适的参数值。基于此,人们又设计出参数化的PReLUPReLUPReLU,它与LReLULReLULReLU的主要区别是将负轴部分斜率aaa作为网络中一个可学习的参数,进行反向传播训练,与其他含参数网络层联合优化。

5. 为什么引入非线性激励函数?

  因为如果不用非线性激励函数,每一层都是上一层的线性函数,无论神经网络多少层,输出都是输入的线性组合,所以引入非线性激励函数,深层网络就变得有意义了,可以逼近任意函数。

6.如何选择合适的激活函数?

  如果是分类问题,输出层的激活函数一般会选择Sigmoid函数或者Softmax激活函数,因为二分类问题的输出取值为{0,1},隐藏层点的激活函数,tanh函数会比sigmoid函数表现好一点,实际工程中,通常会使用ReLUReLUReLU和LeakyReLULeaky ReLULeakyReLU函数,保证梯度下降速度不会太小。

Softmax函数的主要作用是将输出类别转换为每一种类型的“概率”。输出特征所属的类别即为概率值最大所对应的分类。

softmax函数在实现时需要注意指数计算的溢出问题,可以通过输入信号减去输入层的最大值后进行计算,防止溢出

  如果是回归问题,输出层的激活函数一般会选择恒等函数,函数会将输入按照原样输出,对于输入信息不做任何改动,隐藏层的激活函数选择与分类问题一样。

6.多层感知机的前向传播与后向传播过程

  在网络训练过程中,输入信号通过隐藏层产生输出的过程为前向传播,前向传播最终产生一个标量损失函数。反向传播算法则是将损失函数的信息沿网络层向后传播用以计算梯度,达到优化网络参数的目的。以二层隐藏层的神经网络为例:
前向传播:

Z1=W1X+b1Z_1=W_1X+b_1Z1​=W1​X+b1​
H1=relu(Z1)H_1=relu(Z_1)H1​=relu(Z1​)
其中,W1W_1W1​是从输入层到隐藏层的参数,b1b_1b1​是其biasbiasbias项,这里,我们展示一下维度的变换,
假设第一层隐藏层hidden_size=20,W1W_1W1​的维度是(20,2),b1b_1b1​的维度是(20,1)

第二层隐藏层hidden_size=5,由于Z1Z_1Z1​的维度为(20,1),则W2W_2W2​的维度为(5,20),b2b_2b2​的维度为(5,1),Z2Z_2Z2​的维度为(5,1)
Z2=W2H1+b2Z_2=W_2H_1+b_2Z2​=W2​H1​+b2​
H2=relu(Z2)H_2=relu(Z_2)H2​=relu(Z2​)

最后一层输出层为:
Z3=W3H2+b3Z_3=W_3H_2+b_3Z3​=W3​H2​+b3​
y^=sigmoid(Z3)\hat{y}=sigmoid(Z_3)y^​=sigmoid(Z3​)
最后得到的y^\hat{y}y^​是一个标量值。

6.1 多层感知机反向传播算法推导

  这里首先介绍两个损失函数:平方误差损失函数与交叉熵损失函数
交叉熵损失函数:
  对于单个样本来说,交叉熵损失函数如下:

  对于mmm个样本来说,在二分类情景下,交叉熵损失函数如下:

损失函数的最后加了一个L2正则项,进行一个权重的衰减,防止过拟合,该项之前的λ\lambdaλ为权重衰减系数,用于控制损失函数中两项的相对权重。
平方差损失函数:
  对于mmm个样本来说,平方差损失函数如下:
J(W,b)=12m∑i=1m(y(i)−y^(i))2+λ2∣∣w∣∣2J(W,b)=\frac{1}{2m}\sum_{i=1}^{m}(y^{(i)}-\hat{y}^{(i)})^2+\frac{\lambda}2||w||^2J(W,b)=2m1​∑i=1m​(y(i)−y^​(i))2+2λ​∣∣w∣∣2
  然后,讨论一下,为什么要反向传播进行求导,那能不能进行前向传播的求导,然后对梯度进行更新呢?答案是可以的,但是这会造成大量的重复的求导运算,会导致训练非常慢,而反向传播求导就没有这个问题。
  接下来,以这个网络为例,进行反向传播公式的推导:

  损失函数为:

  前向传播过程为:
Z1=W1X+b1Z_1=W_1X+b_1Z1​=W1​X+b1​
H1=relu(Z1)H_1=relu(Z_1)H1​=relu(Z1​)
Z2=W2H1+b2Z_2=W_2H_1+b_2Z2​=W2​H1​+b2​
H2=relu(Z2)H_2=relu(Z_2)H2​=relu(Z2​)
Z3=W3H2+b3Z_3=W_3H_2+b_3Z3​=W3​H2​+b3​
y^=sigmoid(Z3)\hat{y}=sigmoid(Z_3)y^​=sigmoid(Z3​)
  反向传播的核心思想就是:运用链式求导法则,在对w,bw,bw,b进行求导之前,需要先对zzz进行求导。下面有的式子为了直观没有写出对矩阵求导的转置。


7.平方误差损失函数和交叉熵损失函数分别适合什么场景?

  一般来说,平方误差损失函数更适合输出为连续(回归问题),并且最后一层不含Sigmoid或 Softmax激活函数的神经网络;交叉嫡损失则更适合二分类或多分类的场景。那为什么平方误差损失函数不适合最后一层不含Sigmoid或 Softmax激活函数的神经网络呢?
平方误差损失函数相对于输出层的导数为:

8.神经网络参数是否可以初始化为同一个值,为什么?

  不可以。以全连接的深度神经网络为例,同一层中的任意神经元都是同构的,它们拥有相同的输入和输出,如果再将参数全部初始化为同样的值,那么无论前向传播还是反向传播的取值都是完全相同的。学习过程将永远无法打破这种对称性,最终同一网络层中的各个参数仍然是相同的。因此,我们需要随机地初始化神经网络参数的值,以打破这种对称性。我们可以初始化参数为取值范围(−1d,1d)(-\frac{1}{\sqrt{d}},\frac{1}{\sqrt{d}})(−d​1​,d​1​),的均匀分布,其中ddd是一个神经元接受的输入维度。偏置可以被简单地设为0,并不会导致参数对称的问题。

# weight参数初始化
weight = {}
layer_dims = [2,20,5,1]
for d in range(1,len(layer_dims)):weight['W'+str(d)] = np.random.randn(layer_dims[d],layer_dims[d-1]) / np.sqrt(layer_dims[d-1])

9.请介绍Dropout,并分析dropout抑制过拟合的工作原理

9.1 什么是Dropout?

  Dropout是指在深度网络的训练中,以一定的概率ppp随机地“临时丢弃”一部分神经元节点(即以一定概率使部分神经元节点随机失活)。具体来讲,Dropout作用于每份小批量训练数据,由于其随机丢弃部分神经元的机制,相当于每次迭代都在训练不同结构的神经网络。Dropout在小批量级别上的操作,提供了一种轻量级的 Bagging 集成近似,能够实现指数级数量神经网络的训练与评测。

Dropout可被认为是一种实用的大规模深度神经网络的模型集成算法。这是由于传统意义上的Bagging涉及多个模型的同时训练与测试评估,当网络与参数规模庞大时,这种集成方式需要消耗大量的运算时间与空间。

9.2 dropout抑制过拟合的工作原理

  Dropout的具体实现中,要求某个神经元节点激活值以一定的概率p被“丢弃”,即该神经元暂时停止工作。

因此,对于包含NNN个神经元节点的网络,在 Dropout的作用下可看作为2N2^N2N个模型的集成。这2N2^N2N个模型可认为是原始网络的子网络,它们共享部分权值,并且具有相同的网络层数,而模型整体的参数数目不变,这就大大简化了运算。对于任意神经元,每次训练中都与一组随机挑选的不同的神经元集合共同进行优化,这个过程会减弱全体神经元之间的联合适应性,减少过拟合的风险,增强泛化能力。

9.3 dropout内部是怎么实现只让部分信号通过并不更新其余部分

  标准网络与Dropout网络对比如下:

原始网络对应的前向传播公式为:

Dropout网络对应的前向传播公式为:


上面的 Bernoulli 函数的作用是以概率系数p随机生成一个取值为0或1的向量,代表每个神经元是否需要被丢弃。如果取值为0,则该神经元将不会计算梯度或参与后面的误差传播。

10.为什么需要进行批量归一化?

  神经网络训练过程的本质是学习数据分布,如果训练数据与测试数据的分布不同将大大降低网络的泛化能力,因此我们需要在训练开始前对所有输入数据进行归一化处理。然而随着网络训练的进行,每个隐层的参数变化使得后一层的输入发生变化,从而每一批训练数据的分布也随之改变,致使网络在每次迭代中都需要拟合不同的数据分布,增大训练的复杂度以及过拟合的风险。批量归一化可以看做是在每一层输入和上一层输出之间加入一个计算层,这个计算层的作用就是归一化处理,将所有批数据强制在统一的数据分布下,从而增强模型的泛化能力。

批量归一化,虽然增强了模型的泛化能力,但同时降低了模型的拟合能力。因此,在批量归一化的具体实现中引入了变量重构以及可学习参数γ\gammaγ和β\betaβ,γ\gammaγ和β\betaβ变成了该层的学习参数,仅用两个参数就可以恢复最优的输入数据分布。
完整的批量归一化网络层前向传播公式:

11.批量归一化在卷积神经网络中是如何使用的?

  批量归一化在卷积神经网络中应用时,需要注意卷积神经网络的权值共享机制。每一个卷积核的参数在不同位置的神经元当中是共享的,因此也应该被一起归一化。具体实现中,假设网络训练中每一批包含b个样本,由一个卷积核生成的特征图的宽高分别为w和h,则每个特征图所对应的全部神经元个数为b×w×h;利用这些神经元对应的所有输入数据,我们根据一组待学习的参数γ\gammaγ和β\betaβ对每个输入数据进行批量归一化操作。如果有f个卷积核,就对应f个特征图和f组不同的γ\gammaγ和β\betaβ参数。
  为什么卷积层会有多个卷积核呢?因为权值共享意味着每一个卷积核只能提取到一种特征,为了增加CNN的表达能力,需要设置多个卷积核。但是,每个卷积层中卷积核的个数是一个超参数。

12.CNN中的权值共享是什么?为什么CNN要用权值共享?

12.1 CNN中的权值共享是什么?

  在卷积神经网络中,卷积核中的每一个元素将作用于每一次局部输入的特定位置上。根据参数共享的思想,我们只需要学习一组参数集合,而不需要针对每个位置的每个参数都进行优化,从而大大降低了模型的存储需求。

12.2 为什么CNN要用权值共享?

  减少参数数量,使运算变得简洁、高效,能够在超大规模数据集上运算。

13.CNN中的局部连接是什么?为什么CNN要用局部连接?

13.1 CNN中的局部连接是什么?

  所谓局部连接,就是卷积层的节点仅仅和其前一层的部分节点相连接,只用来学习局部特征。在图像中,距离较近的像素间相关性强,距离较远则相关性就比较弱,图像的特征是局部强相关。因此,局部感知采用部分神经元接受图像信息,再通过综合全部的图像信息达到增强图像信息的目的。假设网络中相邻两层分别具有mmm个输入和nnn个输出,那么全连接网络中的权值参数矩阵将包括m×nm×nm×n个参数。如果采用局部连接,比如限定每一个输出与前一层神经元的连接数为kkk,那么该层的参数总量为k×nk×nk×n。若kkk远小于nnn,则参数量将小几个数量级,过拟合情况得到改善。

13.2 为什么CNN要用局部连接?

  局部连接的方式大幅减少了参数数量,加快了学习速率,同时也在一定程度上减少了过拟合的可能。

14.CNN中卷积层中的操作有哪些?

    卷积的过程就是提取特征的过程,随着卷积神经网络深度的增加,能提取到越来越高级的特征,也更接近事物的本质。一般来说,高级特征能够用在不同类别事物的分类中,而低级特征能够用于同类事物的分类。
    在卷积层中,通常包含多个可学习的卷积核,上一层输出的特征图与卷积核进行卷积操作,即输入项与卷积核之间进行点积运算,然后将结果送入激活函数,就可以得到输出特征图。每一个输出特征图可能是组合卷积多个输入特征图的值。
  卷积层l的第j单元的输出值 alj的计算公式为:

其中 ajla_{j}^{l}ajl​表示选择的输入特征图的集合,k表示可学习的卷积核。下图展示了卷积过程。

通常把卷积核k看作一个滑动窗口,这个滑动窗口以设定的步长向前滑动。这里输入图像的大小是5×5即M=5,卷积核大小为3×3即k=3,步长为1即s=1,根据卷积层输出计算公式

可以计算输出图像的大小N=3。
该卷积过程:5×5输入图像与3×3卷积核进行卷积,得到3×3的输出图像。
这样的卷积存在两个缺点:

  • 每次卷积都会导致图像尺寸的变小,如果图像很小、进行卷积的次数很多,最后可能只会剩下一个像素
  • 输入图像的矩阵边缘像素只被计算过一次,而中间像素被卷积计算多次,这就意味着丢失图像边缘信息。为了解决这两个问题,就需要对输入图像进行填充(Padding)
14.1 Padding


    输入图像矩阵周围填充一层像素,通常填充的元素为0,填充的像素数为1即P=1。边缘像素在被填充后,不再是边缘像素,可以被计算多次。输出图像中边缘像素是受输入图像边缘像素的影响,削弱了边缘信息丢失的缺点。另外,根据卷积层计算公式计算得输出卷积特征图变为5×5,与图像尺寸大小相同,解决了卷积会使图像变小的缺点。
常见的填充方式有Valid和Same填充

  • Valid填充
    不使用填充,即使用M×M的图像与k×k的卷积核相卷积,若步长为1,此时,输出为(M-k+1)
  • Same填充
    通过填充使得输出的卷积特征图尺寸与输入图像尺寸相等,此时填充宽度P=(k-1)/2,但卷积核为奇数

    在计算机视觉领域,k通常是奇数,一方面可以保证使用 Same 填充时填充像素数P是整数,对原图片的填充是对称的;另一方面奇数宽度的卷积核具有一个中心像素点,可以表示卷积核的位置。

14.2 Stride


    stride是指卷积核在输入上移动时每次移动的距离,直接上图来说明。其中按红框来移动的话stride = 1;按蓝色框来移动的话stride = 2。加入stride后,假设输入大小为M×M,卷积核大小为k×k,stride=s,padding=p,卷积层输出计算公式为

可以通过stride来完成降维操作。

14.3 多通道计算

    卷积核除了长宽这两个参数之外还有通道数这个参数,首先需要明确的是单个卷积核的通道数要等于图像的通道数,一般图像是RGB模式的话,卷积核的大小为h×w×3。只有一个卷积核的时候,图像经过卷积计算后的结果通道数是一维的,计算方法也简单粗暴。每个通道的对应位置相乘然后,不同通道数之间相加。

15.CNN中池化层中的操作有哪些?

  常用的池化操作主要针对非重叠区域,包括均值池化( meanpooling )、最大池化( max pooling )等。其中均值池化通过对邻域内特征数值求平均来实现,能够抑制由于邻域大小受限造成估计值方差增大的现象,特点是对背景的保留效果更好。最大池化则通过取邻域内特征的最大值来实现,能够抑制网络参数误差造成估计均值偏移的现象,特点是更好地提取纹理信息。随机池化虽然可以保留均值池化的信息,但是随机概率值确是人为添加的,随机概率的设置对结果影响较大,不可估计。

均值池化是对所有特征点求平均值,而最大值池化是对特征点的求最大值。而随机池化则介于两者之间,通过对像素点按数值大小赋予概率,再按照概率进行亚采样,在平均意义上,与均值采样近似,在局部意义上,则服从最大值采样的准则。


15.1池化的作用是什么?

  池化操作除了能显著降低参数量外,还能够保持对平移、伸缩、旋转操作的不变性。池化层利用图像局部相关的原理,对图像进行下采样,在减小数据量的同时也保留了有用的信息。

16.卷积神经网络如何用于文本分类任务?

  卷积神经网络的特殊性体现在局部连接与权值共享,可以捕捉局部特征。对于文本来说,局部特征就是由若干单词组成的滑动窗口,类似于N-gram。卷积神经网络的优势在于能够自动地对N-gram特征进行组合和筛选,获得不同抽象层次的语义信息。由于在每次卷积中采用了共享权重的机制,因此它的训练速度相对较快,在实际的文本分类任务中取得了非常不错的效果。下面举例介绍卷积神经网络进行文本分类任务

  1. 输入层是一个N×K的矩阵,其中N为文章所对应的单词总数,K是每个词对应的表示向量的维度。每个词的K维向量可以是预先在其他语料库中训练好的,也可以作为未知的参数由网络训练得到。这两种方法各有优势,一方面,预先训练的词嵌入可以利用其他语料库得到更多的先验知识;另一方面,由当前网络训练的词向量能够更好地抓住与当前任务相关联的特征。因此,图中的输入层实际采用了两个通道的形式,即有两个N×K的输入矩阵,其中一个用预先训练好的词嵌入表达,并且在训练过程中不再发生变化;另外一个也由同样的方式初始化,但是会作为参数,随着网络的训练过程发生改变。
  2. 第二层为卷积层。在输入的N×K维矩阵上,我们定义不同大小的滑动窗口进行卷积操作,若滑动窗口为3×K,则每次在2×K的滑动窗口上进行卷积,并得到N-2个结果,再将这N-2个结果拼接起来得到N-2维的特征向量。每一次卷积操作相当于一次特征向量的提取,通过定义不同的滑动窗口,就可以提取出不同的特征向量,构成卷基层的输出。
  3. 第三层为池化层,比如图中所示的网络采用了1-Max池化,即为从每个滑动窗口产生的特征向量中筛选出一个最大的特征,然后将这些特征拼接起来构成向量表示。也可以选用K-Max池化(选出每个特征向量中最大的K个特征),或者平均池化(将特征向量中的每一维取平均)等,达到的效果都是将不同长度的句子通过池化得到一个定长的向量表示。
  4. 得到文本的向量表示之后,后面的网络结构就和具体的任务相关了。本例中展示的是一个文本分类的场景,因此最后接入了一个全连接层,并使用Softmax激活函数输出每个类别的概率。

17.CNN出现梯度消失怎么办?

  过多的层数会导致梯度消失,解决手段有减少层数;增大学习率;用Relu代替sigmoid

18.增加神经网络层数有什么用?

  深度神经网络的层数决定模型的质量,已经证明,增加神经网络层数,可以增加模型泛化能力,即训练数据集和测试数据集都表现得更好。但是更多的层数,不一定能保证有更好的表现。随着神经网络层数的加深,越来越陷入局部最优解。同时,随着网络层数的增加,梯度消失问题也越来越严重,这是因为梯度在反向传播时会逐渐衰减。影响模型的泛化效果。梯度消失问题意味着无法通过加深网络层次来改善神经网络的预测效果,因为无论如何加深网络,只有靠近输出的若干层才真正起到学习的作用
梯度消失与梯度膨胀,以及6种解决措施

当梯度由L层传播到第一个隐藏层时,会涉及非常多参数和导数的连乘,这时误差就很容易消失或膨胀,这就造成梯度的消失或膨胀,影响该层参数的学习,造成模型的拟合和泛化能力差。
1.梯度消失
根据链式法则,如果每一层神经元对上一层的输出的偏导乘上权重结果都小于1的话,那么即使这个结果是0.99,在经过足够多层传播之后,误差对输入层的偏导会趋于0。
这种情况会导致靠近输入层的隐含层神经元调整极小。
2.梯度膨胀
根据链式法则,如果每一层神经元对上一层的输出的偏导乘上权重结果都大于1的话,在经过足够多层传播之后,误差对输入层的偏导会趋于无穷大。
这种情况又会导致靠近输入层的隐含层神经元调整变动极大。

19.ResNet的提出背景是什么?其核心理论是什么?

19.1 ResNet的提出背景是什么?

  ResNet的提出背景是解决或缓解深层的神经网络训练中的梯度消失问题。

19.2 Resnet的核心理论是什么?

  既然浅层神经网络不容易出现这些梯度现象,那么可以尝试给深层神经网络添加一种回退到浅层神经网络的机制。当深层神经网络可以轻松地回退到浅层神经网络时,深层神经网络可以获得与浅层神经网络相当的模型性能,而不至于更糟糕。通过在输入和输出之间添加一条直接连接的Skip Connection 可以让神经网络具有回退的能力。

以VGG13 深度神经网络为例,假设观察到VGG13 模型出现梯度弥散现象,而10 层的网络模型并没有观测到梯度弥散现象,那么可以考虑在最后的两个卷积层添加SkipConnection,通过这种方式,网络模型可以自动选择是否经由这两个卷积层完成特征变换,还是直接跳过这两个卷积层而选择Skip Connection,亦或结合两个卷积层和Skip Connection 的输出


Basic Block:反向传播时,梯度将涉及两层参数的交叉相乘,可能会在离输入近的网络层中产生梯度消失的现象。ResNet把网络结构调整为,既然离输入近的神经网络层较难训练,那么我们可以将它短接到更靠近输出的层,提供了一种深层次网络退化为浅层次网络的能力。


如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论或者私信!


百面机器学习—9.前馈神经网络面试问题总结相关推荐

  1. 百面机器学习!算法工程师面试宝典!

    本文部分内容经授权节选自<百面机器学习> 责编 | 胡巍巍 去年年底到今年年初,整个互联网圈,都笼罩着裁员的阴霾. 以至于很多程序员,都不敢看新闻了. 前段时间,SOHO中国董事长潘石屹, ...

  2. 百面机器学习!算法工程师面试宝典!| 码书

    本文部分内容经授权节选自<百面机器学习> 责编 | 胡巍巍 去年年底到今年年初,整个互联网圈,都笼罩着裁员的阴霾. 以至于很多程序员,都不敢看新闻了. 但是,昨天SOHO中国董事长潘石屹, ...

  3. 百面机器学习—7.K均值算法、EM算法与高斯混合模型要点总结

    文章目录 一.总结K均值算法步骤 二.如何合理选择K值? 三.K均值算法的优缺点是什么? 四.如何对K均值算法进行调优? 五.EM算法解决什么问题? 六.EM算法流程是什么? 六.EM算法能保证收敛嘛 ...

  4. 百面机器学习—4.SVM模型基础知识

    文章目录 引言 一.间隔与支持向量 1.什么是线性可分? 2.什么是超平面?什么是最大间隔超平面? 3.什么是支撑向量? 4.SVM最优化问题 二.对偶问题 1.约束条件下的目标函数如何求解最优化问题 ...

  5. 《百面机器学习算法工程师带你去面试》资料学习

    <百面机器学习算法工程师带你去面试>收录了超过100道机器学习算法工程师的面试题目和解答,其中大部分源于Hulu算法研究岗位的真实场景.本书从日常工作.生活中各种有趣的现象出发,不仅囊括了 ...

  6. 个人面试问答题知识库(一)百面机器学习篇

    第二篇(基础模型篇)已更新!        在前段时间的校招应聘经历中,我发现有时候即使面试官问的问题基本都回答上来了,最后还是没有通过面试,这固然跟自己是非科班.没有论文和相关实习经历有关,但自己的 ...

  7. 机器学习与高维信息检索 - Note 5 - (深度)前馈神经网络((Deep) Feedforward Neural Networks)及基于CVXOPT的相关实例

    Note 5 - (深度)前馈神经网络((Deep) Feedforward Neural Networks)及相关实例 5.1 FNN的定义和动机 粗略地说,前馈神经网络(FNN)是一种特殊的函数类 ...

  8. 机器学习——前馈神经网络

    一.神经网络基础 1. 神经元模型 神经网络中最基本的单元是神经元模型(neuron). 细胞体分为两部分,前一部分计算总输入值(即输入信号的加权和,或者说累积电平),后一部分先计算总输入值与该神经元 ...

  9. “降维算法”面试知识点总结-PCA+LDA算法-百面机器学习系列4

    提示:在准备机器学习算法工程师面试的过程中,我主要参考<百面机器学习>去巩固自己的基础知识.本系列博客将以该书为主题,并以八股文的方式去概述整本书的内容,以尽量减少读者们的阅读作量,并方便 ...

  10. 百面机器学习--机器学习面试问题系列(四)降维

    本文是在学习<百面机器学习 算法工程师带你去面试>过程中的学习笔记,将面试问题进行记录以方便查阅,根据目录分成系列.持续更新中- 目录 1. PCA最大方差理论 2. PCA最小平方误差理 ...

最新文章

  1. ASP.NET 网页- WebGrid 帮助器简介
  2. Spring JDBC-事务方法嵌套调用解读
  3. 如何oracle数据库用户名和密码,Oracle数据库用户名及密码查询
  4. 使用 Rxjs 解决 Angular Component 之间的通信问题
  5. 做「容量预估」可没有true和false
  6. java 写入环境变量_Java环境变量配置 - import_key的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. cassandra_Apache Cassandra和低延迟应用程序
  8. oracle数据库日志关闭,oracle数据库关闭日志
  9. ipop映射到ftp服务器,设备作为FTP客户端进行文件传输-IPOP
  10. 最新全国五级行政区划json文件下载链接 全国最新统计用区划代码和城乡划分代码使用指南
  11. 推荐几款代码检查工具,淘宝开源代码质量检测工具
  12. PMP-PMBOK(第六版)--49个过程ITTO汇总
  13. 【javaIO流】--->IO流解析
  14. 电脑知识:电脑被黑客攻击,那么如何电脑判断沦为“肉鸡”?
  15. 尼尔机器人技能快捷键_《尼尔:机械部队》组合按键技能使用攻略
  16. 迅雷和BT有什么区别?迅雷是不是不毁硬盘?速度快吗?
  17. kengoro机器人哪儿有卖_日本东京大学创造出“骨格精奇”的机器人Kengoro 会流汗能做掌上压...
  18. wechatExtension老助手提示无法安装
  19. python爬虫(1)-百度新闻首页抓取
  20. 【编译原理】WHILE循环语句的翻译程序设计与实现(递归下降法、输出四元式)(赋值语句的词法分析、语义分析)

热门文章

  1. Web播放器学习笔记(二) 1 Bit Audio Player
  2. C++实现字符串数组的计数功能总结
  3. wait(), notify(), notifyAll()等方法介绍
  4. hdu2046-饭卡
  5. 中国大数据市场规模分析及预测
  6. 海思hi3518 移植live555 实现H264的RTSP播放
  7. C++中关于指针入门的最好的文章
  8. 笔记本电脑触摸板的正确使用方法 --转摘
  9. 算法题:括号匹配(小中大括号序列)
  10. 小程序把图片转换成base64