深度学习的基本概念总结

1. 基本概念

1.1 为什么要使用深层网络

  1. 深度神经网络的学习是特征递进的,浅层的神经元只能学习一些低层次的简单特征(如边缘、纹理),而深层神经网络可以学到更高级特征
  2. 深层网络的隐藏单元数目较少,隐藏层数目较多。 若浅层网络想达到同样的计算结果须指数级增长单元数量。
  3. 在神经元数量相同的情况下,深层网络具有更大容量,能构造更复杂的映射关系。

1.2 为什么深层神经网络难以训练

存在 1. 梯度消失,2. 梯度爆炸, 3. 权重矩阵的退化导致模型的有效自由度减少。 等问题。

1.3 梯度消失

1.3.1 梯度消失的现象

通过隐藏层从后往前看,梯度越来越小,即前面层的学习慢于后面层的学习,学习会卡住。

1.3.2 梯度消失的解释

在深层神经网络中,每个神经元计算的梯度都会传给前一层,较浅层的神经元接收到的梯度受到之前所有层梯度的影响。若计算得到的梯度值非常小,随着层数增多,求出的梯度更新信息将会以指数形式衰减,从而发生梯度消失。

1.3.3 导致梯度消失的因素与改进

1. 权重初始化不当 ===> Xavier初始化法或者MSRA初始化法
2. 激活函数的选择 ===> 采用Relu替换sigmoid。(sigmoid时,倒数最大为0.25,梯度消失比梯度爆炸更易出现)
3. 网络结构问题
4. 数据集不准确 ===> BN层均值方差归一化

1.4 梯度爆炸

1.4.1 梯度爆炸现象

在深度网络或RNN中,梯度在网络更新的过程中不断累积,变成非常大的梯度,导致网络权重值大幅更新,使网络不稳定。极端情况下,权重值甚至会溢出,无法更新。

1.4.2 梯度爆炸的解释

在深层神经网络中,每个神经元计算的梯度都会传给前一层,较浅层的神经元接收到的梯度受到之前所有层梯度的影响。若计算得到的梯度值较大(>1),随着层数增多,求出的梯度更新信息将会以指数形式递增,从而发生梯度爆炸。

1.4.3 梯度爆炸的解决方案

1. 梯度剪切:设置一个阈值,将梯度限制在该阈值范围内。
2. 权重正则化 l 1 l1 l1正则, l 2 l2 l2正则。
3. 激活函数:relu
4. batch normalization: 将每一层的输出规范为均值和方差一致,进而消除权重w带来的放大缩小的影响。

1.5 权重矩阵的退化

随着相乘矩阵的数量(即网络深度)的增加,矩阵的乘积变得越来越退化,进而减少模型有效自由度。

1.6 激活函数

1.6.1 激活函数的作用

1. 可以引入非线性因素,方便学习复杂数据。
2. 激活函数可以把当前特征空间通过一定的线性映射转换到另一个空间,让数据能够更好的被分类。

1.6.2 常见的激活函数

1. sigmoid 激活函数
f ( x ) = 1 1 + e − x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+ex1, 其值域为 ( 0 , 1 ) (0,1) (0,1)
函数图像:
在这里插入图片描述
导函数图像
在这里插入图片描述
2. tanh 激活函数
f ( x ) = t a n h ( x ) = e x − e − x e x + e − x f(x) = tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} f(x)=tanh(x)=ex+exexex,值域为 ( − 1 , 1 ) (-1,1) (1,1)

在这里插入图片描述
3. Relu 激活函数
f ( x ) = m a x ( 0 , x ) f(x) = max(0, x) f(x)=max(0,x) ,值域为 [ 0 , + ∞ ) [0,+∞) [0,+)
** Relu 的优点**
①. 导数为1,解决了梯度消失、梯度爆炸问题。
②. 计算方便,加速了网格的训练。
③. 正饱和区的梯度大于0,不会造成梯度弥散。
** Relu 的缺点**
①. 由于负数部分恒为0,会导致一些神经元无法激活(可通过设置小学习率部分解决)
②. 输出不是以0为中心的
在这里插入图片描述
4. Leak Relu 激活函数
f ( x ) = m a x ( k ∗ x , x ) f(x) = max(k∗x , x) f(x)=max(kx,x),值域为 ( − ∞ , + ∞ ) (-∞,+∞) (,+)
解决了Relu中0区间的影响,k为leak系数,一般选择0.01或0.02。

