深度学习常见问题答案

 

1  神经网络中 Dropout 的作用?具体是怎么实现的?

  • 防止过拟合.
  • Dropout 是指在深度学习模型训练过程中,以特定的概率随机让部分神经元处于失活状态,即不参与训练;对于 SGD 来说, 因为是随机失活, 所以每一个mini-batch都在训练不同的网络, 可以起到防止过拟合的作用。

2  请列举几种常见的激活函数。激活函数有什么作用?

  • Sigmoid* ReLU* Tanh 
  • 作用:非线性变换激活函数的主要作用是使网具有非线性拟合能力,如果没有激活函数,那么神经网络只能拟合线性映射, 即便是有再多的隐藏层,整个网络跟单层神经网络等价。因此,只有加入激活函数后,神经网络才具备了非线性的学习能

3 卷积神经网络 CNN 中池化层有什么作用?

保留主要的特征同时减少参数和计算量,防止过拟合, 提高模型能力

  • 池化层主要作用是对输入的特征图进行缩小,同时保留主要的特征信息,减少参数和计算量。具体来说,池化层通过对输入特征图进行下采样(即缩小)操作,可以减小特征图的维度,降低计算量,同时可以保留主要的特征信息,提高模型的泛化能力,防止过拟合现象的出现。
  • 另外,池化层还有一些其他的作用。例如,它可以帮助网络提取更加鲁棒的特征,使得网络对于不同的输入数据具有更好的适应性。此外,池化层还可以增强网络的平移不变性,使得网络可以对于输入数据的位置变化具有一定的容忍度,从而提高网络的泛化能力

4 利用梯度下降法训练神经网络, 发现模型 loss 不变, 可能有哪些问题?怎么解决

很有能是梯度消失了,它表示神经网络迭代更新时,有些权值不更新的现象。改变激活函数,改变权值的初始化

原因:很有可能是梯度消失了

解决办法:改变激活函数,改变权值的初始化等。

5  相比 sigmoid 激活函数 ReLU 激活函数有什么优势?

    • 防止梯度消失(sigmoid 的导数只有在 0 附近的时候有比较好的激性,在正负饱和区的梯度都接近于 0)
    • ReLU 的输出具稀疏性
    • ReLU 函数简单计算速度快理由如下:sigmoid 激活函指数运算,计算量大;反向传播求误差梯度时,求导涉及除法,量相对大,而采用Relu 激活函数,整个过程的计算量节省很多。 
    • 对于深层网络,sigmoid  函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid 饱和区时,变换太缓慢,导数趋于0,这种况会造成信息丢失,从而无法完成深层网络的训练。
    • Relu 会使一部分神元的输出为0,这样就造成了网络的稀疏性,并且减少了参数相互依存关系,缓解了过拟合题的发生。

6  如何确定 CNN 的卷积核通道数和卷积输出层的通道数?

CNN  的卷积核道数 =  卷积输入层的通道数; CNN  的卷积输出层 通道数 =  卷积核的个数

7 Sigmoid、Tanh、ReLu 写出这三个激活函数的公式,以及对应的导数,并作出草图。并根据草图分析各有什么缺点或

不足,并描述有没改进的激活函数

 

(1)Sigmoid :

  1. 公式:

  1. 优点:
  • 输出范围有限:Sigmoid函数的输出值在0和1之间,可以将输入映射到概率分布,适用于二分类问题。
  • 平滑且可导:Sigmoid函数在整个输入范围内都是可导的,并且具有连续平滑的特性。
  1. 缺点:
  • 会有梯度弥散
  • 不是关于原点对称
  • 计算exp比较耗时
  1. 改进:
  • 使用其他激活函数替代:为了解决梯度消失和输出不零中心化的问题,可以考虑使用其他激活函数,如Tanh或ReLU。

  1. Tanh
  1. 公式:

 

  1. 缺点:
  • 会有梯度弥散
  • 计算exp比较耗时
  1. 优点:
  • 解决了原点对称问题
  • 比sigmoid更快
  • 平滑且可导:Tanh函数同样具有平滑和可导的特性。
  1. 改进:
  • 使用其他激活函数替代:为了克服梯度消失问题,可以考虑使用其他具有更好梯度特性的激活函数,如ReLU。

  1. ReLU:
  1. 公式:

  1. 缺点:
  • 梯度弥散没完全解决,在(-)部分相当于神经元死亡而且不会复活。
  1. 优点:
  • 解决了部分弥散问题:ReLU函数的导数在正区间上为常数1,不会出现梯度消失的问题。
  • 收敛速度更快:ReLU函数的非饱和性质可以加快网络的收敛速度。
  • 激活速度快:ReLU函数在正区间上的导数为常数,计算简单且速度快。
  1. 改进:
  • Leaky ReLU:Leaky ReLU引入一个小的负斜率,在负区间上也有非零的导数,解决了死亡ReLU问题。
  • Parametric ReLU (PReLU):PReLU引入可学习的参数,通过学习不同的斜率来适应不同的输入。
  • Exponential Linear Units (ELU):ELU在负区间上引入指数增长的特性,克服了ReLU的输出不是零中心化的问题。

 

