神经网络优化之学习率&正则化&滑动平均模型

1 反向传播

1.0 损失函数

损失函数(loss function):刻画预测值和真实值差异的函数。
交叉熵(cross entropy):刻画两个概率分布间的距离,是分类问题中运用较广的一种损失函数,以预测值q刻画真实值p,评估两者的“差距”,交叉熵越小,两者概率分布越接近。
c r o s s ( p , q ) = − ∑ x p ( x ) l o g q ( x ) cross(p,q)=-\sum_{x}p(x)logq(x) cross(p,q)=xp(x)logq(x)

1.2 softmax

softmax回归模型是logistic回归模型在多分类问题上的推广,多分类问题中,类标签y可以取两个以上的值,突破了二分类的限制,经典应用为MINIST手写数字分类。
s o f t m a x ( y ) i = y i ′ = e y i ∑ j = 1 n e y j softmax(y)_i=y_i{'}=\frac{e^{y_i}}{\sum_{j=1}^{n}e^{y_j}} softmax(y)i=yi=j=1neyjeyi
  神经网络中,原始输出经过softmax层回归后,原始输出被用作置信度产生新的输出,新的输出满足概率分布。将神经网络的输出转化成一个概率分布,因而可以使用交叉熵计算预测值与真实值概率分布之间的距离。

1.3 交叉熵损失函数

tf.nn.softmax_cross_entroy_with_logits(_sentinel=None, labels=None, logits=None, dim=-1, name=None)

功能:
计算logits和labels的分类交叉熵.

序号参数描述
1_sentinel内置参数,不使用.位置参数
2labels概率分布,如图像的标签概率分布
3logitslog计算的估计值
4dim维度,-1表示维度的最后一个值
5name可操作变量名

2 学习率

学习率(learning rate):控制自变量更新幅度的变量,表示为η。如果η多大,导致损失函数极值附近波动,不能达到极值;η过小,导致收敛速度过慢,降低优化速度。

2.1 学习率设置

θ n + 1 = θ n − η ∂ ∂ θ n J ( θ n ) \theta_{n+1}=\theta_n-\eta\frac{\partial}{\partial\theta_n}J(\theta_n) θn+1=θnηθnJ(θn)
学习率:用于更新参数 θ \theta θ并控制其变化速度,表示为 η \eta η.
学习率过大,导致参数变化幅度较大,可能导致参数在极值附近波动;
学习率过小,导致参数变化幅度过小,导致训练速度过慢,降低效率;
下表为经验设定,从0.001开始依次类推.

序号经验值
10.001
20.003
30.01
40.03
50.1
60.3

2.2 学习率衰减函数

tf.train.exponential_decay(learning_rate, global_step, decay_steps, decay_rate, staircase=False, name=None)

函数实现功能如下:

decayed_learning_rate=learning_rate*decay_rate^(global_step/decay_steps)

功能:计算值每轮优化时使用的学习率.
参数描述

序号参数描述
1learning_rate初始学习率,预先设定的初始学习率
2global_step计算使用的数值,必须为正数
3decay_steps衰减速度,表示训练一遍数据需要的迭代次数
4decay_rate学习率衰减函数
5staircase若为True,global_step/decay_steps转为整数
6name操作变量名,默认为ExponentialDecay

使用说明
  tf.train.exponential_decay函数可以通过设置参数staircase选择不同的衰减方式,staircase默认为False,该情况下学习率连续衰减,staircase为True时,学习率为阶梯状衰减。
  学习率连续衰减:不同的训练数据有不同的学习率,当学习率减小时,对应的训练数据对模型训练结果的影响相应减小。

3 正则化

过拟合:当模型过于复杂,该模型可以很好的"记忆"每个训练数据中随机噪声的部分而"忘记"要去"学习"训练数据中的通用趋势,即该模型可100%跟随训练数据,而忽略了训练数据的变化趋势,降低了泛化能力和迁移能力.
为避免过拟合问题,常用方法为正则化(regularization).正则化即在损失函数中加入刻画模型复杂程度的指标.
如损失函数为 J ( θ ) J(\theta) J(θ),在优化时不直接优化 J ( θ ) J(\theta) J(θ),而是优化 J ( θ ) + λ R ( w ) J(\theta)+\lambda R(w) J(θ)+λR(w).其中, R ( w ) R(w) R(w)刻画模型的复杂程度,而 λ \lambda λ表示模型复杂损失在总损失中的比例, θ \theta θ表示神经网络中所有参数,权重 w w w和偏置 b b b,一般而言,模型复杂度只由权重 w w w决定.常用刻画模型复杂度的函数 R ( w ) R(w) R(w)有两种, L 1 L1 L1 L 2 L2 L2.
其中,
L 1 L1 L1
R ( w ) = ∣ ∣ w ∣ ∣ 1 = ∑ i ∣ w i ∣ R(w)=||w||_1=\sum_i|w_i| R(w)=w1=iwi
L 2 L2 L2
R ( w ) = ∣ ∣ w ∣ ∣ 1 2 = ∑ i ∣ w i 2 ∣ R(w)=||w||_1^2=\sum_i|w_i^2| R(w)=w12=iwi2
正则化基本思想是通过限制权重大小,使模型不能任意训练数据中的随机噪音。两种正则化区别如下:
(1) L 1 L1 L1正则化会使参数变稀疏, L 2 L2 L2正则化不会;参数变稀疏指更多的参数变为0,可达到类似特征选取的功能。
(2) L 1 L1 L1正则化计算公式不可导, L 2 L2 L2正则化公式可导;在计算损失函数偏导数是,对含有 L 2 L2 L2正则化损失函数的优化更加简洁,优化带 L 1 L1 L1正则化损失函数则较为复杂。
实际应用中,优化方法为 L 1 L1 L1 L 2 L2 L2共用:
R ( w ) = ∑ i α ∣ w i ∣ + ( 1 − α ) w i 2 R(w)=\sum_i\alpha|w_i|+(1-\alpha)w_i^2 R(w)=iαwi+(1α)wi2
Tensorflow中对应函数:

tf.contrib.layers.l1_regularizer()
tf.contrib.layers.l2_regularizer()

4 滑动平均模型

滑动平均模型是使模型在测试数据上更加健壮(robust)。在采用随机梯度下降算法训练神经网络时,使用滑动平均模型在诸多应用中都可在一定程度上提高最终模型在测试数据上的表现。
Tensorflow中对应函数:

tf.train.ExponentialMovingAverage(decay, num_updates, zero_debias, name)

功能:使用指数衰减保持变量的滑动平均值.

序号参数描述
1decay衰减率
2num_updates变量更新时,使用的参数
3zero_debias若为True,初始化滑动平均值
4name可操作变量名

在初始化滑动平均模型时,需要提供一个衰减率(decay),用于控制模型更新速度。函数对每个变量会维护一个影子变量(shadow variable),该影子变量的初始值即为相应变量的初始值,每次运行变量更新时,影子变量的值会更新为:
shadow _variable=decay*shadow_variable+(1-decay)*variable
其中,
shadow_variable为影子变量,variable为待更新变量,decay为更新率。
decay决定了模型的更新速度,decay越大模型越趋于稳定。实际应用中,decay一般设成趋近于1的值,如0.999,0.9999。为使模型在训练前期可以加快更新速度,ExponentialMovingAverage提供了num_updates参数动态设置decay的大小。每次更新的衰减率为:
m i n { d e c a y , 1 + n u m u p d a t e s 10 + n u m u p d a t e s } min\left\{ decay,\frac{1+num_updates}{10+num_updates} \right\} min{decay,10+numupdates1+numupdates}


更新ing
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天然玩家

坚持才能做到极致

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

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

打赏作者

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

抵扣说明:

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

余额充值