LSTM思想解析—论文精读(Long Short-Term Memery)

       最近在学习LSTM(Long Short-term Memory ),网上的文章基本上都是基于下图对LSTM进行介绍。然而,有几个问题一直困扰着我:LSTM与传统RNN算法相比,它能够有效处理长依赖问题(long time lags),原因是什么呢?LSTM的网络架构为什么要设计成这样呢?引入门控机制的原因是啥呢?

       为了解答上述疑惑,我翻阅网上的文章、咨询DeepSeek和豆包,均没有找到我想要的答案。因此,我决定阅读原论文,通过论文去了解作者的思想。为了深度解读LSTM的思想,我将分两篇论文进行解析:一篇是Long Short-term Memory (Sepp Hochreiter,199),另一篇是Learning to Forget:Continual Prediction with LSTM(Felix A.Gers,1999)。本文先对Long Short-term Memory (Sepp Hochreiter,1997)进行精读。   Learning to Forget:Continual Prediction with LSTM(Felix A.Gers,1999)精读详见LSTM思想解析—论文精读(Learning to Forget: Continual Prediction with LSTM)

一、传统RNN网络存在的问题

       传统的RNN算法由于误差在反向传播时,存在梯度爆炸或梯度消失的问题,造成RNN无法处理长依赖问题。RNN为什么会出现梯度爆炸或梯度消失的问题呢?是由于RNN在反向传播计算偏导时有个连乘,具体公式推导可参考RNN循环神经网络之原理详解
的2.4节。

       为此,作者就提出了一个大胆的想法:既然是因为梯度爆炸或梯度消失导致RNN不能处理长依赖问题。那么,如果误差在反向传播时在某个网络结构中保持不变,那么就可避免梯度消失或爆炸,不能处理长依赖的问题也就得到了解决。

二、CEC的提出(constant error carrousel)

       既然误差在反向传播时保持不变(论文中叫恒定误差流,constant error flow)可以解决RNN存在的问题,那么满足什么条件可以达到误差流恒定呢?下面做公式推导。

       对于传统的BPTT(BPTT是RNN做反向传播时所用到的一种算法,具体过程详见RNN循环神经网络之原理详解中2.3节反向传播推导),在时刻t计算各类神经元的误差:

1、对于RNN的某个输出层神经元K

       设其输出值用表示,真实值用表示,损失函数使用均方误差,那么k的误差信息可以表示为:  其中,

2、对于非输入层神经元i

       假设其激活函数为,其输入为

表示从神经元j到神经元i的连接权重。那么,在t时刻神经元i的反向传播误差可表示为

     也就是神经元i的误差是由各个与它相联的神经元的误差在t+1时刻的误差传过来的。(可借助BP神经网络的反向传播来理解这句话)

      简单起见,作者首先假设非输入层神经元j它只有自连接(与其他神经元没有连接,只有自己和自己相连),那么根据上文公式,该神经元j在t时刻的误差为(换了个下标):

为了确保经过神经元j的误差不衰减(恒定误差流),即,根据上述公式需要满足:

可得        

根据定义:    又因为   且神经元j只有自连接,因此

所以:

根据      所以

由于   可设定  并且   这就是所谓的CEC(constant error carrousel)

三、输入门及输出门的提出原因

       由于上述公式推导的假设前提是:非输入层的神经元j只有自连接,与其他神经元没有关系。当然,这是不可能的,神经元j必然会与其他神经元有关联。因此,就会引发两个问题:

  • 问题一、输入权重冲突:为了简单起见,我们假设神经元j除了自连接外,还有个神经元i与它连接,连接权重为(从i到j)。假设,对于来自于神经元i的某一输入激活了神经元j(该神经元j对这个输入产生的输出是否正确有较大影响),假设神经元i是非零。那么权重既要存储某一输入又要忽视其他的输入(防止不相关的输入把神经元j激活了)。那么在更新时就会面临着冲突:既要照顾“存储某一特定输入(这个输入激活了神经元j)”,又要防止不相关的输入把神经元j激活了。这种冲突使得学习很难,需一个更为上下文敏感的机制来控制“写操作”。

  • 问题二、输出权重冲突:假定神经元j被激活了,它目前存储着之前的某一输入。为了简单起见,神经元只与一个其他神经元k相连,权重(从j到k)在某一时刻既要提取j的内容(此时j的内容可激活k),又要防止在其他时刻j去干扰k(防止j输出不相干的内容激活k)。例如,在许多任务中,在早期的训练阶段,要减少短时滞后误差;但在后期阶段,模型可能因为试图处理更复杂的长时滞误差而导致原本已控制的短时错误再次出现。也就是说权重要兼顾“短时滞后误差”和“长时滞后误差”。

“短时滞后误差”:在训练初期,网络可能会关注那些与当前输入紧密相关的误差,即“短时间滞后误差”。这些误差通常是由于网络对最近输入的响应不够准确或及时造成的。例如,在语言模型中,如果网络在预测下一个词时只考虑了前一个词或很短的上下文,那么它可能会犯一些简单的语法或词汇错误。

“长时滞后误差”:随着训练的深入,网络开始尝试减少更复杂的“长时间滞后误差”。这些误差涉及更长的输入序列和更复杂的依赖关系。例如,在语言模型中,长时间滞后误差可能涉及对句子或段落整体结构的理解,以及对远距离词汇依赖的捕捉。

输入和输出权重冲突既可以出现在短时滞后中,也可以出现在长时滞后中。然而,在长时滞后情景中影响更为明显:随着时间滞后的增加(1)需要防止更多的输入信息的干扰,尤其在后期学习阶段;(2)越来越多的已经正确的输出也需要防止被干扰了。

四、LSTM网络架构

4.1 记忆细胞       

       为了解决输入和输出权重冲突,作者采用了CEC,并引入输入门和输出门去解决输入权重冲突和输出权重冲突问题。输入门单元的作用是保护存储在神经元j中的内容不受不相关输入的干扰(解决输入权重冲突)。同样的,输出门单元的作用是保护其他的神经元不受当前存储在神经元j中不相关的内容的干扰(解决输出权重冲突)。 于是就形成了一个比传统RNN更为复杂的单元:记忆细胞。

        上图中,黑框中的便是记忆细胞。为输入门,为输出门。自连接(权重为1)便是CEC。

表示第j个记忆细胞。每个记忆细胞都由中心线性单元+CEC构成。记忆细胞除了接收的输入之外(该记忆细胞在上一时刻的输出),还接收来自输入门和输出门的输入。

       