答:

sigmoid 缺点:若激活值很大的时候或者很小,激活函数在其区域梯度很小使

得训练速度很慢。

Tanh 缺点:同上。

Tanh 优点:数据类似于集中于零左右。

ReLU 缺点:在零的时候不可导,若激活值小于零,梯度为零,使得训练速度

很慢,不过这种情况很少发生,有足够多的神经元使得其 z 值大于零。

改进:采用含虚弱的 ReLU 激活函数,即若小于零时,也让其有点梯度。比如

小于零时,激活函数为:0.01Z

8  如何解决 RNN 梯度爆炸问题

又是如何解决梯度消失问题的?

  1. 梯度爆炸
  1. 解决方案 : 就是当梯度大于一定阈值的的时候, 将它截断为一个较小的数,就是梯度剪裁

  1. 梯度消失

了解梯度消失的问题,我们介绍了两种方法。

  1. 第一种方法将随机初始化改为一个有关联的矩阵初始化。
  2. 第二种方法是使用 ReLU 代替 sigmoid 函数。 ReLU 的导数不是 0 就是 1因此,神经元的梯度将始终为 1,而不会当梯度传播了一定时间之后变小。

 

9  梯度下降法的神经网络容易收敛到局部最优,为什么应用广泛?

深度神经网络容易收敛到局部最优,很可能是一种想象, 实际情况 是,我们可能从来没有找到过部最优,更别说全局最优了。

10  简单说说 CNN 常用的几个模型

  1. LeNet-5
  1.  LeNet-5是第一个成功应用于实际图像识别任务的卷积神经网络模型,奠定了卷积神经网络的基础。
  1. AlexNet
  1. 引入了Relu和dropout,引入数据增强池化相互之间有覆盖,三个卷积一个最大池化+三个全连接层。
  1. VGGNet
  1. 采用了1*1和3*3的卷积核以及2*2的最大池化使得层数变得更深。常用VGGNet-16和VGGNet-19。
  1. Google Inception Net

这个在控制了计算量参数量的同时,获得了比较好的分类性能,和上面相比有几个大的改进:

  • 去除了最后的全连接层,而是用一个全局的平均池化来取代它;
  • 引入Inception Module,这是一个4个分支结合的结构。所有的分支都用到了1*1的卷积,这是因为1*1性价比很高,可以用很少的参数达到非线性和特征变换。
  • Inception V2第二版将所有的5*5变成2个3*3,而且提出来著名的BatchNormalization 。
  • Inception V3第三版就更变态了,把较大的二维卷积拆成了两个较小的1维卷积,加速运算、减少过拟合,同时还更改了Inception Module的结构。
  1. 微软ResNet(残差网络)
  1. 引入高速公路结构,可以让神经网络变得非常深
  2. ResNet第二个版本将ReLU激活图数变成y=x的线性函数

11    什么是 RNN,设计示意图,并给出相应的前向传播公式?

  1. 示意图

 

上图将循环神经网络进行展开成一个全神经网络。例如,对一个包含5 词的语句,那么展开的网络便是一个五层的神经网络, 每一层代表一个单。对于该网络的计算过程如下:

  • 1. xt 示第 t,t=1,2,3...(step)的输入。比如, x1 为第二个词的one-hot向量(根据上图, x0 为第一个词)
  • 2. st 为隐藏层的第 t 步的状态,它是网络的记忆单元st 根据当前输层的输出与上一步隐藏层的状态进行计算。 st=f(Uxt+Wst−1),其中f 一般是非线性的激活函数,如 tanh ReLU,在计算s0 时,即第一个单的隐藏层状态,需要用到s−1,但是其并不存在,在实现中一置为0 向量
  • ot 是第t 步的输出,如下个单词的向量表示,ot=softmax(Vst).

12  设计示意图解释 LSTM 网络,并根据示意图给出必要的公式!

 

 cell 的权重是共享cell 最上面的一条线的状态即 c(t) 代表了长时记忆,而下面的 h(t)则代表了工作记忆或短时记忆

暂时这么多。

LSTM功能主要由三扇门实现;

  • 遗忘门:决定了上一时刻的单元状态ct-1有多少保留到

当前时刻ct;

 

