精华内容
下载资源
问答
  • DL入门(4):长短期记忆网络(LSTM)

    万次阅读 2021-01-18 10:57:42
    简单了解长短期记忆网络LSTM和门控循环单元网络GRU与一般RNN的不同,并掌握它们的工作原理。

      写在前面:看预测论文综述时,面临这样一个问题:很多DL的方法只是会简单运用,却不是特别了解其详细原理,故针对CNN、RNN、LSTM、AutoEncoder、RBM、DBN以及DBM分别做一些简单总结,以达到了解的目的,此篇为LSTM。

    1.RNN的缺陷

      RNN在构建实际应用程序如语言翻译、文本分类和更多的序列化问题方面非常常见,but在处理大型序列时存在梯度消失和梯度爆炸等问题。
       RNN结构共享一组U,W,b,这样梯度在反向传播过程中是不断连乘的,这样会使得梯度越来越大或者越来越小,带来梯度爆炸or梯度消失。所以当神经元个数非常多,也就是我们在处理很长一段序列的时候,往往得不到预期的结果。
      梯度下降与梯度爆炸
      梯度的表达式为:
    在这里插入图片描述
    在这里插入图片描述
    可以看到,当r>1,t-k→∞时,γtk\gamma^{t-k}→∞,造成梯度爆炸问题;相反,γ<1,t-k→∞时,γtk\gamma^{t-k}→0,会出现梯度消失问题。
      而循环神经网络中经常使用的激活函数为Sigmoid函数和Tanh函数,其导数值都小于1,并且权重矩阵U的值也不会太大,因此如果时间间隔t-k过大,就会导致误差δt,kδ_{t,k}趋于0,出现梯度消失问题。在这种情况下,当目前的预测又需要用到比较久远的信息时,就会出现长期依赖问题。

    2.LSTM

    2.1 LSTM的结构

      既然是RNN的变种,那么二者之间肯定还是有很大关联的。实际上,LSTM的神经元还是基于输入x和上一级的隐藏层输出h来计算,只不过相比RNN,LSTM的内部结构更为复杂,RNN的计算表达式为:
    在这里插入图片描述
      LSTM相比于RNN,引入了输入门i、遗忘门f、输出门o以及内部记忆单元c。其结构如下所示:
    在这里插入图片描述

    2.1.1遗忘门f

    在这里插入图片描述
      如上图所示,遗忘门f用于控制输入x和上一层隐藏层输出h被遗忘的程度大小。WfW_{f}是遗忘门的权重,bfb_{f}是遗忘门的偏置,需要指出的是,所有遗忘门共用一组W和b。
      实际上,上述公式也可以写成:
    ft=σ(Wfxt+Ufht1+bf) f_{t}=\sigma(W_{f}x_{t}+U_{f}h_{t-1}+b_{f})
    这样便能与前面的RNN对应起来,UfWfbfU_{f}、W_{f}、b_{f}是所有遗忘门的一组权重参数。

    2.1.2 输入门i

    在这里插入图片描述
      如上图所示,输入门i用于控制输入x和当前计算的状态更新到记忆单元的程度大小。相应地,其表达式可以改为:
    it=σ(Wixt+Uiht1+bi)C~t=tanh(WCxt+UCht1+bC) i_{t}=\sigma(W_{i}x_{t}+U_{i}h_{t-1}+b_{i})\\ \tilde{C}_{t}=tanh(W_{C}x_{t}+U_{C}h_{t-1}+b_{C})

    2.1.3 内部记忆单元c

      观察上图可以发现,iti_{t}C~t\tilde{C}_{t}汇聚到了一起,经过一个加号变成CtC_{t},如下所示:
    在这里插入图片描述
    内部记忆单元表达式如下:
    Ct=ftCt1+itC~t C_{t}=f_{t}*C_{t-1}+i_{t}*\tilde{C}_{t}
    其中ftf_{t}为遗忘门输出,C~t\tilde{C}_{t}是当前输入的单元状态,CtC_{t}是当前时刻单元状态。

    2.1.4 输出门o

    在这里插入图片描述
    同样可改写为:
    ot=σ(Woxt+Uoht1+bo)ht=ottanh(Ct) o_{t}=\sigma(W_{o}x_{t}+U_{o}h_{t-1}+b_{o})\\ h_{t}=o_{t}*tanh(C_{t})
      可以看到,隐藏层输出是由输出门和内部记忆单元决定的。
      以上所有表达式中的σ\sigma通常是指sigmoid函数,主要是起到门控作用,因为其输出为0~1,当输出接近0或者1时,符合物理意义上的关或开。

    2.2 一些总结

      循环神经网络中的隐状态h存储了历史信息,可以看做一种记忆。在简单的RNN模型中,h在每一个时刻都是改变的,都会被重写,因此可看作一种短期记忆。而在LSTM中,记忆单元c可以在某个时刻捕捉到某个关键信息,并有能力将此关键信息保存一定的时间间隔。记忆单元c中保存信息的生命周期要长于短期记忆,但又远远短于长期记忆,因此将LSTM称为长短期记忆(Long Short-Term Memory)

      在深度网络参数学习时,参数初始化的值一般都比较小。但是在训练LSTM网络时,过小的值会使得遗忘门的值比较小,这意味着前一时刻的信息大部分都丢失了,这样网络很难捕捉到长距离的依赖信息。 并且相邻时间间隔的梯度会非常小,这会导致梯度弥散问题。因此遗忘门的参数初始值一般都设得比较大,其偏置向量bfb_{f}设为1或2。

    3.门控循环单元网络GRU

    3.1 基本结构

      门控循环单元(Gated Recurrent Unit, GRU)网络是一种比LSTM网络更加简单的循环神经网络。其结构如下所示:
    在这里插入图片描述
    GRU相比于LSTM有以下两点不同:

    1. 将输入门i、遗忘门f、输出门o变为两个门:更新门(Update Gate)和重置门(Reset Gate)。
    2. 直接在当前状态hth_{t}和历史状态ht1h_{t-1}之间引入线性依赖关系。

       具体来讲,GRU将遗忘门和输入门合并成更新门,将内部记忆单元和隐藏层输出合并成重置门,进而让整个结构变得更加简单,性能可能会有所增强。

    3.2 工作原理

    在这里插入图片描述
    重置门rtr_{t}与候选状态h~t\tilde{h}_{t}的表达式为:
    rt=σ(Wrxt+Urht1+br)h~t=tanh(Whxt+Uh(rtht1)+bh) r_{t}=\sigma(W_{r}x_{t}+U_{r}h_{t-1}+b_{r})\\ \tilde{h}_{t}=tanh(W_{h}x_{t}+U_{h}(r_{t}\odot h_{t-1})+b_{h})
    重置门用于控制候选状态是否依赖上一时刻状态,通过重置门rtr_{t}表达式我们可以发现:

    1. rt=0r_{t}=0时,候选状态只与当前输入xtx_{t}有关,和历史状态无关。
    2. rt=1r_{t}=1时,候选状态和当前输入xtx_{t}以及历史状态ht1h_{t-1}都有关,这就与一般的RNN一致了。

    更新门ztz_{t}与当前状态hth_{t}的表达式为:
    zt=σ(Wzxt+Uzht1+bz)ht=ztht1+(1zt)h~t z_{t}=\sigma(W_{z}x_{t}+U_{z}h_{t-1}+b_{z})\\ h_{t}=z_{t}\odot h_{t-1}+(1-z_{t})\odot \tilde{h}_{t}

    通过hth_{t}的表达式我们可以发现:

    1. zt=0z_{t}=0时,当前状态就是候选状态,与前一状态ht1h_{t-1}之间为非线性关系。
    2. zt=1z_{t}=1时,当前状态就是前一状态,二者之间为线性关系。
    3. 因此,更新门用于控制前一隐藏状态有多少信息转移到当前隐藏状态,类似于LSTM中的内部记忆单元。

    因此,综合二者并观察状态更新表达式我们发现:

    1. zt=0rt=1z_{t}=0,r_{t}=1时,GRU退化为简单RNN。
    2. zt=0rt=0z_{t}=0,r_{t}=0时, 当前状态hth_{t}只和当前输入xtx_{t}相关, 和历史状态ht1h_{t-1}无关,即隐藏状态被迫忽略前一时刻隐藏状态。
    3. zt=1z_{t}=1时,当前状态就是前一状态。
    展开全文
  • 摘要:本文主要梳理循环神经网络的两个变体,长短期记忆网络(LSTM)和门控制网络的原理和代码实现。目录:什么是长短期记忆网络(LSTM)LSTM模型内部数据走向LSTM参数量计算LSTM模型优缺点LSTM代码实现GRU模型内部...

    0c1e85d9881132f3373a8c19d22375a8.png

    摘要:本文主要梳理循环神经网络的两个变体,长短期记忆网络(LSTM)和门控制网络的原理和代码实现。


    目录:

    1. 什么是长短期记忆网络(LSTM)
    2. LSTM模型内部数据走向
    3. LSTM参数量计算
    4. LSTM模型优缺点
    5. LSTM代码实现
    6. GRU模型内部计算流程
    7. 参考资料

    1. 什么是长短期记忆网络(LSTM)?

    长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。

    fc218ea9754d33b9ba74bfbde5e21c5a.png
    LSTM模型结构图

    90dd7cf82d95befcdc1f14165631fb71.png
    图形释义

    在上图中,每条线都承载着整个向量,从一个节点的输出到另一个节点的输入。粉色圆圈表示逐点操作,如向量加法,而黄色框表示学习的神经网络层。合并的行表示串联,而分叉的行表示其内容正在复制,并且副本到达不同的位置。

    2. LSTM模型内部数据流程

    LSTM内部每个时间步主要有四个操作

    (1)遗忘门forget

    c2afc0fbfba6c39435cc590ff83ce85e.png
    遗忘门

    这一步主要是对当前节点的输入信息和上一结点的隐藏状态

    进行拼接然后经过和权重矩阵相乘再加上偏执,再送入到Sigmoid激活函数中得到输出
    。这一步是对上一结点的信息进行过滤,选择性的遗忘掉不重要的信息,所以叫做遗忘门。

    (2)输入门

    6592c4d811c834b8416aed40fec25cf2.png
    输入门

    这一步主要是对输入的信息进行融合,有两个计算:

    Ⅰ)和遗忘门的操作相同,都是上一结点的隐藏层输出和当前结点的输入进行拼接然后经过和权重矩阵相乘再加上偏执,再过Sigmoid激活函数得到输出

    Ⅱ)和上一步操作相同,只不过激活函数是变为tanh激活函数,得到输出

    (3)更新门

    d8c651994137779adc581e2ff03289b7.png
    更新门

    这一步主要是对细胞状态进行更新,有三个操作:

    Ⅰ)当前结点遗忘门的输出

    和上一结点细胞状态
    进行向量点乘。

    Ⅱ)当前结点输入门的两个输出

    进行点乘。

    Ⅲ)Ⅰ和Ⅱ步的输出相加,得到当前结点的细胞状态

    (4)输出门

    2ab60ddd334f6b0eecf4166493362f0e.png
    输出门

    这一步主要是对输出的信息进行加工,得到当前结点的输出和隐藏状态,有三个操作:

    Ⅰ)和遗忘门的操作相同,都是上一结点的隐藏层输出和当前结点的输入进行拼接然后和权重矩阵相乘再加上偏执再过Sigmoid激活函数得到输出

    Ⅱ)当前结点的细胞状态

    经过tanh激活函数得到输出

    Ⅲ)Ⅰ和Ⅱ的输出进行点乘得到当前结点的隐藏状态

    总结:LSTM每个时间结点都会有三个输入,分别是上一结点的隐藏状态

    和细胞状态
    ,还有当前结点的输入
    。同时每个时间结点会产生两个输出,分别是当前时间结点的隐藏状态
    和细胞状态

    3. LSTM参数量计算

    4×input_size×(input_size+hidden_size+1)

    4.LSTM模型优缺点

    优点:

    相比于RNN,解决了梯度爆炸和梯度消失的问题,更好的处理长序列问题。

    缺点:

    相比于后来的GRU模型,大量的指数元素运算,时间复杂度大。

    5.LSTM代码实现

    import torch
    import torch.nn as nn
    import math
    
    class LSTM(nn.Module):
        def __init__(self, input_sz: int, hidden_sz: int):
            super().__init__()
            self.input_size = input_sz
            self.hidden_size = hidden_sz
    
            # i_t
            self.W_i = nn.Parameter(torch.Tensor(input_sz, hidden_sz))
            self.U_i = nn.Parameter(torch.Tensor(hidden_sz, hidden_sz))
            self.b_i = nn.Parameter(torch.Tensor(hidden_sz))
    
            # f_t
            self.W_f = nn.Parameter(torch.Tensor(input_sz, hidden_sz))
            self.U_f = nn.Parameter(torch.Tensor(hidden_sz, hidden_sz))
            self.b_f = nn.Parameter(torch.Tensor(hidden_sz))
    
            # c_t
            self.W_c = nn.Parameter(torch.Tensor(input_sz, hidden_sz))
            self.U_c = nn.Parameter(torch.Tensor(hidden_sz, hidden_sz))
            self.b_c = nn.Parameter(torch.Tensor(hidden_sz))
    
            # o_t
            self.W_o = nn.Parameter(torch.Tensor(input_sz, hidden_sz))
            self.U_o = nn.Parameter(torch.Tensor(hidden_sz, hidden_sz))
            self.b_o = nn.Parameter(torch.Tensor(hidden_sz))
    
            self.init_weights()
    
        def init_weights(self):
            stdv = 1.0 / math.sqrt(self.hidden_size)
            for weight in self.parameters():
                weight.data.uniform_(-stdv, stdv)
    
        def forward(self,x,init_states=None):
    
            """
            assumes x.shape represents (batch_size, sequence_size, input_size)
            """
            bs, seq_sz, _ = x.size()
            hidden_seq = []
    
            if init_states is None:
                h_t, c_t = (
                    torch.zeros(bs, self.hidden_size).to(x.device),
                    torch.zeros(bs, self.hidden_size).to(x.device),
                )
            else:
                h_t, c_t = init_states
    
            for t in range(seq_sz):
                x_t = x[:, t, :]
    
                f_t = torch.sigmoid(x_t @ self.W_f + h_t @ self.U_f + self.b_f)
    
                i_t = torch.sigmoid(x_t @ self.W_i + h_t @ self.U_i + self.b_i)
    
                g_t = torch.tanh(x_t @ self.W_c + h_t @ self.U_c + self.b_c)
    
                o_t = torch.sigmoid(x_t @ self.W_o + h_t @ self.U_o + self.b_o)
    
                c_t = f_t * c_t + i_t * g_t
                h_t = o_t * torch.tanh(c_t)
    
                hidden_seq.append(h_t.unsqueeze(0))
    
            # reshape hidden_seq p/ retornar
            hidden_seq = torch.cat(hidden_seq, dim=0)
            print(hidden_seq.shape)
            hidden_seq = hidden_seq.transpose(0, 1).contiguous()
            return hidden_seq, (h_t, c_t)
    
    lstm = LSTM(100,200)
    data = torch.zeros([2,10,100])
    out,_ = lstm(data)
    print(out.size())

    6.GRU模型内部计算流程

    320b74780f65ca1cc9a83b22b915b44b.png

    参考资料:

    [1] Understanding LSTM Networks

    [2]如何简单的理解LSTM

    展开全文
  • 长短期记忆网络,基于长短期记忆网络的文本分类模型
  • LSTM(Long Short Term Memory,长短期记忆网络)介绍 介绍:LSTM,也就是长短期记忆网络,是一种 RNN 特殊的类型,可以学习长期依赖信息。要想较好理解LSTM请先查看之前写的RNN的简单理解文章。在传统RNN训练经常会...
  • 理解长短期记忆网络

    2020-03-13 22:33:07
    Understanding LSTM Networks 循环神经网络 展开循环神经网络 The Unreasonable Effectiveness of Recurrent Neural Networks 理论上,循环神经网络完全可以掌控“长句依赖”,可以...长短期记忆网络是一种特...

    Understanding LSTM Networks

    循环神经网络

     

    展开循环神经网络

    The Unreasonable Effectiveness of Recurrent Neural Networks
    理论上,循环神经网络完全可以掌控“长句依赖”,可以人为的选择好的参数。
    但实践证明,循环神经网络看起来不能学习长句。
    长短期记忆没有这个问题

     

    长短期记忆网络

    长短期记忆网络是一种特殊的循环神经网络,可以解决长句依赖问题。

     
    一个标准循环神经网络中的重复模块包含一个单层
     
    长短期记忆网络中的重复模块包含四个交互层
     
    符号
     

    在上面的图中,每一行都携带一个完整的向量,从一个节点的输出到其他节点的输入
    粉红色的圆圈表示逐点操作,比如向量加法
    黄色的方框表示learned神经网络层
    行合并表示连接
    行分叉表示内容被复制和被复制的内容去向不同位置

    长短期记忆网络背后的核心思想

    长短期记忆网络的关键是单元状态,即贯穿图顶部的水平线。
    长短期记忆网络确实能够删除单元状态的信息或添加信息到单元状态,这是由称为门的结构仔细控制的。
    门是一种可选地让信息通过的方法。它们由sigmoid神经网络层和逐点乘法运算组成。
    sigmoid层输出0到1之间的数字,描述每个component应该允许通过的数量。
    0的值表示“不让任何东西通过”
    1的值表示“让所有东西通过!”

    长短期记忆一步步讲解

    忘记

    决定要从单元状态中丢弃什么信息。
    这个决定是由一个叫做“忘记门”的sigmoid层做出的。
    1表示“完全保留这个”
    0表示“完全丢弃这个”

     
    根据上一时刻的单元状态的输出和当前时刻的输入决定忘记多少旧的

    记住

    决定要在单元格状态中记住什么新信息。
    1、一个名为“输入门层”的sigmoid层决定要更新哪些值。
    2、tanh层创建一个新的候选值向量,可以将其添加到状态中。

     
    记住什么新的

    更新

    更新单元状态

    输出

    决定要输出什么
    此输出将基于单元状态,但将是经过筛选的版本。
    1、运行一个sigmoid层,它决定我们要输出的单元状态的哪些部分
    2、把单元状态输入到tanh(将值推到-1和1之间),将其乘以sigmoid门的输出
    这样只输出决定要输出的部分。

     
    输出什么

    长短期记忆的变体

    peephole连接

    Gers & Schmidhuber (2000)
    添加peephole连接,门层观察单元状态
    图中在所有的门上都加了窥视孔
    但是很多论文只会给出一些窥视孔,而不会给出其他的。

    peephole连接

     

    coupled 忘记和输入门

    不是单独决定忘记什么和应该添加什么新信息,而是一起做这些决定。
    当且仅当要记住什么的时候才会忘记
    当且仅当要忘记什么的时候才会记住

     
    coupled 忘记和输入门

    Gated Recurrent Unit

    Cho, et al. (2014)
    将忘记和输入门组合成一个“更新门”。
    它还融合了单元状态和隐藏状态,并做了一些其他的改变。
    得到的模型比标准长短期记忆模型更简单,并且越来越流行。

    Gated Recurrent Unit

     

    展开全文
  • 长短期记忆网络详解 ,内含详细的解释。英文资源。对理解LSTM网络的结构有很大的帮助!
  • 基于长短期记忆网络的恶意URL的检测
  • 论文笔记整理:窦春柳,天津大学硕士,方向:自然语言处理链接:https://arxiv.org/pdf/1503.00075.pdf动机由于长短期记忆网络(LSTM)这种具有复杂单元的循环神经网络具有良好的表示序列信息的能力,其在多种序列模型...

    论文笔记整理:窦春柳,天津大学硕士,方向:自然语言处理


    43eb607bc4616cd22915c8503f2fadd4.png

    链接:https://arxiv.org/pdf/1503.00075.pdf

    动机

    由于长短期记忆网络(LSTM)这种具有复杂单元的循环神经网络具有良好的表示序列信息的能力,其在多种序列模型任务中都取得了非常好的结果。到目前为止一直被使用的LSTM是一个线性结构。然而,自然语言表现一种将单词组合在一起形成短语的句法结构。本文引入了Tree-LSTM,将LSTM推广到树状的网络拓扑结构。在两个任务的baseline上,Tree-LSTMs都要优于现有的系统:预测两个句子的语义相关性和情感分类。

    7eb5d63f83819f195f2ab0e06b617f80.png

    亮点

    本文的亮点主要包括:

    (1)将LSTM推广到树状的网络拓扑结构,并且它展示出比序列LSTM更好的性能。标准LSTM可以看作是Tree-LSTM的一种特殊情况。

    (2)利用实验验证了Tree-LSTM作为句子的表示模型,具有很好的效果。主要在两个任务上去评估Tree-LSTM结构:句子对间的语义相关性的预测以及来自于电影影评的句子情感分类。

    概念及模型

    本文提出了由基本LSTM扩展出的两种结构:Child-Sum Tree-LSTMN-ary Tree-LSTM。这两个变种均允许更丰富的网络拓扑结构,其中每个LSTM单元能够联合来自多个子单元的信息。

    • Tree-LSTM单元

    正如标准的LSTM单元那样,Tree-LSTM单元(由j标识)都包含输入输出门i_j, o_j,一个记忆单元 c_j,以及隐藏状态 h_j。其与标准LSTM单元的不同之处在于,门向量和记忆单元的更新依赖于许多子单元。另外,该单元并不只包含一个遗忘门,Tree-LSTM单元对每一个子单元均包含一个遗忘门 f_jk。这有助于Tree-LSTM单元有选择地联合来自于每一个子单元的信息。

    5ffdc59ea7b649a364dd94f6a20bb77a.png

    每一个Tree-LSTM单元都有一个输入向量 x_j。在我们的应用当中,每一个 x_j 是一句话中一个单词的向量表示。每一个节点的输入单词依赖于当前网络的树结构。

    • Child-Sum Tree-LSTMs

    给定一棵树,令 C(j) 为节点j的所有子节点的集合。Child-Sum Tree-LSTM的转移等式如下:

    47eeb51a548d960abc39bebf154aabb8.png

    应用:Dependency Tree-LSTMs

    由于Child-Sum Tree-LSTM单元根据子单元隐藏状态 h_k 的总和调整其组件,因此适用于具有多分支或其子节点无序的树。例如,它是依存树的一个很好的选择,其中头的依存数目可以是高度可变的我们将应用于依存树的Child-Sum Tree-LSTM称为Dependency Tree-LSTM

    • N-ary Tree-LSTMs

    N -ary Tree-LSTM可用于树结构,其中分支因子最多为N,并且子项是有序的,即它们可以从1N索引。对于任何节点j,分别将其第k个孩子节点的隐藏状态和记忆细胞表示为 h_jk 和 c_jk。N -ary Tree-LSTM的转移等式如下:

    5395933df6951160ab0ea696823ab659.png

    为每个孩子k引入单独的参数矩阵允许N-Tree Tree-LSTM模型在单元上对孩子状态学习比Child Sum Tree-LSTM更细粒度。例如,考虑一个选区树应用程序,其中节点的左孩子节点对应于名词短语,右孩子节点对应动词短语。假设在这种情况下强调表示中的动词短语是有利的。

    遗忘门参数化。在等式10中定义了第k个孩子的遗忘门 f_jk,其中包含了“非对角线”参数矩阵 U_kl^(f)。此参数化允许更灵活地控制从孩子到父节点的信息传播。例如,这允许二叉树中的左隐藏状态对右孩子的遗忘门具有兴奋或抑制效果。但是,对于较大的N值,这些附加参数是不切实际的,可以绑定或固定为零。

    应用:Constituency Tree-LSTMs

    我们可以自然地将Binary Tree-LSTM单元应用于二值化选区树,因为区分了左右子节点。我们将Binary Tree-LSTM的这种应用称为Constituency Tree-LSTM。注意,在选区树-LSTM中,节点j仅在它是叶节点时才接收输入向量。

    • 模型

    现在描述两个应用是上面描述的Tree-LSTM架构的特定模型。

    1.Tree-LSTM分类

    在此背景中,我们希望从树的一些子节点的离散类Y中预测标签。例如,解析树中节点的标签可以对应于该节点所跨越的短语的某些属性。

    在每个节点j,我们使用softmax分类器来预测标签,给定在以j为根的子树中的节点处观察到的输入 {x}_j。分类器将节点处的隐藏状态 h_j 作为输入:

    09b64b056bc000daadbc9f8fe754c931.png

    代价函数是每个标记节点上正确类标签 y^(k) 的负对数似然:

    11d7985d142bf2e1508d75796569cfac.png

    其中m是训练集中标记节点的数量,上标k表示第k个标记节点,λ是L2正则化超参数。

    2.句子对的语义相关性

    给定句子对,我们希望预测[1,K]在某个范围内的实值相似度得分,其中是K>1整数。序列{1,2,...,K}是一些序数相似度,其中较高的分数表示较高的相似度。首先使用每个句子的解析树上的Tree-LSTM模型为对每个句子生成句子表示 h_L 和 h_R。给定这些句子表示,使用神经网络预测的相似性得分,该神经网络同时考虑(h_L, h_R) 对之间的距离和角度:

    2545d5b52423995ed46a7a3b2b60b8eb.png

    其中 r^T = [1,2,3...K]。使用距离测量 h_x和 h_+ 是出于经验:发现组合优于单独使用任何一种测量。乘法度量 h_x 可以解释为输入表示符号的元素比较。

    本文希望给定模型参数 Theta 的预测分布下的预期评级接近评级 47e590086e3ba0ae6b3ae4c20d97527c.png。因此,定义了满足 y=r^T p 的系数目标分布:

    a20f008e8ac7c2f570dd65e8e439f1d7.png

    代价函数是p704a89a4af8639b8ec78b1d79c630237.png之间正则化的KL-发散:

    96c4a65d5663ca9e674f79a320bb4115.png

    其中m是训练对的数量,上标k表示第k个句子对。

    理论分析

    实验

    1.Sentiment Classification

    数据集采用Stanford Sentiment Treebank(SST),任务主要是二分类和fine-grained(五分类)。结果如下图所示:

    2feb75eac8ea7ec7d7d98cccfae17256.png

    结果分析:在fine-grainedtask上,作者提出的 Constituency Tree-LSTM 获得了最好的效果,Glove vectorstuned指使用Glove词向量初始化embedding,在训练过程中不断更新embedding;在二分类上,达到了SOA的结果,但是并没有实现指标上的超越。

    Constituency Tree-LSTMDependency Tree-LSTM表现好的原因可能在于前者使用了更多的labeled 数据,因为仅从二者树结构对比来说,前者会比后者产生更多的nodes(319K vs 150K).

    2.   Semantic Relatedness

    数据集采用Sentences Involving Compositional Knowledge (SICK),评价指标包括Pearson系数,Spearman相关系数和MSE。结果如下图所示:

    4feadcd887591f03f60a06ef57d10921.png

    结果分析:作者在这个数据集上分别跟non-LSTM模型、RNN模型、LSTM模型做了对比,均实现了指标上的超越。

    总结

    本文引入了Tree-LSTM,将LSTM推广到树状的网络拓扑结构。通过在两个任务证明了Tree-LSTM的有效性:语义相关性和情感分类,两者均优于现有系统。


    OpenKG

    开放知识图谱(简称 OpenKG)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。

    5dd425d08f008298d4129484ce59e8b5.png

    点击阅读原文,进入 OpenKG 博客。

    展开全文
  • 长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中...
  • 深度学习使用长短期记忆网络方法进行降雨径流模拟
  • 基于卷积双向长短期记忆网络的事件触发词抽取
  • LSTM 长短期记忆网络

    2020-04-23 14:35:45
    长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。 循环神经...
  • 长短期记忆网络(LSTM) 1.LSTM介绍 LSTM 表示长短期记忆网络,当我们的神经网络需要在记忆最近的事物和很久以前的事情之间切换时,LSTM 是非常有用的。 2.RNN vs LSTM RNN存储的都是短期记忆,并不擅长长期记忆,...
  • 一、What | 什么是什么【5月做到 费曼训练】 Week2 –长短期记忆模型_what.png核心定义「长短期记忆模型」是关于人类记忆过程的简化模型「长短期记忆模型」假设人类记忆有三个模块感觉记忆:存储进入记忆的感觉信息...
  • 本发明属于行人导航定位修正领域,具体涉及一种基于双向长短期记忆网络的定位修正方法。背景技术:近些年来,随着室内定位技术的不断发展,很大程度弥补了类似gps等利用卫星信号进行定位而卫星信号穿透力较差导致...
  • 【技术领域】本发明涉及一种基于深度双向长短期记忆网络的空气质量预测方法,属于空气污染预测领域。背景技术:空气污染物浓度的预测拥有很强的学科交叉性,一直是环境、气象、数学、地理及计算机科学领域研究的热点...
  • 改进的长短期记忆网络用于长江上游干支流径流预测An improved Long Short-Term Memory Network for Streamflow Forecasting in the Upper Yangtze River成果信息Zhu, S., Luo, X., Yuan, X. et al. An improved long...
  • LSTM长短期记忆网络: 它是一种特殊的RNN网络,可以很好的解决长时依赖问题,与常规神经网络有什么不同? 传统的RNN为 可以看到它的处理层非常简单,通常是一个单tanh层,通过当前输入及上一时刻的输出来得到当前...
  • 一、长期依赖的问题 循环神经网络的一个吸引人的地方在于其能够结合之前的状态保留下来的信息来用于当前任务的处理,比方说其可以利用视频文件中之前的帧所包含的信息来帮助理解当前的图像帧,或者根据句子中之前的...
  • 想想结合了短期局部时序信息、长期记忆信息和自回归属性等多种混合模式的多变量时序预测模型,具体细节到底是啥呀!?能不能快快上源码学习一波,简直不要太香。好啦,话不多说,展示~01 — 原理简介 一起看看LSTNet...
  • 用LSTM长短期记忆网络实现的金融序列单步预测的代码,基于keras框架搭建的模型,可以用于参考学习
  • 小袁我刚接触这个网络的时候,一度以为长短期记忆网络既可以建模序列问题中的长期时间依赖,又可以有效地捕捉到序列数据的短期时间依赖,因而被命名为长短期记忆网络。事实上这样理解对也不对,对在LSTM确实既有捕捉...
  • 长短期记忆网络 LSTM 文章目录长短期记忆网络 LSTM一、概述二、背景三、LSTM原理3.1 模型结构3.2 前向传播3.3 反向传播3.4 LSTM的变体3.4.1 Peephole Connection3.4.2 Coupled四、LSTM的简单使用五、总结 一、概述 ...
  • 视频是北京大学曹健老师讲述的长短期记忆网络(LSTM,Long Short-Term Memory)计算过程,讲的通俗易懂,让人印象深刻。分享给大家网易云课堂-人工智能实践:Tensorflow笔记。...
  • LSTM(Long Short-Term Memory)是长短期记忆网络,是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。 LSTM 已经在科技领域有了多种应用。基于 LSTM 的系统可以学习翻译语言、控制...
  • 从零开始学自然语言处理(十六)—— 统计语言模型(上)从零开始学自然语言处理(十七)—— 统计语言模型(下...强大的长短期记忆网络(LSTM)(上)我们接着上一章的LSTM结构继续深入分拆其中内容。在LSTM中,包含三个门,分...
  • 从零开始学自然语言处理(二十)—— 强大的长短期记忆网络(LSTM)(上)我们接着上一章的LSTM结构继续深入分拆其中内容。在LSTM中,包含三个门,分别是输入门、遗忘门、输出门,其中,输入门决定当前时刻的输入是否能...
  • 神经网络学习-介绍长短期记忆网络LSTM 初探长短期记忆网络     在之前的文章中,我们介绍过循环神经网络RNN的原理,但由于RNN无法对更长的信息进行处理和使用,所以需要引入一种基于RNN的变种的...
  • 首先,在简介经典单关节信息传输模型基础上,设计并训练基于长短期记忆网络的解码器,代替原有脊椎电路通路将大脑信号传递给假肢;其次,为了在感觉反馈通路缺失时,仍能准确地恢复肢体运动功能,结合基于无模型控制策略...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,161
精华内容 464
关键字:

长短期记忆网络