其中:

      上面的求和下标u可能代表输入单元、门单元、记忆细胞、甚至可以代表传统的隐藏单元。所有的这些不同类型的单元可能传递着关于网络当前状态有用的信息。例如,输入门可以使用来自于其他记忆单元的输入去决定是否存储某一信息在它自己的记忆单元;输出门可以使用来自于其他记忆单元的输入去决定是否访问存储在它自己的记忆单元。甚至还可以有自连接,如。用户可以自定义网络拓扑。

       在时刻t,的输出的计算公式为:,其中内部状态的计算公式为:当t=0时,;当t>0时, 。

4.2 输入门和输出门的作用

       为了避免输入权重冲突,输入门控制着误差流向记忆单元。为了避免的输出权重冲突,输出门控制着来自于神经元j的输出误差流。换句话说,网络可以使用输入门来决定什么时候保持或重写信息到记忆单元,输出门决定什么时候访问记忆单元,什么时候阻止其他神经元免受于的干扰。

4.3 LSTM网络结构

      作者使用的网络架构为:一层输入层、一层隐藏层、一层输出层。隐藏层包含记忆单元和相应的门结构。隐藏层也可以包含传统的神经元,给输入门、输出门以及记忆单元提供输入(但作者并没有用传统的神经元)。除了门单元外,所有的神经元都是和上一层直接连接。作者也引入了记忆单元块的概念。记忆单元块是由多个记忆单元组成的,这些记忆单元共享相同的输入门和相同的输出门。记忆单元块有助于信息的存储。由于每个记忆单元块所需的门控单元数量与单个记忆单元相同(仅需输入门和输出门两个),这种块架构在计算复杂度方面甚至展现出轻微优势。

      我们绘制一个时间序列的LSTM网络拓扑结构(其中,):

误差反向传播:作者使用了一种改进版的RTRL(Robinson和Fallside于1987年提出的方法),该方法充分考虑到了输入门和输出门所引起的乘法动态变化。然而,为了确保通过记忆单元内部状态的误差反向传播不会衰减(类似于截断的BPTT,Williams和Peng于1990年提出的方法),到达“记忆单元网络输入”(对于单元,这包括)的误差不会在时间上进一步传播(尽管它们确实会用于改变输入权重)。只有在记忆单元内部,误差才会通过先前的内部状态进行反向传播。为了形象化理解这一点:一旦误差信号到达记忆单元的输出,它会被输出门激活函数和进行缩放。然后,它进入记忆单元的CEC(恒定误差轮换),在那里它可以无限期地反向流动而不会被缩放。只有当它通过输入门和g离开记忆单元时,它才会再次被输入门激活和进行缩放。

LSTM的计算复杂度:与Mozer的聚焦循环反向传播算法(Focused Recurrent Backprop Algorithm, Mozer 1989)类似,LSTM算法仅需要存储和更新导数。因此,LSTM算法非常高效,其更新复杂度为O(W),其中W是权重的数量。这使得LSTM与完全循环网络的BPTT在每时间步的更新复杂度上相同(而RTRL的复杂度则差得多)。然而,与完整的BPTT不同,LSTM在空间和时间上都是局部的。(空间局部性:如果一个算法在每个时间步和每个权重上的更新复杂度与网络规模无关,则称该算法在空间上是局部的。例如BPTT在空间上是局部的,因为其更新复杂度不依赖于网络大小。时间局部性:如果一个算法的存储需求与输入序列的长度无关,则称该算法在时间上是局部的。例如,RTRL在时间上是局部的,因为其存储需求不依赖于输入序列长度。)

滥用问题和解决方案:在学习的初始阶段,网络可能无需长时间存储信息就能减少误差。因此,网络可能会滥用记忆单元,例如将其用作偏置单元(即,使它们的激活值恒定,并将输出连接用作其他单元的自适应阈值)。这种滥用可能导致的问题是:释放被滥用的记忆单元并使其可用于进一步学习可能需要很长时间。当两个记忆单元存储相同(冗余)信息的情况时,也会出现类似的问题。针对这种“滥用问题”,至少有两种解决方案:

1. 顺序网络构建(Sequential Network Construction)

  • 方法:当误差停止下降时,向网络中添加一个记忆单元及其对应的门控单元(如Fahlman 1991年的方法)。
  • 优点:动态调整网络结构,避免在初始阶段滥用记忆单元。
  • 应用:在实验2中,这种方法被证明能有效减少记忆单元的滥用。

2. 输出门偏置(Output Gate Bias)

  • 方法:为每个输出门设置一个负的初始偏置,将记忆单元的初始激活值推向零。具有更负偏置的记忆单元会自动在稍后阶段被“分配”。
  • 优点:通过控制初始激活值,防止记忆单元在早期被滥用。
  • 机制:负偏置使得记忆单元在初始阶段保持不活跃,直到网络需要时才被激活。

内部状态漂移和解决方案:如果记忆单元的输入大多为正或大多为负,其内部状态会随着时间的推移逐渐漂移。这种现象可能带来危险,因为会变得非常小,导致梯度消失。解决这一问题的一种方法是选择合适的函数 h。例如,使用 h(x)=x 的缺点是记忆单元的输出范围不受限制。我们在学习初期解决漂移问题的简单而有效的方法是:将输入门 初始偏置趋向零。

漂移问题的根源:

  • 当记忆单元的输入大多为正或负时,内部状态会逐渐漂移,导致变得极小,从而引发梯度消失问题。

解决方法:

  • 选择合适的函数 h:例如,使用线性函数 h(x)=x 会导致输出范围不受限制,可能引发其他问题。
  • 输入门初始偏置:将输入门初始偏置趋向零,可以有效抑制漂移现象。

权衡与效果:

  • 输入门偏置会在一定程度上影响的幅度以及的值,但与漂移效应的负面影响相比,这种权衡可以忽略。
  • 使用逻辑Sigmoid激活函数时,初始偏置无需精细调整,实验4和5已证实这一点。

五、论文实验

5.1 实验1:嵌入式Reber语法测试

         实验1聚焦于循环网络的标准基准测试:嵌入式Reber语法。尽管它允许训练序列中存在短时滞,因此并不属于长时滞问题,但作者仍将其纳入实验,原因如下:

  • 展示LSTM输出门的优势:该实验提供了一个典型案例,证明LSTM的输出门确实能带来显著效果。

  • 作为流行的基准测试:嵌入式Reber语法已被许多研究者广泛使用,我们希望至少包含一个实验,使传统的BPTT和RTRL不会完全失败(尽管LSTM明显优于它们)。

