- 神经网络基础
所谓神经网络就是一种“黑盒子”,这个黑盒子能够拟合任意的函数,但是前提是要有足够的数据去训练这个黑盒子。训练好的“黑盒子”能够做到给定特定的x就得到希望的y。
- RNN—循环神经网络
普通的神经网络都只能做到单独处理,对于每一个输入都是独立的,前后的输入完全没有任何关系。但是在现实中的很多数据都是前后关联的,我们需要根据一定的先后顺序去判断后期的数据可能情况。为了达到这样的效果,我们引入了RNN(循环神经网络)。该神经网络的重要优势就可以使得前后输入数据关联起来。
下面简单的解释一下这张图的意思,如果把W这个块去掉,那么他就是一个普通的全连接神经网络。所以关键在这个W这个块上面,他可以决定下一次的S的值,他会记录当前的这一次的值,作为下一次S的输入权重。
抽象图如下:
该图还可以进行展开:
由此就可以更加抽象的理解W块在其中起到的作用了。
公式:
- LSTM网络
Lstm网络是基于RNN的加强版神经网络。就我理解的情况来看,所谓加强就是把RNN中的W块的内部结构进行加强,它是将RNN网络中W块所用到的简单的神经网络层进行复合与加强,不再是单一的神经网络层,而是四个,以一种非常特殊的方式进行交互。
标准的RNN图示:
- LSTM网络:
LSTM有非常重要的三个门:
- 遗忘门
在我们LSTM中的第一部就是决定我们会在黑盒子里面丢弃什么样子的信息。这个决定的过程被称为在忘记门层完成。这个门会读取上一次W块传过来的值以及本次输入的X值,输出一个0到1之间的数字,1表示“完全保留”,0则表示“完全舍弃”。这个功能可以有助于动态的判断是否要记忆上一次输入的值,是否要考虑两次输入的值的相互作用。
σ表示sigmod函数。
- 输入门
这道门的作用就是决定了让多少新的信息加入到黑盒子中去。这个过程需要两个具体的步骤:首先,sigmoid函数层需要决定出哪些输入信息需要被更新;一个tanh层生成一个向量,作为备选,是用来更新的内容。下一步,我们将这两部分联合起来,对黑盒的状态进行一个更新。
- 输出门
最终就是要决定输出什么值,这个输出是基于我们整个黑盒的,也就是一种过滤后的版本。
首先我们运行一个sigmoid函数层进行确定黑盒状态的哪个部分将输出出去。接着我们把黑盒状态通过tanh进行处理,得到一个-1到1之间的值,将该值和sigmoid门的输出相乘,最后我们会只输出我们确定的输出的部分。
本文是参考多位前辈的思想,基于前辈们的优秀成果,以一个初学者的眼光看待这三者之间的理论关系的。如有不足,请多多指教!