在LSTM中的第一步是决定我们会从细胞状态中丢弃什么信息。这个决定通过一个称为“忘记门”的 结构完成。该忘记门会读取上一个输出 和当前输入 ,做一个Sigmoid 非线性映射,然后输出一个向量  (该向量每一个维度的值都在0到1之间,1表示完全保留,0表示完全舍弃,相当于记住了重要的,忘记了无关紧要的),最后与细胞状态相乘。

 

  • 输入门:

下一步是确定什么样的新信息被存放在细胞状态中。这里包含两个部分:
    第一,sigmoid层称“输入门层”决定什么值我们将要更新;
第二,一个tanh层创建一个新的候选值向量
,会被加入到状态中。

 

 

  • 更新细胞状态

现在是更新旧细胞状态的时间了,更新为

 

 

把旧状态与相乘,丢弃掉我们确定需要丢弃的信息,接着加上。这就是新的候选值,根据我们决定更新每个状态的程度进行变化。

 

 

  • 输出门

首先,我们运行一个sigmoid层来确定细胞状态的哪个部分将输出出去。

接着,我们把细胞状态通过tanh进行处理(得到一个在-1到1之间的值)并将它和sigmoid门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。

 


在语言模型的例子中,这就是我们实际根据前面确定的目标,丢弃旧代词的性别信息并添加新的信息的地方,类似更新细胞状态。

13 简单 RNN 和 LSTM 神经网络输入输出究竟是怎样的?

对于RNN,每个时间步的输入是当前时刻的输入数据和上一时刻的隐藏状态,输出是当前时刻的隐藏状态。在序列任务中,通常是将最后一个时间步的隐藏状态作为模型的输出结果。

对于LSTM,每个时间步的输入包括当前时刻的输入数据和上一时刻的隐藏状态,还有一个记忆状态(memory cell)。LSTM通过门机制来控制信息的流动,包括遗忘门、输入门和输出门,它们决定了哪些信息需要被遗忘、哪些信息需要被加入记忆状态和哪些信息需要被输出。与RNN类似,LSTM的输出通常是最后一个时间步的隐藏状态。

RNN和LSTM的输入是序列数据,每个时间步上的输入是当前时间步的输入数据和隐藏状态。RNN的输出是隐藏状态序列,而LSTM的输出除了隐藏状态序列还包括记忆单元的输出。

 PPT

14  请详细介绍一下 RNN 模型的几种经典结构

  • N vs N

 

每一步使用的参数U、W、bV、c都是一样的,也就是说每个步骤的参数都是共享的。

  • 输入是x1, x2, .....xn,输出为y1, y2, ...yn,也就是说,输入和输出序列必须要是等长的
  • 一个箭头就表示对该向量做一次变换。

圆圈或方块表示的是向量。

  • 自然语言处理问题。x1可以看做是第一个单词,x2可以看做是第二个单词,依次类推。

语音处理。此时,x1、x2、x3……是每帧的声音信号。

时间序列问题。例如每天的股票价格等等

  • N vs 1

 

每一步使用的参数U、W、bV、c都是一样的,也就是说每个步骤的参数都是共享的。

  • 要处理的问题输入是一个序列,输出是一个单独的值而不是序列只在最后一个h上进行输出变换就可以了
  • 如输入一段文字判别它所属的类别,输入一个句子判断其情感倾向,输入一段视频并判断它的类别等等。

  • 1 vs N

 

每一步使用的参数U、W、bV、c都是一样的,也就是说每个步骤的参数都是共享的。

  • 只在序列开始进行输入计算

 

  • 从图像生成文字(image caption),此时输入的X就是图像的特征,而输出的y序列就是一段句子
  • 从类别生成语音或音乐等
  • N vs M(又叫Encoder-Decoder模型)

 

Encoder-Decoder结构先将输入数据编码成一个上下文向量c

拿到c之后,就用另一个RNN网络对其进行解码,这部分RNN网络被称为Decoder。具体做法就是将c当做之前的初始状态h0输入到Decoder中:

 

还有一种做法是将c当做每一步的输入:

 

  • 机器翻译中,源语言和目标语言的句子往往并没有相同的长度。
  • 文本摘要。输入是一段文本序列,输出是这段文本序列的摘要序列。
  • 阅读理解。将输入的文章和问题分别编码,再对其进行解码得到问题的答案。
  • 语音识别。输入是语音信号序列,输出是文字序列。

参考 https://zhuanlan.zhihu.com/p/28054589

15  在神经网络中,有哪些办法防止过拟合?

1. Dropout在训练过程中,随机使一部分神经元失活,减少神经元之间的依赖关系,从而防止过拟合。

2.   L1/L2 正则化通过增加权重的惩罚项,限制网络的复杂度,避免过拟合。

3. BatchNormalization在每个 mini-batch 中对数据进行标准化,减少内部协变量位移,使得网络更加稳定,避免过拟合。

