性能优化技巧
常用技巧
训练数据与测试数据:
数据包括训练数据,验证数据与测试数据,通常三者比例为70%,15%,15%或者60%,20%,20%,当数据很多时,训练和验证数据可适当减少
K折交叉验证:
原始训练数据被分成K个不重叠的子集。然后执行K次模型训练和验证,每次在K−1个子集上进行训练,并在剩余的一个子集(在该轮中没有用于训练的子集)上进行验证。最后,通过对K次实验的结果取平均来估计训练和验证误差。
欠拟合与过拟合:
欠拟合:误差一直比较大
过拟合:训练数据集上误差小,但是测试数据集上误差大
权重衰减(
L
2
L_2
L2正则化):
为防止过拟合和权值震荡,引入新的指标函数,约束权值不能过大:
J
(
w
)
+
λ
2
∣
∣
w
∣
∣
2
J(w)+\frac{\lambda}{2}||w||^2
J(w)+2λ∣∣w∣∣2
dropout(暂退):
在训练过程中,标准暂退法在计算下一层之前将当前层中的一些节点置零
模型初始化:
把所有权值在
[
−
1
,
1
]
[-1,1]
[−1,1]区间内按均值或搞死分布进行初始化
Xavier初始化:为了使网络中信息更好的流动,每一层输出的方差应该尽量相等,采用一下均匀分布:
W
∼
U
[
−
6
n
j
+
n
j
+
1
,
6
n
j
+
n
j
+
1
]
W\sim U\left[-\frac{\sqrt6}{\sqrt{n_j+n_{j+1}}},\frac{\sqrt6}{\sqrt{n_j+n_{j+1}}}\right]
W∼U[−nj+nj+16,nj+nj+16]
动量法
v
t
=
α
v
t
−
1
−
ϵ
g
t
Δ
θ
=
v
t
θ
t
+
1
=
θ
t
+
Δ
θ
v_t = \alpha v_{t-1}-\epsilon g_t\\[2mm] \Delta \theta = v_t\\[2mm] \theta_{t+1} = \theta_t + \Delta\theta
vt=αvt−1−ϵgtΔθ=vtθt+1=θt+Δθ
自适应梯度法
AdaGrad:Adaptive Gradient
参数自适应变化:具有较大偏导的参数相应有一个较大的学习率,而具有小偏导的参数则对应一个较小的学习率
每个参数的学习率会缩放各参数反比于其历史梯度平方值总和的平方根
RMSProp: Root Mean Square Prop
解决了AdaGrad方法中学习率过度衰减的问题,引入超参数
ρ
\rho
ρ控制衰减速率,并采用指数衰减提高收敛速度
Adam算法
在RMSProp基础上加入了历史梯度平方的指数衰减平均,在误差面上倾向于平坦的极小值