嵌入式Reber语法的特点:嵌入式Reber语法的最小时间滞代表了一种边界情况:传统算法仍有可能学会跨越这些时滞,但如果时间滞稍微延长,传统算法几乎无法解决。这使其成为验证算法能力的理想测试案例。原始Reber语法通过有限状态机生成符号序列(如字母组合),要求模型识别合法的序列模式(如 BTSSXXTVVE)。其状态转移路径包含分支选择(概率为0.5)。测试模型对上下文的敏感规则的理解。在基础序列中插入嵌套子序列,形成多层级结构。例如,合法序列可能形如“B[T(SSX)X]TVVE”。其中方括号和圆括号表示嵌套层级。嵌套结构要求模型在长序列中记住起始符号的位置(如“B”),并在数百步之后正确处理对应的终止符(如“E”)。这类任务直接考验LSTM等算法对长信息的存储。

5.1.1 实验设计

1、输入/输出表示:使用7个输入单元和7个输出单元。

2、数据集生成:

  • 训练集:随机生成256个训练字符串,训练样本从训练集中随机选取。
  • 测试集:随机生成256个测试字符串,确保测试集中的序列不包含训练集中的序列。

3、激活值初始化:在每个字符串呈现后,所有激活值重新初始化为零,以确保每个字符串的处理独立进行。

4、成功标准:一个试验被认为是成功的,当且仅当:

  • 训练集和测试集中的所有序列符号都被正确预测。
  • 输出单元中对应可能的下一个符号的单元始终是最活跃的。

5.1.2 LSTM架构设计

  • 记忆单元块:使用3个或4个记忆单元块,每个块包含2个或1个记忆单元。
  • 输出层连接:输出层的唯一输入连接来自记忆单元。
  • 隐藏层连接:每个记忆单元和门控单元接收来自所有记忆单元和门控单元的输入连接(隐藏层完全连接,但较少的连接性也可能有效)。
  • 输入层连接:输入层向前连接到隐藏层中的所有单元。
  • 门控单元偏置:门控单元被赋予偏置。
  • 该设计能够轻松存储至少3个输入信号。
  • 4-1架构为264个权重,3-2架构为276个权重

5.1.3 激活函数与权重初始化

1、激活函数:

  • 所有Sigmoid函数为逻辑函数,输出范围为[0, 1]。
  • 函数h的输出范围为[-1, 1]。
  • 函数g的输出范围为[-2, 2]。

2、权重初始化:

  • 所有权重初始化为[-0.2, 0.2]。
  • 输出门偏置分别初始化为-1、-2和-3(参见第4节中的“滥用问题”解决方案(2))。

5.1.4 学习率设置

     作者尝试了0.1、0.2和0.5三种学习率,以优化模型训练效果。

5.1.5 实验结果

        作者使用3组随机生成的训练集和测试集对LSTM与其他方法进行对比实验。每组实验运行10次,每次使用不同的初始权重。实验结果表明,LSTM在所有情况下都能成功完成任务,且学习速度显著快于其他方法,即使忽略其他方法中失败的试验也是如此。

5.1.6 实验意义

       尽管嵌入式Reber语法并非长时滞问题,但它为LSTM与传统算法的比较提供了重要参考。实验结果表明,LSTM在性能上明显优于BPTT和RTRL。然而,本文中更有趣的任务是那些RTRL、BPTT等完全无法解决的问题,这些任务更能体现LSTM在处理长时滞问题上的独特优势。

5.1.7 实验中输出门的作用

1、选择性输出控制:

  • 输出门通过控制记忆单元的输出,确保只有相关信息被传递到下一层。
  • 这使得模型能够在不干扰其他部分的情况下,专注于存储和处理关键信息(如第一个“T”或“P”)。

2、保护已有激活值

  • 在存储新信息时,输出门防止了已有激活值的扰动,从而保持了原始Reber语法中更易学习的转换的稳定性。
  • 这种保护机制使得模型能够同时处理多个任务,而不会相互干扰。

3、加速学习过程

  • 实验结果表明,没有输出门时,模型无法实现快速学习。
  • 输出门的存在显著提高了学习效率,使模型能够更快地完成任务。

5.2 实验2:噪声与无噪声序列任务

         实验2聚焦于包含大量输入符号的噪声与无噪声序列任务,其中少数重要符号被众多干扰符号掩盖。实验的核心目标是验证LSTM在处理此类复杂任务时的表现,尤其是与传统算法(如BPTT和RTRL)的对比。

5.2.1 实验2a任务设计

1、输入符号表示

  • 共有 p+1个可能的输入符号,记为
  • 每个符号通过一个 p+1 维的向量进行本地表示,其中第 i个分量为 1,其余分量为 0。如[0,...1,...0]

  • 预测最后一个元素需要记住第一个元素,两个元素之间跨了p

2、网络结构

  • 网络包含 p+1个输入单元和 p+1个输出单元。
  • 网络逐个观察输入符号序列,并持续尝试预测下一个符号。

  • 每个时间步都会生成误差信号,用于指导模型学习。

3、训练集设计

  • 训练集仅包含两个非常相似的序列:序列1:;序列2:
  • 每个序列被选中的概率为 0.5。

  • 为了预测最终元素,网络需要学习存储第一个元素的表示,并在 p 个时间步后提取该信息。

本实验对比了四种方法在序列任务中的表现:

  • 实时循环学习(RTRL):用于完全循环网络。实时更新权重,适合在线学习,但计算复杂度较高。
  • 通过时间的反向传播(BPTT):适合处理长序列,但内存消耗较大。

  • 神经序列分块器(CH,Schmidhuber 1992b):采用双网络结构,将序列分块处理,在某些任务中表现优异。

  • 长短期记忆网络(LSTM,本文提出的新方法):引入记忆单元和门控机制,擅长处理长时滞和复杂依赖关系。

4、实验设置

  • 权重初始化:所有权重初始化为 [−0.2,0.2]。
  • 训练终止条件:由于计算时间有限,训练在500万次序列呈现后停止。

  • 成功标准:训练完成后,在10,000个连续随机选择的输入序列中,所有输出单元的最大绝对误差始终低于0.25。

5、架构对比

      RTRL(实时循环学习)

  • 隐藏层:1个自循环隐藏单元。
  • 输出层:p+1 个非循环输出单元。
  • 连接方式:每一层与所有下层相连。
  • 激活函数:所有单元使用逻辑Sigmoid函数,输出范围为 [0,1]。

     BPTT(通过时间的反向传播)

  • 架构:与RTRL相同。
  • 特点:通过展开时间步进行反向传播,适合处理长序列,但内存消耗较大。

    CH(神经序列分块器)

  • 架构:两个网络,均与RTRL架构相同。
  • 额外设计:其中一个网络增加了一个输出单元,用于预测另一个网络的隐藏单元(详见Schmidhuber 1992b)。
  • 特点:通过双网络结构将序列分块处理,在某些任务中表现优异。

    LSTM(长短期记忆网络)

  • 架构:与RTRL类似,但隐藏单元被替换为记忆单元和输入门(无需输出门)。

  • 激活函数:

    • g为逻辑Sigmoid函数。
    • h 为恒等函数,即 h(x)=x。
  • 动态调整:在误差停止下降时,添加记忆单元和输入门(参见第4节中的“滥用问题”解决方案(1))。

  • 特点:通过记忆单元和门控机制,LSTM擅长处理长时滞和复杂依赖关系。

