LSTM和GRU
概述#
长短期记忆 LSTM(Long Short Term Memory),该类型的神经网络可以利用上输入数据的时序信息。对于需要处理与顺序或时间强相关数据的领域(自然语言处理、天气预测等)相当合适。
GRU(Gate Recurrent Unit)可以视为 LSTM 的简化版本。运算量更小,却能达到 LSTM 相当的性能。
介绍 LSTM 之前,要先了解什么是 RNN。
RNN#
递归神经网络 RNN(Recurssion Neural Network),通过让网络能接收上一时刻的网络输出达成处理时序数据的目标。
通常来说,网络通过输入
如此,网络的输入有两个:
LSTM#
RNN 有很多缺点(遗忘、梯度爆炸与梯度消失),现在更多使用 LSTM。
LSTM 引入了单元状态(cell state)的概念。网络的输入现在有
单元状态
LSTM 具体细节#
在
一次运算的步骤如下:
-
从
时刻传来的单元状态 首先与 相乘,用于代表记忆的遗忘(forget) -
与 相乘,代表对记忆进行选择,哪些记忆需要记录(information)。上一步经过遗忘处理的 与需要记录的记忆进行加运算,完成记录。
此步完成后,
化身为 作为下一步的单元状态输入
- 最后用
控制输出(output)。 与上一步的 的 结果相乘,获得本时刻的输出 ,并作为下一步的隐藏态输入
GRU#
GRU 可以实现与 LSTM 相当的性能,且运算量更低。
GRU 具体细节#
GRU 没有单元状态
一次运算的步骤如下:
- 从
时刻传来隐藏状态 与 相乘,获得 。这一步代表有选择性地保留记忆(遗忘) 与输入 拼接,再乘一个参数可学习的矩阵,取 获得 。这一步让 记忆了当前时刻的状态(记录)- 用
乘上 ,用 乘上 ,将两者的和视为当前的隐藏状态 。可见 结合了以前的记忆与现在的状态,代表记忆的更新
现在,将
参考来源#
- Mark,“LSTM - 长短期记忆递归神经网络”,https://zhuanlan.zhihu.com/p/123857569
- 陈诚,“人人都能看懂的LSTM”,https://zhuanlan.zhihu.com/p/32085405
- 陈诚,“人人都能看懂的GRU”,https://zhuanlan.zhihu.com/p/32481747
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理