循环神经网络的教程 第一部分——循环神经网络的简介外文翻译资料

 2022-12-17 14:24:38

Recurrent Neural Networks Tutorial, Part 1 – Introduction to RNNs

Recurrent Neural Networks (RNNs) are popular models that have shown great promise in many NLP tasks. But despite their recent popularity Irsquo;ve only found a limited number of resources that throughly explain how RNNs work, and how to implement them. Thatrsquo;s what this tutorial is about. Itrsquo;s a multi-part series in which Irsquo;m planning to cover the following:

  1. Introduction to RNNs (this post)
  2. Implementing a RNN using Python and Theano
  3. Understanding the Backpropagation Through Time (BPTT) algorithm and the vanishing gradient problem
  4. Implementing a GRU/LSTM RNN

As part of the tutorial we will implement a recurrent neural network based language model. The applications of language models are two-fold: First, it allows us to score arbitrary sentences based on how likely they are to occur in the real world. This gives us a measure of grammatical and semantic correctness. Such models are typically used as part of Machine Translation systems. Secondly, a language model allows us to generate new text (I think thatrsquo;s the much cooler application). Training a language model on Shakespeare allows us to generate Shakespeare-like text. This fun post by Andrej Karpathy demonstrates what character-level language models based on RNNs are capable of.

Irsquo;m assuming that you are somewhat familiar with basic Neural Networks. If yoursquo;re not, you may want to head over to Implementing A Neural Network From Scratch, which guides you through the ideas and implementation behind non-recurrent networks.

What are RNNs?

The idea behind RNNs is to make use of sequential information. In a traditional neural network we assume that all inputs (and outputs) are independent of each other. But for many tasks thatrsquo;s a very bad idea. If you want to predict the next word in a sentence you better know which words came before it. RNNs are called recurrent because they perform the same task for every element of a sequence, with the output being depended on the previous computations. Another way to think about RNNs is that they have a “memory” which captures information about what has been calculated so far. In theory RNNs can make use of information in arbitrarily long sequences, but in practice they are limited to looking back only a few steps (more on this later). Here is what a typical RNN looks like:

A recurrent neural network and the unfolding in time of the computation involved in its forward computation. Source: Nature

The above diagram shows a RNN being unrolled (or unfolded) into a full network. By unrolling we simply mean that we write out the network for the complete sequence. For example, if the sequence we care about is a sentence of 5 words, the network would be unrolled into a 5-layer neural network, one layer for each word. The formulas that govern the computation happening in a RNN are as follows:

  • is the input at time step . For example, could be a one-hot vector corresponding to the second word of a sentence.
  • is the hidden state at time step . Itrsquo;s the “memory” of the network. is calculated based on the previous hidden state and the input at the current step: . The function usually is a nonlinearity such as tanh or ReLU. , which is required to calculate the first hidden state, is typically initialized to all zeroes.
  • is the output at step . For example, if we wanted to predict the next word in a sentence it would be a vector of probabilities across our vocabulary. .

There are a few things to note here:

  • You can think of the hidden state as the memory of the network. captures information about what happened in all the previous time steps. The output at step is calculated solely based on the memory at time . As briefly mentioned above, itrsquo;s a bit more complicated in practice because typically canrsquo;t capture information from too many time steps ago.
  • Unlike a traditional deep neural network, which uses different parameters at each layer, a RNN shares the same parameters ( above) across all steps. This reflects the fact that we are performing the same task at each step, just with different inputs. This greatly reduces the total number of parameters we need to learn.
  • The above diagram has outputs at each time step, but depending on the task this may not be necessary. For example, when predicting the sentiment of a sentence we may only care about the final output, not the sentiment after each word. Similarly, we may not need inputs at each time step. The main feature of an RNN is its hidden state, which captures some information about a sequence.

What can RNNs do?

RNNs have shown great success in many NLP tasks. At this point I should mention that the most commonly used type of RNNs are LSTMs, which are much better at capturing long-term dependencies than vanilla RNNs are. But donrsquo;t worry, LSTMs are essentially the same thing as the RNN we will develop in this tutorial, they just have a different way of computing the hidden state. Wersquo;ll cover LSTMs in more detail in a later post. Here are some example applications of RNNs in NLP (by non means an exhaustive list).

Language Modeling and Generating Text

Given a sequence of words we want to predict the probability of each word given the previous words. Language Models allow us to measure how likely a sentence is, which is an important input for Machine Translation (since high-probability sentences are typically correct). A side-effect of being able to predict the next word is that we get a generative model, which allows us to generate new text by sampling from the output probabilities. And depending on what our training data is we can generate all kinds of stuff. In Langua

剩余内容已隐藏,支付完成后下载完整资料


外文文献翻译

题 目   循环神经网络的教程

第一部分——循环神经网络的简介

循环神经网络的教程

第一部分——循环神经网络的简介

