RNN神经网络可以对图像生成描述,对文本进行分类,实现机器翻译,视频解说等,而在该过程中,普通RNN的信息不能长久传播,因此引入了选择性机制,我们可以将信息进行选择性遗忘、选择性输入和选择性输出,也就是后来的门——遗忘门、传入门和输出门,因此有了LSTM长短期记忆网络(Long Short Term Memory)。在使用门的过程中,使用了sigmod函数([0,1]区间,0代表完全忘记,1代表完全记住)进行对信息的选择性过滤。下面我会按照我的理解来举例分析LSTM网络,如有不足之处还请大家提出宝贵意见。
LSTM网络结构
在LSTM网络中可以看到,有三个绿色的细胞,左边的细胞的输出作为中间细胞的输入,中间细胞的输出作为右边细胞的输出。将中间细胞透明化,我们可以看到内部的构造,即LSTM的核心构造。图中各元素图标含义如下:
状态Ct
在LSTM网络中有一个状态字段,用来维护一个状态作为下一步的额外输出。当前状态的更新过程为与经过遗忘门的输入作点积,然后与经过传入门的输入作加法后得到的新状态值。(简书的公式编辑器很不错,有点类似latex~)
这里开始我的小例子。令中的词语及对应状态值(可以理解为权重)分别为(老师 0.5,教 0.1,我 0.2,python 0.2,人工智能 0.1,学习 0.2)。
下面就是LSTM网络的“三道难关”。这里提醒下,经过三道门的总输入是相同的,但是经过sigmod函数后的值是不一定相同的。
遗忘门
首先要经过遗忘门,上一次的输出和本次的输入作为整个LSTM的输入,其中的内容为(老师,教,我,人工智能),的内容为(我,喜欢,学习,人工智能),整个输入经过sigmod遗忘门后得到整合的内容为(老师 0.1,教 0.1,我 0.3,人工智能 0.5,学习 0.1,喜欢 0.2),那么的值为(老师 0.05,教 0.01,我 0.06,python 0,人工智能 0.05,学习 0.02,喜欢 0),其中python值为0,代表被完全遗忘了,而后面的喜欢也为0,是因为中还不存在该状态。
传入门
接下来,和输入要经过传入门的考验了。代表过滤出输入内容中需要更新的值,而代表输入经过tanh过滤后的备选内容。的内容为(老师 0.5,教 0.4,我 0.2,人工智能 0.2,学习 0.3,喜欢 0.1),假如这里规定大于等于0.4对应的词语需要更新,则“老师”,“教”需要更新,更新的新值为(老师 -0.3,教 -0.3,我 0.5, 人工智能 0.2,学习 0.1,喜欢 0.5)中大于等于0.5的“我”和“喜欢”,可以理解为要更新句子的主语和谓语。的值则为(老师 -0.15,教 -0.12,我 0.1,人工智能 0.04,学习 0.03,喜欢 0.05)。
到此,可以得到的更新状态,因为,因此可得(老师 -0.1,教 -0.11,我 0.16,人工智能 0.09,学习 0.05,喜欢 0.05),规定大于0的值被留下,也就是说,在到的更新过程中,遗忘了“老师”,“教”和“python”,增加了“喜欢”。
输出门
还没完呐,最后一关输出门。在这里,所有的输入经过输出门与经过tanh函数过滤的状态值作点积操作后得到最终的输出值。其中,的内容为(老师 0.2,教 0.1,我 0.4,人工智能 0.2,学习 0.2,喜欢 0.3),的内容(约等于)为(老师 -0.10,教 -0.11,我 0.16,人工智能 0.09,学习 0.05,喜欢 0.05),那么为(老师 -0.02,教 -0.011,我 0.064,人工智能 0.018,学习 0.01,喜欢 0.015),规定大于0的值输出,则最终的输出为(我,人工智能,学习,喜欢)。
结束语
也许我的举例存在些许不足,但应该能够帮助大家对LSTM的过程有所理解。总之,我热爱人工智能,热衷钻研,希望大家能够帮助我弥补不足之处,让我在人工智能之路走得更远,谢谢大家。