在识别图像时,输入的每张图片都是孤立的,认出的这张图片是苹果,并不会对认出下一张图片是梨造成影响。但对于语言来说,顺序是十分重要的,“我吃苹果”和“苹果吃我”,词语顺序的改变表达了不同的意义,顺序也提供了一定的意义,比如“吃”后面大概率是代表事物的名词。
为了捕捉数据的这种关联,人们找到了RNN,一个高度重视序列信息的网络,序列就是数据的前后关系,RNN的基础仍然是神经网络,只不过它多了一个小盒子,用来记录数据输入时,网络的状态。在下一次输入数据时,网络必须要考虑小盒子中保存的信息,随着数据的一次次输入,存储的信息也在不断更新,盒子中的信息被称为隐状态。
RNN最常见的应用领域就是NLP,机器翻译是找出相同的意义序列,在不同语言中的表达。诗歌生成是基于一个主题,按照一定的规则输出有逻辑的词语序列。改变两端的语义类型,输入图片,输出句子,就是看图说话。
语音同样可以看做声音信号按时间顺序组成的序列,语音识别和语音生成同样在RNN的能力范围内。股票价格也可以被看作一个受时间影响的序列,很多量化模型的建立就是基于这样的认知。
不过RNN仍有不可忽视的缺陷,数据输入的越早,在隐状态中占据的影响就越小。也就是说如果一个句子很长,RNN就会忘记开始时说了什么,于是就有了LSTM的改良版,LSTM