6、实验结果

    RTRL的表现

  • 在短时滞(p=4)条件下,RTRL的成功率为7/9。
  • 在长时滞(p=10)条件下,RTRL未能成功完成任何试验。

    BPTT的表现

  • 在长时滞任务中,BPTT未能成功完成任何试验。

    神经序列分块器(CH)的表现

  • 在长时滞(p=100p=100)条件下,CH的成功率为1/3。
  • 尽管CH在部分试验中成功,但其成功率较低,且学习效率不及LSTM。

    LSTM的表现

  • 在长时滞任务中,LSTM在所有试验中均成功完成任务。
  • 即使仅对比成功的试验,LSTM的学习速度也显著快于其他方法。

   分层分块器的表现

  • 值得注意的是,分层分块器(Schmidhuber 1992c, 1993)也能够快速解决此类任务,但其设计与LSTM不同。

5.2.2 实验2b任务设计

       任务2b在任务2a的基础上进一步增加了难度,通过移除输入序列中的局部规律性,要求模型在更复杂、更不可压缩的序列中预测下一个符号。具体来说,任务2b将任务2a中的确定性子序列替换为随机子序列,从而消除可压缩性,增加了任务的挑战性。

1、序列生成

  • 使用字母表生成长度为 p−1的随机子序列。

  • 生成两类序列:

    • 第一类:
    • 第二类:
  • 每个子序列的索引 在 1 到 p−1 之间随机选择。

2、预测目标

  • 模型需要逐个预测序列中的下一个符号。
  • 唯一完全可预测的目标是序列末尾的 x 和 y。

3、训练样本的选择

    训练样本从上述两类序列中随机选择。

4、成功的标准

    训练完成后,在10,000个连续随机选择的输入序列中,所有输出单元在序列末尾的最大绝对误差低于0.25。

5、实验结果

     本实验验证了LSTM在无局部规律性序列任务中的表现,并与其他方法(神经序列分块器CH、BPTT和RTRL)进行了对比。实验结果表明,LSTM在缺乏序列规律性的情况下仍能高效完成任务,展示了其独特的性能优势。

5.2.3 实验2c任务设计

     本任务是本小节中最具挑战性的任务,旨在验证模型在超长时滞和无局部规律性条件下的表现。任务要求模型在观察到一系列输入符号后,预测序列的最后一个符号,同时需要在超长时滞条件下存储并提取关键信息。

1、输入符号表示

  • 共有 p+4个可能的输入符号,记为
  • 符号通过一个 p+4维的向量进行本地表示,其中第 i 个分量为 1,其余分量为 0。

2、网络结构

  • 网络包含 p+4个输入单元和 2 个输出单元。

  • 网络逐个观察输入符号序列,并持续尝试预测下一个符号。

3、训练序列生成

  • 训练序列从两个非常相似的子集中随机选择:

    • 子集1:
    • 子集2:
  • 生成训练序列的步骤:

    • 随机生成长度为 q+2 的序列前缀。
    • 以概率 随机生成附加元素(≠b,e,x,y=b,e,x,y),或以概率 生成 e。
    • 如果生成 e,则根据第二个元素以 x 或 y 结束序列。
  • 对于给定的 k,这导致长度为 q+k+4 的序列的均匀分布。

4、任务目标

  • 预测序列的最后一个符号,该符号始终出现在“触发符号” e 之后。
  • 误差信号仅在序列末尾生成。
  • 为了预测最终元素,网络需要学习存储第二个元素的表示,并在至少q+1 个时间步后提取该信息(直到看到触发符号 e)。

5、成功标准

    在10,000个连续随机选择的输入序列中,两个输出单元对最终序列元素的预测误差始终低于0.2。

6、任务挑战

超长时滞问题

  • 网络需要在至少q+1 个时间步后提取存储的信息,这对长时记忆能力提出了极高要求。

无局部规律性

  • 训练序列的随机性和复杂性增加了任务的难度,要求模型具备更强的泛化能力和记忆能力。

高复杂性

  • 序列长度和符号多样性进一步增加了任务的复杂性,要求模型能够处理高维输入和复杂依赖关系。

7、网络架构

  • 输入层:p+4个输入单元,用于接收输入符号的本地表示。

  • 隐藏层:包含两个记忆单元(记忆块大小为1),用于存储和提取关键信息。尽管一个记忆单元即可完成任务,但使用两个记忆单元可以减少因权重初始化不同导致的学习时间差异。

  • 输出层:2个输出单元,用于预测序列的最后一个符号。输出层仅接收来自记忆单元的连接。

  • 连接方式:记忆单元和门控单元接收来自输入单元、记忆单元和门控单元的连接(即隐藏层为全连接)。未使用偏置权重。

8、激活函数

  • 记忆单元:使用逻辑Sigmoid函数 h,输出范围为 [−1,1]。
  • 门控单元:使用逻辑Sigmoid函数 g,输出范围为 [−2,2]。

9、学习机制

  • 权重初始化:所有权重初始化为 [−0.2,0.2]。

  • 学习率:固定为0.01,确保学习过程的稳定性。

  • 训练序列长度:最小时间滞为 q+1,即网络在训练过程中不会看到较短的序列,从而避免对长测试序列的分类产生干扰。

10、实验结果

       本实验对比了LSTM、BPTT和RTRL在超长时滞任务中的表现,重点关注LSTM在不同参数对 (p,q) 下的学习效率。实验结果表明,LSTM在处理非平凡任务(最小时间滞为1000步)时表现卓越,而BPTT和RTRL则无法完成此类任务。

5.3 实验3:噪声与信号共存的长时滞问题

      实验3专注于解决在同一输入线上噪声与信号共存的长时滞问题。实验分为三个部分:

  • 实验3a/3b:聚焦于Bengio等人1994年提出的“2序列问题”。
  • 实验3c:设计了一个更为复杂的2序列问题,要求模型学习在给定输入条件下,噪声目标的实值条件期望。

5.3.1 实验3a任务设计

