今天我们就将开始学习循环神经网络RNN,与CNN(卷积神经网络)不同的事RNN的生成结果是一个序列,一般是时间上的序列。比如说,我首先训练好了一个网络,这个网络的训练时的输入时某个人经常说的某些话。最后用来测试时,直接输入一两个词,然后,由网络来预测他将会接着说些什么,或者直接与某个人进行对话,模拟一个正常人。
最简单的RNN网络是只有一层的,网络输入的句子是经过处理的,即VEC2WORD处理,也就是将一个个单词经过矩阵编码后,生成一个向量。一个向量代表着一个字幕,向量组合起来就成了一个句子。这就是RNN网络的输入。
正向传播的过程,第一个向量是输入传到了一个神经元,同时还有一个偏置项和初始结果。(后面你就知道为什么会需要这个初始结果了)经过了一次计算,迭代之后,神经元将会生成一个输出一个中间结果。其实我们最需要的就是这个中间结果。下一步就是将输出结果和第二个向量作为输入,传入到神经元中,这里的神经元还是原来那个神经元,只是我们为了好理解,一般会将他进行展开。就这样已知这样进行传递,直到将输入向量一个一个全部都输入到网络中来了之后。会进行一个误差的反馈。还记得我们的中间结果吗?那就是我们的网络根据输入向量所生成的一个向量,代表着某一个字母,也可以理解为其是在记忆一个字母。等到网络结束后就会存储了一些列的字母,这些字母就是网络日后可能会预测的结果,因为记忆的功能,也导致了传统网络的庞大,繁杂。前面说的输入需要一个初始结果就是因为这个是只有一个神经元的网络,需要一个初始输入来达到网络的自洽。
反向传播的过程,最后可知,我们在每一个输出记忆的地方都有一个LOSS,最后就是要将这些LOSS全部都加起来,才能成为最后的LOSS,。其方法也是通过梯度下降法。而且,其梯度计算方式较传统网络一样,甚至会更加简单,跟大学学的连续求导很类似。
我们可以看到,RNN最神秘的地方就是其神经元内部的运作方式,这个我也不太清楚。还应该注意到的是,这些年来,RNN网络有了很多的变种,向LSTM,等。LSTM就是将记忆的的量改了,可以分情况记录长时间的记忆和短时间的记忆。
这个网络应该会越来越火。注意将这个网络将其他网络进行组合。
网友评论