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