没有合适的资源?快使用搜索试试~ 我知道了~
深层神经网络.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 104 浏览量
2024-03-24
10:45:23
上传
评论
收藏 2.89MB DOC 举报
温馨提示
试读
175页
深层神经网络.doc
资源推荐
资源详情
资源评论
一、 为什么深层神经网络难以训练?
1、梯度消失。梯度消失是指通过隐藏层从后向前看,梯度会变得越来越小,说明前面层的
学习会显著慢于后面层的学习,所以学习会卡主,除非梯度变大。
梯度消失的原因:学习率的大小,网络参数的初始化,激活函数的边缘效应等。在深层神经
网络中,每一个神经元计算得到的梯度都会传递给前一层,较浅层的神经元接收到的梯度受
到之前所有层梯度的影响。如果计算得到的梯度值非常小,随着层数增多,求出的梯度更新
信息将会以指数形式衰减,就会发生梯度消失。
2、梯度爆炸。在深度网络或循环神经网络(Recurrent Neural Network, RNN)等网络结构中,
梯度可在网络更新的过程中不断累积,变成非常大的梯度,导致网络权重值的大幅更新,使
得网络不稳定;在极端情况下,权重值甚至会溢出,变为 值,再也无法更新。3、权重矩阵
的退化导致模型的有效自由度减少。参数空间中学习的退化速度减慢,导致减少了模型的有
效维数,网络的可用自由度对学习中梯度范数的贡献不均衡,随着相乘矩阵的数量(即网络
深度)的增加,矩阵的乘积变得越来越退化。在有硬饱和边界的非线性网络中(例如 ReLU
网络),随着深度增加,退化过程会变得越来越快。
二、 深度学习和机器学习有什么不同?
传统的机器学习需要定义一些手工特征,从而有目的的去提取目标信息, 非常依赖任务的
特异性以及设计特征的专家经验。而深度学习可以从大数据中先学习简单的特征,并从其逐
渐学习到更为复杂抽象的深层特征,不依赖人工的特征工程。
三、 为什么需要非线性激活函数
1、激活函数可以把当前特征空间通过一定的线性映射转换到另一个空间,学习和模拟其他
复杂类型的数据,例如图像、视频、音频、语音等。
2、假若网络中全部是线性部件,那么线性的组合还是线性,与单独一个线性分类器无异。
这样就做不到用非线性来逼近任意函数。
3、使用非线性激活函数 ,以便使网络更加强大,增加它的能力,使它可以学习复杂的事物,
复杂的表单数据,以及表示输入输出之间非线性的复杂的任意函数映射。使用非线性激活函
数,能够从输入输出之间生成非线性映射。
四、 激活函数有哪些性质
1、非线性 2、可微性: 当优化方法是基于梯度的时候,就体现了该性质;3、单调性: 当
激活函数是单调的时候,单层网络能够保证是凸函数;4、f(x)≈x: 当激活函数满足这个性
质的时候,如果参数的初始化是随机的较小值,那么神经网络的训练将会很高效;如果不满
足这个性质,那么就需要详细地去设置初始值;5、输出值的范围: 当激活函数输出值是有
限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当
激活函数的输出是无限的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小
的 Learning Rate。
五、 如何选择激活函数
如果输出是 0、1 值(二分类问题),则输出层选择 sigmoid 函数,然后其它的所有单元都
选择 Relu 函数。
如果在隐藏层上不确定使用哪个激活函数,那么通常会使用 Relu 激活函数。有时,也会使
用 tanh 激活函数,但 Relu 的一个优点是:当是负值的时候,导数等于 0。
sigmoid 激活函数:除了输出层是一个二分类问题基本不会用它。
tanh 激活函数:tanh 是非常优秀的,几乎适合所有场合。
如果遇到了一些死的神经元,我们可以使用 Leaky ReLU 函数。
六、 ReLu 激活函数的优点
1、sigmoid 和 tanh 函数的导数在正负饱和区的梯度都会接近于 0,这会造成梯度弥散,而
Relu 和 Leaky ReLu 函数大于 0 部分都为常数,不会产生梯度弥散现象。2、在区间变动很
大的情况下,ReLu 激活函数的导数或者激活函数的斜率都会远大于 0,在程序实现就是一
个 if-else 语句,而 sigmoid 函数需要进行浮点四则运算,在实践中,使用 ReLu 激活函数
神经网络通常会比使用 sigmoid 或者 tanh 激活函数学习的更快。3、需注意,Relu 进入负
半区的时候,梯度为 0,神经元此时不会训练,产生所谓的稀疏性,而 Leaky ReLu 不会产
生这个问题。稀疏激活性:从信号方面来看,即神经元同时只对输入信号的少部分选择性响
应,大量信号被刻意的屏蔽了,这样可以提高学习的精度,更好更快地提取稀疏特征。当
x<0 时,ReLU 硬饱和,而当 x>0 时,则不存在饱和问题。ReLU 能够在 x>0 时保持梯度
不衰减,从而缓解梯度消失问题。
七、 为什么需要 Batch_Size?
Batch 的选择,首先决定的是下降的方向。如果数据集比较小,可采用全数据集的形式,好
处是:
由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。
由于不同权重的梯度值差别巨大,因此选取一个全局的学习率很困难。 Full Batch Learning
可以使用 Rprop 只基于梯度符号并且针对性单独更新各权值。
对于更大的数据集,假如采用全数据集的形式,坏处是:
随着数据集的海量增长和内存限制,一次性载入所有的数据进来变得越来越不可行。
以 Rprop 的方式迭代,会由于各个 Batch 之间的采样差异性,各次梯度修正值相互抵消,
无法修正。这才有了后来 RMSProp 的妥协方案。
八、 Batch_Size 值的选择
假如每次只训练一个样本,即 Batch_Size = 1。线性神经元在均方误差代价函数的错误面是
一个抛物面,横截面是椭圆。对于多层神经元、非线性网络,在局部依然近似是抛物面。此
时,每次修正方向以各自样本的梯度方向修正,横冲直撞各自为政,难以达到收敛。既然
Batch_Size 为全数据集或者 Batch_Size = 1 都有各自缺点,可不可以选择一个适中的
Batch_Size 值呢?此时,可采用批梯度下降法(Mini-batches Learning)。因为如果数据集足
够充分,那么用一半(甚至少得多)的数据训练算出来的梯度与用全部数据训练出来的梯度
是几乎一样的。
九、 在合理范围内,增大 Batch_Size 有何好处?
内存利用率提高了,大矩阵乘法的并行化效率提高。
跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。
十、 盲目增大 Batch_Size 有何坏处?
1、 内存利用率提高了,但是内存容量可能撑不住了。
2、跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花
费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
3、Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。
十一、 为什么要归一化?
1、避免神经元饱和。就是当神经元的激活在接近 0 或者 1 时会饱和,在这些区域,
梯度几乎为 0,这样,在反向传播过程中,局部梯度就会接近 0,这会有效地“杀
死”梯度。
2、 保证输出数据中数值小的不被吞食。
3、 加快收敛。数据中常存在奇异样本数据,奇异样本数据存在所引起的网络训练时间
增加,并可能引起网络无法收敛,为了避免出现这种情况及后面数据处理的方便,
加快网络学习速度,可以对输入信号进行归一化,使得所有样本的输入信号其均值
接近于 0 或与其均方差相比很小。
十二、 归一化有哪些类型?
线性归一化适用范围:比较适用在数值比较集中的情况。缺点:如果 max 和 min 不稳定,
很容易使得归一化结果不稳定,使得后续使用效果也不稳定。2、标准差归一化经过处理的
数据符合标准正态分布,即均值为 0,标准差为 13、非线性归一化适用范围:经常用在数
据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。
该方法包括 log、指数,正切等。
十三、 局部响应归一化作用
1、 LRN 是一种提高深度学习准确度的技术方法。LRN 一般是在激活、池化函数后的一种方
法。其中,
a :表示卷积层(包括卷积操作和池化操作)后的输出结果,是一个四维数组
[batch,height,width,channel]。
� batch:批次数(每一批为一张图片)。
� height:图片高度。
� width:图片宽度。
� channel:通道数。可以理解成一批图片中的某一个图片经过卷积操作后输出的神经
元个数,或理解为处理后的图片深度。
� 2. 表示在这个输出结构中的一个位置 [a,b,c,d] ,可以理解成在某一张图中的某一
个通道下的某个高度和某个宽度位置的点,即第 a 张图的第 d 个通道下的高度为
b 宽度为 c 的点。
� N :论文公式中的 N 表示通道数 (channel)。
� a , n/2 , k 分别表示函数中的 input,depth_radius,bias。参数 k, n, 都是超参数,
一般设置
� : 叠加的方向是沿着通道方向的,即每个点值的平方和是沿着 a 中的第 3 维
channel 方向的,也就是一个点同方向的前面 n/2 个通道(最小为第 0 个通道)
和后 n/2 个通道(最大为第 d-1 个通道)的点的平方和(共 n+1 个点)。而函数的
英文注解中也说明了把 input 当成是 d 个 3 维的矩阵,说白了就是把 input 的通
道数当作 3 维矩阵的个数,叠加的方向也是在通道方向。
�
在 ALexNet 中,提出了 LRN 层,对局部神经元的活动创建竞争机制,使其中响应
比较大对值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。
十四、 批归一化(BN)算法的优点
批归一化(BN)就是在神经网络中间层也进行归一化处理。
优点:
1、减少了人为选择参数。在某些情况下可以取消 dropout 和 L2 正则项参数,或者
采取更小的 L2 正则项约束参数;
2、减少了对学习率的要求。现在我们可以使用初始很大的学习率或者选择了较小的
学习率,算法也能够快速训练收敛;
3、可以不再使用局部响应归一化。BN 本身就是归一化网络(局部响应归一化在
AlexNet 网络中存在)
4、破坏原来的数据分布,一定程度上缓解过拟合(防止每批训练中某一个样本经常
被挑选到,文献说这个可以提高 1% 的精度)。
5、减少梯度消失,加快收敛速度,提高训练精度。
十五、 BN 算法流程
下面给出 BN 算法在训练时的过程输入:上一层输出结果 ,学习参数 算法流程:1、计算
上一层输出数据的均值 m 是此次训练样本 batch 的大小 2、计算上一层输出数据的标准差 3、
归一化处理,得到其中 是为了避免分母为 0 而加进去的接近于 0 的很小值 4、重构,对
经过上面归一化处理得到的数据进行重构,得到其中, 为可学习参数。十九、Batch
Normalization 和 Group Normalization 的比较 Batch Normalization:可以让各种网络并行训练。
但是维度进行归一化会带来一些问题-----批量统计估算不准确导致批量变小时,BN 的误差
会迅速增加。在训练大型网络和将特征转移到计算机视觉任务中(包括检测、分割和视频),
内存消耗限制了只能使用小批量的 BN。Group Normalization:GN 将通道分组,并且每组内
计算归一化的均值和方差。GN 的计算与批量大小无关,并且其准确度在各种批量大小下都
很稳定。
十六、 Weight Normalization 和 Batch Normalization 比较
两者都属于参数重写的方式,只是采用的方式不同。Weight Normalization 是对网络权值 W
进行 normalization;Batch Normalization 是对网络某一层输入数据进行 normalization。Weight
Normalization 相比 Batch Normalization 有以下三点优势:
1、 Weight Normalization 通过重写深度学习网络的权重 W 的方式来加速深度学习网络
参数收敛,没有引入 minbatch 的依赖,适用于 RNN(LSTM)网络(Batch
Normalization 不能直接用于 RNN,进行 normalization 操作,原因在于:1) RNN 处
理的 Sequence 是变长的;2) RNN 是基于 time step 计算,如果直接使用 Batch
Normalization 处理,需要保存每个 time step 下,mini btach 的均值和方差,效率
低且占内存)。
2、 Batch Normalization 基于一个 mini batch 的数据计算均值和方差,而不是基于整个
Training set 来做,相当于进行梯度计算式引入噪声。因此,Batch Normalization 不
适用于对噪声敏感的强化学习、生成模型(Generative model:GAN,VAE)使用。
相反,Weight Normalization 对通过标量 g 和向量 v 对权重 W 进行重写,重写向
量 v 是固定的,因此,基于 Weight Normalization 的 Normalization 可以看做比 Batch
Normalization 引入更少的噪声。
3、 不需要额外的存储空间来保存 mini batch 的均值和方差,同时实现 Weight
Normalization 时,对深度学习网络进行正向信号传播和反向梯度计算带来的额外计
算开销也很小。因此,要比采用 Batch Normalization 进行 normalization 操作时,
速度快。 但是 Weight Normalization 不具备 Batch Normalization 把网络每一层的
输出 Y 固定在一个变化范围的作用。因此,采用 Weight Normalization 进行
Normalization 时需要特别注意参数初始值的选择。
十七、 Batch Normalization 在什么时候用比较合适?
在 CNN 中,BN 应作用在非线性映射前。在神经网络训练时遇到收敛速度很慢,或梯度爆炸
等无法训练的状况时可以尝试 BN 来解决。另外,在一般使用情况下也可以加入 BN 来加快
训练速度,提高模型精度。BN 比较适用的场景是:每个 mini-batch 比较大,数据分布比较
接近。在进行训练之前,要做好充分的 shuffle,否则效果会差很多。另外,由于 BN 需要在
运行过程中统计每个 mini-batch 的一阶统计量和二阶统计量,因此不适用于动态的网络结构
和 RNN 网络。
十八、 为什么要正则化
深度学习可能存在过拟合问题-----高方差,有两个解决方法,一个是正则化,另一个是准备
更多的数据,这是非常可靠的方法,但你可能无法时时刻刻准备足够多的训练数据或者获取
更多数据的成本很高,但正则化通常有助于避免过拟合或减少你的网络误差。
剩余174页未读,继续阅读
资源评论
百态老人
- 粉丝: 1641
- 资源: 2万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功