代码之家  ›  专栏  ›  技术社区  ›  lwi

seq2seq学习中解码器的条件是什么?

  •  1
  • lwi  · 技术社区  · 6 年前

    我正试图理解用RNN进行顺序学习的顺序。到目前为止,我理解的是编码器的输出用于调节解码器。

    然而,我有两个来源,在我看来,这两个来源不同,做条件作用,我想知道哪种方式是有效的(可能两者都是),或者如果我错过了什么。

    资料来源:Yoav Goldberg的自然语言处理神经网络方法

    据笔者所知,解码器在每个步骤中都使用状态向量和解码器输出以及序列的下一部分进行操作。 因此,解码器的状态向量与编码器的结果分离。

    enter image description here

    资料来源:弗朗索瓦·乔利特十分钟介绍喀拉什的序列学习

    据我了解,作者和来源,解码器提供编码器状态作为初始状态。 因此,解码器的状态向量是解码器的输出。解码器步骤仅取决于通过状态向量的编码器输出。

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  1
  •   KonstantinosKokos    6 年前

    有很多方法可以将编码器输出输入解码器;要么继续将其输入解码器,要么允许它实例化解码器隐藏状态(直接或在浅转换之后),或者甚至在将解码器输出与编码器输出连接起来之后,再将两者传递给最终的输出预测。(见Cho等人14)。一般来说,你输入到解码器中的每一个额外向量都会以相当不利的条件来衡量其计算复杂度;例如,如果你决定在每个步骤中输入编码器输出e,你将输入空间从__-增加到_-x+e_-这意味着参数空间增加了e*h(在简单的RNN情况下,i.e.不考虑门控),其中h是您的隐藏尺寸。这确实增加了网络的容量,但也有过大的趋势,但有时这是必要的(例如,当您试图解码成长输出序列时,在这种情况下,网络需要不断“提醒”其工作内容)。

    在任何情况下,形式主义都是一样的;解码器总是以编码器输出为条件的,因此您将总是最大化p(y T Y T-1 …Y 0 ,x)--区别在于您决定如何将输入上下文考虑到模型中。