1.简介
循环神经网络(recurrent neural network,RNN)是一类用于处理序列数据的神经网络。类似于卷积神经网络(Convolutional neural network,CNN)可以处理空间上的数据(例如图像),RNN则专门处理序列上的数据,主要用于时序,自然语言处理(Natural Language Processing)等领域。
2.早期思想
如何从多层网络发展到循环网络呢?我们需要利用机器学习与统计模型早期思想优点:在模型的不同部分共享参数。参数共享使得模型能够扩展到不同长度的样本并具有泛化能力。如果在每一个时间节点都有一个单独的参数,不但不能泛化,也不能在时间上共享不同序列长度和不同位置的统计强度。例如,我们需要训练一个处理固定长度句子的网络。传统的全连接层会给每个输入特征分配一个单独的参数,需要分别学习每个位置的所有语言规则,但如果RNN共享权重,则不需要分别学习每个位置的所有语言规则。
当然,一开始也出现了用卷积处理一维时间序列。卷积操作可以跨越时间共享参数,即卷积的输出中的每一项是相邻几项输入的函数。参数共享的概念体现在每一个时间步长使用相同的卷积核。
--------------------------------------采摘自花书-------------------------------------------
3.应用领域
RNN专门处理序列问题,如下图所示:
---来源Andrew Ng深度学习课件
(1)语音识别,输入语音信号,得到输出文本信息。
(2)音乐生成,给定一个音乐类型(eg. 数字:0,1,2……)或者空输入,得到一段音乐。
(3)情感分析,给一段影评,对其打分。
……………………