声学模型学习笔记(二) DNN

training

这里写图片描述

training criteria

1.MSE
对于回归任务,可以使用MSE(mean square error)准则:
J M S E ( W , b ; o , y ) = 1 2 ( v L − y ) T ( v L − y ) J_{MSE}(W,b;o,y)=\frac{1}{2}(v^L-y)^T(v^L-y) JMSE(W,b;o,y)=21(vLy)T(vLy)
y y y表示标注结果, v v v表示预测结果
2.CE
对于分类任务,可以使用CE(cross-entropy)准则:
J C E ( W , b ; o , y ) = − ∑ i = 1 C y i l o g v i L J_{CE}(W,b;o,y)=-\sum_{i=1}^Cy_ilogv_i^L JCE(W,b;o,y)=i=1CyilogviL
3.NLL
对于输出概率只有对应标注的为1,其他的概率都是0,所以CE可以简化为NLL(negative log-likilihood)准则:
J N L L ( W , b ; o , y ) = − l o g v c L J_{NLL}(W,b;o,y)=-logv_c^L JNLL(W,b;o,y)=logvcL
其中c表示标注的类别。

bp training

假设使用CE准则,层数为 l = 1 , 2 , . . . , L l=1,2,...,L l=1,2,...,L,每一层线性转化以后的输出为 z t l = W t l ∗ v t l − 1 + b t l z_t^l=W_t^l*v_t^{l-1}+b_t^l ztl=Wtlvtl1+btl,非线性转化以后的输出为 v t l v_t^l vtl,误差为 e t l e_t^l etl.
BP推导比较简单,直接结果如下:
1.对于L层(最后一层)
Δ W t L J C E ( W , b ; o , y ) = Δ z t L J C E ( W , b ; o , y ) ∂ z t L ∂ W t L = ( v t L − y ) ( v t L − 1 ) T \Delta _{W_t^L}J_{CE}(W,b;o,y)=\Delta _{z_t^L}J_{CE}(W,b;o,y)\frac{\partial z_t^L}{\partial W_t^L}=(v_t^L-y)(v_t^{L-1})^T ΔWtLJCE(W,b;o,y)=ΔztLJCE(W,b;o,y)WtLztL=(vtLy)(vtL1)T
Δ b t L J C E ( W , b ; o , y ) = ( v t L − y ) \Delta _{b_t^L}J_{CE}(W,b;o,y)=(v_t^L-y) ΔbtLJCE(W,b;o,y)=(vtLy)
2.其他层
Δ W t l J C E ( W , b ; o , y ) = [ f ′ ( z t l ) ∙ e t l ] ( v t l − 1 ) T \Delta _{W_t^l}J_{CE}(W,b;o,y)=[f'(z_t^l) \bullet e_t^l](v_t^{l-1})^T ΔWtlJCE(W,b;o,y)=[f(ztl)etl](vtl1)T
Δ b t l J C E ( W , b ; o , y ) = f ′ ( z t l ) ∙ e t l \Delta _{b_t^l}J_{CE}(W,b;o,y)=f'(z_t^l) \bullet e_t^l ΔbtlJCE(W,b;o,y)=f(ztl)etl
其中误差 e t l e_t^l etl如下:
e t L − 1 = ( W t L ) T e t L e_t^{L-1}=(W_t^L)^Te_t^L etL1=(WtL)TetL
e t l − 1 = ( W t l ) T [ f ′ ( z t l ) ∙ e t l ] e_t^{l-1}=(W_t^l)^T[f'(z_t^l) \bullet e_t^l] etl1=(Wtl)T[f(ztl)etl]

tricks

data preprocessing

对于训练集 ( o m , y m ) , 0 ≤ m < M (o^m,y^m) ,0\le m \lt M (om,ym),0m<M,首先根据训练集计算均值和方差:
μ i = 1 M ∑ m = 1 M o i m \mu_i=\frac{1}{M}\sum_{m=1}^Mo_i^m μi=M1m=1Moim
δ i = 1 M ∑ m = 1 M ( o i m − μ i ) 2 \delta_i=\sqrt{\frac{1}{M}\sum_{m=1}^M(o_i^m-\mu_i)^2} δi=M1m=1M(oimμi)2
然后训练集和测试集进行归一化:
o ~ i m = o i m − μ i δ i \tilde{o}_i^m=\frac{o_i^m-\mu_i}{\delta_i} o~im=δioimμi
当特征的各个维度在同样的数值范围值归一化以后,可以进行更好的训练。

initialization

可以使用均值为0、方差为 δ W l + 1 = 1 N l \delta_{W^{l+1}=\frac{1}{\sqrt{N_l}}} δWl+1=Nl 1的高斯分布,其中 N l N_l Nl表示连接到这个节点的入边个数。
也可以使用RBM、DBM、autodecoder等高级方法进行模型初始化。

weight decay

为了解决过拟合问题引入正则化

dropout

dropout也是为了解决过拟合问题引入。

batch size

使用梯度下降的训练方法包括BGD/SGD/MBGD三种形式,三者的关系这片博客写的比较清楚。
BGD:更新一次参数使用全部训练集;目标函数是整体风险最小,收敛于全局最优;但是训练集较大的时候存在训练速度慢的问题。
SGD:更新一次参数使用一个训练数据;目标函数是单个样本风险最小(容易引入noise,反而有利于跳出局部最优),收敛于局部最优,当满足一定条件,可以接近全局最优;训练速度快(参数更新快);不容易并行,而且会在最小值附近震荡。
MBGH:更新一次参数使用minibatch的数据;介于BGD和SGD之间,方便并行;开始使用较小的batch size,后面使用较大的batch size

sample randomization

BGD不受影响,SGD和MBGD需要使用,如果训练数据的随机采样做的不好的话(比如都是同一个人的语音),会导致模型训练沿着特定的方向严重走偏。

momentum

如果当前模型参数的更新,不仅使用当前的梯度,还包含里之前梯度的信息(具备了全局的视角),那么收敛速度将会加快。引入了动量技术,梯度表示为:
Δ W t l = ρ Δ b t − 1 l + ( 1 − ρ ) 1 M b ∑ m = 1 M b ∇ W t l J ( W , b ; o m , y m ) \Delta W_t^l=\rho \Delta b_{t-1}^l+(1-\rho)\frac{1}{M_b}\sum_{m=1}^{M_b}\nabla_{W_t^l}J(W,b;o^m,y^m) ΔWtl=ρΔbt1l+(1ρ)Mb1m=1MbWtlJ(W,b;om,ym)
其中 ρ \rho ρ成为动量因子,使用SGD或者MBGD的时候,一般取值0.9-0.99。

learning rate

开始较大,后面减小

reproducibility and restartability

使用同样的random seed保证可以复现
使用check-point,可以中断以后接着上次的结果继续训练

参考文献

《automatic speech recognition a deep learning approach》 chapter 4

后面的技术分享转移到微信公众号上面更新了,【欢迎扫码关注交流】

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值