1、序列生成

  • 序列分为两类,每类出现的概率均为0.5。

  • 只有前N个序列元素携带分类信息,后续元素由均值为0、方差为0.2的高斯分布生成。

  • N = 1时:

    • 第1个元素为1.0(类别1)或-1.0(类别2)。
  • N = 3时:

    • 前3个元素均为1.0(类别1)或-1.0(类别2)。
  • 序列末尾的目标值为1.0(类别1)或0.0(类别2)。

2、序列长度

  • 给定常数T,序列长度在T到T + T/10之间随机选择。
  • 与Bengio等人的问题不同,本任务不允许短于T/2的序列。

3、分类标准

  • 正确分类定义为序列末尾的绝对输出误差低于0.2。

4、任务挑战

噪声干扰

  • 后续序列元素为高斯噪声,增加了模型提取关键信息的难度。

序列长度变化

  • 序列长度在T到T + T/10之间随机选择,要求模型具备处理可变长度序列的能力。

分类精度

  • 要求严格的分类标准(绝对误差低于0.2)对模型的预测能力提出了高要求。

       Bengio等人(1994)以及Bengio和Frasconi(1994)在2序列问题上测试了7种不同方法,但实验发现,由于该问题过于简单,随机权重猜测的表现轻松超越了所有方法。

5、网络架构

  • 层数:3层网络。
  • 输入单元:1个输入单元。
  • 输出单元:1个输出单元。
  • 记忆单元:3个记忆块(每个记忆块大小为1)。

6、连接方式

  • 输出层:仅接收来自记忆单元的连接。

  • 记忆单元与门控单元:

    • 接收来自输入单元、记忆单元和门控单元的输入。
    • 包含偏置权重。

7、激活方式

  • 门控单元与输出单元:使用逻辑Sigmoid函数,输出范围为 [0,1]。

  • 函数 h的输出范围为 [−1,1]。

  • 函数 g的输出范围为 [−2,2]。

8、权重初始化

  • 权重范围:所有权重(除门控单元的偏置权重外)在 [−0.1,0.1] 范围内随机初始化。

  • 输入门偏置权重:

    • 第一个输入门偏置初始化为-1.0。
    • 第二个输入门偏置初始化为-3.0。
    • 第三个输入门偏置初始化为-5.0。
  • 输出门偏置权重:

    • 第一个输出门偏置初始化为-2.0。
    • 第二个输出门偏置初始化为-4.0。
    • 第三个输出门偏置初始化为-6.0。
  • 初始化值的影响:

    • 额外的实验表明,精确的初始化值对模型性能影响不大。

9、训练停止标准

  • 标准ST1:

    • 从随机选择的测试集中选取256个序列,所有序列均被正确分类。
  • 标准ST2:

    • 满足ST1,且测试集的平均绝对误差低于0.01。
    • 在ST2情况下,使用包含2560个随机选择序列的额外测试集,确定错误分类序列的比例。

10、实验结果

LSTM的表现

  • LSTM能够成功解决该问题,但其学习速度远低于随机权重猜测(参见“Guessing”段落)。
  • 实验结果基于10次试验的平均值,权重初始化范围为 [−0.1,0.1][−0.1,0.1]。

随机权重猜测的表现

  • 随机权重猜测在解决该问题时表现出色,学习速度远超LSTM。

问题简单性的影响

  • 该问题的简单性使得随机权重猜测表现优异,而LSTM的优势无法得到充分体现。

5.3.2 实验3b任务设计

      任务3b在任务3a的基础上,增加了对信息传递元素(t≤N)的高斯噪声(均值为0,方差为0.2),进一步验证LSTM在噪声干扰下的表现。以下是任务的详细设计与实验结果。

1、架构与参数

  • 架构:与任务3a相同,使用3层网络,包括1个输入单元、1个输出单元和3个大小为1的记忆块。
  • 连接方式:输出层仅接收来自记忆单元的连接,记忆单元和门控单元接收来自输入单元、记忆单元和门控单元的输入,并包含偏置权重。
  • 激活函数:门控单元和输出单元使用逻辑Sigmoid函数,输出范围为 [0,1];记忆单元使用逻辑Sigmoid函数 hh,输出范围为 [−1,1];门控单元使用逻辑Sigmoid函数 gg,输出范围为 [−2,2]。
  • 权重初始化:所有权重(除门控单元的偏置权重外)在 [−0.1,0.1]范围内随机初始化。
  • 学习率:固定为1.0。

2、训练与测试设置

  • 高斯噪声:对信息传递元素(t≤Nt≤N)添加均值为0、方差为0.2的高斯噪声。

  • 训练停止标准:

    • ST1:从随机选择的测试集中选取256个序列,错误分类的序列少于6个。
    • ST2:满足ST1,且测试集的平均绝对误差低于0.04。在ST2情况下,使用包含2560个随机选择序列的额外测试集,确定错误分类序列的比例。

3、实验结果

  • LSTM的表现:LSTM轻松解决了该问题,实验结果基于10次试验的平均值。

  • 结果分析:

    • 在信息传递元素中添加高斯噪声后,LSTM仍能高效完成任务,展示了其抗噪声能力。
    • 实验结果表明,LSTM在复杂条件下表现稳定,能够从噪声中提取关键信息。

5.3.3 实验3c任务设计

       任务3c在任务3a的基础上进行了关键修改,使任务更具挑战性。目标值分别为0.2(类别1)和0.8(类别2),并在目标值上添加了高斯噪声(均值为0,方差为0.1,标准差为0.32)。任务要求模型学习给定输入的目标条件期望,以最小化均方误差。以下是任务的详细设计与分析。

1、结构与参数

  • 架构:与任务3a相同,使用3层网络,包括1个输入单元、1个输出单元和3个大小为1的记忆块。
  • 连接方式:输出层仅接收来自记忆单元的连接,记忆单元和门控单元接收来自输入单元、记忆单元和门控单元的输入,并包含偏置权重。
  • 激活函数:门控单元和输出单元使用逻辑Sigmoid函数,输出范围为 [0,1];记忆单元使用逻辑Sigmoid函数 hh,输出范围为 [−1,1];门控单元使用逻辑Sigmoid函数 g,输出范围为 [−2,2]。
  • 权重初始化:所有权重(除门控单元的偏置权重外)在 [−0.1,0.1] 范围内随机初始化。
  • 学习率:固定为1.0。

2、任务修改与挑战

目标值与噪声

  • 目标值分别为0.2(类别1)和0.8(类别2)。
  • 在目标值上添加高斯噪声(均值为0,方差为0.1,标准差为0.32)。

学习目标

  • 模型需要学习给定输入的目标条件期望,以最小化均方误差。

分类标准

  • 错误分类定义为输出与无噪声目标值(0.2或0.8)的绝对差大于0.1。

