[分享] 【年终回炉 - 大规模语言模型,从理论到实践】读书分享 (三)LSTM

御坂10032号   2026-3-20 03:33 楼主

简介

 

Hello,大家好,这次我们来聊一个在深度学习里非常经典的模型——LSTM,以及它的升级版——双向LSTM(Bi-LSTM)。如果你之前了解过RNN,那这篇文章会更容易看懂。如果没有,也没关系,我会尽量讲得通俗一点。

 

 

为什么会有 LSTM?

 

首先我们要明白一点即,为什么会又LSTM的出现。普通的 RNN 在处理序列数据(比如一句话)时,会遇到一个很经典的问题——梯度消失,也就是所谓的长期依赖问题。简单理解就是:前面的信息(比如一句话开头的内容),随着时间一步步往后传,到最后基本就“衰减没了”,模型很难再记住。举个例子:“我昨天买了一只猫……它今天很活泼”,人一看就知道“它”指的是“猫”,但普通 RNN 在处理到后半句时,很可能已经把前面的关键信息忘掉了,这就是它的局限所在。

 

 

image.png 对于LSTM 的核心思路则是 它通过使用记忆单元和门控机制,让模型不再像普通 RNN 那样要么全记、要么全忘,而是学会了“选择性记忆”。LSTM 内部一共有三个关键的门:遗忘门负责决定哪些旧信息需要被丢掉(无关的就清理掉,重要的就留下来);输入门负责控制当前新的信息哪些可以写入到记忆中;输出门则决定当前时刻要对外输出哪些信息。

 

下面这个图片更加直观点直接包含了如何将记忆更新到上下文记忆中

image.png

 

首先 三个门分别计算状态,然后更新遗忘门的数据到上下文记忆中、 并且使用当前的隐藏状态输入到输入门中,然后和同时对输入的状态做tanh然后获取到候选的记忆,并且输出到上下文记忆中和遗忘门的数据进行运算决定现在的保留记忆,然后i继续使用tanh 和输出门的数据做运算来更新下一层的隐层层。 

 

那么LSTM真的够用吗? 其实也不完全够。LSTM 虽然已经能很好地“记住”长期信息了,但它有个天然限制:只能从前往后看。也就是说,在某个时间点做判断的时候,它只能利用前面已经出现的内容,看不到后面的信息。比如这句话:“我今天吃了一顿西红柿炒土豆,它不是很好吃”,如果只从左往右处理,当模型读到“我今天吃了”时,其实是不知道具体吃了什么的,真正关键的信息在后面才出现。更不用说:它指的是西红柿炒土豆

 

image.png 那能不能让模型两边都看一遍?于是就有了双向LSTM(Bi-LSTM)。它的做法其实很直观:同时用两个 LSTM,一个按正常顺序从左往右读,另一个反过来从右往左读,最后把两个方向的结果拼在一起。这样一来,每一个位置上的信息,既包含前面的内容,也包含后面的内容。 还拿上文举例子 :我今天吃了一顿西红柿炒土豆,它不是很好吃, 当读到 “我今天吃了一顿” 的时候,就可以知道后文的关进信息 ,它不是很好吃。 也可以直接从后文的它不是很好吃推到出今天吃的是西红柿炒土豆

回复评论 (1)

昨天买了一只猫……它今天很活泼,人一看就知道“它”指的是“猫”,但普通 RNN 在处理到后半句时,很可能已经把前面的关键信息忘掉了,这就是它的局限所在。

太让人容易理解了,不愧是大佬,,,

点赞  2026-3-21 10:23
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复