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的过程有所理解。总之,我热爱人工智能,热衷钻研,希望大家能够帮助我弥补不足之处,让我在人工智能之路走得更远,谢谢大家。