人工神经网络笔记(一)后向传播、随机最优化、设定超参数

人工神经网络笔记(一)后向传播、随机最优化、设定超参数

  • Background propagation
  • Stochastic optimization
  • Hyper-parameter tuning

1、一个简单的神经网络

人工神经网络笔记(一)后向传播、随机最优化、设定超参数

其中,l(y,f(x:θ)l(y,f(x: \theta) 代表损失函数,表示真实值和预测值之间的差距,模型参数 θ=[Wh,Wo,bh,bo]\theta =[W^h,W^o,b^h,b^o] ;

该神经网络的目标是找到使得ll最小的 θ\theta

后向传播(Background propagation):利用链式法则计算梯度,再更新模型参数;

例,对于w1w_1

δlδw1=δlδh1δh1δw1=(δlδz1δz1δh1+δlδz2δz2δh1)(δh1δu1δu1δw1)\frac{\delta l}{\delta w_1} = \frac{\delta l}{\delta h_1} \frac{\delta h_1}{\delta w_1} = (\frac{\delta l}{\delta z_1}\frac{\delta z_1}{\delta h_1}+\frac{\delta l}{\delta z_2}\frac{\delta z_2}{\delta h_1} )*(\frac{\delta h_1}{\delta u_1}\frac{\delta u_1}{\delta w_1})

w1=w1lrδlδw1w_1 = w_1 - lr*\frac{\delta l}{\delta w_1}

lrlr表示学习率

2、梯度下降法

2.1 Batch gradient descant

θt+1=θtηL(θt)=θtηNn=0Nl(yn,f(xn:θt))\theta_{t+1} = \theta_t - \eta\nabla L(\theta_t) = \theta_t - \frac{\eta}{N}\sum^N_{n=0} \nabla l(y_n,f(x_n:\theta_t))


缺点:每次训练都使用全部训练样本,导致训练过程缓慢,且对内存要求大;

优点:能找到损失函数的最小值;

2.2 Stochastic gradient descent

θt+1=θtηL(θt)=θtηl(yn,f(xn:θt))\theta_{t+1} = \theta_t - \eta\nabla L(\theta_t) = \theta_t - \eta \nabla l(y_n,f(x_n:\theta_t))


缺点:存在收敛波动
优点

(1)每次使用一个样本进行更新,更新速度快;

(2)可能学习到更好的局部最优解;

2.3 Mini-batch gradient descent

θt+1=θtηL(θt)=θtηS(xn,yn)Sl(yn,f(xn:θt))\theta_{t+1} = \theta_t - \eta\nabla L(\theta_t) = \theta_t - \frac{\eta}{|S|} \sum_{(x_n,y_n) \in S} \nabla l(y_n,f(x_n:\theta_t))

每次迭代选取一个批量的数据,|S|通常取10-300的范围,综合了Batch和 Stochastic两种方法的优点;

3 优化梯度的下山法

3.1 Momentum

可以理解为:在下降过程中,之前的下降冲量还具有残存的影响,有时这种影响能帮助度过滑坡;

vt+1=γvt+ηL(θt)v_{t+1} = \gamma v_t + \eta \nabla L(\theta_t)

θt+1=θtvt+1\theta_{t+1} = \theta_t - v_{t+1}

其中,γ\gamma是衰减率,那么迭代地,可以有:

vt+1=η(L(θt)+γL(θt1)+γ2L(θt2)+......)v_{t+1} = \eta (\nabla L(\theta_t) + \gamma \nabla L(\theta_{t-1}) + \gamma^2 \nabla L(\theta_{t-2}) + ......)

简单理解为:在每次下降过程中,下降方向的选取由当前梯度和之前的梯度共同决定;

3.2 Nesterov accelerated gradient(NAG)

考虑未来下降的位置:θγvt\theta - \gamma v_t,当前下降方向由当前位置和未来位置共同决定:

vt+1=γvt+ηL(θtγvt)v_{t+1} = \gamma v_t + \eta \nabla L(\theta_t - \gamma v_t) ,

θt+1=θtvt+1\theta_{t+1} = \theta_t - v_{t+1}

γη;\gamma 代表衰减率,\eta 代表学习率;

4 自适应学习率

4.1 Adagrad

使用历史梯度的平方和的平方根自适应地更新每个参数的学习速度;

历史导数平方和gt,ig_{t,i}的递归表示形式:

gt+1,i=gt,i+(L(θt)θi)2g_{t+1,i} = g_{t,i} + {(\frac{\partial L(\theta_t)}{\partial \theta_i})}^2

自适应学习率的梯度更新方式:

θt+1,i=θt,iηgt+1,i+ϵ(L(θt)θi)\theta_{t+1,i} = \theta_{t,i} - \frac{\eta}{g_{t+1,i} + \epsilon}(\frac{\partial L(\theta_t)}{\partial \theta_i})

无需手动调整学习率,随着迭代时间的推移,历史梯度平方和会变大,最终导致学习率降低;

4.2 Root Mean Square propagation(RMSprop)

gt+1,i=γgt,i+(1γ)(L(θt)θi)2g_{t+1,i} = \gamma g_{t,i} + (1-\gamma) {(\frac{\partial L(\theta_t)}{\partial \theta_i})}^2

θt+1,i=θt,iηgt+1,i+ϵ(L(θt)θi)\theta_{t+1,i} = \theta_{t,i} - \frac{\eta}{g_{t+1,i} + \epsilon}(\frac{\partial L(\theta_t)}{\partial \theta_i})

通常地,gamma=0.9gt+1,igamma = 0.9 , g_{t+1,i}是梯度的历史平均值

4.3 Adaptive Moment Estimation

自适应矩估计,mt,igt,im_{t,i}代表一阶均值矩,g_{t,i}代表二阶方差矩

mt+1,i=β1mt,i+(1β1)L(θt)θim_{t+1,i} = \beta_1 m_{t,i} + (1-\beta_1)\frac{\partial L(\theta_t)}{\partial \theta_i}

mt+1,i=mt+1,i1β1t+1m_{t+1,i}^{'} = \frac{m_{t+1,i}}{1-\beta_1^{t+1}}

gt+1,i=β2g(t,i)+(1β2)(L(θt)θi)2g_{t+1,i} = \beta_2 g(t,i) + (1 - \beta_2){(\frac{\partial L(\theta_t)}{\partial \theta_i})}^2

gt+1,i=gt+1,i1β2t+1g_{t+1,i}^{'} = \frac{g_{t+1,i}}{1-\beta_2^{t+1}}

θt+1,i=θt,iηgt+1,i+ϵmt+1,i\theta_{t+1,i} = \theta_{t,i} - \frac{\eta}{g_{t+1,i}^{'} + \epsilon} m_{t+1,i}^{'}

5 总结

人工神经网络笔记(一)后向传播、随机最优化、设定超参数

6 附:Hyper-parameter tuning

6.1 超参数训练

超参数:在机器学习中,超参数是指预先设置的参数,而不是通过训练得到的参数,例如:学习率lr、神经网络层数、神经元数量等;

将数据集分为三部分:

(1)Training set:训练集,训练模型参数;

(2)Validation set:验证集,训练超参数;

(3)Test set:测试集,模型验证;

在经过训练的模型中,选择在验证集上具有最佳性能的一组超参数;

人工神经网络笔记(一)后向传播、随机最优化、设定超参数

问:多组超参数从何而来?

(1)Grid Search(网格搜索)

在参数空间内的穷举搜索,只适用于小量的超参数;

人工神经网络笔记(一)后向传播、随机最优化、设定超参数

(2)Random Search(随机搜索)

当参数数量较多时,优于网格搜索;

人工神经网络笔记(一)后向传播、随机最优化、设定超参数

(3)超参数训练过程中的进化策略:类似于遗传算法,结合最好与最坏的超参数集,通过交叉和变异,获取新的超参数集;

6.2 训练与验证

当训练集合较小时,使用K-交叉验证,(K-1)份训练集,1份测试集;

人工神经网络笔记(一)后向传播、随机最优化、设定超参数