反馈神经网络
RNN也就是循环神经网络,或者说反馈神经网络,它有一个反馈的操作,
传统的机器学习模型,如MLP,SVM是典型的前馈神经网络,单向传播,
反馈神经网络由一个反向传播操作
层间反馈
层内反馈
反馈连接的存在导致神经元的状态 (以及输出)将随时间变化,因此RNN网络特别适合解决一些动态问题
RNN网络结构
因为存在层内反馈,RNN能够记忆,它主要有输入层,Hidden Layer, 输出层组成
将RNN的层内反馈展开:
BIRNN
双向循环神经网络(bidirectional RNNs) 添加了反向传递信息的隐藏层,以便更灵活地处理此类信息。其网络输出依赖于整个输入序列,而不是只是由过去的输入序列所决定。
双向循环神经网络的一个关键特性是:使用来自序列两端的信息来估计输出。 也就是说,我们使用来自过去和未来的观测信息来预测当前的观测。 但是在对下一个词元进行预测的情况中,这样的模型并不是我们所需的。 因为在预测下一个词元时,我们终究无法知道下一个词元的下文是什么, 所以将不会得到很好的精度。
同时,双向循环神经网络的计算速度非常慢。 其主要原因是网络的前向传播需要在双向层中进行前向和后向递归, 并且网络的反向传播还依赖于前向传播的结果。 因此,梯度求解将有一个非常长的链。
双向层的使用在实践中非常少,并且仅仅应用于部分场合。 例如,填充缺失的单词、词元注释(例如,用于命名实体识别) 以及作为序列处理流水线中的一个步骤对序列进行编码(例如,用于机器翻译)。