第1篇-《Deep Learning》阅读心得分享(包括反向传播公式推导)

本文是作者对《Deep Learning》一书的阅读心得,重点介绍了深度学习中的反向传播算法、卷积神经网络(CNN)和循环神经网络(RNN)的基本原理。通过反向传播,模型可以更新权重和偏置以优化性能。在CNN部分,讨论了卷积层和池化层的作用,而在RNN部分,解释了RNN如何处理时序数据。文章指出,深度学习的未来趋势包括无监督学习和自然语言处理的应用。

论文原文链接

《Deep Learning》

读完论文后的感想

    这篇文章是一篇综述性质得论文,文章主要从以下几个结构来说明最近几十年深度学习的发展:背景介绍、监督学习、反向传播算法(也就是修正权重和偏置得参数)、卷积神经网络、使用卷积神经网络的图像理解、分布式表示和语言处理、循环神经网络(特指RNN系列,不是递归神经网络,好多人弄错,大家可以自行百度下)以及深度学习的未来。

背景介绍

    文章粗略的介绍了下什么是深度神经网络,深度学习近几年在哪些领域有应用,以及深度神经网络和传统的特征抽取器+机器学习算法这种模型的对比。比如对图片进行分类,传统的模型是首先设计一个特征抽取器,然后再使用分类方法(比方二分类模型好了)将特征映射到二分超平面上去,从而判断这个图像是属于哪个类别。但是,这种方法存在几点缺点:

  1. 特征抽取器的设计非常依赖工程师的领域知识,如果是非资深工程师,将很难设计一个好的特征抽取器。
  2. 即使设计了一个非常优秀的特征抽取器,可是由于特征存在一些噪音(论文中拿萨摩耶和狼举了例子),比如萨摩耶在图片中的姿势,图片中的亮度,背景以及一些其他对分类无关紧要的特征,使模型的分类效果无法达到非常好。而深度神经网络,仅仅是很多层,并且每一层都是一些简单的函数,对原始特征进行不断的映射,映射,再映射,直到达到最后一层,在最后一层对该图片进行分类,就是这么一个简单的思路,使得不再需要人工设计特征抽取器(因为深度神经网络在不断的映射的过程中,已经进行特征抽取了),并且,随着不同层不断地映射,最终,那些对分类无关紧要的特征(也就是上面说的这些),便会被抑制了,从而模型对这些特征“不敏感”,而对那些对分类有很大作用的细节部位非常“敏感”。深度神经网络的模型效果还比传统的模型效果好。

监督学习

    监督学习简单来说,就是使用带有标签的数据,来训练模型(传统机器学习模型或者深度神经网络)。标签可以指导模型的参数该往什么方向去调整,从而让模型不断的拟合训练集的数据。那这个标签是如何体现它的价值呢?模型会在输出层将输出和标签进行作差,所得的函数(或者差值),我们称它为目标函数,训练的过程就是让这个目标函数的值不断的减少,从而达到某个条件(认为设定的条件,比如误差少于某个数值)时,停止训练,模型便收敛了。而参数该如何知道我该增加多少数值,或减少多少数值呢?这个时候就要将目标函数对参数进行求导,然后让目标函数往负梯度方向变化。举个例子来说,假如模型有100个参数(也就是变量,可以理解为自变量,目标函数可以理解为因变量),那么目标函数也就是相当于包含了100个自变量的函数,然后对每个参数进行求偏导,便会得到100个偏导数,将这100个导数写成向量的形式,这个向量便代表了目标函数的梯度方向(梯度方向就是这样定义的)。往梯度方向变化,就是目标函数增长最快的方向。而我们是要让目标函数达到全局最小值,那就是往负梯度方向变化。

    那为什么我们要乘上一个学习率呢?因为梯度意味是一个极限值,也就是当往梯度方向迈的步子趋于0时,目标函数才会增长的最大。因此,我们会在求完梯度后,在这个梯度上乘以一个学习率。如果每次参数变化的值很大,那么这个梯度的意义就变了。因为梯度是一个极限值!大家可以细细品味下,或者可以翻开《高等数学》同济大学第7版下册中,把梯度相关的内容看一下。

    在现实中,从业者往往会使用随机梯度下降的方法来进行模型参数的调整,因为这种方法相较于使用整个训练集进行参数调整来说,收敛快。(这里我个人认为由于异常数据所占比例往往很少,因此有时候单个样本或者小批次的样本,也同样会让模型往正确的方向去改变。)

