- AlphaGo如何战胜人类围棋大师:智能硬件TensorFlow实践
- 陈震 郑文勋编著
- 1789字
- 2021-03-28 15:17:35
2.2 典型的神经网络架构
经过不断的实验测试,人们发现不同的神经网络架构适合处理不同的任务。卷积神经网络适用于图像处理,因为这种网络结构适合图像处理的不变性,例如猫的图像,平移旋转处理后依然是猫。循环神经网络适合进行序列预测的任务,如语音识别、诗词填空等语音语言的处理。因为长短期记忆循环网络训练快,已经在语音识别中大规模应用。
2.2.1 卷积神经网络
对于高维数据如图像(200×200像素),如果第一层是全连接的话,这意味着第一个隐藏层的每个神经元都有40 000个输入权重。为了效率更高,可以强制神经元的输入权重的数量,强制输入只和局部的神经元有连接。这样形成的网络又称为局部网络,或者局部连接网络。
权重共享(Weight Sharing)是一种简单的局部网络形成方法,如图2-6所示。这种权重共享等效于信号处理领域中的卷积运算(Convolution)。

图2-6 权重共享
实际中,每一个卷积层后紧跟着一个下采样层,例如采用最大池化(Max-pooling)方法完成下采样。最大池化层的操作,就是在过滤器之后(卷积之后),计算出卷积层神经元输出的最大值。最大池化的操作原理如图2-7所示。

图2-7 最大池化操作
卷积操作就是在输入信号上使用过滤器(Filter),而过滤器的参数就是一组权重值。所以,这种局部区域的权重共享的神经网络,又称为卷积神经网络(Convolutional Neural Network,CNN)。一个卷积神经网络的工作原理如图2-8所示。

图2-8 卷积神经网络
最新CNN进展还包括LCN(Local Contrast Normalization)。LCN操作在最大池化层之后,其目标是减去平均值,除以标准差。这个操作允许亮度不变性,对于图像识别用处很大。
2.2.2 循环神经网络
对于时间序列的预测是一个重要问题。循环神经网络(Recurrent Neural Network,RNN)的每一个时间步处理时,权重共享。一个单向RNN如图2-9所示。

图2-9 单向RNN
RNN会在时间域上进行反馈操作,具体来说,有两种反馈方式:一种是上一时刻或前面若干时刻的输出会被作为输入的一部分与真正的输入一起构成总的输入量,即前向方式;另一种是后面若干时刻的输出会被作为输入的一部分与真正的输入一起构成总输入量,即后向方式。如果前向方式和后向方式都存在,那么就被称为双向模式。一个双向RNN如图2-10所示。
双向网络这样的做法,就是采用两个单向网络结构,这样做增加了复杂性,但是充分利用了输入的前后相关性,识别的准确率也提高了。单向RNN的优点是结构简单,可以完成实时的处理功能。

图2-10 双向RNN
2.2.3 长短时记忆循环网络
长短时记忆循环网络(Long-Short Term Memory Recurrent Network,LSTM)是RNN的一个改进。相比于RNN,LSTM增加了一个主输入单元和其他3个辅助的门限输入单元:输入门(Input Gate)、记忆单元(Memory Cell)、遗忘门(Forget Gate)及输出门(Output Gate)。
输入门、遗忘门、输出门和记忆单元组合起来,大大提升了RNN处理远距离依赖问题的能力,解决了RNN的梯度值消失问题(Vanishing Gradient Problem),无法学习长程的相关性问题。
典型的LSTM结构是一个主输入单元和其他3个辅助的门限输入单元。3个辅助的门限输入单元分别控制网络是否输入,是否存储输入以及是否输出。这样一来就可以寄存时间序列的输入。在训练过程中会利用后向传播的方式进行。
如图2-11所示,其中,输入门控制是否输入,遗忘门控制是否存储,输出门控制是否输出。
假设在t时刻的输入是xt,mt是mt-1和f的线性组合。

图2-11 长短时记忆单元

在t时刻的隐含层的状态ht,计算如下:

其中,ht和mt会在下一个时间步继续使用。α、β、γ形式如下:
α(t)=g1(xt,ht-1,mt-1)
β(t)=g2(xt,ht-1,mt-1)
γ(t)=g3(xt,ht-1,mt)
其中,α、β、γ也被称为输入门、记忆门和输出门,分别控制了输入、记忆和输出到下一个时间。
LSTM最早是由Sepp Hochreiter和Jürgen Schmidhub er提出。
2.2.4 门控循环单元循环网络
门控循环单元(Gated Recursive Unit,GRU)是由Cho等人在LSTM的基础上提出的简化版本,也是RNN的一种扩展。GRU的结构如图2-12所示。
GRU单元只有两个门,即重置门和更新门。
(1)重置门(Reset Gate):如果重置门关闭,会忽略掉历史信息,即历史不相干的信息不会影响未来的输出。重置门:

图2-12 GRU的结构
rt=σ(Wt•[ht-1,xt ])
其中,σ为Sigmoid()函数。
(2)更新门(Update Gate):将LSTM的输入门和遗忘门合并,用于控制历史信息对当前时刻隐层输出的影响。如果更新门接近1,会把历史信息传递下去。更新门:
zt=σ(Wt•[ht-1,xt ])
其中,σ为Sigmoid()函数。
隐含层节点状态更新:

其中,tanh()为双曲正切函数,输出值为(-1,1)。
输出:

GRU论文最早是用于研究机器翻译(Machine Translation),在语音识别中也被证明很有用。GRU和LSTM在实用中,很多任务性能相当,但是GRU参数少,运算更简单也更快,需要的训练数据少。如果拥有的数据量足够多,LSTM可以充分发挥表达能力强的优点。