RECURRENT NEURAL NETWORKS TUTORIAL, PART 1 – INTRODUCTION TO RNNS

RNN,也即是递归神经网络,是许多NLP任务的流行处理模型。本部分中将简介RNN。 本部分主要实现此模型– recurrent neural network based language model,模型有两个作用: 可以基于出现的概率对句子进行打分,可以对于语法和语义正确性进行评估,从而应用于机器翻译等领域。 可以依据概率生成新的语料。 ##什么是RNN RNN背后的核心理念是利用序列的信息。传统的神经网络常常假设输入(输出)是独立于彼此的,这对于某些应用来说是不可行的,例如NLP任务,如果你需要预测下一个单词是什么,你不可能不用到之前的单词的信息。RNN之中的recurrent指的就是循环往复的意思,网络对于序列数据的每个元素进行同样的操作,网络的输出取决于之前的计算。另一种理解RNN的方法则是把它们看成是有记忆的网络,记忆收集从开始到现在被考虑的信息。理论上RNN可以利用任意时间长度的信息,但是实际上这比较困难。以下是RNN的典型结构: 以上的结构将RNN展开成完整的网络。例如,我们需要处理一个5层的序列,那么就需要展开成5层:每层对应一个词。 $$x_t$$是$$t$$时刻的输入 $$s_t$$是$$t$$时刻的隐藏状态,代表网络的“记忆”,计算公式为$$s_t = f(Ux_t + Ws_{t-1})$$,其中$$f$$通常是tanh函数或者RELU函数。 $$o_t$$是$$t$$时刻的输出,如果我们想预测下一个词,那么计算公式为$$o_t = softmax(Vs_t)$$,指的是在整个词表内词的概率值。 对于以上有几点需要提示: 我们可以把隐藏状态$$s_t$$看成是网络的“记忆”,其捕捉到在之前所有时间的信息。输出$$o_t$$只取决于在$$t$$时刻的记忆。而在实际上,由于长期依赖问题,$$s_t$$很难捕捉到很长时间以前的信息。 RNN每个step中的参数($$U,V,W$$)是相同的,这使得学习的代价减小许多。 取决于实际任务,我们可能并不需要每个step都有输入和输出。 ##RNN的实际应用以下是RNN在NLP领域的一些实际应用。 ###语言模型与生成语句在给定之前词语的情况下我们希望产生出下一个词语是什么。语言模型的作用就是让我们可以衡量一个句子的可能性,这对于机器翻译是很重要的(可能性越高的更可能正确)。而语言模型的另一个作用则是预测下一个词语是什么,我们可以通过在输出的概率词汇中采样得到,。对于语言模型,输入是一序列的词语(每一个词语都是one-hot表示),输出则是一序列的预测的词语。在训练时我们设置$$o_t = x_{t + 1}$$,因为这一时刻的输出就是下一时刻的输入。 关于语言模型与生成语句的论文: Recurrent neural network based language model Extensions of Recurrent neural network based language model Generating Text with Recurrent Neural Networks ###机器翻译 机器翻译类似于语言模型,其输入为需要翻译的句子,输出则是翻译的目标语言的句子。与语言模型不同的是,我们在输入整个句子之后才输出。 …

RECURRENT NEURAL NETWORKS TUTORIAL, PART 1 – INTRODUCTION TO RNNS Read More »