什么是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, 使用多少由这个权重来决定
欢迎关注我的频道,神经网络视频
评论