循环神经网络是一种流行的模式,在许多NLP任务中都显示出良好的应用前景。但是,尽管它们最近很受欢迎,但我只找到了有限的一些资源可以完全解释它们的工作原理和实现它们的方法。这就是本专题报告所要讲述的内容。这是一个由多部分组成的系列,我计划在其中介绍以下内容:

  1. 循环神经网络的简介(本文)
  2. 实现一个循环神经网络的Python和Theano
  3. 理解通过时间算法的反向传播和消失梯度问题
  4. 实现一个GRU或长短期记忆循环神经网络

作为本教程的一部分,我们将实现一个基于递归神经网络的语言模型。语言模型的应用是双重的:首先,它允许我们根据任意句子在现实世界中出现的可能性来评分。这给了我们一个语法和语义正确性的度量。这种模型通常被用作机器翻译系统的一部分。

其次,语言模型允许我们生成新的文本(我认为这是更酷的应用程序)。在莎士比亚身上训练一种语言模型可以使我们产生类似莎士比亚的文本。AndrejKarpathy的这篇有趣的文章展示了基于RNN的字符级语言模型的能力。
我假设你对基本神经网络有些熟悉。如果你没有,你可能想从头开始实现一个神经网络,它指导你通过非循环网络的思想和实现。

那么RNNs是什么呢?
RNN背后的思想是利用顺序信息。在传统的神经网络中,我们假设所有的输入(和输出)彼此独立。但对于许多任务来说,这是一个非常糟糕的主意。如果你想预测一个句子中的下一个单词,你最好知道哪个单词在它前面。RNN之所以称为循环,是因为它们对序列的每个元素执行相同的任务,而输出取决于前面的计算。另一种考虑RNN的方法是,它们有一个“内存”,可以捕获到有关到目前为止计算的内容的信息。理论上,RNN可以任意长的序列使用信息,但在实践中,它们仅限于回顾几个步骤(稍后将详细介绍)。以下是典型RNN的外观:

一种递归神经网络,其正向计算涉及到计算时间的展开。来源:自然

上图显示一个RNN正在展开(或展开)成一个完整的网络。通过展开,我们只意味着我们写出了完整序列的网络。例如,如果我们关心的序列是一个5个单词的句子,那么这个网络将展开成一个5层的神经网络,每个单词一层。控制RNN中发生的计算的公式如下:

  • 是时间步骤t的输入。例如,可以是一个对应于句子第二个单词的一个热向量。

·是时间步骤t的隐藏状态。它是网络的“内存”。是根据以前的隐藏状态和当前步骤的输入来计算的:=f( )。函数f通常是非线性的,如tanh或ReLU。通常初始化为所有零,这是计算第一个隐藏状态所必需的。

·是步骤t的输出。例如,如果我们想预测一个句子中的下一个单词,它将是我们词汇表中概率的向量。= ()。

这里有几点需要注意:

·你可以将隐藏状态想象为网络内存。捕获有关在以前所有时间步骤中发生的事情的信息。步骤的输出仅基于时间t的内存进行计算。如上所述,在实践中,这有点复杂,因为通常无法从太多的时间步骤中捕获信息。

·不同于传统的深层神经网络,它在每一层使用不同的参数,RNN在所有步骤中共享相同的参数(上面的u、v、w)。这反映了一个事实,即我们在每个步骤中都执行相同的任务,只是使用不同的输入。这大大减少了我们需要学习的参数总数。

·上面的图表在每个时间步骤都有输出,但根据任务的不同,这可能不是必需的。例如,在预测句子的感情用事时,我们可能只关心最后的输出,而不是每个单词后面的感情用事。同样,我们可能不需要在每个时间步骤输入。RNN的主要特征是它的隐藏状态,它捕获了关于序列的一些信息。

RNN能做什么?
RNN在许多NLP任务中都显示出巨大的成功。在这一点上,我应该提到最常用的RNN类型是LSTM,它在捕获长期依赖性方面比普通RNN要好得多。但不用担心,LSTM本质上与我们在本教程中开发的RNN是相同的,它们只是有一种不同的计算隐藏状态的方法。我们将在后面的文章中更详细地介绍LSTM。以下是RNN在NLP中的一些应用示例(非详尽列表)。

语言建模与文本生成

给定一个词的序列,我们要预测每个词给出前一个词的概率。语言模型允许我们测量句子的可能性,这是机器翻译的重要输入(因为高概率的句子通常是正确的)。能够预测下一个单词的副作用是我们得到一个生成模型,它允许我们通过从输出概率中抽样来生成新的文本。根据我们的培训数据,我们可以生成各种各样的东西。在语言建模中,我们的输入通常是一个单词序列(例如编码为一个热向量),而我们的输出是预测单词序列。培训网络时,我们设置=,因为我们希望步骤t的输出是实际的下一个字。

关于语言建模和生成文本的研究论文:

·基于递归神经网络的语言模型
·基于递归神经网络语言模型的扩展
·用循环神经网络生成文本

机器翻译

