从网上看到一些对RNN和LSTM的讲解,说得实在不明白,我看了好久才理解一点。所以把自己的理解画成图总结了一下。都是从网上找的资料不一定权威,也不是专门搞这个的,只是入门的介绍,其他深入的问题也不会。权当做一个简介和入门吧。
神经网络
如果看神经网络的一个单层而且是全连接层的话,可以表示成下面这样。
其中W就是权重矩阵,,非常好理解。
循环神经网络(RNN)
首先,为什么要有这个循环神经网络呢?因为普通神经网络中,给定一个输入 就对应一个输出
,给定一个输入
就对应一个输出
,这俩互相之间没有半毛钱关系。但我们实际应用中,很多时候要输入一个序列,比如做自然语言处理时,输入一个句子,其中每个单词对应一个编码。我要是分开输入每个单词,倒也可以,但单词之间的关联就被抹去了,它肯定效果不好。事实上,这些单词之间是有关联的。那么我们怎么解决这个问题呢?有人就想了,利用前面三个单词,输入进去得到一个状态,然后利用这个状态和第四个单词一起,对第四个单词进行预测。这个想法就很好。
所以得到了如下的结构,其中S就代表状态。
图里为了简洁把激活函数没画出来,实际上一般经过全连接后得到新的结果之前都要加一层激活函数。另外,连过来怎么就成了
了呢?这就是用上一个时刻的状态和该时刻的输入得到该时刻的状态和输出。或者理解为自然语言处理中,输入上一个单词得到了一个状态
,然后要输入这个单词了,上面得到的
不就是