详解循环神经网络RNN(理论篇)

阅读大概需要10分钟

跟随小博主,每天进步一丢丢

作者 刘博

链接 https://zhuanlan.zhihu.com/p/32755043

简介

让我们从一个问题开始,你能理解下面这句英文的意思吗?“working love learning we on deep”,答案显然是无法理解。那么下面这个句子呢?“We love working on deep learning”,整个句子的意思通顺了!我想说的是,一些简单的词序混乱就可以使整个句子不通顺。那么,我们能期待传统神经网络使语句变得通顺吗?不能!如果人类的大脑都感到困惑,我认为传统神经网络很难解决这类问题。

在日常生活中有许多这样的问题,当顺序被打乱时,它们会被完全打乱。例如,

  • 我们之前看到的语言——单词的顺序定义了它们的意义

  • 时间序列数据——时间定义了事件的发生

  • 基因组序列数据——每个序列都有不同的含义

有很多这样的情况,序列的信息决定事件本身。如果我们试图使用这类数据得到有用的输出,就需要一个这样的网络:能够访问一些关于数据的先前知识(prior knowledge),以便完全理解这些数据。因此,循环神经网络(RNN)粉墨登场。

在这篇文章中,我假设读者了解神经网络的基本原理。

目录

  1. 我们需要一个用于处理序列的神经网络

  2. 什么是循环神经网络(RNN)

  3. 理解循环神经元(Recurrent Neuron)的细节

  4. 用Excel实现循环神经元的前向传播

  5. 循环神经网络的后向传播(BPTT)

我们需要一个用于处理序列的神经网络

在深入了解循环神经网络的细节之前,让我们考虑一下我们是否真的需要一个专门处理序列信息的网络。还有,我们可以使用这样的网络实现什么任务。

递归神经网络的优点在于其应用的多样性。当我们使用RNN时,它有强大的处理各种输入和输出类型的能力。看下面的例子。

  • 情感分析(Sentiment Classification) – 这可以是简单的把一条推文分为正负两种情绪的任务。所以输入是任意长度的推文, 而输出是固定的长度和类型.

  • 图像标注(Image Captioning) – 假设我们有一个图片,我们需要一个对该图片的文本描述。所以,我们的输入是单一的图像,输出是一系列或序列单词。这里的图像可能是固定大小的,但输出是不同长度的文字描述。

  • 语言翻译(Language Translation) – 这里假设我们想将英文翻译为法语. 每种语言都有自己的语义,对同一句话有不同的长度。因此,这里的输入和输出是不同长度的。

因此,RNNs可用于将输入映射到不同类型、长度的输出,并根据实际应用泛化。让我们看看RNN的架构是怎样的。

什么是循环神经网络(RNN)

假设我们的任务是预测句子中的下一个词。让我们尝试使用MLP(多层感知机)完成它。先来看最简单的形式,我们有一个输入层、一个隐藏层和一个输出层。输入层接收输入,隐藏层激活,最后接收层得到输出。

接下来搭建更深层的网络,其中有多个隐藏层。在这里,输入层接收输入,第一层隐藏层激活该输入,然后将这些激活发送到下一个隐藏层,并层层进行连续激活以得到输出。每个隐藏层有自己的权重和偏差。

由于每个隐藏层都有自己的权重和激活,所以它们具有独立的行为。现在的目标是确定连续输入之间的关系。我们能直接把输入给隐藏层吗?当然可以!

这些隐藏层的权重和偏差是不同的。因此,每一层都是独立的,不能结合在一起。为了将这些隐藏层结合在一起,我们使这些隐藏层具有相同的权重和偏差

我们现在可以将这些隐藏层结合在一起,所有隐藏层的权重和偏差相同。所有这些隐藏层合并为个循环层。

这就像将输入给隐藏层一样。在所有时间步(time steps)(后面会介绍什么是时间步),循环神经元的权重都是一样的,因为它现在是单个神经元。因此,一个循环神经元存储先前输入的状态,并与当前输入相结合,从而保持当前输入与先前输入的某些关系

理解循环神经元(Recurrent Neuron)的细节

让我们先做一个简单的任务。让我们使用一个字符级别的RNN,在这里我们有一个单词“Hello”。所以我们提供了前4个字母h、e、l、l,然后让网络来预测最后一个字母,也就是“o”。所以这个任务的词汇表只有4个字母h、e、l、o。在涉及自然语言处理的实际情况中,词汇表一般会包括整个维基百科数据库中的单词,或一门语言中的所有单词。为了简单起见,这里,我们使用了非常小的词汇表。