反向传播算法及其推导

    文章也描述了深度神经网络是使用反向传播算法进行参数修正的。那么在这里,我给大家详细说明下如何进行参数修正。

Alt
假如给定我们一个全连接的神经网络,如上图。

根据这个图,我们可以写出以下式子来。

[ T 1 T 2 ]   =   R e l u ( [ X 11 X 12 X 13 ] [ W 11 W 12 W 21 W 22 W 31 W 32 ] + [ b 1 b 2 ] ) ( 1 ) \begin{bmatrix}T_1&T_2\end{bmatrix}\ =\ Relu(\begin{bmatrix}X_{11}&X_{12}&X_{13}\end{bmatrix} \begin{bmatrix}W_{11}&W_{12}\\W_{21}&W_{22}\\W_{31}&W_{32}\end{bmatrix}+\begin{bmatrix}b_1&b_2\end{bmatrix})\qquad(1) [T1T2] = Relu([X11X12X13] W11W21W31W12W22W32 +[b1b2])(1)

y p r e 1 = e T 1 ∑ i = 1 2 e T i ( 2 ) y_{pre1}=\frac{e^{T_1}}{\sum_{i=1}^2 e^{T_i}}\qquad (2) ypre1=i=12eTieT12

y p r e 2 = e T 2 ∑ i = 1 2 e T i ( 3 ) y_{pre2}=\frac{e^{T_2}}{\sum_{i=1}^2 e^{T_i}}\qquad (3) ypre2=i=12eTieT23

由(1)式可得

T 1 = R e L U ( X 11 ∗ W 11 + X 12 ∗ W 21 + X 13 ∗ W 31 + b 1 ) ( 4 ) T_1=ReLU(X_{11}*W_{11}+X_{12}*W_{21}+X_{13}*W_{31}+b_1)\qquad (4) T1=ReLU(X11W11+X12W21+X13W31+b1)4

T 2 = R e L U ( X 11 ∗ W 12 + X 12 ∗ W 22 + X 13 ∗ W 32 + b 2 ) ( 5 ) T_2=ReLU(X_{11}*W_{12}+X_{12}*W_{22}+X_{13}*W_{32}+b_2)\qquad (5) T2=ReLU(X11W12+X12W22+X13W32+b2)5

t 1 = X 11 ∗ W 11 + X 12 ∗ W 21 + X 13 ∗ W 31 + b 1 ( 6 ) t_1=X_{11}*W_{11}+X_{12}*W_{21}+X_{13}*W_{31}+b_1\qquad(6) t1=X11W11+X12W21+X13W31+b16

t 2 = X 11 ∗ W 12 + X 12 ∗ W 22 + X 13 ∗ W 32 + b 2 ( 7 ) t_2=X_{11}*W_{12}+X_{12}*W_{22}+X_{13}*W_{32}+b_2\qquad(7) t2=X11W12+X12W22+X13W32+b27

T 1 = R e L U ( t 1 ) ( 8 ) T_1=ReLU(t_1)\qquad(8) T1=ReLU(t1)8

T 2 = R e L U ( t 2 ) ( 9 ) T_2=ReLU(t_2)\qquad(9) T2=ReLU(t2)9

因此

y p r e 1 = e R e L U ( X 11 ∗ W 11 + X 12 ∗ W 21 + X 13 ∗ W 31 + b 1 ) ∑ i = 1 2 e R e L U ( X 11 ∗ W 1 i + X 12 ∗ W 2 i + X 13 ∗ W 3 i + b i ) ( 10 ) y_{pre1}=\frac{e^{ReLU(X_{11}*W_{11}+X_{12}*W_{21}+X_{13}*W_{31}+b_1)}}{\sum_{i=1}^2 e^{ReLU(X_{11}*W_{1i}+X_{12}*W_{2i}+X_{13}*W_{3i}+b_i)}}\qquad(10) ypre1=i=12eReLU(X11W1i+X12W2i+X13W3i+bi)eReLU(X11W11+X12W21+X13W31+b1)10

