📜  机器学习中的 seq2seq 模型

📅  最后修改于: 2022-05-13 01:55:43.485000             🧑  作者: Mango

机器学习中的 seq2seq 模型

Seq2seq最初由 Google 引入用于机器翻译。在此之前,翻译的工作方式非常幼稚。您输入的每个单词都被转换为其目标语言,而不考虑其语法和句子结构。 Seq2seq 利用深度学习彻底改变了翻译过程。它不仅在翻译时考虑当前单词/输入,而且还考虑其邻域。

如今,它被用于各种不同的应用,例如图像字幕、会话模型、文本摘要等。

Seq2seq 工作:
顾名思义,seq2seq 将单词序列(句子或句子)作为输入,并生成单词的输出序列。它通过使用循环神经网络 (RNN) 来实现。虽然 RNN 的 vanilla 版本很少使用,但使用了其更高级的版本,即 LSTM 或 GRU。这是因为 RNN 存在梯度消失的问题。谷歌提出的版本中使用了 LSTM。它通过在每个时间点获取 2 个输入来开发单词的上下文。一个来自用户,另一个来自其先前的输出,因此名称为经常性(输出作为输入)。

它主要有两个组件,即编码器解码器,因此有时称为编码器-解码器网络

编码器:它使用深度神经网络层并将输入单词转换为相应的隐藏向量。每个向量代表当前单词和单词的上下文。

解码器:类似于编码器。它将编码器生成的隐藏向量、它自己的隐藏状态和当前单词作为输入,以生成下一个隐藏向量并最终预测下一个单词。

除了这两个之外,许多优化必须导致 seq2seq 的其他组件:

  • 注意:解码器的输入是单个向量,必须存储有关上下文的所有信息。这成为大序列的问题。因此应用了注意力机制,它允许解码器有选择地查看输入序列。
  • Beam Search:选择概率最高的词作为解码器的输出。但这并不总是产生最好的结果,因为贪心算法的基本问题。因此,应用了束搜索,它在每个步骤中建议可能的翻译。这是通过制作顶级 k 结果树来完成的。
  • Bucketing:可变长度序列在 seq2seq 模型中是可能的,因为对输入和输出都进行了 0 的填充。但是,如果我们设置的最大长度为 100,而句子只有 3 个单词,则会造成巨大的空间浪费。所以我们使用分桶的概念。我们制作不同大小的桶,如 (4, 8) (8, 15) 等,其中 4 是我们定义的最大输入长度,8 是定义的最大输出长度。