输出精度要求

  • 网络输出被认为是可接受的,如果无噪声目标值与输出的平均绝对差低于0.015。

任务复杂性

  • 由于需要高权重精度,任务3c无法通过随机猜测快速解决,与任务3a和3b不同。

4、学习率

  • 学习率:固定为0.1,确保训练过程的稳定性。

5、训练停止标准

主要标准:

  • 从随机选择的测试集中选取256个序列,所有序列均被正确分类。
  • 无噪声目标值与输出的平均绝对差低于0.015。

额外测试集:

  • 使用包含2560个随机选择序列的额外测试集,确定错误分类序列的比例。

6、实验结果

实验结果表明,尽管目标值存在噪声,LSTM仍能成功完成任务。

5.4 实验4:加法问题

本任务要求模型处理由成对元素组成的输入序列,并输出特定标记对的第一个分量的和。

5.4.1、输入序列结构

  • 元素组成:每个输入序列的每个元素由一对分量组成。

    • 第一个分量:从区间 [−1,1] 中随机选择的实数值。
    • 第二个分量:1.0、0.0 或 -1.0,用作标记。在每一个序列的末端,任务是输出那些第二个分量等于1的元素对中第一个分量的和
  • 序列长度:序列长度在最小长度 T到 T+T/10 之间随机选择。

5.4.2、标记规则

  • 标记对:每个序列中恰好有两个对会被标记。

    • 第一步:随机选择并标记前十个对中的一个(其第一个分量记为 X1)。
    • 第二步:随机选择并标记前 T/2−1个未被标记的对中的一个(其第一个分量记为 X2)。
  • 其他对:

    • 所有未被标记的对的第二个分量为0(除了第一个和最后一个对,第一个和最后一个对的第二个分量为-1)。
    • 在极少数情况下序列的第一个对被标记,那么 X1 设为0。

5.4.3、目标与误差信号

  • 目标值:误差信号在序列的末端产生:目标值为0.5+(X1+X2)/4被缩放到区间 [0,1]。
  • 误差信号:仅在序列末尾生成,目标为上述计算值。
  • 正确分类标准:序列末尾的绝对误差低于0.04。

5.4.4、 任务挑战

序列长度可变

  • 序列长度在 T到 T+T/10 之间随机选择,要求模型具备处理可变长度序列的能力。

标记对的随机性

  • 标记对的选择具有随机性,增加了模型的训练难度。

误差计算的高精度要求

  • 目标值的计算和误差判断需要高精度,对模型的预测能力提出了高要求。

5.4.5、网络架构

  • 层数:3层网络。
  • 输入单元:2个输入单元。
  • 输出单元:1个输出单元。
  • 记忆块:2个记忆块,每个记忆块大小为2。

5.4.6、连接方式

  • 输出层:仅接收来自记忆单元的连接。

  • 记忆单元与门控单元:

    • 接收来自记忆单元和门控单元的输入(即隐藏层全连接,但减少连接性也可能有效)。
    • 所有非输入单元包含偏置权重。
  • 输入层:

    • 输入层向前连接到隐藏层中的所有单元。

5.4.7、激活函数

  • 默认激活函数:逻辑Sigmoid函数,输出范围为 [0,1]。

  • 特殊激活函数:

    • h:输出范围为 [−1,1]。
    • g:输出范围为 [−2,2]。

5.4.8、状态漂移研究

  1. 初始偏置引入

    • 所有非输入单元被偏置,人为诱导内部状态漂移。
    • 所有权重(包括偏置权重)在 [−0.1,0.1] 范围内随机初始化。
  2. 输入门偏置初始化

    • 第一个输入门偏置初始化为-3.0。
    • 第二个输入门偏置初始化为-6.0。
    • 额外的实验表明,精确的初始化值对模型性能影响不大。

5.4.9、状态漂移的补救措施

     参考第4节的补救措施:通过合理初始化输入门偏置,减少状态漂移的影响。

5.4.10、学习率

     固定为0.5,确保训练过程的稳定性。

5.4.11、训练停止标准

  • 平均训练误差:当平均训练误差低于0.01时,训练停止。
  • 最近2000个序列:确保最近2000个序列均被正确处理。

5.4.12、实验结果

测试集表现

  • 测试集包含2560个随机选择的序列。
  • 平均测试集误差始终低于0.01。
  • 错误处理的序列从未超过3个。

实验结论

  • 分布式表示:LSTM能够有效处理分布式表示。
  • 连续值计算:LSTM能够学习执行涉及连续值的计算。
  • 内部状态漂移:系统能够在不显著退化的前提下存储连续值,表明没有有害的内部状态漂移。

5.4.13、结论分析

LSTM的分布式表示能力

  • 实验结果表明,LSTM能够高效处理分布式表示,展示了其在复杂任务中的性能。

连续值计算能力

  • LSTM能够学习执行涉及连续值的计算,进一步验证了其在数值计算任务中的表现。

内部状态漂移问题

  • 系统能够在最小延迟 T/2时间步内存储连续值而不显著退化,表明内部状态漂移问题得到了有效控制。

5.5 实验5:乘法问题

      有人认为LSTM可能偏向于解决诸如“加法问题”(Adding Problem)这样的任务,因为其恒定误差传播单元(CEC)具有内置的积分能力。尽管这种能力可以被视为一种优势(因为积分是现实世界中许多任务的天然子任务),但问题在于LSTM是否也能解决本质上非积分的任务。为了验证这一点,我们将任务修改为要求最终目标等于早期标记输入的乘积(而非和)。

5.5.1、任务描述

1、输入序列结构:

  • 每个输入序列的每个元素由一对分量组成。

    • 第一个分量:从区间 [0,1]中随机选择的实数值。
    • 第二个分量:1.0、0.0 或 -1.0,用作标记。

2、输入序列结构:

  • 每个输入序列的每个元素由一对分量组成。

    • 第一个分量:从区间 [0,1]中随机选择的实数值。
    • 第二个分量:1.0、0.0 或 -1.0,用作标记。

3、标记规则:

  • 每个序列中恰好有两个对会被标记,分别记为 X1和 X2。
  • 如果序列的第一个对被标记,则 X1设为1.0。

4、目标值计算:

  • 最终目标值为 X1×X2。

5、误差计算:

  • 误差定义为输出值与目标值的绝对差。

6、成功标准:

  • 序列末尾的绝对误差低于0.04。

7、网络架构:

  • 与第5.4节相同,使用3层网络,包括2个输入单元、1个输出单元和2个大小为2的记忆块。
  • 所有权重(包括偏置权重)在 [−0.1,0.1] 范围内随机初始化。