y p r e 2 = e R e L U ( X 11 ∗ W 12 + X 12 ∗ W 22 + X 13 ∗ W 32 + b 2 ) ∑ i = 1 2 e R e L U ( X 11 ∗ W 1 i + X 12 ∗ W 2 i + X 13 ∗ W 3 i + b i ) ( 11 ) y_{pre2}=\frac{e^{ReLU(X_{11}*W_{12}+X_{12}*W_{22}+X_{13}*W_{32}+b_2)}}{\sum_{i=1}^2 e^{ReLU(X_{11}*W_{1i}+X_{12}*W_{2i}+X_{13}*W_{3i}+b_i)}}\qquad(11) ypre2=i=12eReLU(X11W1i+X12W2i+X13W3i+bi)eReLU(X11W12+X12W22+X13W32+b2)11

此时,我们定义目标函数=预测值和标签(真实值)的交叉熵函数
交叉熵函数是这样的:

H ( p , q ) = − ∑ x p ( x ) q ( x ) ( 12 ) H(p,q)=-\sum_xp(x)q(x)\qquad(12) H(p,q)=xp(x)q(x)12

在这里,我们可以把标签看做是 p ( x p(x p(x),把预测值看做是 q ( x ) q(x) q(x)

o b j e c t   f u n c t i o n = − y l a b e l 1 ∗ y p r e 1 − y l a b e l 2 ∗ y p r e 2 ( 13 ) object\,function=-y_{label1}*y_{pre1}-y_{label2}*y_{pre2}\qquad(13) objectfunction=ylabel1ypre1ylabel2ypre213

接着,我们让目标函数对每个参数都求偏导数,也就是对 W 11 W_{11} W11 W 12 W_{12} W12 W 21 W_{21} W21 W 22 W_{22} W22 W 31 W_{31} W31 W 32 W_{32} W32 b 1 b_{1} b1 b 2 b_{2} b2。因为模型中只有这几个能够变化的自变量。 ∂ o b e j c t   f u n c t i o n ∂ W 11 \frac{\partial obejct\,function}{\partial W_{11}} W11obejctfunction ∂ o b e j c t   f u n c t i o n ∂ W 12 \frac{\partial obejct\,function}{\partial W_{12}} W12obejctfunction ∂ o b e j c t   f u n c t i o n ∂ W 21 \frac{\partial obejct\,function}{\partial W_{21}} W21obejctfunction ∂ o b e j c t   f u n c t i o n ∂ W 22 \frac{\partial obejct\,function}{\partial W_{22}} W22obejctfunction ∂ o b e j c t   f u n c t i o n ∂ W 31 \frac{\partial obejct\,function}{\partial W_{31}} W31obejctfunction ∂ o b e j c t   f u n c t i o n ∂ W 32 \frac{\partial obejct\,function}{\partial W_{32}} W32obejctfunction ∂ o b e j c t   f u n c t i o n ∂ b 1 \frac{\partial obejct\,function}{\partial b_{1}} b1obejctfunction ∂ o b e j c t   f u n c t i o n ∂ b 2 \frac{\partial obejct\,function}{\partial b_{2}} b2obejctfunction

我们对其中的 W 11 W_{11} W11进行详细的推导,余下的参数推导方式是一样的。

∂ o b e j c t   f u n c t i o n ∂ W 11 = ∂ − y l a b e l 1 ∗ y p r e 1 − y l a b e l 2 ∗ y p r e 2 ∂ W 11 = − y l a b e l 1 ∗ ∂ y p r e 1 ∂ W 11 − y l a b e l 2 ∗ ∂ y p r e 2 ∂ W 11 ( 14 ) \begin{aligned} \frac{\partial obejct\,function}{\partial W_{11}}&=\frac{\partial {-y_{label1}*y_{pre1}-y_{label2}*y_{pre2}}}{\partial W_{11}}\\ &=-y_{label1}*\frac{\partial {y_{pre1}}}{\partial W_{11}}- y_{label2}*\frac {\partial y_{pre2}}{\partial W_{11}}\\ \end{aligned}\qquad(14) W11obejctfunction=W11ylabel1ypre1ylabel2ypre2=ylabel1W11ypre1ylabel2W11ypre214

我们可以根据链式法则将上式变成如下式子:

∂ o b e j c t   f u n c t i o n ∂ W 11 = − y l a b e l 1 ∗ ∂ y p r e 1 ∂ W 11 − y l a b e l 2 ∗ ∂ y p r e 2 ∂ W 11 = − y l a b e l 1 ∗ ∂ y p r e 1 ∂ T 1 ∗ ∂ T 1 ∂ t 1 ∗ ∂ t 1 ∂ W 11 − y l a b e l 2 ∗ ∂ y p r e 2 ∂ T 2 ∗ ∂ T 2 ∂ t 2 ∗ ∂ t 2 ∂ W 11 ( 15 ) \begin{aligned} \frac{\partial obejct\,function}{\partial W_{11}}&=-y_{label1}*\frac{\partial {y_{pre1}}}{\partial W_{11}}- y_{label2}*\frac {\partial y_{pre2}}{\partial W_{11}}\\ &=-y_{label1}*\frac{\partial {y_{pre1}}}{\partial {T_{1}}}*\frac{\partial {T_{1}}}{\partial {t_{1}}}*\frac{\partial {t_{1}}}{\partial {W_{11}}}- y_{label2}*\frac{\partial {y_{pre2}}}{\partial {T_{2}}}*\frac{\partial {T_{2}}}{\partial {t_{2}}}*\frac{\partial {t_{2}}}{\partial {W_{11}}} \end{aligned}\qquad(15) W11obejctfunction=ylabel1W11ypre1ylabel2W11ypre2=ylabel1T1ypre1t1T1W11t1ylabel2T2ypre2t2T2W11t215

    有些人可能会问,为什么会想到去应用链式法则,我觉得原因可能是因为这样的:我们从图中可以知道,不同的变量之间的关系是这样的

W i j → t k → T k → y p r e k ( 16 ) W_{ij} \rightarrow t_k \rightarrow T_k \rightarrow y_{prek}\qquad(16) WijtkTkyprek16

    也就是箭头左边的变量会直接影响右边的变量。因此, y p r e k y_{prek} yprek W i j W_{ij} Wij之间就是一种复合函数的关系。那么既然是复合函数,那么我们就可以使用链式法则,一步步地,抽丝剥茧的将公式进行化简。我们可以针对上式中,

∂ y p r e 1 ∂ T 1 = ∂ e T 1 ∑ i = 1 2 e T i ∂ T 1 = e T 1 ∗ ( ∑ i = 1 2 e T i ) − e T 1 ∗ ∂ ( ∑ i = 1 2 e T i ) ∂ T 1 ( ∑ i = 1 2 e T i ) 2 = e T 1 ∗ ( ∑ i = 1 2 e T i ) − ( e T 1 ) 2 ( ∑ i = 1 2 e T i ) 2 = e T 1 + T 2 ( ∑ i = 1 2 e T i ) 2 ( 17 ) \begin{aligned}\frac {\partial {y_{pre1}}}{\partial {T_{1}}}&=\frac {\partial \frac{e^{T_1}}{\sum_{i=1}^2 e^{T_i}}}{\partial {T_{1}}}\\ &=\frac {e^{T_1}*(\sum_{i=1}^2e^{T_i})-e^{T_1}*\frac {\partial (\sum_{i=1}^2e^{T_i})}{\partial {T_1}}}{(\sum_{i=1}^2e^{T_i})^2}\\ &=\frac {e^{T_1}*(\sum_{i=1}^2e^{T_i})-(e^{T_1})^2}{(\sum_{i=1}^2e^{T_i})^2}\\ &=\frac {e^{T_1+T_2}}{(\sum_{i=1}^2e^{T_i})^2} \end{aligned}\qquad(17) T1ypre1=T1i=12eTieT1=(i=12eTi)2eT1(i=12eTi)eT1T1(i=12eTi)=(i=12eTi)2eT1(i=12eTi)(eT1)2=(i=12eTi)2eT1+T217

∂ T 1 ∂ t 1 = ∂ R e L U ( t 1 ) ∂ t 1 = { 1 , if  t 1 > 0 0 , if  t 1 < 0 ( 18 ) \begin{aligned}\frac{\partial {T_{1}}}{\partial {t_{1}}}&=\frac {\partial ReLU(t_1)}{\partial t_1} =\begin{cases} 1,&\text{if }t_1>0\\ 0,&\text{if }t_1<0 \end{cases} \end{aligned}\qquad(18) t1T1=t1ReLU(t1)={1,0,if t1>0if t1<018

∂ t 1 ∂ W 11 = X 11 ( 19 ) \begin{aligned}\frac {\partial t_1}{\partial W_{11}}=X_{11} \end{aligned}\qquad(19) W11t1=X1119

∂ y p r e 2 ∂ T 2 = ∂ e T 2 ∑ i = 1 2 e T i ∂ T 2 = e T 2 ∗ ( ∑ i = 1 2 e T i ) − e T 2 ∗ ∂ ( ∑ i = 1 2 e T i ) ∂ T 2 ( ∑ i = 1 2 e T i ) 2 = e T 2 ∗ ( ∑ i = 1 2 e T i ) − ( e T 2 ) 2 ( ∑ i = 1 2 e T i ) 2 = e T 1 + T 2 ( ∑ i = 1 2 e T i ) 2 ( 20 ) \begin{aligned}\frac {\partial {y_{pre2}}}{\partial {T_{2}}}&=\frac {\partial \frac{e^{T_2}}{\sum_{i=1}^2 e^{T_i}}}{\partial {T_{2}}}\\ &=\frac {e^{T_2}*(\sum_{i=1}^2e^{T_i})-e^{T_2}*\frac {\partial (\sum_{i=1}^2e^{T_i})}{\partial {T_2}}}{(\sum_{i=1}^2e^{T_i})^2}\\ &=\frac {e^{T_2}*(\sum_{i=1}^2e^{T_i})-(e^{T_2})^2}{(\sum_{i=1}^2e^{T_i})^2}\\ &=\frac {e^{T_1+T_2}}{(\sum_{i=1}^2e^{T_i})^2} \end{aligned}\qquad(20) T2ypre2=T2i=12eTieT2=(i=12eTi)2eT2(i=12eTi)eT2T2(i=12eTi)=(i=12eTi)2eT2(i=12eTi)(eT2)2=(i=12eTi)2eT1+T220

∂ T 2 ∂ t 2 = ∂ R e L U ( t 2 ) ∂ t 2 = { 1 , if  t 2 > 0 0 , if  t 2 < 0 ( 21 ) \begin{aligned}\frac{\partial {T_{2}}}{\partial {t_{2}}}&=\frac {\partial ReLU(t_2)}{\partial t_2} =\begin{cases} 1,&\text{if }t_2>0\\ 0,&\text{if }t_2<0 \end{cases} \end{aligned}\qquad(21) t2T2=t2ReLU(t2)={1,0,if t2>0if t2<021

∂ t 2 ∂ W 11 = 0 ( 22 ) \begin{aligned}\frac {\partial t_2}{\partial W_{11}}=0 \end{aligned}\qquad(22) W11t2=022

将(17)式至(22)式带入(15)式可得,

∂ o b e j c t   f u n c t i o n ∂ W 11 = { − y l a b e l ∗ e T 1 + T 2 ( ∑ i = 1 2 e T i ) 2 ∗ X 11 , if  t 1 > 0 0 , if  t 1 < 0 = { − y l a b e l ∗ e R e L U ( X 11 ∗ W 11 + X 12 ∗ W 21 + X 13 ∗ W 31 + b 1 ) + R e L U ( X 11 ∗ W 12 + X 12 ∗ W 22 + X 13 ∗ W 32 + b 2 ) ( ∑ i = 1 2 e R e L U ( X 11 ∗ W 1 i + X 12 ∗ W 2 i + X 13 ∗ W 3 i + b i ) ) 2 ∗ X 11 , if  X 11 ∗ W 11 + X 12 ∗ W 21 + X 13 ∗ W 31 + b 1 > 0 0 , if  X 11 ∗ W 11 + X 12 ∗ W 21 + X 13 ∗ W 31 + b 1 < 0 ( 23 ) \begin{aligned}&\frac{\partial obejct\,function}{\partial W_{11}}\\ &= \begin{cases} -y_{label}*\frac {e^{T_1+T_2}}{(\sum_{i=1}^2e^{T_i})^2}*X_{11},&\text{if }t_1>0\\ 0,&\text{if }t_1<0 \end{cases}\\ &= \begin{cases} -y_{label}*\frac {e^{ReLU(X_{11}*W_{11}+X_{12}*W_{21}+X_{13}*W_{31}+b_1)+ ReLU(X_{11}*W_{12}+X_{12}*W_{22}+X_{13}*W_{32}+b_2)}}{(\sum_{i=1}^2e^{ReLU(X_{11}*W_{1i}+X_{12}*W_{2i}+X_{13}*W_{3i}+b_i)})^2}*X_{11},&\text{if }X_{11}*W_{11}+X_{12}*W_{21}+X_{13}*W_{31}+b_1>0\\ 0,&\text{if }X_{11}*W_{11}+X_{12}*W_{21}+X_{13}*W_{31}+b_1<0 \end{cases} \end{aligned}\qquad(23) W11obejctfunction={ylabel(i=12eTi)2eT1+T2X11,0,if t1>0if t1<0={ylabel(i=12eReLU(X11W1i+X12W2i+X13W3i+bi))2eReLU(X11W11+X12W21+X13W31+b1)+ReLU(X11W12+X12W22+X13W32+b2)X11,0,if X11W11+X12W21+X13W31+b1>0if X11W11+X12W21+X13W31+b1<023

    可以看到, X i j X_{ij} Xij y l a b e l y_{label} ylabel它们不是变量,它们是样本,是已知的。目标函数对 W 11 W_{11} W11的求导结果里面包含了 W 11 W_{11} W11变量。因此,目标函数不是 W 11 W_{11} W11的线性函数。对于其他变量也是如此。

    (23)式是导函数,我们要想知道自变量在某处的导函数的值,那么我们必须知道自变量的值是什么。因此,我们一开始会先随机初始化变量,有了随机的变量值后,然后我们在反向传播修正参数(就是 W i j W_{ij} Wij b i b_{i} bi)时,式(23)的 T 1 T_{1} T1 T 2 T_{2} T2 t 1 t_{1} t1 b 1 b_{1} b1 b 2 b_{2} b2其实对式子来说是已知的。这也是为什么我们能计算出导数来。接着,我们就可以乘上-1(因为我们希望交叉熵函数值越小越好,越小意味着预测值越和真实值接近,因此要往负梯度方向变化),然后再乘以一个学习率(为什么要乘,前面的监督学习章节说明了理由),就可以作为这个step的 W 11 W_{11} W11变化的值。
同理,其他参数也可以按照这样的方式去计算梯度。大家可以自己推导推导。

卷积神经网络(CNN)

    卷积神经网络有一系列的阶段构成,这些阶段主要被分为两种,第1种的阶段包含了卷积层(Convolutional Layer)、池化层(Pooling Layer)。第2种的阶段就是全连接层,全连接层是最接近输出层的。

    卷积层,通过一个卷积核(feature map),对图像进行卷积操作。为什么卷积核被称为feature map?因为在训练完成后,这个卷积核就代表了一种“特征提取”的操作,而具体化来说,就是通过feature map,这个带有训练集特征的东西,进行“特征提取”(卷积操作),提取的结果就是一种“特征集合”。因此它被称为feature map(直译过来就是特征图)。

    池化层,是对卷积后的结果进行特征过滤。图片中同种特征在不同位置出现,通过卷积操作+池化操作,最后它们提取出来的特征是一样的,这是由于卷积核在对全图片进行卷积时,整个图片都是共享这个卷积核参数的,并且池化操作使得其可以过滤出相对有特色的特征。

    从图片构成的角度来说,图片中的边(edges)构成了纹理(motifs),纹理(motifs)构成了小部位(parts),小部位(parts)组成了某个目标(object)。而卷积神经网络往往是由卷积层、池化层、卷积层、池化层……这样堆叠起来的。这种堆叠方式,使得在不同层,可以提取出不同的图像。我从网上找了一张图片,大家可以看这些图来理解。
Layer1在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
    从上面可以看到,不同层提取的东西(特征)是不一样的。

    有些人可能会对卷积神经网络为什么叫做卷积而有疑问。我个人的理解是这样的,学过信号与系统的同学都知道信号与系统里的卷积代表什么意思。其实就是同样的道理,把卷积核当作是系统的单位激励响应,把输入的图像的像素值当作是激励,那么卷积的结果就是系统的响应。
    从数学上来说,卷积其实就是二重积分。只不过在卷积神经网络中的卷积是离散形式的卷积。

反向传播在卷积神经网络中的原理

在这里插入图片描述
    假如输入端有一张图片要输入,并假设该图片的某个通道数值如左上图所示,然后我们使用22的卷积核进行卷积操作,得到左下角的卷积后的结果,接着,我们使用MaxPooling操作,窗口为22,上下步长和左右步长都是1,我们得到一个MaxPooling的结果,接着,我们会使用全连接网络对其进行映射,映射到类别数量的维度,然后再使用Softmax,Softmax的结果就是预测的每个类别对应的概率。
    根据以上描述,我们可以将其等价转换为下图。
在这里插入图片描述
    那么此时,有些人可能已经明白了。其实CNN的反向传播算法就是类似于该篇博客中“反向传播算法及其推导”部分,只不过并不是以全连接的方式进行,而是以局部的连接方式(大家可以仔细观察图中神经元的连接方式)。只不过有新的函数加入了,即MaxPooling函数。那么大家可以自己动动手,把输入端的数字换成用字母来代替常量,把卷积核的数字换成用字母来代替变量,然后推一推这个反向传播的原理。

使用卷积神经网络的图像理解

    图像理解,其实顾名思义,就是让模型去理解图像中的东西。那么目前来说,一般图像理解模型都是基于“encoder-decoder”这种模式。“encoder”端使用CNN网络进行图像特征提取,然后“decoder”端使用RNN模型进行文字生成。

分布式表示和语言处理

    在过去很久的一段时间内,人们都是使用one-hot进行词语的编码,one-hot编码会带来很多问题,比如语义鸿沟就是其缺点之一。那么这个时候,就需要使用更丰富的方式去用数字代表词语。这个时候,词向量的就出来了。由于词向量是使用连续的变量来代表词语,因此,一个词语的词向量就可以将其在坐标轴中表示出来。那么既然能用坐标轴表示出来,各种距离的度量方式,比如欧式距离、Minkovski距离等等,都可以用来度量词与词之间的关系了。那么有人就会问,这个词向量是如何产生的呢?这个时候,我们就需要使用“语言模型”,用数据去训练语言模型,然后词向量就被训练出来了。词向量被训练出来后,可以使用在很多地方,比如机器翻译,文本分类,情感分析等等。

循环神经网络(RNN)

    相比于卷积神经网络,循环神经网络非常适用于处理具有时序关系的数据。比如自然语言理解、语音识别等等。为了提升RNN的效果,最近有很多针对于RNN改进的模型被提出,比如LSTM、GRU、以及神经图灵机。

反向传播在循环神经网络中的原理

    相较于LSTM、GRU,RNN的原理非常简单,这里简要阐述下RNN的原理,LSTM、GRU的原理大家可以自行作为练习进行推导。这里讲一个最简单的RNN模型,我直接上图,
在这里插入图片描述
    如图中所示,假如输入序列为“我/今天/看/了/这篇/博客”,那么在t=1的时候,输入端会先输入“我”这个字,然后通过查找“我”这个词在模型中的向量,然后用词向量代表“我”这个词,接着,词向量和隐状态之间就是传统的全连接方式,然后隐状态和输出层又是全连接方式,当得到输出后,此时,t=1时刻就执行完毕了。接着执行t=2时刻,t=2时刻的时候,会输入“今天”这个词语,同样地,也要去查找“今天”这个词的词向量,然后使用这个词向量作为t=2时刻的隐状态的输入,与t=1时刻不同的是,t=2时刻,还有一个输入,是来自t=1时刻的隐状态的输出,如图中所示。结合了“今天”这个词向量,和t=1时刻传来的隐状态的信息,t=2时刻的隐状态就会和输出端做一个全连接操作,变得到输出端的输出了。然后同样的方式一直到t=6时刻结束。其实,在上述中,t=1时刻,隐状态也是有一个t=0时刻的隐状态的信息传过来的,只不过我们一般都是随机初始化这个t=0时刻的隐状态。
    看到这里,其实大家应该已经明白了,反向传播算法在RNN是怎么样执行了,和“反向传播算法及其推导”中讲解的内容相似,输出端必定会根据目标函数,将误差一步步地从输出端反向传播进来,从而修正参数。

深度学习的未来

    文中说明,无监督学习将会是未来的发展方向,因为人和动物学习世界并不是被告知某个物体叫什么这种方式来学习的。同时,在未来几年,深度学习在自然语言理解将会大施拳脚。深度学习和强化学习的结合目前还处在襁褓期,但是它已经在某些地方有应用了。
    最终,表示学习和复杂推理方面的系统将会有主要的进步。

Reference List

《Deep Learning》

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值