让我们看看上面的结构是如何被用来预测“hello”这个单词的第五个字母的。在上面的结构中,蓝色RNN块,对输入和之前的状态应用了循环递归公式。在我们的任务中,字母“h”前面没有任何其他字母,我们来看字母“e”。当字母e被提供给网络时,将循环递归公式应用于输入(也就是字母e)和前一个状态(也就是字母h),得到新的状态。也就是说,在t-1的时候,输入是h,输出是,在t时刻,输入是e和,输出是,这里每次应用循环递归公式称为不同的时间步。

描述当前状态的循环递归公式如下:

这里是t时刻的状态, 是前一时刻的状态,是当前的输入。我们有的是前一时刻的状态而不是前一时刻的输入, 因为输入神经元将前一时刻的输入转换为前一时刻的状态。所以每一个连续的输入被称为时间步。

在我们的案例中,我们有四个输入(h、e、l、l),在每一个时间步应用循环递推公式时,均使用相同的函数和相同的权重。

考虑循环神经网络的最简单形式,激活函数是tanh,权重是,输入神经元的权重是,我们可以写出t时刻的状态公式如下

在上述情况下,循环神经元仅仅是将之前的状态考虑进去。对于较长的序列,方程可以包含多个这样的状态。一旦最终状态被计算出来我们就可以得到输出了。

现在,一旦得到了当前状态,我们可以计算输出了。

Ok,我们来总结一下循环神经元的计算步骤:

  1. 将输入时间步提供给网络,也就是提供给网络

  2. 接下来利用输入和前一时刻的状态计算当前状态,也就是

  3. 当前状态变成下一步的前一状态

  4. 我们可以执行上面的步骤任意多次(主要取决于任务需要),然后组合从前面所有步骤中得到的信息。

  5. 一旦所有时间步都完成了,最后的状态用来计算输出

  6. 输出与真实标签进行比较并得到误差。

  7. 误差通过后向传播(后面将介绍如何后向传播)对权重进行升级,进而网络训练完成。

明日预告

详解循环神经网络RNN(实践篇):

目录

  1. 我们需要一个用于处理序列的神经网络

  2. 什么是循环神经网络(RNN)

  3. 理解循环神经元(Recurrent Neuron)的细节

  4. 用Excel实现循环神经元的前向传播

  5. 循环神经网络的后向传播(BPTT)

雅思一下下

modification  n.修改,修正;改变

remedy  vt. 补救;治疗;纠正

be subject to 受支配,从属于;常遭受...;有...倾向的

voracious  adj.贪婪的;贪吃的;狼吞虎咽的

strife  n. 冲突;争吵;不和

推荐阅读:

精彩知识回顾

谈谈我在自然语言处理入门的一些个人拙见

中心极限定理通俗介绍

深度学习之激活函数详解

深度学习之卷积神经网络CNN理论与实践详解

TreeLSTM Sentiment Classification

基于attention的seq2seq机器翻译实践详解

【干货】基于注意力机制的seq2seq网络

【干货】GRU神经网络


欢迎关注深度学习自然语言处理公众号,我会每天更新自己在机器学习深度学习NLPlinuxpython以及各种数学知识学习的一点一滴!再小的人也有自己的品牌!期待和你一起进步!

长按识别二维码

点个赞呗

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
循环神经网络(RNN)是一种能够处理序列数据的人工神经网络。相比于传统神经网络而言,RNN具有记忆性,能够利用之前的计算结果来影响后续的计算。这一特性为RNN在语音识别、自然语言处理、机器翻译等领域的应用提供了更多的可能性。 MATLAB是一种强大的工具,特别适合用于计算机科学和工程的数值计算、数据分析和可视化。在RNN的应用中,MATLAB提供了丰富的工具和函数库,使得对RNN的相关研究更加方便和高效。 针对循环神经网络(RNN)与MATLAB程序详解的视频内容,首先介绍了RNN如何应用于序列数据处理,并详细讲解了RNN的基本结构、前向传播和反向传播算法原理。其次,视频详细讲解了如何在MATLAB中搭建RNN,并介绍了相关工具和函数库的使用方法和技巧,包括如何定义网络结构,如何初始化权重,如何设置损失函数,如何进行训练和预测等方面。最后,视频还提供了一些实际应用案例,具体展示了RNN在文本分类、图像识别和语音合成等领域的应用实践,让观众更加深入地了解该技术的实用性和潜力。 总之,循环神经网络(RNN)与MATLAB程序详解视频内容详尽,既提供了理论知识的讲解,也提供了实践技巧和应用案例,对于有兴趣了解和应用RNN的计算机科学和工程领域从业者和学者来说,具有较高的参考价值和启发作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值