本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

【j2开奖】【干货】深度学习知识与实践:用 RNN 实现语言模型(3)

时间:2017-03-14 11:24来源:118论坛 作者:开奖直播现场 点击:
训练RNN好普通的神经网络类似,我们也是使用反向传播算法,但是有一些麻烦的地方。因为每个时刻的参数是共享的,因此参数的梯度不只依赖当前时刻的

  训练RNN好普通的神经网络类似,我们也是使用反向传播算法,但是有一些麻烦的地方。因为每个时刻的参数是共享的,因此参数的梯度不只依赖当前时刻的输出,还依赖于之前的时刻。比如为了计算t=4的梯度,我们需要把错误往前传递3个时刻。这就是所谓的Backpropagation Through Time(BPTT)。如果现在不明白,不用担心,我们后面会详细介绍。现在我们只需要知道对于原始的RNN,BPTT很难学会长距离的依赖,原因在于梯度消失/梯度爆炸。【我们之前在学习很深的卷积网络时也会有梯度消失和爆炸的问题,我们之前是通过Batch Normalization,ResNet等方式来缓解这个问题】。有一些机制可以解决这个问题,比如特定的RNN(如LSTM)可以缓解【不是完全解决】这个问题。

  RNN的扩展

  经过多年的探索,研究者提出了根据复杂的RNN来克服原始RNN的一些问题。我们会在后面详细介绍,但是这里先给出一个简单的介绍,让读者能够熟悉这些模型的分类方法。

  双向RNN(Bidirectional RNNs)的思想是t时刻的输出不但依赖于之前的元素,而且还依赖之后的元素。比如,我们做完形填空,atv直播,在句子中“挖”掉一个词,我们想预测这个词,我们不但会看之前的词,也会分析之后的词。双向RNN很简单,它就是两个RNN堆叠在一起。输出依赖两个RNN的隐状态。

  【对于语言模型来说,计算句子的概率是可以使用双向RNN的,但是生成一个句子就不行了,因为我们必须按照顺序一个一个采样,当然还有一种方法是两个方向都生成一些candidate,然后用双向RNN打分。】

  

【j2开奖】【干货】深度学习知识与实践:用 RNN 实现语言模型

双向RNN

  深度(双向)RNN(Deep (Bidirectional) RNNs)和双向RNN类似,不过多加几层。当然它的表示能力更强,需要的训练数据也更多。

  

【j2开奖】【干货】深度学习知识与实践:用 RNN 实现语言模型

深度双向RNN

  LSTM网络是如今非常留下的RNN。LSTM本质也是一种RNN,不过它计算隐状态的方法有所不同。LSTM的记忆叫做cell,你可以把它们当成一个黑盒,这个黑盒的输入是之前的状态 ht?1 和当前输入 xt 。在LSTM内部,这些cell会决定保持哪些记忆同时擦除另外一些记忆。然后它会把之前的状态,当前的记忆好输入来计算当前当前的cell。这种结构可以非常有效的捕获长距离的依赖。LSTM对于初学者来说可能非常难以理解,不过这里有一个非常好的解释 。

  总结

  这一部分简单的解释了什么是RNN以及它能做什么。下一部分讲话介绍使用Python和Theano来实现一个RNN的语言模型,敬请关注!

  作者介绍:

  李理目前就职于环信,即时通讯云平台和全媒体智能客服平台,在环信从事智能客服和智能机器人相关工作,致力于用深度学习来提高智能机器人的性能。

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容