![人工智能:语音识别理解与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/51/35011051/b_35011051.jpg)
4.2 使用误差反向传播进行参数训练
从20世纪80年代开始,人们知道了有着足够大隐层的多层感知器(Multi-Layer Perceptron,MLP)是一个通用的近似算子(Universal Approximator)[183]。换句话说,有足够大隐层的MLP可以近似任意一个从输入空间。显然,既然DNN是多隐层的MLP,那么它自然可以作为一个通用近似算子。
DNN的模型参数{W, b}需要通过每个任务的训练样本|0≤m<M}来训练得到,其中M是训练样本个数,om是第m个观察向量,ym是对应的输出向量。这个过程被称为训练过程或者参数估计过程,需要给定一个训练准则和学习算法。
4.2.1 训练准则
训练准则应该能够被简单地计算,并且与任务有很高的相关性,准则上的提升最后应该能体现到任务的完成水准上。在理想情况下,模型参数的训练应该最小化期望损失函数
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-080-3.jpg?sign=1739584423-vJKmrxKL1YcVmaqm0OwEqQw5J2BK0Vtl-0-2cafd755137e50f21f2fecf6e114a349)
其中,J(W, b; o, y)是损失函数,{W, b}是模型参数,o是观察向量,y是相应的输出向量,p(o)是概率密度函数。不幸的是,p(o)需要从训练集中估计,对训练集中没有出现的样本J(W, b; o, y)也没有被很好地定义(集外样本的标注是未知的)。因此,DNN往往采用经验性准则来训练。
在DNN训练中有两个常用的训练准则。对于回归任务,均方误差(Mean Square Error,MSE)准则
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-080-4.jpg?sign=1739584423-TKPWl5huwVNqkJ6m6zy0TeZZ4f3CZCnP-0-2d5618d01585e6bc8578eb211d0f4c45)
经常被使用,其中
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-080-5.jpg?sign=1739584423-aL0YVOdWvZiz189MQVyZkwoPv8f3bTkM-0-57a8c19702eebffd6a8ce1bed8588707)
对分类任务,设y是一个概率分布,那么交叉熵(Cross Entropy,CE)准则
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-081-1.jpg?sign=1739584423-QeDe6FH7fapCtQ49HxF5lsejeIao1f4l-0-ba2dad1706076a0acd19c8f107719437)
经常被使用,其中
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-081-2.jpg?sign=1739584423-RKtoLfXAkohclKtAKkZLpYqlCmtq4Mxt-0-379046edac449a11d94c97a2a8154c6b)
yi=Pemp(i|o)是观察o属于类i的经验概率分布(从训练数据的标注中来),是采用DNN估计的概率。最小化交叉熵准则等价于最小化经验分布和DNN估计分布的KL距离(Kullback-Leibler Divergence,KLD)。一般来说,人们通常使用硬标注来描述经验概率分布,即
,其中
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-081-5.jpg?sign=1739584423-O5nof65Z4JnMGbk71sV5PNpp87nxqK5p-0-dbd8946a083d970512428a709af83e0e)
是指示函数,c是训练集对于观察o的标注类别。在大部分情况下,公式(4.11)下的CE准则退化为负的对数似然准则(Negative Log-likelihood,NLL)
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-081-6.jpg?sign=1739584423-2DDwk4UGf1qayb4nm0JVXfa8UCXJrFvX-0-5d3a62325899be3e59c5a152813c1d1a)
4.2.2 训练算法
给定训练准则,模型参数{W, b}可以使用著名的误差反向传播(Backpropagation,BP)算法[47]来学习,可以使用链式法则来推导。[2]
在其最简单的形式下,模型参数使用一阶导数信息按照如下公式来优化:
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-081-7.jpg?sign=1739584423-Im1D7NSuAgC07P8Yb1MkI8VFQNVPmDUf-0-f00287137e396d4a3991cf444d4dd388)
其中,分别是在第t次迭代更新之后ℓ层的权重矩阵(Weight Matrix)和偏置向量(Bias Vector)。
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-082-2.jpg?sign=1739584423-gerp0qjUNc8QmZsaquUsqSLDRxri8Gn0-0-f1ccec9477d3e6d9f92817eeb10ecaf6)
以上分别是在第t次迭代时得到的平均权重矩阵梯度和平均偏置向量梯度,这些是使用Mb个训练样本得到的,ε是学习率,∇xJ是J相对x的梯度。
顶层权重矩阵相对于训练准则的梯度取决于训练准则。对于回归问题,当MSE训练准则(公式(4.9))和线性输出层(公式(4.5))被使用时,输出层权重矩阵的梯度是
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-082-3.jpg?sign=1739584423-9MYvr4aWHlGPcmqrGLBXrXIH7md5qE6t-0-a14a89f538805467c4a46d03f5b02e52)
我们定义输出层的误差信号为
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-082-4.jpg?sign=1739584423-QXeKJTRIVXF8uFVZTpLK74yLBplvmpYa-0-6572debfd029f723c2eabe757109586d)
类似地,
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-082-5.jpg?sign=1739584423-jLpFIpFVhnuAJ9gOv91KdioFMTsTzaLE-0-78af07d74b7456ab9f3acb80bf219e51)
对于分类任务,CE训练准则(公式(4.11))和softmax输出层(公式(4.6))被使用,输出层权重矩阵的梯度为
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-083-1.jpg?sign=1739584423-7fGcAdu5rUw6wZFoZXxEJlDIL0qrkPXs-0-0553889d523750ca7a1465ec291c900f)
类似地,我们定义输出层的误差信号为
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-083-2.jpg?sign=1739584423-JqUeSZRkAx2tLqCgUvp93Xhc1igAghyD-0-fce44fcc1fa2a83a6eec306dc5e9bd43)
类似地,
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-083-3.jpg?sign=1739584423-1Jc0O2kn8HQxQPDBqIUuxND7dxd5C2DF-0-af9c9d3c7b56398dc4bb6853f3da3609)
注意,(公式(4.21))看上去与
(W, b; o, y)有相同的形式(公式(4.18))。不过,因为做回归时
,而做分类时
,所以它们其实是不同的。
对于0<ℓ<L,则有
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-084-1.jpg?sign=1739584423-SX438hcckvSRWFFUMnUNCDaDRyKAMyYk-0-4187b5a671649a69dfaed50d252c582c)
其中,是层ℓ的误差信号,•是元素级相乘,diag(x)是一个对角线为x的方矩形,
是激活函数的元素级导数。对于sigmoid激活函数来说,则有
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-084-4.jpg?sign=1739584423-Dm1Dzx3aslwFfIlMAnJXpD4KjhI3dp5M-0-937366576f71b701bce4e8309514e96f)
类似地,tanh激活函数的导数为
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-084-5.jpg?sign=1739584423-lVXowF4tCb12w1dqq7GDyDRf34eilv5x-0-52c8d01dfe04b430184745c06940b888)
其中,每个元素的符号函数。误差信号能从顶层向下反向传播
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-085-2.jpg?sign=1739584423-nqkunATGpul54Vrgj6aEzGkRK8bN4I8L-0-b23dfdcfd40432f394fb64ff6e5ed5e4)
对于ℓ<L,则有
![](https://epubservercos.yuewen.com/98014D/18685354608165306/epubprivate/OEBPS/Images/38143-00-085-3.jpg?sign=1739584423-qFoTWLItS7UWJ9fBQs2oMwPibIAAzcJO-0-1946ebca6d42ff188d6ce50f7888ce0f)
反向传播算法的关键步骤在算法4.2中进行了总结。