RNN,LSTM,GRU循环神经网络变化史

RNN

上下文推理,处理时间序列。

RNN,LSTM,GRU循环神经网络变化史_第1张图片

RNN,LSTM,GRU循环神经网络变化史_第2张图片

LSTM(加入了三个门)

遗忘门
输入门
输出门
当前单元状态
当前时刻的隐层输出:
  施密德胡贝尔发明了长时和短时记忆网络(LSTM):"你可以用五行代码写它."神经网络需要数百万次计算,而LSTM的代码旨在找到有趣的相关性:在数据分析中添加时间文本内容,记住之前发生的事情,然后将其应用于神经网络,观察与神经网络中接下来发生的事情的联系,然后得出结论。
  这种精巧而复杂的设计使人工智能能够自我发展,自己得出结论,发展成一个更大的系统,在学习大量文本的基础上成为现实,实现了对语言细微差异的自我学习。
  施密德胡伯将类似的人工智能训练比作人脑的筛选模式,即长期记忆会记住重要的时刻,而常规时刻会消失。

GRU

减少了门和输出。
对于 LSTM 与 GRU 而言, 由于 GRU 参数更少,收敛速度更快,因此其实际花费时间要少很多,这可以大大加速了我们的迭代过程。
而从表现上讲,二者之间孰优孰劣并没有定论,这要依据具体的任务和数据集而定,而实际上,二者之间的 performance 差距往往并不大,远没有调参所带来的效果明显,与其争论 LSTM 与 GRU 孰优孰劣, 不如在 LSTM 或 GRU的激活函数(如将tanh改为tanh变体)和权重初始化上功夫。 选择GRU作为基本的单元,因为其收敛速度快,可以加速试验进程,快速迭代。如果实现没其余优化技巧,可尝试将 GRU 换为 LSTM,看看有没有什么惊喜发生。所以说,深度学习就是玄学。
如果效果不好,可以试试 Transformer,可并行,效果一般会比 RNN要好一些。

双向RNN

正向RNN中中每个单元可以是普通RNN单元,可以是LSTM,GRU单元等。正向计算和反向计算不共享权重。

激活函数

这里附一张激活函数的图
RNN,LSTM,GRU循环神经网络变化史_第3张图片

最后

理解基本的神经网络单元是必要的, 但在上层task的使用中, 基本的神经单元通常只是拿来即用, 更多的在deep, 迁移学习, embedding , attention上做文章,这需要多看paper, 多写代码, 慢慢积累。

你可能感兴趣的:(神经网络)