循环神经网络
- 2020 年 12 月 16 日
- AI
循环神经网络RNN常用于处理序列数据, 但缺点是不适合长序列, 易梯度消失
- 因为MLP和CNN都是单独处理每个输入数据的, 无法捕捉输入与输入之间的关系, 尤其是输入之间具有时间关系的数据. 若用MLP或CNN 处于序列数据, 需要将序列视为整体.
- 循环神经网络的归纳偏置在与捕捉时序过程中的长期依赖性.
# 这个是对根据当前状态做出预测, 不是必须的
LSTM 被提出来处理梯度消失问题. 尤其适合长序列, 但缺点是计算量大
类似于RNN, LSTM 经过四个非线性函数, 其中作为原始输入的映射和 三个门, 输出多来一个细胞状态:
# 映射到[-1, 1]
# 选择记忆
#遗忘门
# 输出门
# 通过选择和遗忘门更新细胞状态, 细胞状态类似与传送带, 保存长期的信息.
# 更新当前状态. 作为短期记忆.
GRU 被提出来简化LSTM的计算, 显然 GRU 丢去了LSTM中的一个门, 显然参数少了 自然计算就快了, 训练集大的时候, 性能自然也不如LSTM.
# 重置门
# 更新门
# 重置状态
# 更新状态
# LSTM 和 GRU 都属于门控RNN, 其思路是基于生成通过时间的路径, 其导数既不消失, 也不爆炸. 即 我们希望RNN在当前时刻能记住很久以前的有用的事情, 但也希望他忘掉一些没用的事情. 然后把提取的信息/状态/细胞 保留到下一个时刻.
# LSTM 中的门控机制和CV中的soft attention 机制是等价的, 不过背景起源不同. Transformer 也有类似的架构:
重要结论
- 虽然假设空间覆盖面很广, 但是由于深度学习模型非常复杂, 如果学习算法没有限制去学习简单模型, 那么他很可能找不到简单解
- 深度学习是工程, 而且每个问题都具有特殊的性质, 没有哪个理论能提前告诉你这个方法一定能最优的解决问题, 你必须不停迭代, 深入研究问题和数据性质, 改进方法.
- 一维卷积 有时候要比RNN 处理数据更方便, 这取决于你研究的问题.
启发:
- 网络设计 要考虑学习参数的梯度和数据之间的融合.网络的结构最好也让优化算法决定. 易于优化的网络 和 符合数据task的归纳偏置网络 才是 正确的设计方式.
- 因为运算的实际效果是由权重决定的, 而权重是以端到端的方式学习的, 不可能有特定目的. 所以把网络设计过程理解使网络更容易优化比较合适. 运算的具体意义, 取决于你的数据, 以及训练后模型 运算在数据上的计算结果.
- 模式识别, or 模式学习, 即要让模型在具有这中模式的数据上优化. 不同模式的融合, 也可以提升模型的能力. 所以要做数据增强和多模态数据融合 模式也可以理解为数据分布. 使网络能学习到符合task的数据模式.
参考文献:
花书, keras深度学习
题外话:
词嵌入 指 用向量表示单词, 一般的说, 用向量表示对象. .
循环神经网络对数据的顺序有一定的归纳偏置作用. 图神经网络被提出来解决数据顺序问题, 即提取数据组合/排列 无关的模式.
因为不同的神经网络设计出来都是为了捕捉满足task 数据的的特定模式的, 所以介绍几种常见的 特殊的task.和数据模式
- 双向RNN. 不同于RNN 捕捉当前时间和过去数据数据之间的关系, 双向RNN 可以捕捉未来对当前时刻的关系.
- Seq2Seq. 不同于RNN讲序列映射到向量, Seq2Seq可以蒋序列映射到序列. 即编码-解码架构. Transformer 首先在S2S任务上提出来, 主要优势是可以并行训练.
- 门控RNN. 不同于RNN 只适合短序列数据, 门控RNN(LSTM, GRU) 更适合长序列数据. 但不能并行训练.
- 递归神经网络. 占坑
- 回声状态网络. 不是很明白, 有点像网络架构搜索, 先占坑.
- GNN. 不同于RNN 要求数据具有特征排列组合模式. GNN 可以学习数据之间任意的排列组合 非常适合关系的学习任务.
- 1D卷积网络. 不同于RNN可以捕捉序列任意时刻之间关系. 一维卷积可以捕捉局部时间段节点之间关系, 好处是计算量小.