tensorflow学习,经典循环神经网络(RNN)的原理与结构(23)

经过前面几节的学习,相信对经典神经网络已经非常熟悉了。从本节开始,将学习循环神经网络(recurrent neural networks, RNN),它适用于分析和解决具有前后关联性的数据问题。

问题引出


下图是经典的模拟神经网络模型,它认为每一个输入都是独立,没有关联的。

虽然经典的网络模型成功解决了一些问题,但是对于一些涉及前后关联的数据问题,它是无能为力的,例如

我非常向往北京,如果有机会,我一定会去(  )。

对于这样的填空题,人脑能很快的填入符合前后逻辑的答案。但是对于上面的经典神经网络模型,它对这样的填空题真的是一头雾水。循环神经网络(CNN)的提出,就是为了解决这样的问题的。利用 CNN,人们能够和机器人聊天,能够让电脑做出古诗词等有意思的事情。当然,机器人聊天和做诗词,也只是从提供给它的数据集里拼凑出的,它还没有真正的思想。

经典循环神经网络


哲学认为万物皆有联系,所以实际生活中,我们接触到的数据也都是具有联系的。

如上图,一个序列的数据可以是

  • x1-4 分别是一句话的第 1-4 个字。
  • 在一段语音中,x1-4 表示每帧声音信号。
  • 表示连续 4 天的股票。

等等。可以说,经典神经网络对于前后具有关联性的数据集几乎无能为力。循环神经网络RNN为了解决这类问题,引入了隐状态 h的概念,h 可以从一系列数据中提取出关联性特征,接着再转换为输出。

上图中的 x1-4 表示输入,h0 是第一个隐状态,之后的隐状态的计算需要根据前面一个隐状态的值。这样前后数据的关联性就被保留在网络里了。

在循环神经网络 CNN 中,图中公式中的 激活函数 f 通常是 tanh 函数

按照图中的公式计算完隐状态,还剩下输出没有计算。计算输出和经典神经网络类似,只不过在循环神经网络CNN中,输入不再是 x,而是隐状态 h。

使用 softmax 函数 将输出转换成各个类别的概率,解决的通常都是分类问题。按照上图的公式,计算完输出,经典循环神经网络CNN就建立完成了。这种结构的输出纬度必须等于输入纬度,因为这个限制,所以经典循环神经网络RNN适用范围较小。

N-1 循环神经网络


N-1 的意思是指输入是一个序列,输出不再是对应的序列,而是一个值。它的结构如下图,只在最后一个 h 上做输出变换即可。

h4 是由前面 3 输入递推出来的,保留着输入数据的关联性特征,因此这么做是合理的。这种结构通常用来处理序列分类问题,例如输入一段文字,判断它所属的类别,输入一句话判断它的情感倾向,输入一段视频判断类别等等。

1-N 循环神经网络


顾名思义,即输入是一个值,而输出是一个序列。我们可以只在序列的开始进行计算。

也可以使单个输入值,作为每一个阶段的输入:

它可以解决 N-1 的反向问题,例如,根据情感生成一句话,根据类别生成语音或者音乐,等等。

经典循环神经网络就介绍到这,接下来计划学习生成古诗词的网络。

阅读更多:   tensorflow
已有 2 条评论
  1. […] 上一节介绍了循环神经网络RNN和它的几种变体结构,本节将介绍RNN的改进版,长短期记忆网络(long short term memory, LSTM)。 […]

  2. […] 简单的说,call方法就是用来计算隐状态的。关于隐状态可以参考前面两节(RNN和LSTM)。而state_size和output_size则表示隐状态的大小和输出向量的大小。 […]

添加新评论

icon_redface.gificon_idea.gificon_cool.gif2016kuk.gificon_mrgreen.gif2016shuai.gif2016tp.gif2016db.gif2016ch.gificon_razz.gif2016zj.gificon_sad.gificon_cry.gif2016zhh.gificon_question.gif2016jk.gif2016bs.gificon_lol.gif2016qiao.gificon_surprised.gif2016fendou.gif2016ll.gif