一、前言
最近三个月一直在跟lstm死磕,在此做LSTM专题,以记录和加深这段时间的理解和感受。
这个专题分成三个部分:1、lstm的深入理解 2、lstm在caffe中的实现细节 3、lstm在实际中的应用,第三部分包括了我对经典论文lrcn中activity recognition的复现以及在大数据比赛中别出心裁地使用lstm取得的令人满意的实验结果。
这篇文章是专题的第一部分。
在阅读中如有任何问题,欢迎邮件方式与我沟通。shitianqi1994@163.com
二、RNN(recurrent neural network)
1、rnn和lstm的关系
rnn可以说是lstm的前身,它提供了序列深度建模的思想,而lstm只是针对rnn在训练过程中容易梯度消散的缺点进行了改进。lstm更容易训练。
rnn提供了序列的深度学习,这个“序列“就可以得到进一步的理解,序列可以指单词的前后顺序的序列,也可以指视频帧帧之前的时间序列,这就为许多课题打开了新世界。
2、rnn的输入和输出
rnn的输入为序列,输出为序列,可以和自己的task进行结合,比方说image caption的task,输入就为一张图片重复n次构成的序列,而输出序列即为希望得到的caption。比如视频分类的task,输入为一个个连续单帧构成的序列,当然也可以是一个个光流图片构成的序列,输出则为一个分类结果。根据task的不同,只需要调整label和data,就可以获得很好的结果,这大概就是深度学习的迷人之处吧。
3、rnn的实现原理
说了这么多,为什么rnn可以对序列深度进行建模呢,其本质为rnn训练时不仅仅和cnn一样只接受data输入,rnn在序列的每一节点既接受输入的data,也接受上一节点训练得到的状态量。