前面的博文中,我们了解和学习了长短期记忆网络,本文我们来学习LSTM 网络的各种变体。
目前主流的 LSTM 网络用三个门来动态地控制内部状态应该遗忘多少历史信息,输入多少新信息,以及输出多少信息.我们可以对门控机制进行改进并获 得 LSTM 网络的不同变体。
一、无遗忘门的 LSTM 网络
"无遗忘门的 LSTM"指的是一种 LSTM 网络的变体,其中省略了常规 LSTM 中负责过滤和遗忘前一时刻记忆信息的遗忘门(Forget Gate)。为了更具体地解释其原理,我们先回顾标准 LSTM 的内部计算,然后说明如果没有遗忘门网络如何运作,并通过例子说明其影响。
(一)标准 LSTM 的门控机制回顾
在标准 LSTM 中,每个时间步的内部状态由下面几个部分构成:
-
遗忘门 f_t :
控制前一时刻记忆 c_{t-1} 中哪些信息应被"遗忘"。其计算为:
-
输入门 i_t 与候选记忆
:
输入门决定哪些新信息将写入记忆单元,候选记忆则是当前输入和前一时刻隐藏状态生成的新信息表达:
-
记忆单元更新 c_t :
综合使用遗忘门和输入门,记忆单元更新公式为:
-
输出门 oto_tot 与隐藏状态 hth_tht :
最后,通过输出门调制记忆单元的(经tanh 激活处理的)输出得到当前时间步的隐藏状态:
遗忘门起到了控制长程信息更新的关键作用,即允许网络根据当前上下文动态"忘记"一部分旧记忆,从而避免长期信息累积引起的干扰。
(二)无遗忘门的 LSTM
在"无遗忘门的 LSTM"中,遗忘门的计算和操作被省略或用固定值来代替。常见的处理方式有以下两种:
-
固定遗忘比例为 1:即不对上一时刻的记忆进行过滤,更新公式变为:
这意味着所有之前的记忆信息都被完整保留,只有通过输入门加入的候选记忆作为"增量"叠加到现有记忆上。
-
或者直接省略掉遗忘门的相应参数和计算,使得模型结构更简单,但缺少对历史信息筛选的能力。
影响 :
没有遗忘门的 LSTM 就无法选择性地丢弃那些不再相关的信息,这可能导致模型在面对长序列或者信息不断变化的任务时,容易"记住太多"过时或噪声信息,从而影响学习效果和泛化能力。
(三)例子:文本生成任务
假设我们训练一个 LSTM 来生成连续的文本句子。例如,从句子 "我爱阅读经典小说",要求模型学习如何根据前面的内容生成下一个词语。
-
标准 LSTM 的情况 :
当模型处理句子开始部分(如"我爱")时,遗忘门会根据当前上下文决定,保留哪些信息供后续使用,同时"遗忘"一些无关信息。当句子进入后半部分(比如"阅读经典小说")时,前面关键信息("我爱")仍然能被选定性地保留,而不相关或噪声信息则被滤除。这帮助模型在生成下一词时能根据句子整体语义做出较为准确的预测。
-
无遗忘门的情况 :
如果使用无遗忘门的 LSTM,假设更新公式为
那么在处理同样的句子时,整个句子中所有的信息(无论是否相关)都会累积到记忆单元中。比如,开始"我爱"的信息被直接保留,不会有门控机制来过滤掉后续可能干扰的信息。随着句子的扩展,记忆单元会不断累加新信息,可能导致后续在生成时,模型难以区分哪些信息是真正重要的,哪些只是噪声或冗余。这可能会造成生成的文本缺乏连贯性或产生不相关的词语,因为模型没有机制"遗忘"不再需要的背景信息。
-
标准 LSTM 通过遗忘门动态调整记忆单元中的信息分布,使得模型能精准抓住长期关键信息,丢弃无关内容。
-
无遗忘门的 LSTM 则缺少这种动态调整机制,所有历史信息都被累积,可能导致信息过载,使模型难以形成清晰的长期依赖表示。
这一例子显示出门控机制(尤其是遗忘门)对保持良好记忆状态的重要性,也说明为什么设计标准 LSTM 时引入了这种机制,以更好地适应实际任务中信息流动的复杂需求。
(四)无遗忘门的 LSTM 网络的意义和应用场景
虽然这种设计在很多任务中不如标准 LSTM 灵活,但在某些特定场景下,这种结构也有其意义和应用价值。具体可以从以下几个方面理解:
1. 意义
-
完全保留历史信息
在无遗忘门的 LSTM 中,记忆单元的更新公式通常简化为
这里模型不会主动丢弃任何历史信息,而是总是将所有信息累积起来。这种设计在理论上能够保留所有过往输入,避免遗漏任何细节。
-
简化模型结构
去掉遗忘门会减少模型参数和计算步骤,结构上也更简单。这在某些资源受限或对实时性要求极高的应用场景下可能带来一定的优势,虽然这也会牺牲一部分选择性和灵活性。
-
适应特定数据特性
在某些任务中,输入序列的长度较短或者输入数据本身噪声较少、信息密度较高时,保留所有历史信息未必会引入太多无用信息。这时,去掉遗忘门可以简化训练过程,使模型专注于累积和传递所有输入的信号。
2. 应用场景举例
-
短序列任务
如果输入序列非常短(例如只有几个时间步),历史信息量不会很大,此时强制保留所有输入(无遗忘门)可能不会引发记忆"过载"。例如,在简单的累加运算或短句子生成中,所有输入的信息都对最终输出有贡献,完全保留可能有助于模型更直接地学习输入与输出之间的映射。
-
信息累积型任务
一些任务需要将所有前面输入的信息累积,如简单的计数、累计和等问题。例如,若任务要求输出输入数值的累计和,那么每一个输入都应该被完整"记住"下来,无需遗忘。无遗忘门的结构可以有效保证前面所有数字都被记录。
-
噪声较低的环境
如果输入序列本身噪声很少,每个输入信号都极具价值,那么遗忘门可能不那么必要。去掉遗忘门可以使模型简单直接地将所有信息累加,从而避免因遗忘门参数调控不当而导致信息丢失。
3. 局限与权衡
-
信息冗余问题
无遗忘门的 LSTM 在长序列上容易出现信息"累积过多"的问题,即不相关或过时的信息也被保留下来,可能会干扰模型的预测。这在较长、噪声较多或信息相关性不强的任务中会显得不利。
-
训练稳定性与灵活性
遗忘门在标准 LSTM 中起着关键作用,它允许模型在时间上动态调整保留和遗忘的平衡。无遗忘门的结构则失去了这种灵活性,可能在捕捉长程依赖时效果较差,尤其当序列长度增加时容易出现性能下降。
4.无遗忘门的 LSTM 网络的意义在于:
-
简化结构与计算:减少参数和门控步骤,使模型设计更简单。
-
适用于短序列或信息累积明确的任务:当序列较短或任务要求对所有历史输入无差别累积时,无遗忘门设计可以直接保存所有信息,不引入额外的遗忘机制。
-
降低计算成本:在资源受限或对实时性要求非常高的情况下,简化的结构可能会带来一定的效率提升。
然而,对于长序列、噪声较多或需要动态过滤历史信息的任务,遗忘门的存在往往能更好地控制信息流,改善模型性能。因此,是否使用遗忘门需要依据具体任务和数据特性做出权衡。
二、peephole 连接
Peephole 连接 是 LSTM 网络的一种变体,其核心思想是让门(例如输入门、遗忘门和输出门)在计算时不仅依据前一时刻的隐藏状态 h_{t-1} 和当前输入 x_t,还直接考虑前一时刻的记忆单元状态 c_{t-1}(以及在某些情况下当前记忆 c_t)。这种设计允许门"窥视"记忆单元,从而可以获得更多关于内部长期依赖的信息,增强了模型对细微时序变化的敏感性。
1. 标准 LSTM 与 Peephole LSTM 的区别
与上述标准 LSTM 对比,Peephole LSTM的不同点如下:
Peephole LSTM 中,门的计算会额外加入与记忆单元 c_{t-1}(或者在输出门中加入 c_t)相对应的"窥视"连接。例如,改进后的计算可能为:

通过将 c_{t-1} 或 c_t 引入这些计算中,LSTM 的门能够直接依据记忆单元的状态做出更精确的决策。
2. 为什么引入 Peephole 连接?
引入 Peephole 连接的主要动机在于提高模型对时间依赖信息的捕捉能力。传统的 LSTM 仅依赖 h_{t-1} 来为门提供信息,而隐藏状态 h_{t-1} 是经过非线性激活处理后的输出,其信息已经被压缩或者变形。相比之下,原始记忆单元 c_{t-1} 的信息可能更丰富,直接"窥视" c_{t-1} 能够为门控提供额外的细粒度信息,帮助模型更精确地决定:
-
何时遗忘旧信息(遗忘门)。
-
何时将新的信息写入记忆单元(输入门)。
-
何时输出记忆单元中的信息(输出门)。
这种机制尤其适用于长序列或存在复杂时序关系的任务,帮助捕获长程依赖和细微变化。
3. 例子说明
任务情境:文本生成中的语义记忆
假设我们训练一个 LSTM 模型生成文本,例如预测下一个单词。考虑一个句子:"在美丽的阳光下,..."
-
在标准 LSTM 中,上一时刻隐藏状态 h_{t-1} 从前面的词汇"美丽的"中获得信息,然后与当前输入"阳光"组合生成候选记忆、输入门等。然而,隐藏状态中经过激活函数处理后的信息可能会丢失一些细节。
-
使用 Peephole 连接 后,遗忘门和输入门在判断如何更新记忆时,不仅使用 h_{t-1} 和当前输入 x_t,还直接查看了上一时刻的记忆单元 c_{t-1}。假设 c_{t-1} 中存储了关于"美丽的"这一概念的较完整信息,那么遗忘门可以据此决定是否保留这一描述信息,以便在生成后续语句时保留"美丽"的语义;输入门则能准确将"阳光"这一新信息按合适比例加入记忆中。最终,输出门结合新的记忆 c_t 再次输出隐藏状态 h_t ,使得生成的文本既能反映之前的"美丽的"情感,也能响应新输入"阳光"的信息,从而生成连贯而富有语义的下一个词,例如"温暖"或者"灿烂"等。
这种例子说明:
- 候选记忆与输入门 :
Peephole 连接让 LSTM 的门(遗忘门、输入门、输出门)能直接"偷窥"记忆单元的状态(如 c_{t-1} 或 c_t),为更新和输出决策提供更多原始的、未经过激活压缩的信息。这在处理复杂时序数据,尤其需要捕捉长程依赖和细微动态变化的任务中,能有效提升模型表现。通过具体的文本生成例子,我们可以看到这种机制如何帮助模型更精确地管理信息流,实现更连贯、更有语义深度的输出。
三、耦合输入门和遗忘门
耦合输入门和遗忘门的 LSTM 是一种变体,其核心思想在于简化标准 LSTM 中门控机制的设计,将原本分开的输入门和遗忘门合并成一个门,从而减少参数数量和计算复杂性,同时使得模型在更新记忆时能通过一个"统一"的机制来决定同时保留旧信息和引入新信息的比例。
1. 理解耦合门的机制
在标准 LSTM 中,记忆单元更新公式为:

