Python 中的递归神经网络:初学者终极指南

已发表: 2020-04-27

当您需要在程序中处理序列(每日股票价格、传感器测量等)时,您需要一个循环神经网络 (RNN)。

RNN 是一种神经网络,其中一个步骤的输出作为输入传输到新步骤。 在传统的神经系统中,所有数据源和输出都是相互独立的。 然而,在需要预测句子的后续表达的情况下,需要之前的单词,因此需要回忆过去的单词。

这就是 RNN 发挥作用的地方。 它创建了一个隐藏层来解决这些问题。 RNN 最基本和最重要的元素是隐藏状态,它可以记住有关序列的一些数据。

RNN 在一些最常见的实际应用中一直在生成准确的结果:由于它们能够有效地处理文本,因此 RNN 通常用于自然语言处理 (NLP) 任务。

  • 语音识别
  • 机器翻译
  • 音乐创作
  • 手写识别
  • 语法学习

这就是为什么 RNN 在深度学习领域广受欢迎的原因。

现在让我们看看 Python 中对循环神经网络的需求。

从世界顶级大学在线获得机器学习认证——机器学习和人工智能领域的硕士、高管研究生课程和高级证书课程,以加快您的职业生涯。

目录

Python 中对 RNN 的需求是什么?

要回答这个问题,我们首先需要解决与卷积神经网络 (CNN) 相关的问题,也称为普通神经网络。

CNN 的主要问题是它们只能用于预定义的大小,即如果它们接受固定大小的输入,它们也会给出固定大小的输出。

而使用 RNN,这个问题很容易解决。 RNN 允许开发人员为输入和输出使用可变长度序列。

下面是 RNN 的示意图:

资料来源:安德烈·卡帕斯

在这里,红色表示输入,绿色表示 RNN,蓝色表示输出。

让我们详细了解每个。

一对一:这些也称为普通或普通神经网络。 它们以固定的输入大小工作到固定的输出大小,并且独立于先前的输入。

示例:图像分类。

一对多:虽然作为输入的信息是固定大小的,但输出是一系列数据。

示例:图像字幕(图像是输入,输出是一组单词)。

多对一:输入是信息序列,输出是固定大小的。

示例:情感分析(输入是一组词,输出告诉这组词反映的是积极情绪还是消极情绪)。

多对多:输入是信息序列,输出是数据序列。

示例:机器翻译(RNN 读取英语句子并以所需语言给出句子的输出)。

可变长度的序列处理使 RNN 非常有用。 这是如何做:

  • 机器翻译:最好的例子是谷歌翻译。 它适用于多对多 RNN。 如您所知,原始文本输入到 RNN,生成翻译文本。
  • 情绪分析:你知道谷歌如何区分负面评论和正面评论吗? 它是通过多对一的 RNN 实现的。 当文本输入 RNN 时,它会给出输出,反映输入所在的类。

现在让我们看看 RNN 是如何工作的。

RNN 是如何工作的?

最好通过查看示例来了解 Python 中循环神经网络的工作原理。

假设有一个更深的网络,包含一个输出层、三个隐藏层和一个输入层。

就像其他神经网络一样,在这种情况下,每个隐藏层也会有自己的一组权重和偏差。

为了这个例子,让我们考虑第 1 层的权重和偏差是 (w1, b1),第 2 层是 (w2, b2),第 3 层是 (w3, b3)。 这三层相互独立,不记得之前的结果。

现在,这是 RNN 将要做的事情:

  • 它将通过使所有层包含相同的权重和偏差,将独立的激活转换为依赖的激活。 反过来,这将通过将输出作为下一个隐藏层的输入来降低增加参数和记住每个先前结果的复杂性。
  • 因此,所有三层将交织成一个循环层,以包含相同的权重和偏差。
  • 要计算当前状态,可以使用以下公式:

在哪里,

= 当前状态

= 以前的状态

= 输入状态

  • 要应用激活函数 (tanh),请使用以下公式:

在哪里,

= 递归神经元的权重

= 输入神经元的权重

  • 要计算输出,请使用以下公式:

在哪里,

= 输出

= 输出层的权重

以下是如何训练 RNN 的分步说明。

  1. 有一次,向网络提供输入。
  2. 现在,您需要使用当前输入集和先前状态来计算其当前状态。
  3. 当前将成为下一步的时间。
  4. 您可以根据需要进行任意多个时间步长,并组合来自所有先前状态的数据。
  5. 完成所有时间步后,使用最终当前状态计算最终输出。
  6. 将此输出与实际输出进行比较,即目标输出和两者之间的误差。
  7. 将错误传播回网络并更新权重以训练 RNN。

结论

最后,我想首先指出 Python 中递归神经网络的优势:

  • RNN 可以记住它接收到的所有信息。 这是序列预测中最常用的特征,因为它可以记住以前的输入。
  • 在 RNN 中,每个时间步都可以使用具有相同参数的相同转换函数。

了解 Python 中的循环神经网络没有语言理解这一点至关重要。 它是一个足够先进的模式识别机器。 在任何情况下,与马尔可夫链或频率分析等方法不同,RNN 的预测取决于序列中组件的顺序。

基本上,如果你说人只是非凡的模式识别机器,那么循环神经系统就像人机一样工作。

从内容生成到机器翻译、图像字幕和作者身份识别,RNN 的使用已经走了很长一段路。 尽管 RNN 不可能取代人类,但有可能随着更多的训练信息和更大的模型,神经系统可以选择整合新的、合理的专利摘要。

此外,如果您有兴趣了解有关机器学习的更多信息,请查看 IIIT-B 和 upGrad 的机器学习和 AI 执行 PG 计划,该计划专为工作专业人士设计,提供 450 多个小时的严格培训、30 多个案例研究和作业,IIIT-B 校友身份,5 个以上实用的实践顶点项目和顶级公司的工作协助。

CNN 比 RNN 快吗?

如果我们查看 CNN 和 RNN 的计算时间,发现 CNN 与 RNN 相比非常快(~ 5 倍)。 让我们尝试通过一个例子更好地理解这一点。

如果餐厅评论是:“服务非常缓慢,我对这家餐厅非常失望。 食物质量也很一般。 在这里,声明中存在顺序数据,您可能试图找出情绪是好是坏。 CNN 模型将能够在这里加快计算速度,因为它只会查看某些短语,例如“非常慢”、“平庸”和“失望”。 在这里,RNN 可能只是通过查看其他几个参数而使您感到困惑。 CNN 是一个更简单的模型,这使得它比 RNN 更高效。

RNN的应用有哪些?

RNN 是非常强大的机器学习模型,在很多领域都得到了应用。 RNN 的主要目的是处理可供它使用的顺序数据。 在各个领域都可以找到顺序数据的可用性。 它在不同领域的一些应用包括机器翻译、语音识别、呼叫中心分析、预测问题、文本摘要、视频标记、人脸检测、图像识别、OCR 应用和音乐创作。

RNN 和 CNN 之间有哪些关键区别?

RNN 可用于分析视频或文本等顺序和时间数据。 另一方面,CNN 对于解决与空间数据(如图像)相关的问题很有用。 在 RNN 中,输入和输出的大小可能会有所不同,而在 CNN 中,输入和结果输出的大小是固定的。 RNN 的一些用例是机器翻译、语音分析、情感分析和预测问题,而 CNN 在医学分析、分类和面部识别中很有用。