8、学习率

     固定为0.1,确保训练过程的稳定性。

9、测试性能标准

  • 测试条件:当最近2000个训练序列中,绝对误差超过0.04的序列数量少于 时,测试性能。

  • 值:

    • :用于验证模型是否能够学习存储相关输入。
    • :用于验证模型是否能够精确调整最终输出。

10、值的选择依据

  • 意义:该值足够验证模型是否能够学习存储相关输入,但不足以验证模型是否能够精确调整最终输出。
  • 应用场景:用于初步评估模型的性能,确保其具备基本的学习能力。

  • 意义:该值能够验证模型是否能够精确调整最终输出,达到较高的性能要求。
  • 应用场景:用于最终评估模型的性能,确保其在实际应用中的表现。

5.6 实验6:时间顺序

5.6.1 任务6a实验设计

         任务6a要求对包含两个关键符号(X 或 Y)的序列进行分类。序列以符号 E 开头,以符号 B(触发符号)结尾,中间包含随机选择的符号(a、b、c、d),并在特定位置插入 X 或 Y。序列的长度和关键符号的位置随机选择,分类规则基于 X 和 Y 的时间顺序。

1、序列结构

序列组成:

  • 序列以 E 开头,以 B 结尾。
  • 中间部分由随机选择的符号(a、b、c、d)组成。
  • 在位置   分别插入X 或 Y。

序列长度:

  • 长度在 100 到 110 之间随机选择。

关键符号位置:

  • 在 10 到 20 之间随机选择。
  • 在 50 到 60 之间随机选择。

2、分类规则

类别定义:

  • 共有 4 个类别:Q、R、S、U。

规则描述:

  • X,X→Q
  • X,Y→R
  • Y,X→S
  • Y,Y→U

3、输入与目标表示

输入表示:

  • 使用局部表示,输入向量中只有一个非零位。

目标表示:

  • 目标类别也使用局部表示。

4. 任务挑战

长序列处理:

  • 序列长度较长(100 到 110),增加了模型处理难度。

关键符号的广泛分离:

  • X 和 Y 的位置相隔较远,要求模型具备长期记忆能力。

分类规则的复杂性:

  • 分类规则基于 X 和 Y 的时间顺序,增加了任务的复杂性。

5.6.2 任务6b实验设计

       任务6b是任务6a的扩展版本,要求对包含三个关键符号(X 或 Y)的序列进行分类。序列以符号 E 开头,以符号 B(触发符号)结尾,中间包含随机选择的符号(a、b、c、d),并在特定位置插入 X 或 Y。序列的长度和关键符号的位置随机选择,分类规则基于 X 和 Y 的时间顺序。以下是任务的详细描述与解析。

1、序列结构

序列组成:

  • 序列以 E 开头,以 B 结尾。
  • 中间部分由随机选择的符号(a、b、c、d)组成。
  • 在位置 t1、t2和 t3 分别插入 X 或 Y。

序列长度:

  • 长度在 100 到 110 之间随机选择。

关键符号位置:

  • t1 在 10 到 20 之间随机选择。
  • t2 在 33 到 43 之间随机选择。
  • t3 在 66 到 76 之间随机选择。

2、分类规则

类别定义:

  • 共有 8 个类别:Q、R、S、U、V、A、B、C。

规则描述:

  • X,X,X→Q
  • X,X,Y→R
  • X,Y,X→S
  • X,Y,Y→U
  • Y,X,X→V
  • Y,X,Y→A
  • Y,Y,X→B
  • Y,Y,Y→C

3、输入与目标表示

输入表示:

  • 使用局部表示,输入向量中只有一个非零位。

目标表示:

  • 目标类别使用局部表示,每个类别对应一个二进制目标向量,其中只有一个非零分量。

输出单元:

  • 输出单元数量与类别数量相同(8 个)。

4、误差计算与成功标准

误差信号:

  • 误差信号仅在序列末尾生成。

成功标准:

  • 如果所有输出单元的最终绝对误差均低于 0.3,则序列被正确分类。

5、任务挑战

长序列处理:

  • 序列长度较长(100 到 110),增加了模型处理难度。

关键符号的广泛分离:

  • X 和 Y 的位置相隔较远,要求模型具备更强的长期记忆能力。

分类规则的复杂性:

  • 分类规则基于三个符号的时间顺序,进一步增加了任务的复杂性。

6、网络架构

  1. 层数:3层网络。

  2. 输入单元:

    • 任务6a:8个输入单元。
    • 任务6b:8个输入单元。
  3. 记忆块:

    • 任务6a:2个记忆块,每个记忆块大小为2。
    • 任务6b:3个记忆块,每个记忆块大小为2。
  4. 输出单元:

    • 任务6a:4个输出单元。
    • 任务6b:8个输出单元。

7、连接方式

  1. 输出层:

    • 仅接收来自记忆单元的连接。
  2. 记忆单元与门控单元:

    • 接收来自输入单元、记忆单元和门控单元的输入(即隐藏层全连接,但减少连接性也可能有效)。
    • 所有非输入单元包含偏置权重。

8、 激活函数

  1. 默认激活函数:逻辑Sigmoid函数,输出范围为 [0,1]。

  2. 特殊激活函数:

    • h:输出范围为 [−1,1]。
    • g:输出范围为 [−2,2]。

9、训练与测试设置

  1. 学习率:

    • 实验6a:0.5。
    • 实验6b:0.1。
  2. 训练停止标准:

    • 平均训练误差低于0.1。
    • 最近2000个序列均被正确分类。
  3. 权重初始化:

    • 所有权重在 [−0.1,0.1] 范围内随机初始化。
  4. 输入门偏置初始化:

    • 第一个输入门偏置初始化为-2.0。
    • 第二个输入门偏置初始化为-4.0。
    • 实验6b:第三个输入门偏置初始化为-6.0。
    • 额外实验表明,精确的初始化值对模型性能影响不大。

10、 实验结果

  1. 测试集表现:

    • 测试集包含2560个随机选择的序列。
    • 平均测试集误差始终低于0.1。
    • 错误分类的序列从未超过3个。
  2. 实验结论:

    • LSTM能够从广泛分离的输入中提取时间顺序信息。
    • 例如,在任务6a中,第一个相关输入与第二个相关输入之间的延迟至少为30个时间步,第二个相关输入与序列结束之间的延迟也至少为30个时间步。

在实验6a中,LSTM需要区分时间顺序 (X,Y)和 (Y,X)。以下是两种典型的解决方案,分别基于多记忆块和单记忆块的实现方式。