在这里插入图片描述
5. Softmax 激活函数
σ ( z ) j = e z j ∑ k = 1 K e z k \sigma(z)j = \frac{e^{z_j}}{\sum{k=1}^K e^{z_k}} σ(z)j=k=1Kezkezj
Softmax 多用于多分类神经网络输出。

1.6.3 激活函数的性质
  1. 非线性
  2. 可导性:梯度计算
  3. 单调性:当激活函数是单调的时候,单层网络能够保证是凸函数
  4. f ( x ) ≈ x f(x)≈x f(x)x:训练更高效
1.6.4 激活函数的选择
  1. sigmoid 激活函数:仅仅输出层为2分类问题时使用。
  2. tanh 激活函数:tanh 是非常优秀的,几乎适合所有场合。
  3. 如果在隐藏层上不确定使用哪个激活函数,那么通常会使用 Relu 激活函数。有时,也会使用 tanh 激活函数。
  4. 如果遇到了一些死的神经元,我们可以使用 Leaky Relu 函数。

1.7 Softmax函数(多分类的激活函数)

1.7.1 Softmax的作用

Softmax用于多分类问题,其将多个神经元的输出映射到(0,1)区间内,并且他们的和为1,因而我们可以将每个Softmax值理解为概率。选取概率最大的值作为分类的类别。

1.7.2 Softmax的计算

Softmax 计算公式:
假设有一个数组V,Vi表示V中的第i个元素,那么这个元素的softmax值为:

S i = e i ∑ j e j S_i = \frac{e^i}{\sum_j e^j} Si=jejei

在这里插入图片描述

1.8 Batch Size

1.8.1 batch_size的定义

将一个epoch分批次进行训练,每批次训练样本的大小。

1.8.2 batch_size的作用

可以分批次进行训练,避免一次性读取所有数据而引发的内存不足问题。

1.8.3 合理增大batch_size的好处

①. 并行计算,提高了内存利用率。
②. 跑完一次epoch(全数据集)所需的迭代次数减少,加快了一次epoch的速度。
③. 在一定范围内,batch_size越大,其确定的下降方向越准,引起的训练震荡越小。

1.8.4 盲目增大batch_size的坏处

①. 内存容量爆满。
②. 跑完一次epoch(全数据集)所需的迭代次数减少,对参数的修正变慢。
③. Batch_Size 增大到一定程度,其确定的下降方向基本不再变化。

1.8.5 调节batch_size对训练效果有何影响

①. batch_size太小,梯度修正太过频繁,模型表现糟糕。
②. 随着batch_size增大,处理相同数据量的速度越快。
③. 随着batch_size增大, 达到相同精度所需的epoch越来越多。
④. 由于上述两种因素的矛盾, Batch_Size 增大到某个时候,达到时间上的最优。
⑤. 由于最终收敛精度会陷入不同的局部极值,因此 Batch_Size 增大到某些时候,达到最终收敛精度上的最优。

1.9 归一化

1.9.1 归一化的作用
  1. 同一量纲,统一数据的评价标准。
  2. 保证数据小的值不被吞食。
  3. 加快收敛速度。
  4. 避免神经元饱和。(神经元的激活在0或1时会饱和)。
1.9.2 归一化能提高求解速度的原因

