循环神经网络(Recurrent Neural Network)
AI-第五期-DarkRabbit
这篇文章是对循环神经网络的一个概念性总结,对应:
- 第十一周:(01)循环神经网络
- 第十一周:(04)LSTM
- 维基百科(en):
- “Recurrent neural network” 词条
- “Long short-term memory” 词条
- “Backpropagation through time” 词条
公式在CSDN的app中会显示乱码,请在其它方式阅读
目录
1 什么是循环神经网络
循环神经网络是一种人工神经网络(Artificial Neural Network),它的神经元间的连接沿序列(sequence)构成有向图,这使得它能表现出动态时间行为,所以有些地方也称为时间递归神经网络。
2 常用结构(Architectures)
2.1 基本结构(Basic)
基本循环神经网络结构(图片来自 Wikipedia):
从图中可以看出( 为时间,除时间外所指均为向量或矩阵,下同):
- 输入层(input):在 时刻的输入 。
- 隐藏层(hidden):在 时刻的值 ,它取决于权重为 的 与 权重为 的 。
- 输出层(output):在 时刻的输出 ,它取决于权重为 的 。
用公式表示即是:
其中 为对应的**函数。
从公式(2)表现为递归形式来看,输出 是受到之前所有输入的影响()。展开式为:
2.2 简单结构(Simple Recurrent (Neural) Networks,SR(N)N)
简单循环网络(SRN)通常是指 Elman networks 与 Jordan networks 。
Elman 网络的结构(图片来自 Wikipedia):
Elman 网络是一个三层网络(图中 ),附带一个“上下文单元”(context units,图中 )。隐层与这些单元相连接,权重为1。
Jordan 网络和 Elman 网络非常相似。只是这些“上下文单元”不是和隐层相连,而是与输出层相连。这些“上下文单元”被称为状态层(state layer)。
它们的公式表示都为:
2.3 长短期记忆网络(Long Short-Term Memory,LSTM)
LSTM 避免了梯度消失的问题。
LSTM 结构如下(图片来自 Wikipedia):
一个 LSTM 包含一个记忆细胞(memory cell,图中 ),一个遗忘门(forget gate,图中 )一个输入门(input gate,图中 )和一个输出门(output gate,图中 )。
从图中就可以看出,在 LSTM 有:
- 遗忘门:决定了上一时刻 保留多少内容。
- 输入门:决定了这一时刻 保留多少内容。
- 输出门:决定了这一时刻 有多少内容输出到 。
- 输入:在 时刻的输入 ,在 时刻的输出 和 。
- 输出:在 时刻的输出 和 。
用公式表示即是:
其中 是哈达马乘积(Hadamard product)矩阵运算,也记作 ,部分文章也写作 。
3 基于时间的反向传播算法(Backpropagation Trough Time,BPTT)
BPTT 是一种基于梯度的技术,可以用来计算 Elman 网络。
具体的计算可以参考这篇文章
Recurrent Neural Networks Tutorial, Part 3 – Backpropagation Through Time and Vanishing Gradients
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:AI(008) – 循环神经网络(Recurrent Neural Network) - Python技术站