↑↑↑关注后"星标"Datawhale
每日干货 & 每月组队学习,不错过
Datawhale干货
方向:神经网络,来源:人工智能与算法学习
神经网络是深度学习的载体,而神经网络模型中,最经典非RNN模型所属,尽管它不完美,但它具有学习历史信息的能力。后面不管是encode-decode 框架,还是注意力模型,以及自注意力模型,以及更加强大的Bert模型家族,都是站在RNN的肩上,不断演化、变强的。
这篇文章,阐述了RNN的方方面面,包括模型结构,优缺点,RNN模型的几种应用,RNN常使用的激活函数,RNN的缺陷,以及GRU,LSTM是如何试图解决这些问题,RNN变体等。
这篇文章最大特点是图解版本,其次语言简练,总结全面。
概述
传统RNN的体系结构。Recurrent neural networks,也称为RNNs,是一类允许先前的输出用作输入,同时具有隐藏状态的神经网络。它们通常如下所示:

对于每一时步 , 激活函数 ,输出 被表达为:
这里 是时间维度网络的共享权重系数
是激活函数
下表总结了典型RNN架构的优缺点:
| 优点 | 缺点 |
|---|---|
| 处理任意长度的输入 | 计算速度慢 |
| 模型形状不随输入长度增加 | 难以获取很久以前的信息 |
| 计算考虑了历史信息 | 无法考虑当前状态的任何未来输入 |
| 权重随时间共享 |
RNNs应用
RNN模型主要应用于自然语言处理和语音识别领域。下表总结了不同的应用:
| RNN 类型 | 图解 | 例子 |
|---|---|---|
| 1对1 |
| 传统神经网络 |
| 1对多 |
| 音乐生成 |
| 多对1 |
| 情感分类 |
| 多对多 |
| 命名实体识别 |
| 多对多 |
| 机器翻译 |
损失函数
对于RNN网络,所有时间步的损失函数 是根据每个时间步的损失定义的,如下所示:
时间反向传播
在每个时间点进行反向传播。在时间步 ,损失 相对于权重矩阵 的偏导数表示如下:
处理长短依赖
常用激活函数
RNN模块中最常用的激活函数描述如下:
| Sigmoid | Tanh | RELU |
|---|---|---|
|
|
|
梯度消失/爆炸
在RNN中经常遇到梯度消失和爆炸现象。之所以会发生这种情况,是因为很难捕捉到长期的依赖关系,因为乘法梯度可以随着层的数量呈指数递减/递增。
梯度修剪
梯度修剪是一种技术,用于执行反向传播时,有时遇到的梯度爆炸问题。通过限制梯度的最大值,这种现象在实践中得以控制。

门的类型
为了解决消失梯度问题,在某些类型的RNN中使用特定的门,并且通常有明确的目的。它们通常标注为 ,等于:
其中, 是特定于门的系数, 是sigmoid函数。主要内容总结如下表:
| 门的种类 | 作用 | 应用 |
|---|---|---|
| 更新门 | 过去对现在有多重要? | GRU, LSTM |
| 关联门 | 丢弃过去信息? | GRU, LSTM |
| 遗忘门 | 是不是擦除一个单元? | LSTM |
| 输出门 | 暴露一个门的多少? | LSTM |
GRU/LSTM
Gated Recurrent Unit(GRU)和长-短期记忆单元(LSTM)处理传统RNNs遇到的消失梯度问题,LSTM是GRU的推广。下表总结了每种结构的特征方程:

注:符号
表示两个向量之间按元素相乘。
RNN的变体
下表总结了其他常用的RNN模型:
| Bidirectional (BRNN) | Deep (DRNN) |
|---|---|
|
|
参考文献:
https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-recurrent-neural-networks

整理不易,点赞三连↓
本文详细介绍了循环神经网络(RNN)的基础知识,包括其结构、优缺点,以及在自然语言处理和语音识别中的应用。RNN的挑战在于长距离依赖的处理,这导致了梯度消失和爆炸问题。为解决这些问题,文章提到了GRU和LSTM等变体。此外,还概述了不同类型的门在这些模型中的作用。最后,列举了一些常见的RNN模型变体,如双向RNN和深度RNN。










1万+

被折叠的 条评论
为什么被折叠?