假设 w 1 w1 w1 的范围在 [ − 10 , 10 ] [-10, 10] [10,10],而 w 2 w2 w2 的范围在 [ − 100 , 100 ] [-100, 100] [100,100],梯度每次都前进 1 单位,那么在 w 1 w1 w1 方向上每次相当于前进了 1 / 20 1/20 1/20,而在 w 2 w2 w2 上只相当于 1 / 200 1/200 1/200!某种意义上来说,在 w 2 w2 w2 上前进的步长更小一些,而 w 1 w1 w1 在搜索过程中会比 w 2 w2 w2 “走”得更快。
这样会导致,在搜索过程中更偏向于 w 1 w1 w1 的方向。走出了“L”形状,或者成为“之”字形。
在这里插入图片描述

1.9.2 归一化有哪些类型

1. 线性归一化
x ′ = x − m i n ( x ) m a x ( x ) − m i n ( x ) x^{\prime} = \frac{x-min(x)}{max(x) - min(x)} x=max(x)min(x)xmin(x)
适用范围:比较适用在数值比较集中的情况。
缺点:如果 max 和 min 不稳定,很容易使得归一化结果不稳定,使得后续使用效果也不稳定。
2. 标准差归一化
x ′ = x − μ σ x^{\prime} = \frac{x-\mu}{\sigma} x=σxμ
经过处理的数据符合标准正态分布,即均值为 0,标准差为 1 。
3. 非线性归一化
适用范围:经常用在数据分化较大的场景,有些数值很大,有些很小。
通过一些数学函数,将原始值进行映射。该方法包括 l o g log log、指数,正切等。

1.9.3 局部响应归一化(LRN)
  1. 在AlexNet网络中提出了LRN层,其仿造了生物学上的侧抑制(活跃的神经元抑制相邻的神经元)。
  2. LRN对局部神经元的活动创建竞争机制,使响应较大的值变得更大,并抑制反馈小的神经元,增强了模型泛化能力。
  3. LRN层用在卷积、激活之后。

1.10 批归一化(Batch Normalization)

1.10.1 批归一化的背景

归一化的必要性
神经网络学习的本质就是学习数据的分布规律,如果训练数据分布与测试数据分布不同,网络的泛化能力就会大大降低。同时如果每批的数据分布各不相同,那么网络每次迭代都要适应不同的分布,这样会大大降低网络训练速度
批归一化的原因
由于本层的输入由上一层的参数和输入得到,而上一层的参数在训练过程中会一直跟新,因此必然导致其后面每一层的数据分布。
我们把网络中间层在训练过程中,数据分布的改变称之为:“Internal Covariate Shift(ICS)”。因而使用BN解决该问题。

1.10.2 批归一化的定义

以前在神经网络训练中,只对输入层的数据进行归一化处理,但是经过多层的神经网络运算后,数据分布变化会很大。因而考虑在中间层进行归一化处理。BatchNorm就是在每一层的输入时均选择一小批进行归一化处理。(BN)

1.10.3 批归一化算法

①.对某一层的网络输入进行归一化,其中E(x (k))指每一批数据xk的平均值,分母为每批数据xk的标准差。
在这里插入图片描述
②.引入可学习的重构参数γ、β恢复原始网络学到的特征-----------γ、β的作用
在这里插入图片描述
每一个神经元xk都会有一对这样的参数γ、β。这样其实当:
在这里插入图片描述在这里插入图片描述
可以恢复原始网络学到的特征xk
③. Batch Normalization网络层的公式就是:
其中m = batch_size
在这里插入图片描述

1.10.4 BN层在CNN中的使用

BN层是对于每个神经元做归一化处理,甚至只需要对某一个神经元进行归一化,而不是对一整层网络的神经元进行归一化。既然BN是对单个神经元的运算,那么在CNN中卷积层上要怎么搞?假如某一层卷积层有6个特征图,每个特征图的大小是100 * 100,这样就相当于这一层网络有6 * 100 * 100个神经元,如果采用BN,就会有6 * 100 * 100个参数γ、β,这样岂不是太恐怖了。因此卷积层上的BN使用,其实也是使用了类似权值共享的策略,把一整张特征图当做一个神经元进行处理。因此在使用Batch Normalization,batch_size 的大小就是:m * p * q,于是对于每个特征图都只有一对可学习参数:γ、β