其中:
-
f_t(遗忘门)控制保留前一时刻记忆 c_{t-1} 的比例,
-
i_t(输入门)控制将候选记忆
更新到当前状态的程度。
在耦合输入门和遗忘门的变体中,这两个门被合并为一组互补的机制,即让:

此时,记忆单元更新就变成:

这种设计意味着一个统一的门(通常仍用 i_t 表示)控制着同时写入新信息和遗忘旧信息的比例。当 i_t 的值较大时,新信息占比更多,前一时刻的信息被淡化;而当 i_t 的值较小时,旧记忆会被更多地保留。
2. 举例说明
假设我们有一个文本生成任务,要根据前面的上下文预测下一个词。比如,输入部分为"天气非常",目标是生成一个描述天气的词。
-
在处理"天气非常"时,模型的记忆单元已经包含了前面两词的信息;
-
当新输入(例如一个描述天气变化的词语)到来时,耦合门 iti_tit 会通过与当前输入和先前隐藏状态共同计算,得到一个数值,比如:
表示在不同维度上,模型认为当前输入的影响程度;
-
由于采用耦合机制,遗忘门自动变成 f_t = 1 - i_t,例如对应维度上可能为:
-
随后记忆单元更新为:
这意味着,对于记忆单元的每个维度,如果 i_t 值高,则新输入(候选记忆
)将较多地写入;如果 i_t 值低,则旧记忆 c_{t-1} 保留较多。
例如,假设在某个维度上:

在这种情况下,模型决定主要采用新输入的信息,同时舍弃大部分之前的记忆。这种门控方式在生成任务中可以使得模型在面对当前变化较大的上下文时,灵活调整记忆,更新更有效的信息,从而生成更加符合上下文的新内容。
3. 具体应用场景
耦合输入门和遗忘门的变体主要适用于以下场景:
-
资源受限环境
由于该变体减少了参数和计算步骤,适合在移动设备或嵌入式系统等资源有限的场景中使用,同时还能保持较好的性能。
-
简单或短序列任务
当序列较短或信息变化不是非常剧烈时,采用耦合门可以简化模型设计,不需要太复杂的门控结构来过滤冗余信息。例如,在简单的语音命令识别或短文本生成任务中,耦合门可能已经足够。
-
实时处理场景
更简化的结构意味着计算开销降低,这在实时应用(如在线翻译、对话系统、实时预测)中可以提高响应速度。
-
训练数据有限的场景
较少的参数可以降低模型过拟合的风险,适合在训练数据不充足的情况下应用。
耦合输入门和遗忘门的 LSTM 通过将原本独立的两个门设计为互补关系,大大简化了网络结构。通过这种设计,模型用一个统一的门决定同时应该接纳多少新信息和遗忘多少旧信息。具体例子中展示了如何根据当前输入计算得到 i_t,并自动得到 f_t,从而控制记忆单元的更新。这种机制在实时处理、资源受限、短序列任务等场景下具有较高的实用性,既保证了模型一定的灵活性,又降低了计算和参数复杂度。