·描述经典前馈网络。·区分前馈神经网络和循环神经网络。·评估循环神经网络随时间反向传播的应用。·描述循环神经网络的缺点。·使用带有keras的循环神经网络来解决作者归属问题。
循环神经网络
多层感知器和卷积神经网络等网络缺乏这种能力。这些网络的每一个输入都是独立处理的,它们不存储来自过去输入的任何信息以分析当前输入,因为它们的结构中缺少内存。既然如此,也许有一种方法可以让神经网络有记忆。我们可以尝试让它们存储过去的有用信息,让它们检索过去的信息,从而帮助它们分析当前的输入。这确实是可能的,这种结构就叫作循环神经网络(Recurrent Neural Network,RNN)。
循环神经网络应用
·语音识别:无论是亚马逊的Alexa、苹果的Siri、谷歌的语音助理,还是微软的Cortana,它们所有的语音识别系统都使用RNN。
·时间序列预测:任何具有时间序列数据的应用程序,例如股票市场数据、网站流量、呼叫中心流量、电影推荐、谷歌地图路线等,都使用RNN来预测未来数据、最佳路径、最佳资源分配等。
·自然语言处理:机器翻译(例如谷歌翻译)、聊天机器人(例如Slack和谷歌的聊天机器人)和智能问答等应用程序都使用RNN来建模依赖关系
前馈神经网络
(Feed Forward Neural Network,FFNN)不能捕捉时变依赖关系(time-variable dependencies)变得很明显,而时变依赖关系对于捕捉信号的时变特性至关重要。在许多涉及真实世界数据的应用中,例如语音和视频,建模时变依赖性是非常重要的,因为真实数据具有时变属性。
将这种循环关系添加到现有的前馈网络中,实现这一点的第一次尝试是通过添加延迟元件来完成的,该网络被称为时延神经网络(Time-Dealy Neural Network,TDNN)。
RNN
循环意味着重复发生。RNN的循环部分仅仅意味着在输入序列中的所有输入上完成相同的任务(对于RNN,我们给出一个时间步长序列作为输入序列)。前馈网络和RNN之间的一个主要区别是,RNN具有被称为状态的存储元件,这些存储元件从先前的输入中获取信息。因此,在这种结构中,当前输出不仅取决于当前输入,还取决于当前状态,其中考虑了过去的输入。RNN是通过输入序列而不是单个输入来训练的。类似地,我们可以将RNN的每个输入视为一系列时间步长。RNN中的状态元素包含关于处理当前输入序列的过去输入的信息。
RNN结构
RNN的折叠模型如下:Xt:输入序列中的当前输入向量。Yt:输出序列中的当前输出向量。St:当前状态向量。Wx:连接输入向量和状态向量的权重矩阵。Wy:连接状态向量和输出向量的权重矩阵。Ws:将前一个时间步的状态向量连接到下一个时间步的权重矩阵。
一对多:在这个架构中,给出一个输入,输出是一个序列。例如图像字幕,其中输入是单个图像,输出是解释图像的一系列单词。多对一:在这种架构中,给出了一系列输入,但预期只有一个输出。例如给定先前的时间步,对任何时间序列预测,其中序列中的下一个时间步需要被预测。多对多:在这种架构中,输入序列被赋予网络,网络输出序列。在这种情况下,序列可以同步,也可以不同步。例如,在机器翻译中,整个句子需要在网络开始翻译之前输入。有时,输入和输出不同步。例如,在语音增强的情况下,其中音频帧被作为输入给出,并且输入帧的更干净版本是期望的输出。在这种情况下,输入和输出是同步的。
上一篇:第2章 信息系统项目管理基础
下一篇:jdk1.7新特性详解