1.10.5 批归一化(BN)算法的优点
  1. 减少了人为选择的参数,可以取消dropout和L2正则项参数。
  2. 减少了对学习率的要求。可以使用初始很大的学习率,或者选择较小的学习率也能快速收敛。
  3. 打散了原来数据的分布,一定程度上能缓解过拟合。
  4. 减少梯度消失,加快收敛速度,提高训练精度。
1.10.6 Batch Normalization在什么时候用比较合适?

①. 每个mini-batch较大,数据分布较接近。
②. 训练前进行shuffle,否则效果会差很多。
③. 在CNN中,BN应作用在非线性映射前。
④. 不适用于动态的网络结构和RNN网络。

1.11 组归一化(Group Normalization)

1.11.1 GN的背景

由于BN依赖于batch_size,当其较小时数据的方差和均值代表性较差,因此误差迅速增大。故提出GN使归一化操作不依赖于batch_size。

在这里插入图片描述

1.11.2 四种归一化的对比

在这里插入图片描述上图为四种归一化的对比,其中(H,W)表示图像维度的大小,C表示channels,N表示batch size,观察可知,BN与batch size有关,而LN、IN、GN与batch size无关。

1.11.3 四种归一化算法的对比

1. BN: batch方向上做归一化, 算NHW的均值和方差
2. LN: channel方向上做归一化, 算CHW的均值和方差
3. IN: 一个channel内做归一化, 算H*W的均值和方差
4. GN: 将channel方向上分成group, 在每个group内做归一化,计算(C//G)HW的均值和方差

1.11.4 GN与BN的优缺点
  1. BN会受到batch size大小的影响,batch size太小,算出的均值和方差不准确,导致误差。batch size太大则显存不够。
  2. GN将channel方向上分成group,计算每个group的均值和方差,因而不受到batch size的影响。
  3. 随着batch size减小,BN误差越来越大,而GN几乎不受影响。

1.12 预训练与微调

1.12.1 为什么无监督训练可以帮助深度学习(前期使用,现已很少用)

深度网络存在问题

  1. 网络越深,需要的训练样本越多。若用监督则需要大量标注样本。
  2. 多层神经网络参数优化是高阶非凸优化问题,经常得到收敛性较差的局部解。
  3. 随着网络加深,容易出现梯度消失。
    解决方法
    ​逐层贪婪训练,无监督预训练(unsupervised pre-training)即训练网络的第一个隐藏层,再训练第二个…最后用这些训练好的网络参数值作为整体网络参数的初始值。
1.12.2 什么是模型微调fine tuning

用别人的参数和修改后的网络训练自己的数据,使得参数适应自己的数据,此过程称为微调。
模型的微调举例说明:
我们知道,CNN 在图像识别这一领域取得了巨大的进步。如果想将 CNN 应用到我们自己的数据集上,这时通常就会面临一个问题:通常我们的 dataset 都不会特别大,一般不会超过 1 万张,甚至更少,每一类图片只有几十或者十几张。这时候,直接应用这些数据训练一个网络的想法就不可行了,因为深度学习成功的一个关键性因素就是大量带标签数据组成的训练集。如果只利用手头上这点数据,即使我们利用非常好的网络结构,也达不到很高的 performance。这时候,fine-tuning 的思想就可以很好解决我们的问题:我们通过对 ImageNet 上训练出来的模型(如CaffeNet,VGGNet,ResNet) 进行微调,然后应用到我们自己的数据集上。

1.12.3 微调时网络参数是否会更新

会更新

  1. finetune 的过程相当于继续训练,跟直接训练的区别在于初始参数。
  2. 直接训练是按照指定方式初始化(均值为0,方差为1)。
  3. finetune是按照现有的模型参数进行初始化。
1.12.4 微调模型的三种状态
  1. 只预测, 不训练。
  2. 训练,但只训练最后的分类层。
  3. 完全训练, 分类层+卷积层全部训练。

1.13 神经网络的训练流程

  1. 初始化weights 和 biases
  2. 前向传播,用input、weights、biases计算每一层的结果z、a,最后一层sigmoid, softmax 或 linear function 等作用 A 得到预测值 Y
  3. 计算损失,衡量预测值与实际值之间的差距
  4. 反向传播,来计算损失函数对 W, b 的梯度 dW ,db,
  5. 然后通过随机梯度下降等算法来进行梯度更新,重复第二到第四步直到损失函数收敛到最小。

1.14 权重随机初始化的方法

1.14.1 全初始化0的问题-----(网络对称)

当每层w一样时,检测的特征也一样,网络经过前向传播和反向传播,每层的w值更新后大小仍一样,(未起到梯度下降效果)进而使模型退化为线性模型,即多层的效果和一层效果一样,故神经网络的参数初始值不能完全相同。(全为0是特例)

1.14.2 初始化为小的随机数
  1. 神经元一开始都是随机的,所以他们会计算出不同的更新参数。能够打破网络的对称性。
  2. 通常采用高斯分布随机初始化。
  3. 初始化值要适中,太小会导致梯度消失。
  4. 若w太大,由于z = wx +b 会z会很大,当激活函数为sigmoid或tanh时,激活值a停在平坦的地方(饱和区)。这些地方梯度很小,梯度下降变慢,训练变慢。
    在这里插入图片描述
1.14.3 用 1 / s q r t ( n ) 1/sqrt(n) 1/sqrt(n)校准方差

为了限制z的方差,采用了均值为0,标准差为 1 / s q r t ( n ) 1/sqrt(n) 1/sqrt(n)的高斯分布来初始化权重,偏置则继续采用均值为0,标准差为1来初始化。此时网络更难饱和,不易出现梯度不下降,加快收敛速度。

1.14.4 权重初始化的三种方法

1. 高斯初始化:
满足高斯分布,均值0,标准差为0.01
2.Xavier初始化:[‘zeɪvɪr]:(使用更多)
目的:保证每一层的方差一致。
权重的分布:均值为0,方差为(1 / 输入的个数) 的 均匀分布。
在这里插入图片描述
实际权重方差满足下式,其中ni表示输入个数。
在这里插入图片描述
3.MSRA----(何凯明)
目的:解决经过relu后,方差会发生变化问题。
权重的分布:均值为0,方差为(2 / 输入的个数)的高斯分布。
在这里插入图片描述

1.15 学习率

1.15.1 学习率的作用

学习率决定了梯度下降的步长,在前期,学习率较大,梯度下降的步长会较长,这时能以较快的速度下降。而后期减小学习率,减小步长,能使算法易于收敛得到最优解。

1.15.2 学习率衰减的方法

1. 分段常数衰减
预先定义好训练次数区间,不同区间设置不同的学习率常值。
在这里插入图片描述
2. 指数衰减
以指数衰减方式进行学习率更新,使用最多,具体公式为:
在这里插入图片描述
Tensorflow中指数衰减函数:
exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None)
执行方式:每decay_steps轮后learning_rate * decay_rate
各参数含义:
**learning_rate 😗*事先设定的初始学习率,
**global_step:**喂入一次 BACTH_SIZE 计为一次 global_step。放在训练优化器中自动累加。
decay_steps: 衰减速度, decay_steps通常取(样本总数/batches)
**decay_rate:**衰减系数
staircase :衰减方式,False :学习率连续衰减;True:阶梯状衰减。(如下图)
在这里插入图片描述
3. 自然对数衰减
衰减底数为e,收敛更快,用于比较容易训练的网络。(绿色)
在这里插入图片描述4. 多项式衰减
给定初始学习率和最低学习率,按照给定方式将学习率从初始降到最低,此时可以选择
继续使用最低学习率至训练结束,另一种是再次将学习率调高。

