什么是Recurrent Neural Network

什么是Recurrent Neural Network?


循环神经网络/递归神经网络(Recurrent Neural Network),主要解决的是序列类的问题,有时候顺序非常关键。比如,我喜欢苍老师的电影,和苍老师喜欢我的电影,意思完全不同;我想和马云爸爸一样有钱和马云爸爸想和我一样有钱,意思也完全不同。

那么RNN是如何工作的呢?

最重要的就是这个公式,当前状态由,上一个状态和当前输入而决定
ht 带表当前时刻的隐藏状态hidden state, ht-1就是上一个状态的hidden state, xt, 是当前时刻的输入

我    喜欢    星球大战
举个例子,我喜欢星球大战,把这句话,分成三个词,x0 是我,x1是喜欢,x2是星球大战
h0 由初始状态,和x0, "我" 来决定
h1  就由h0和x1"喜欢"来决定
h2 由h1, 和x2 "星球大战"来决定



ht-1 乘以它的weight Wh 加上
Xt 乘以它的weight Wx
两个相加,
经过激活函数tanh, 最后就得到ht了

Wh, Wx, 都没有下角标t, 所以这两个weight 是由各个时刻共享的
训练的过程就是更新这两个weight的过程,把它们优化成最佳值

刚才讲的是最基础的RNN模型,下面看一下encoder/decoder 模型是如何利用RNN 来对诗的
Encoder/Decoder 顾名思义,由两个部分组成
encoder 部分的输入是已知诗的第一句,举个例子,床 前 明 月 光,五个字,
decoder 部分的输入是encoder 的输出,加上自己的上一次输出。
比如说,预测第一个字,因为decoder 自己还没有输出,所以用起始符,来表示自己上一次的输出,加上encoder 处理床前明月光的输出,这样decoder 就输出了,疑这个词
预测第二个字的时候,疑这个字就变成了输入
假设刚才输出不是疑这个字,输出了低这个字,那么预测第二个字的时候,低就变成了输入
假设预测第五个字输出是霜,预测第六个字的时候,霜变成了输入,输出是终止符,表示不用继续预测了

最后讲一下,注意力机制,attention mechanism

对于翻译问题来说,我们需要把所有的词都结合起来翻译成目标语言
注意力机制,就是提高每一个输入词的参与度的一种机制

之前说的encoder只有最后一个输出,被decoder 使用
现在decoder 要使用所有encoder 的输出,并且给每一个输出加上一个权重weight, 使用多少由这个权重来决定


欢迎关注我的频道,神经网络视频


评论

此博客中的热门博文

Embedded System interview Question

MicroKernel & Exokernel 操作系统未来可能的发展