RNN理论解读

参考原文


1、介绍

      作为教材的一部分我们将应用循环神经网络基于语言模型,基于语言模型的应用分为俩部分,第一部分,它允许我们为任意句子评分基于它们发生在现实世界的可能性有多大.。这样给了我们语法和语义正确性的度量。这样的模型通常被用做机器翻译系统的一部分。第二部分,一个语言模型允许我们生成新的文章(我认为这是一个非常cooler的应用)。训练一个基于莎士比亚的语言模型允许我们生成类似莎士比亚的文章。这个由Andrej Karpathy所著的有趣帖子展示基于RNNs的能力的字符级别语言模型。

2、什么是RNNs

   RNNs背后的理念是利用有序的信息。在传统的神经元网络我们假定所有的输入以及输出是彼此独立的,但是对于许多任务这是一个十分坏的想法。如果你想预测句子里面下一个单词那么你最好知道这个单词之前的那些单词。RNNs被称作循环是因为它们执为每个序列元素执行相同的工作并且它们的输出依赖与之前的计算。另一个角度考虑RNNs是它们拥有记忆,这种记忆包含它们之在这之前计算过什么的信息。在理论上RNNs可以利用任意长度序列的信息,但是实际上它们被限制仅仅可以回顾少量的step。

下面是传统的RNN的样子。

以上图表展示了RNN被展开成全连接网络。通过展开的方式我们简单的解释我们关于完整的序列写出来的网络。举个例子,如果我们关心的序列是一个5个单词的句子,那么网络应该被展成5层的神经网络,每层对应一个单词。和RNN相关公式的参数如下:

     xt在t time step 的输入,举个例子,x1是one-hot矢量对应这句子的第二个单词。(实在找不到合适的词翻译time step)

    st在t time step的隐层,它是网络的记忆。st被计算基于之前的隐层和当下的time step的输入:st = f(Uxt  + Ws<t-1>).

    其中函数f是非线性的例如tanh和ReLU。s-1被要求来计算第一个隐层,它所有元素通常被初始化为0。

    ot是t time step的输出。举个例子,如果我们想要预测一个句子的下一个单词,那么ot则是一个放有 所有词汇可能性的容器。ot=sotfmax(Vst).

下面有一些需要注意的地方:

    a、你可以认为隐层st作为网络的记忆,st捕获了关于之前的time step发生了什么。在t time step的输出被计算仅仅基于t时刻的记忆(自己的话:就是ot这个因变量仅仅和自变量st有关)。如前所述,它在练习上十分复杂因为st通常不能捕获好几个time step之前的信息。

    b、不像传统的在不同层用不同的参数的深度神经元网络,RNN共享同样的参数(上述的U、V、W)在整个 step。这反映了事事实上我们在不同的step上执行相同的任务只是输入不同。这种方式极大的减小了我们需要学习的参数的总数。

    c、上图每个step均有输出,但是依赖任务这种情况不是必须的。举个例子,当预测一个句子的感情我们可能仅仅关心最后的输出,而不是每个单词之后的感情,同理,我们不需要在每个step输入,RNN主要特征是它的隐层,这个隐层捕获关于序列的一些信息。

3、RNNs可以做什么

    RNNs展现了巨大的成功在许多NLP任务,在这一点上我应该 提及最普遍使用RNNs类型是LSTMs,与vanilla RNNs相比LSTMs在捕获长期依赖比较好。但是不用担心,LSTMs基本上和我们将要在教程上讲到的RNN相同,他们只是在计算隐层的方法上不同,我们在将在本教程教导。 我们将覆盖LSTMs很多细节在最后一篇帖子。这里有一些RNNs在NLP上的应用举例。

语言模型和文本生成

    给定一个单词序列,我们要预测每个单词的概率。语言模型允许我们测量句子的可能性,这是机器翻译的重要输入(因为可能性高的通常正确)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值