4.  网络 bagging  :通过训练多个独立的神经网络,每个网络的训练集和参数都不同,最终将这些网络的结果进行集成,提高模型的泛化能力,避免过拟合。

5.  提前终止训练在验证集上监测模型的表现,一旦发现模型开始过拟合,就提前终止训练,避免继续训练导致过拟合。

6.  据增强通过对训练数据进行一定的变换,如旋转、翻转、裁剪等操作,增加训练数据的多样性,减少过拟合的可能性。

16 CNN 是什么, CNN 关键的层有哪些?

  • CNN 是卷积神经网络,
  • 关键层有:

 输入层,对数据去均值,做 data augmentation 等工作

 卷积层,局部关联抽取 feature

 层,非线性变化(也就是常说的激活函数)

 池化层,下采样

 全连接层,增加模型非线性

 BN 层,缓解梯度弥散

17  神经网络中会经常会用到梯度下降算法,会用到批量梯度下降算 法 (BGD)吗? 为什么用随机梯度下降(SGD) ?

析:

1) 一般不用 BGD

2) a. BGD 每次需要用到量数据,计算量太大

b.  引入随机因素,即便陷入局部极小,梯度也可能不为0,这样就有 机会跳出局部极小继续搜索(可以作为跳出局部极小的一种方式,但 也可能跳出全局最小。还有解决局部极小的方式:多组参数初始化、 使用拟退火技术)

18   自己构造符合函数并写出写出链式法则

假设我们有两个函数 f(x) 和 g(x),我们可以构造一个符合函数 h(x) = f(g(x))。接下来,我们将使用链式法则计算 h(x) 的导数。

链式法则表达式为:(f(g(x)))' = f'(g(x)) * g'(x)

现在,我们来计算 h(x) 的导数:

假设 f(x) = x^2,g(x) = sin(x)。

首先,计算 f'(x): f'(x) = d/dx (x^2) = 2x

然后,计算 g'(x): g'(x) = d/dx (sin(x)) = cos(x)

根据链式法则,我们有: h'(x) = f'(g(x)) * g'(x)

将 f'(x) 和 g'(x) 的值代入上述表达式,得到: h'(x) = 2g(x) * cos(x)

因此,h(x) 的导数为 2g(x) * cos(x)。

19  神经网络输出层为什么通常使用 softmax?

参考 PPT 分类问题

这是因为softmax函数可以将模型的原始输出转化为概率分布,使得每个类别的输出值介于0和1之间,并且所有类别的输出概率之和为1。

以下是一些使用softmax函数的主要原因:

  • 概率解释:softmax函数将神经网络的输出转化为概率分布,使得输出可以被解释为属于每个类别的概率。这对于多类别分类问题非常有用,因为我们可以直观地理解模型对每个类别的置信度或预测概率。
  • 多类别分类:softmax函数适用于多类别分类问题,其中每个样本可以被分为多个不同的类别。通过softmax函数,我们可以得到每个类别的概率分布,从而确定最有可能的类别。
  • 梯度性质:softmax函数在反向传播算法中具有良好的梯度性质。它可以帮助优化器根据损失函数的梯度信息更新网络参数,以最小化损失函数。softmax函数的导数形式简单,并且可以与其他常见的损失函数(如交叉熵损失)进行组合使用。
  • 单调性:Softmax 函数是单调递增的,意味着输入值的增加会导致输出概率的增加。这使得网络更容易对输出概率进行解释和比较。

总而言之,softmax函数在神经网络中被广泛应用于多类别分类问题,它将网络的原始输出转化为概率分布,方便解释和处理,并且具有良好的梯度性质。

20  如何理解反向传播算法 BackPropagation,包括前馈神经网络和 RNN ,LSTM。会利用矩阵算法推导和伪代码设计!

  • 前馈神经网络

  1. 反向传播
  1. 两个假设

为了计算∂C/∂w需要对cost function的形式做两个假设

  • cost function可以被写为,这样做是因为backpropagation实际上是计算每个样本的偏导数,然后再把合起来构成原来的C,,如果不能写成和的形式则使用backpropagation也没什么用。
  • C可以被写为的函数,即,要注意在优化过程中输入的x,y都是固定的数,变量是w

定义:

 

  1. 四个基本式子

主要包含四个基本式子

  • 输出层的error的等式(BP1)

 

         

 

向量形式:

 

  • 根据下一层的计算上一层的(BP2)

 

 

 

根据(BP1)和(BP2)可以计算所有层的δ,即所有的C关于z的偏导数,接下来我们只需要找出,和z之间的关系,然后继续使用链式求导即可。

 

  • 每层中的偏置对C的影响:(BP3)

 

  • 每层中的权重对C的影响:

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_51487248

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值