机器翻译类似于语言建模,因为我们的输入是源语言(例如德语)中的一系列单词。我们希望输出目标语言(如英语)中的一系列单词。一个关键的区别是,我们的输出只有在看到完整的输入之后才开始,因为我们翻译的句子的第一个单词可能需要从完整的输入序列中捕获信息。

RNN的机器翻译

图片来源:http://cs224d.standford.edu/lectures/CS224d-Lecture8.pdf

关于机器翻译的研究论文:
·统计机器翻译的递归递归神经网络
·基于神经网络的顺序学习
·基于递归神经网络的联合语言与翻译建模

语音识别

给出了声波声信号的输入序列,可以预测语音片段的序列及其概率。语音识别研究论文:

·基于递归神经网络的端到端语音识别

生成图像描述

与卷积神经网络一起,RNN被用作模型的一部分来生成未标记图像的描述。这看起来很管用,真是令人惊讶。组合模型甚至将生成的单词与图像中的特征对齐。

用于生成图像描述的深层视觉语义对齐

来源:http://cs.standeford.edu/people/karpathy/deepinagesent/

训练RNN

训练RNN类似于训练传统的神经网络。我们也使用了反向传播算法,但有点扭曲。因为参数由网络中的所有时间步共享,所以每个输出的梯度不仅取决于当前时间步的计算,还取决于以前的时间步。例如,为了计算t=4处的梯度,我们需要反向传播3个步骤,并求出梯度的总和。这称为时间反向传播(BPTT)。如果这还不太有意义的话,别担心,我们会有一篇关于血腥细节的文章。现在,请注意,由于所谓的消失/爆炸梯度问题,用BPTT训练的普通RNN难以学习长期依赖性(例如,相距很远的步骤之间的依赖性)。有一些机器可以处理这些问题,而某些类型的RNN(如LSTM)是专门设计用来解决这些问题的。

RNN扩展
多年来,研究人员开发了更复杂的RNN类型来解决香草RNN模型的一些缺点。我们将在后面的文章中更详细地介绍它们,但我希望这一部分作为一个简短的概述,以便您熟悉模型的分类。

双向RNN是基于这样的思想,即时间t的输出可能不仅依赖于序列中的前一个元素,还依赖于未来的元素。例如,要预测序列中缺失的单词,您需要同时查看左上下文和右上下文。双向RNN非常简单。它们只是两个RNN堆叠在一起。然后根据两个RNN的隐藏状态计算输出。

深度(双向)RNN类似于双向RNN,只是我们现在每个时间步有多个层。实际上,这给了我们更高的学习能力(但我们也需要大量的培训数据)。

LSTM网络最近相当流行,我们在上面简单地讨论过它们。LSTM与RNN没有根本不同的体系结构,但它们使用不同的函数来计算隐藏状态。lstms中的内存称为单元,您可以将它们视为黑盒,将以前的状态和当前输入作为输入。在内部,这些单元决定要在内存中保留什么(以及要从中删除什么)。然后,它们将以前的状态、当前内存和输入结合起来。事实证明,这些类型的单元在捕获长期依赖性方面非常有效。LSTM一开始可能会很混乱,但是如果你想了解更多,这篇文章有一个很好的解释。

结论

emsp;到目前为止,本文对RNNs进行了基本的介绍,并对常见的几种RNNs模型进行了初步讲解。下一步将基于Theano与Python实现一个RNNs语言模型并对上面的一些RNNs模型进行详解。这里有更多的RNNs模型

emsp;emsp;后面将陆续推出:

  • 详细介绍RNNs中一些经常使用的训练算法,如Back Propagation Through Time(BPTT)、Real-time Recurrent Learning(RTRL)、Extended Kalman Filter(EKF)等学习算法,以及梯度消失问题(vanishing gradient problem)
  • 详细介绍Long Short-Term Memory(LSTM,长短时记忆网络);
  • 详细介绍Clockwork RNNs(CW-RNNs,时钟频率驱动循环神经网络);
  • 基于Python和Theano对RNNs进行实现,包括一些常见的RNNs模型;

关键词

深度学习、神经网络、循环神经网络

  • 参考文献
  • [1] Hinton G E. Learning Distributed Representations of Concepts[C]. Proceedings of the 8th Annual Conference of the Cognitive Science Society. 1986, 1: 12.
    [2] Elman, J. L. Finding structure in time. CRL Technical Report 8801, Center for Research in Language, University
    of California, San Diego, 1988.
    [3] Schuster M, Paliwal K K. Bidirectional recurrent neural networks[J]. Signal Processing, IEEE Transactions on, 1997, 45(11): 2673-2681.
    [4] Graves A, Mohamed A R, Hinton G. Speech Recognition with Deep Recurrent Neural Networks[J]. Acoustics Speech amp; Signal Processing . icassp. international Conference on, 2

    剩余内容已隐藏,支付完成后下载完整资料


    资料编号:[20563],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。