人类并不总是从空虚的头脑开始思考。阅读本文时,您正在根据您对之前看到的单词的理解来推断当前单词的真正含义。不要抛下一切,头脑一片空白地思考。我们的思想具有永恒性。
传统的神经网络无法做到这一点,这似乎是一个主要缺点。例如,假设您想要对电影中每个点的时间类型进行分类。传统的神经网络很难处理使用电影中先前事件来推断后续事件的问题。
RNN 解决了这个问题。 RNN 是一个包含允许信息持续存在的循环的网络。今天我要讲的是RNN。
RNN 包含循环
名词解释
循环神经网络(RNN) 是一种用于处理序列数据的神经网络。与一般神经网络相比,它可以处理顺序变化的数据。例如,根据上面所说的内容,某些单词可能具有不同的含义。 RNN 可以很好地解决这类问题。
RNN是基于人类认知基于过去的经验和记忆的思想而提出的一种特殊的神经网络结构。与DNN 和CNN 的区别在于,它们不只考虑前一时刻的输入。这使得网络能够“记忆”以前的内容。
RNN 被称为循环神经网络,因为序列的当前输出也与先前的输出相关。具体来说,网络会记住先前的信息并将其应用于当前输出的计算。即隐藏层之间的节点是不连通和连通的,隐藏层的输入还包括紧邻输入层输出之前的隐藏层的输出。
为什么需要RNN(循环神经网络)
神经网络可以被认为是一个黑匣子,给定一定的x,只要训练数据足够,它就可以拟合任何函数。然而,它只能逐一处理输入,并且前一个输入和下一个输入之间没有关系。然而,有些任务需要更好地处理序列信息。也就是说,先前的输入与后续的输入相关。
例如,在理解句子的含义时,单独理解句子中的每个单词是不够的,在处理视频时,单独理解每个单词是不够的。分析每个帧,但分析连接帧的整个序列。
以NLP中最简单的词性标注任务之一为例,“我吃苹果”这三个词被标记为词性为I/nn Eat/v apple/nn。
此任务的输入如下所示:
我吃一个苹果(分句)
该任务的输出如下:
I/nn eat/v apple/nn(具有适当词性标记的句子)
当然,这个任务可以直接使用常规神经网络来执行。网络的训练数据格式是多个单独的单词,例如带有词性标签的me-me/nn-words。
然而,很明显,在一个句子中,前一个单词实际上对预测当前单词的词性有很大的影响。例如,在预测苹果时,前面的单词“eat”是一个动词,所以很明显: apple 更可能是一个名词而不是一个动词。动词后跟名词的情况很常见,但动词后跟动词的情况很少见。
所以RNN 的诞生就是为了解决一些同样的问题,让我们能够更好地处理序列信息。
RNN的主要应用领域有哪些呢?
RNN 有很多应用领域。只要我们考虑时间序列问题,我们就可以说它们可以使用RNN 来解决。我们在这里主要讨论一些常见的应用领域。
自然语言处理(NLP):主要包括视频处理、文本生成、语言模型、图像处理
机器翻译、机器写小说
语音识别
图像描述生成
文本相似度计算
音乐推荐、网易考拉产品推荐、Youtube视频推荐等新应用领域。
使用RNN 预测股票价格
RNN模型结构
前面我提到RNN有时间“记忆”功能,但是这个所谓的“记忆”是如何实现的呢?
图1 RNN结构图
如图1所示,可以看出RNN的层次结构主要由输入层、隐藏层和输出层组成。
并且可以看到隐藏层中有箭头代表数据的周期性更新。这就是时间记忆功能的实现方法。
如果您仍然不明白RNN 的含义,请继续阅读。
图2 隐藏层层次结构图
图2 显示了隐藏层的层次图。 t-1、t、t+1表示时间序列,St表示样本在t时刻的记忆。 St=f(W*St)。 -1 +U*Xt),W表示输入的权重,U表示此时输入样本的权重,V表示输出样本的权重。
在时间t=1 时,通常初始化输入S0=0,随机初始化W、U、V,并计算:
其中,f和g均为激活函数。其中,f是Tanh、relu或sigmoid等激活函数,g通常是softmax。
时间前进,此时的状态s1作为时刻1的记忆状态参与下一时刻的预测活动(:)。
以此类推,最终可以得到输出值为:
注: 1. 这里的W、U 和V 始终相等(权重共享)。
2.隐藏状态可以理解为: S=f(现有输入+过去记忆的总结)。
虽然RNN很好地处理时间序列问题,但仍然存在一些问题,其中比较严重的是梯度消失或梯度爆炸问题(由BP算法和长期依赖引起)。注意这里的消失梯度和梯度。 BP不同这主要是指因为花费的时间太多而导致记忆的值变小的现象。
因此,后面会介绍一系列改进算法: LSTM和GRU。
碧云科技,人工智能应用实践先行者
版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。