6.LSTM中各模块分别使用什么激活函数,可以使用别的激活函数吗?
激活函数选取
关于激活函数的选取。在LSTM中,遗忘门、输入门、输出门使用Sigmoid函数作为激活函数;在生成候选记忆时,使用双曲正切函数Tanh作为激活函数。
值得注意的是,这两个函数都是饱和的,也就是在输入达到一定值的情况下,输出不会发生明显变化。如果是非饱和的激活函数,比如ReLU,那么就难以实现门控的效果。
Sigmoid函数的输出在0~1之间,符合门控的物理意义。且当输入较小或较大时,其输出会非常接近0或1,从而保证该门开或关。
在生成候选记忆时,使用Tanh函数,因为其输出在-1~1之间,这与大多数场景下特征分布是0中心的吻合。此外,Tanh在输入为0的附近比Sigmoid有更大梯度,通常使模型收敛更快。
不是一成不变的
激活函数选取不是一成不变的,例如在原始LSTM中,使用的是Sigmoid函数的变种, h ( x ) = 2 s i g m o i d ( x ) − 1 , g ( x ) = 4 s i g m o i d ( x ) − 2 h(x)=2sigmoid(x)-1,g(x)=4sigmoid(x)-2 h(x)=2sigmoid(x)−1,g(x)=4sigmoid(x)−2,这两个函数的范围分别是[-1,1]和[-2,2]。后来发现效果并不如sigmoid。
实际上在门控中,使用Sigmoid几乎是现代所有神经网络模块的共同选择。例如在GRU和Attention机制中,也采用Sigmoid作为门控激活函数。
在计算能力有限制的设备中,由于Sigmoid函数求指数需要一定的计算量,此时会使用0/1门控输出为0或1的离散值。即当输入小于阈值,门控输出为0;大于阈值时,输出为1。
LSTM中最常见的变种加入了窥孔机制,让记忆 c t − 1 c_{t-1} ct−1也参与到了门控的计算中,此时输入门的更新方式变为:
i t = σ ( W i x t + U i h t − 1 ) + V i c t − 1 + b i i_t=\sigma(W_ix_t+U_ih_{t-1})+V_ic_{t-1}+b_i it=σ(Wixt+Uiht−1)+Vict−1+bi
7.什么是Seq2Seq模型?Seq2Seq有哪些优点?
介绍
Seq2Seq,全称Sequence to Sequence模型。称为序列到序列模型。大致意思是将一个序列信息,通过编码和解码生成一个新的序列模型。通常用于机器翻译、语音识别、自动对话等任务。
在Seq2Seq模型之前,深度神经网络所擅长的问题中,输入和输出都可以表示为固定长度的向量,如果长度稍有变化,会使用补零等操作。然而对于前面的任务,其序列长度实现并不知道。如何突破这个局限,Seq2Seq应运而生。
Seq2Seq的核心思想在于通过深度神经网络将一个输入的序列映射为一个作为输出的序列。
这一个过程由编码输入和解码输出两个环节组成。在经典的实现中,编码器和解码器各由一个循环神经网络组成,既可以选择传统RNN,也可以选择LSTM、GRU等。在Seq2Seq中,两个模型是共同训练的。
Seq2Seq经典结构如下图所示
假想一个复习和考试的场景,我们将学到的历史信息经过一系列加工整理,形成了知识体系,这就是编码过程。然后在考试的时候,将高度抽象的知识应用到系列问题中进行求解,这就是解码过程。
在机器翻译过程中,如上图所示,输入是一个源语言的句子。有三个单词A、B、C,编码器依次读入A、B、C和结束符 <EOS>。解码第一步,读入编码器最终状态,生成第一个目标语言单词W,第二步读入第一步的输出W,生成第二个单词X,如此循环,知道输出结束符<EOS>.输出的序列W、X、Y、Z就是翻译后目标语言的句子。
在文本摘要任务中,输入序列是长句子或段落,输出序列是摘要短句。在图像描述文本生成任务中,输出是图像经过视觉网络后的特征,输出序列是图像描述短句。语言识别中输入序列是音频信号,输出序列是识别出的文本。不同场景下,编码器和解码器有不同的设计,但对应的Seq2Seq底层结构基本相似。
Seq2Seq优点在于可以处理变长序列。
8.Seq2Seq模型在解码时,有哪些常用的方法?
知识点
Seq2Seq模型最核心的部分在于解码部分,大量的改进也是基于解码环节。Seq2Seq模型最基础的解码方法是贪心法:即选取一种度量标准后,每次都在当前状态下选择最佳的一个结果,直到结束。贪心法计算代价低,适合作为基准结果与其他方法比较。显然贪心法获得的是一个局部最优解,往往并不能取得最好的效果。
集束搜索是常见改进算法,它是一种启发式算法。该方法会保存beam size个当前的较佳选择。解码的时候每一步根据当前的选择进行下一步扩展和排序,接着选择前beam size个进行保存,循环迭代,直到结束时选择一个最佳的作为编码的结果。
上图中beam size为2。当前有解码得到的两个候选:I和My。然后输入解码器,得到一系列候选序列。显然,如果beam size取1,退化为贪心算法。b越大,搜索空间越大,效果会有所提升,但计算量也相应增大。实际上beam size需要取一个折中范围:8~12.
常见的改进方法还有:
- 解码时使用堆叠RNN
- 增加Dropout机制
- 与编码器建立残差连接
- 加入注意力机制(解码时每一步有针对的关注当前有关编码结果)
- 加入记忆网络(从外部获取知识)
9.Seq2Seq模型加入注意力机制是为了解决什么问题?为什么选用了双向循环神经网络?
前言
人脑在工作时具有一定注意力,当欣赏艺术品时,既可以看到全貌,也可以关注 细节,眼睛聚焦在局部,忽略其他位置信息。说明人脑在处理信息的时候有一定权重划分。而注意力机制的提出正是模仿了人脑的这种核心特性。
在实际任务(机器翻译)中使用Seq2Seq,通常会先使用一个RNN作为编码器,将输入序列(源语言句子的词向量序列)编码成一个向量表示 ,然后再使用一个RNN解码,从该向量表示中解码得到输出序列(目标语言句子的词序列)。
在Seq2Seq中,当前隐状态以及上一个输出词决定了当前输出词。即
s i = f ( y i − 1 , s i − 1 ) s_i=f(y_{i-1},s_{i-1})