防止训练后期由于学习率过小导致网络在某个局部最小值附近震荡,这样可以通过在后期增大学习率跳出局部极小值。
红色线代表学习率降低至最低后,一直保持学习率不变进行更新,绿色线代表学习率衰减到最低后,又会再次循环往复的升高降低。
在这里插入图片描述5. 余弦衰减
在这里插入图片描述

1.16 正则化

1.16.1 为什么要正则化

深度学习可能存在过拟合问题(低偏差----预测值偏离真实值小,高方差-----预测值较集中),通常可以使用增加训练数据量正则化解决。

1.16.2 正则化的定义

通过修改学习算法减少泛化误差。

1.16.3 只对权重惩罚,不对偏置惩罚的原因
  1. 拟合偏置所需的数据比拟合权重少得多。
  2. 权重控制两个变量的相互作用,而偏置只控制一个变量,不对其进行正则化也不会导致太大方差。
  3. 正则化偏置参数易造成欠拟合。
1.16.4 参数稀疏的意义

1.参数稀疏实现了特征的选择,去除掉一些无用的特征,保证模型的泛化。
2. 参数变少,即模型简单化,能避免过拟合。

1.16.5 参数越小模型越简单

越是复杂的模型越会尝试对所有样本进行拟合,这会造成较小区间内产生较大波动,即导数较大。
而只有越大的参数才可能产生较大的导数,因此参数越小,模型越简单。

