没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
第 7 章 网络优化与正则化
任何数学技巧都不能弥补信息的缺失。
— Cornelius Lanczos,1964
虽然神经网络具有非常强的表达能力,但是当应用神经网络模型到机器学
习时依然存在一些难点。主要分为两大类:
(1)优化问题:神经网络模型是一个非凸函数,再加上在深度网络中的梯
度消失问题,很难进行优化;另外,深层神经网络模型一般参数比较多,训练
数据也比较大,会导致训练的效率比较低。
(2)泛化问题:因为神经网络的拟合能力强,反而容易在训练集上产生过
拟合。因此,在训练深层神经网络时,同时也需要通过一定的正则化方法来改
进网络的泛化能力。
目前,研究者从大量的实践中总结了一些经验技巧,从优化和正则化两个
方面来提高学习效率并得到一个好的网络模型。
7.1 网络优化
深层神经网络是一个高度非线性的模型,其风险函数也是一个非凸问题。
在非凸问题中,一个会存在一些局部最优点。
7.1.1 网络优化的难点
有效地学习深层神经网络的参数是一个具有挑战性的问题,其主要原因有
以下几个方面。
132 2018 年 5 月 27 日 第 7 章 网络优化与正则化
7.1.1.1 网络结构多样性
神经网络的种类非常多,比如卷积网络、循环网络等,其结构也非常不同。
有些比较深,有些比较宽。不同参数在网络中的作用也有很大的差异,比如连
接权重和偏置的不同,以及循环网络中循环连接上的权重和其它权重的不同。
网络结构的多样性导致了很难找到一种通用的优化方法。不同的优化方法
在不同网络结构上的差异也都比较大。
此外,网络的超参数一般也比较多,这也给优化带来很大的挑战。
7.1.1.2 高维变量的非凸优化
低维空间的非凸优化问题主要是存在一些局部最优点。基于梯度下降的优
化方法会陷入局部最优点,因此低维空间非凸优化的主要难点是如何选择初始
化参数和逃离局部最优点。深层神经网络的参数非常多,其参数学习是在非常
高维空间中的非凸优化问题,其挑战和在低维空间的非凸优化问题有所不同。
鞍点 在高维空间中,非凸优化的难点并不在于如果逃离局部最优点,而是如何
逃离鞍点(Saddle Point)[Dauphin et al., 2014]。鞍点的梯度是 0,但是在一些
鞍点的叫法是因为其形
状像马鞍。
维度上是最高点,在另一些维度上是最低点,如图7.1所示。
1
1/2
0
1/2
1
1
1/2
0
1/2
1
1
1/2
0
1/2
1
图 7.1 鞍点示例
在高维空间中,局部最优点要求在每一维度上都是最低点,这种概率非常
邱锡鹏:《神经网络与深度学习》 https://nndl.github.io/
7.2 优化算法 2018 年 5 月 27 日 133
低。比如一个 10, 000 的参数,假设其每一维以局部最低点的概率为 p,则高维
空间的局部最优点的概率为 p
10,000
,这种可能性非常小。也就是说高维空间中,
大部分梯度为 0 的点都是鞍点,但基于梯度下降的优化方法会在鞍点附近接近
于停滞,同样很难从这些鞍点中逃离。
平坦底部 深层神经网络的参数非常多,并且有一定的冗余性,这导致每单个参
数对最终损失的影响都比较小,这导致了损失函数在局部最优点附近是一个平
坦的区域,称为平坦最小值(Flat Minima)[Hochreiter and Schmidhuber, 1997,
Li et al., 2017a]。并且在非常大的神经网络中,大部分的局部最小值是相等的。
虽然神经网络有一定概率收敛于比较差的局部最小值,但随着网络规模增加,网
络陷入局部最小值的概率大大降低 [Choromanska et al., 2015]。图7.2给出了一
种简单的平坦底部示例。
w1
2.0
1.5
1.0
0.5
0.0
0.5
1.0
1.5
2.0
w2
2.0
1.5
1.0
0.5
0.0
0.5
1.0
1.5
2.0
0.00
0.25
0.50
0.75
1.00
1.25
1.50
1.75
2.00
图 7.2 神经网络中的平坦底部示例
7.2 优化算法
目前,深层神经网络的参数学习主要是通过梯度下降方法来寻找一组可以
最小化结构风险的参数。在具体实现中,梯度下降法可以分为:批量梯度下降、
随机梯度下降以及小批量梯度下降三种形式。根据不同的数据量和参数量,可
以选择一种具体的实现形式。除了在收敛效果和效率上的差异,这三种方法都
邱锡鹏:《神经网络与深度学习》 https://nndl.github.io/
134 2018 年 5 月 27 日 第 7 章 网络优化与正则化
存在一些共同的问题,比如 1)如何初始化参数;2)预处理数据;3)如何选择
合适的学习率,避免陷入局部最优等。
7.2.1 小批量梯度下降
目前,在训练深层神经网络时,训练数据的规模比较大。如果在梯度下降
时,每次迭代都要计算整个训练数据上的梯度需要比较多的计算资源。此外,大
规模训练集中的数据通常也会非常冗余,也没有必要在整个训练集上计算梯度。
因此,在训练深层神经网络时,经常使用小批量梯度下降算法。
用 f(x
(i)
, θ)表示一个深层神经网络,θ 为网络参数,使用小批量梯度下降进
行优化,批量大小(Batch Size)为m,即每次选取m个训练样本I
t
= {x
(i)
, y
(i)
}
m
i=1
。
在第 t 次迭代(epoch)时,损失函数关于参数 θ 的偏导数为
g
t
(θ) =
1
m
∑
i∈I
t
∂L
(
y
(i)
, f(x
(i)
, θ)
)
∂θ
, (7.1)
其中 L(·) 为可微分的损失函数。
这 里 的 损 失 函 数 忽 略
了正则化项。加上 ℓ
p
正
则 化 的 损 失 函 数 参 见
第7.7.1节。
第 t 次更新的梯度 g
t
定义为
g
t
, g
t
(θ
t−1
). (7.2)
使用梯度下降来更新参数,
θ
t
← θ
t−1
− α g
t
, (7.3)
其中 α > 0 为学习率。
每次迭代时参数更新的差值 ∆θ
t
定义为
∆θ
t
, θ
t
− θ
t−1
. (7.4)
∆θ
t
和梯度 g
t
并不需要完全一致。∆θ
t
为每次迭代时参数的实际更新方向,即
θ
t
= θ
t−1
+ ∆θ
t
。在标准的小批量梯度下降中,∆θ
t
= −αg
t
。
图7.3给出了在 MNIST数据集上,批量大小对损失下降的影响。从图7.3a可
以看出,每次迭代选取的批量样本数越多,下降效果越明显,并且下降曲线越
平滑。当每次选取一个样本时(相当于随机梯度下降),损失整体是下降趋势,
但局部看会来回震荡。从图7.3b可以看出,如果按整个数据集上的迭代次数的
来看损失变化情况,则是批量样本数越小,下降效果越明显。
邱锡鹏:《神经网络与深度学习》 https://nndl.github.io/
7.2 优化算法 2018 年 5 月 27 日 135
0 1000 2000 3000 4000 5000
iterations
10
-3
10
-2
10
-1
10
0
10
1
loss
SGD(batchsize=1 learningrate=0.01)
SGD(batchsize=32 learningrate=0.5)
SGD(batchsize=2048 learningrate=0.5)
(a) 按每次小批量更新的损失变化
0 1 2 3 4 5 6 7 8
epochs
10
-3
10
-2
10
-1
10
0
10
1
loss
SGD(batchsize=1 learningrate=0.05)
SGD(batchsize=32 learningrate=0.5)
SGD(batchsize=2048 learningrate=0.5)
(b) 按整个数据集迭代的损失变化
图 7.3 小批量梯度下降中,批量大小对损失下降的影响
Epoch(回合)和 Itera-
tion(单 次 更 新) 的 关
系 为 1 个 epoch 等 于
(
训练样本的数量N
批量大小m
)
次
Iter-
ations。
为了更有效地进行训练深层神经网络,在标准的小批量梯度下降方法的基
础上,也经常使用一些改进方法以加快优化速度。常见的改进方法主要从以下
两个方面进行改进:学习率衰减和梯度方向优化。这些改进的优化方法也同样
可以应用在批量或随机梯度下降方法上。
7.2.2 学习率衰减
在梯度下降中,学习率 α 的取值非常关键,如果过大就不会收敛,如果过
小则收敛速度太慢。从经验上看,学习率在一开始要保持大些来保证收敛速度,
在收敛到最优点附近时要小些以避免来回震荡。因此,比较简单直接的学习率
调整可以通过学习率衰减(Learning Rate Decay)的方式来实现。
假设初始化学习率为 α
0
,在第 t 次迭代时的学习率 α
t
。常用的衰减方式为
可以设置为按迭代次数进行衰减。比如逆时衰减(inverse time decay)
α
t
= α
0
1
1 + β ×t
, (7.5)
或指数衰减(exponential decay)
α
t
= α
0
β
t
, (7.6)
或自然指数衰减(natural exponential decay)
α
t
= α
0
exp(−β × t), (7.7)
邱锡鹏:《神经网络与深度学习》 https://nndl.github.io/
剩余33页未读,继续阅读
df595420469
- 粉丝: 26
- 资源: 310
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0