11、 多记忆块解决方案

  1. 记忆块分配:

    • 第一个 X 或 Y 存储在记忆块1中。
    • 第二个 X 或 Y存储在记忆块2中。
  2. 输入门控制:

    • 在第一个 X 或 Y 出现之前,记忆块1通过其循环连接检测到自身为空。
    • 第一个 X 或 Y 出现后,记忆块1关闭其输入门。
  3. 状态传递:

    • 记忆块1被填充并关闭后,记忆块2可以检测到这一状态变化。

12、 单记忆块解决方案

解决方案类型1:输入门激活机制

  1. 输入门控制:

    • 记忆块存储第一个 X 或 Y。
    • 第二个 X 或 Y 出现时,输入门的激活状态取决于记忆块的当前状态。
  2. 事件区分:

    • 如果 X 出现时记忆块已填充,输入门激活状态与记忆块为空时不同。

解决方案类型2:记忆单元内部状态反馈

  1. 内部状态表示:

    • 第一个 X 或 Y 的出现通过正(负)内部状态表示。
  2. 反馈机制:

    • 当输入门第二次打开时,输出门也打开,记忆单元的输出反馈到其输入。
  3. 状态更新:

    • (X,Y)( 通过正内部状态表示,因为 XX 通过当前内部状态和反馈机制两次贡献。
    • (Y,X) 通过负内部状态表示。

六、 LSTM的优势与局限

6.1 LSTM的局限性

6.1.1  处理强延迟 XOR 问题的困难

问题描述:

  • 强延迟 XOR 问题要求计算两个广泛分离的输入的 XOR 值,且输入序列中存在噪声。

局限性原因:

  • 仅存储其中一个输入无法有效减少预期误差。
  • 任务不可分解,无法通过逐步解决子目标来减少误差。

理论解决方案:

  • 使用完整梯度(可能结合额外的传统隐藏单元)可以绕过这一限制,但不推荐,因为:

    • 增加计算复杂度。
    • 仅截断 LSTM 能证明恒定误差通过 CEC(恒定误差传播单元)。
    • 实验表明,完整梯度与截断 LSTM 的性能无显著差异。

6.1.2  记忆单元块的结构复杂性

单元数量增加:

  • 每个记忆单元块需要两个额外的单元(输入门和输出门)。

权重数量影响

  • 与传统循环网络相比,权重数量最多增加 9 倍。
  • 实验中,LSTM 与竞争方法的权重数量相当。

6.1.3  与全连接前馈网络的相似性

问题描述:

  • 由于 CEC 内的恒定误差传播,LSTM 的行为类似于同时看到整个输入序列的前馈网络。

具体表现:

  • 对于某些任务(如 500 步奇偶校验问题),LSTM 的表现类似于具有 500 个输入的前馈网络。
  • 这些任务可以通过随机权重猜测快速解决,但 LSTM 在权重初始化较小时难以解决。

6.1.4  时间步计数的局限性

问题描述:

  • 所有基于梯度的方法在实际中无法精确计数离散时间步。

具体表现:

  • 如果任务需要区分信号发生在 99 步还是 100 步之前,则需要额外的计数机制。
  • 对于较简单的任务(如区分 3 步和 11 步),LSTM 能够通过生成适当的负连接来赋予近期输入更多权重,并学习必要的衰减。

6.1.2 LSTM的优势

1、恒定误差传播与长时滞处理能力

恒定误差传播:

  • LSTM 的记忆单元(CEC)能够实现恒定误差传播,从而有效解决长时滞问题。

长时滞问题的处理:

  • 能够处理噪声、分布式表示和连续值。
  • 与有限状态自动机或隐马尔可夫模型不同,LSTM 不需要预先选择有限状态数,理论上可以处理无限状态数。

2、 泛化能力与广泛分离输入的区分

泛化能力:

  • 即使输入序列中广泛分离的相关输入位置不重要,LSTM 仍能很好地泛化。

区分广泛分离的输入

  • 能够快速区分输入序列中两个或多个广泛分离的特定元素,而无需依赖短时滞训练样本。

3、 参数鲁棒性与自适应性

参数鲁棒性:

  • LSTM 在广泛的参数范围内表现良好,如学习率、输入门偏置和输出门偏置。

自适应性:

  • 较大的学习率会将输出门推向零,从而自动抵消其负面影响。

4、计算效率与局部性

计算效率:

  • LSTM 的更新复杂度与 BPTT(反向传播时间)相同,为 O(1),优于 RTRL(实时递归学习)等其他方法。

局部性:

  • 与完整 BPTT 不同,LSTM 在空间和时间上都是局部的,提高了计算效率。

5、 实际应用中的优势

非平凡任务的表现:

  • 在具有显著搜索空间的非平凡任务中,LSTM 明显优于其他方法。

无需参数微调:

  • LSTM 在大多数情况下无需精细调整参数,降低了使用难度。

 

要获取 Long Short-Term Memory (LSTM) 的原始论文 PDF 文件,可以通过以下方法实现: ### 方法一:访问学术资源网站 Sepp Hochreiter 和 Jürgen Schmidhuber 在 1997 年发表了 LSTM 的开创性论文Long Short-Term Memory》。这篇论文可以在多个学术资源平台上找到,例如: - **arXiv**: 如果该论文已被上传到 arXiv,则可以直接通过搜索引擎输入标题查找。 - **Google Scholar**: 输入完整的论文名称 “Long Short-Term Memory”,通常会提供免费的 PDF 下载链接或者付费购买选项。 - **ResearchGate 或 Academia.edu**: 这些平台可能由作者或其他研究者分享了可公开下载的版本。 如果上述方式无法直接获得免费版 PDF,还可以尝试联系图书馆或教育机构订阅的服务数据库,比如 IEEE Xplore、SpringerLink 等[^1]。 ### 方法二:利用开源项目中的文档 一些深度学习框架(如 TensorFlow、PyTorch)以及教程博客可能会附带推荐阅读材料列表,其中包含经典模型的相关背景资料链接。此外,在 GitHub 上搜索关键词“lstm paper implementation”也可能发现有人整理好了原版文章供学习交流使用[^2]。 需要注意的是,在某些情况下,即使找到了合法渠道提供的电子副本,仍需注意版权规定以确保合理使用这些内容。 对于实际应用方面提到的新变种架构 xLSTM 改进了传统方法针对低频词汇建模效果不佳的问题;具体技术细节则需要查阅后续发展成果文献进一步了解[^3]。 ```python import requests def download_paper(url, filename="paper.pdf"): response = requests.get(url) with open(filename, 'wb') as f: f.write(response.content) # Example usage download_paper("https://www.example.com/path/to/lstm-paper", "Hochreiter_Schmidhuber_LSTM_1997.pdf") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值