1.16.6 L1 正则化
  1. L1是模型各个参数的绝对值之和
  2. L1 正则化的损失函数:
    在这里插入图片描述
    其中J0 为原始的损失函数,加号后面为L1正则化项,α是正则化系数。
  3. L1解决过拟合的方式 -----> 使参数稀疏
    由于L1的绝对值导致其不完全可微,作为约束条件其图像上会有很多的角,这些角和目标函数接触的概率更大,就会造成最优解出现在坐标轴上,因而导致某一维权重为0,使参数稀疏,进而防止过拟合。
    在这里插入图片描述
1.16.7 L2 正则化
  1. L2是模型各个参数平方和的开方值
  2. L2 正则化的损失函数:
    在这里插入图片描述
  3. L2解决过拟合的方式 -----> 使参数值变小
    由于L2完全可微,作为约束条件其图像不会出现L1的棱角,一般最优解不会出现在坐标轴上,因而不会使参数稀疏。
    L2通过使参数不断趋向于0获得较小参数,而防止过拟合。
1.16.8 dropout正则化
  1. dropout的执行方式
    输入层与输出层保持不变,隐藏层的神经元按比例随机失活。
  2. dropout解决过拟合的方式
    ①. dropout使节点随机失活的方式能保证每一节点的参数不会过大,起到了L2正则化压缩权重平方和开方的效果。
    ②.在单次训练中随机关掉部分神经元,简化了模型结构。
    ③. 类似于训练了多个简单的网络,结果采用取平均的方式。
1.16.9 dropout 的参数keep_prob
  1. 在不同层可以选择不同的keep_prob,结构复杂的层,取小keep_prob,结构简单的层选择大keep_prob。
  2. ** keep_prob等于1表示不使用dropout,即该层的所有节点都保留。**
  3. 一般情况keep_prob=0.5效果最佳(随机生成的网络结构最多。)
1.16.10 dropout的缺点

代价函数J不再被明确定义,无法保证每次训练梯度都会下降,不便于调试。

1.16.11 dropConnect

不同于dropout随机将隐藏层节点的输出变为0,dropConnect是将与其相连的输入权值以1 - p的概率变为0。(一个输出,一个输入)
在这里插入图片描述

1.17 样本增强

1.17.1 样本增强的目的

在训练样本较少时,通过样本增强增加样本数量,减少过拟合

1.17.2 常用样本增强的方法(Augmentor包)
  1. 对颜色增强:亮度、对比度、饱和度。
  2. 裁剪、缩放
  3. 水平、垂直翻转
  4. 平移、旋转
  5. 高斯噪声、模糊处理

