9

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

 3 years ago
source link: https://blog.popkx.com/tensorflow-study-principle-and-structure-of-rnn/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

发表于 2018-07-19 22:07:12   |   已被 访问: 671 次   |   分类于:   tensorflow   |   2 条评论

经过前面几节的学习,相信对经典神经网络已经非常熟悉了。从本节开始,将学习循环神经网络(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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK