RNN、LSTM、BiLSTM 算法学习笔记

张开发
2026/4/7 5:12:22 15 分钟阅读

分享文章

RNN、LSTM、BiLSTM 算法学习笔记
NLP-AHU-026一、RNN1.我之前学的普通神经网络和CNN都是一次性处理数据的比如给一张图片它就直接分析这张图的像素不会管前后的关联。但现实里很多数据都是有顺序的像咱们读课文、看视频得结合上下文才能懂意思。RNN就是为了处理这种有时间顺序的序列设计的能让网络“记住”之前的信息用来分析当前的内容。2.核心结构RNN的关键是循环隐藏层说白了就是同一个网络结构反复用。每一个时间步t它会同时收两个输入一个是当前时刻的输入xt另一个是上一个时间步的隐藏状态ht−1。然后算出当前的隐藏状态ht再用ht得到当前的输出yt。而且它所有时间步都用同一套参数这样不用重复造轮子参数量也少还能处理长度不一样的序列。3. 核心公式隐藏状态更新htσhWxhxtWhhht−1bh这里σh一般是tanh或sigmoid函数作用是把数值压缩到合适范围Wxh、Whh是权重bh是偏置简单说就是调整信息的“权重占比”和“基准值”。输出层ytσyWhyhtbyσy根据任务选比如分类任务用softmax回归用线性激活。4. 致命问题RNN想记长序列的信息但根本做不到因为反向传播的时候梯度会像连乘一样算。如果权重的数值小时间步一长梯度就会越来越接近0前面的信息就彻底丢了如果权重大梯度又会无限变大。所以RNN只能处理很短的序列长一点的就记不住了。二、LSTM1. LSTM是咋来的就是为了解决RNN的长距离依赖问题才发明的RNN的记忆太脆弱了长序列里前面的信息很容易被冲掉。LSTM的设计灵感来自电脑的门控逻辑就像给记忆加了几个开关能控制该记住啥、该忘啥、该输出啥这样就能稳稳记住长序列的信息了。2. 核心结构LSTM把RNN的简单隐藏层换成了细胞状态Ct和三个门控分别是遗忘门、输入门、输出门每个门都有自己的权重和偏置。遗忘门决定扔掉多少之前的记忆比如序列里出现了无关信息就通过它把这些信息忘掉。输入门决定保留多少新信息比如有新的关键内容出现就通过它把新内容加进记忆库。输出门决定从记忆库里拿多少信息输出比如当前需要用之前的记忆做预测就通过它输出对应的信息。3. 核心公式1.遗忘门ftσWf⋅ht−1xtbf输出0到1之间的数0就是完全扔掉1就是“完全保留”之前的细胞状态Ct−1。2.输入门itσWi⋅ht−1xtbi同时算候选细胞状态CttanhWC⋅ht−1xtbCit控制新信息的保留比例Ct是生成的新候选信息。3.细胞状态更新Ctft∗Ct−1it∗Ct这是LSTM的核心先通过遗忘门丢没用的旧信息再通过输入门加新信息记忆就更新好了。4.输出门otσWo⋅ht−1xtbo最后隐藏状态htot∗tanhCt用输出门过滤细胞状态得到当前要输出的信息ht。4. 为啥LSTM能解决梯度消失LSTM更新细胞状态用的是加法不是RNN的连乘。反向传播的时候梯度是加着传的不会因为时间步长就变成0所以能稳稳学习长序列里的远距离关联这也是LSTM比RNN好用的关键。三、BiLSTM1. BiLSTM的设计思路LSTM是单向的只能看序列前面的内容比如读一句话只能从第一个词往后读看不到后面的。但很多任务里当前的内容需要结合前后文才能理解准确。所以BiLSTM就加了一个反向的LSTM层让网络能同时看前面和后面的内容提取更全面的信息。2. 核心结构BiLSTM由两个独立的LSTM组成前向LSTM按序列正常顺序处理得到前向隐藏状态ht记住过去到当前的信息。后向LSTM按序列倒序处理得到后向隐藏状态ht记住当前到未来的信息。最后把两个方向的隐藏状态拼在一起hththt这样输出的信息就包含了前后双向的内容。3. 核心公式前向htLSTMxtht−1后向htLSTMxtht1最终输出hththt4. 优缺点优点能利用双向上下文做文本分类、命名实体识别这些任务时效果比单向LSTM好太多。缺点参数量多了一倍训练慢而且不能实时预测因为要等后面的信息算完才能输出当前结果。学习心得这次学这三个模型一开始真的绕晕了尤其是LSTM的三个门看着公式觉得复杂后来对着结构图慢慢理才明白每个门其实就是控制信息的进出。对比下来RNN是基础但太拉胯LSTM解决了核心问题BiLSTM又进一步补全了上下文的信息。其实它们的核心就是怎么更好地处理序列数据从RNN的简单循环到LSTM的门控再到BiLSTM的双向都是一步步为了解决实际问题优化的。不过BiLSTM参数量大训练的时候得注意资源这也是实际用的时候要考虑的点。

更多文章