1.18 池化层

1.18.1 池化层作用
  1. 保留显著特征。
  2. 减小特征图像大小。
  3. 增大感受野。
1.18.2 全局平均池化(GAP)

以整张特征图为单位进行均值化,一张特征图输出一个值,直接将结果用于softmax分类。
在这里插入图片描述优点:
1. 减少了参数,减轻过拟合。
2. 可以接受任意大小的图像输入。

1.19 训练过程中模型不收敛,是否说明该模型无效? 导致模型不收敛的原因

不能说明,可能存在以下原因:
1. 学习率过大。
2. 数据集标签不准确。
3. 数据未做归一化。
4. 样本信息量太大,模型不足以承受整个样本空间。
5. 网络太浅。

1.20 优化方法

1.20.1 随机梯度下降法(SGD)

优化方式:每次迭代计算mini-batch的梯度,对参数进行更新。
优:
在好的初始化和学习率下,结果更可靠。
缺:
1. 难以选择合适的学习率。
**2. 所有参数的学习率相同。**无法满足对不常见数据采用大点学习率,对常见数据采用小点学习率的要求。
3. 收敛速度慢,易收敛到局部最优,易困在鞍点。

1.20.2 Momentum —— 动量优化器

优化方式:观察历史梯度。若当前梯度方向与历史梯度一致(当前样本不是异常点),则增强梯度,
若当前梯度方向与历史梯度方向不一致,则衰减梯度。

1.20.3 AdaGrad —— 自适应学习率优化器

优化方式:训练过程中自动调整学习率,对低频参数采用较大学习率,对高频参数采用较小学习率。
在这里插入图片描述
优:适合处理稀疏数据。
缺:中后期,分母上梯度平方和累加越来越大,使梯度趋于0,训练提取结束。

1.20.4 AdaDelta——自适应学习率优化器

优化方式: 是对AdaGrad的优化,AdaGrad累加所有梯度平方,而AdaDelta只累加固定大小的项。
特点:训练前中期很快,后期反复在局部最小值附近抖动。不再依赖于全局学习率。

1.20.5 RMSprop—— 自适应学习率优化器

优化方式:是AdaDelta的特殊情况,Adagrad会累加之前所有的梯度平方,RMProp仅仅是计算对应的平均值。
特点:适合处理非平稳目标。依赖于全局学习率。

1.20.6 Adam —— 自适应学习率优化器

优化方式:利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率.。
特点:结合了AdaGrad善于处理稀疏数据和RMSprop善于处理非平稳目标的优点。

1.21 提升网络泛化能力的方法

数据方面:增加数据量,对已有数据样本增强,数据归一化(BN)。
参数方面:学习率、batch_size
模型方面: 合适的初始化方法、添加正则化(dropout)、激活函数、优化器。

1.22 欠拟合与过拟合

1.22.1 欠拟合现象

模型不能很好的拟合数据,通常表现在训练集上准确率不高。
判断方法:每次只训练相同的数据,若一段时间后准确率很高,则说明网络的拟合能力不足,即当前网络无法拟合全部数据。

1.22.2 欠拟合解决方法
  1. 增加网络的深度。
  2. 减小正则化参数。
1.22.3 过拟合现象

模型学的太彻底,把一些噪声特征也学到了。通常表现在训练集上表现很好,但在测试集上准确率不高。

1.22.4 过拟合解决方法
  1. 增加训练数据量,并对已有数据进行样本增强。
  2. 采用正则化(dropout、L1、L2正则)。
  3. BN层。

1.23 神经网络为啥用交叉熵

交叉熵刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两者就越接近。这与神经网络的分类思想一致。假设概率分布p为期望输出,概率分布q为实际输出,H(p,q)为交叉熵,则:
在这里插入图片描述

1.24 卷积核size为奇数

(1).锚点在中间 。
(2).Padding时图像两侧仍对称。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值