机器学习中的seq2seq模型

Seq2seq 由Google首次引入机器翻译。在此之前,翻译工作非常幼稚。您以前键入的每个单词都被转换为其目标语言,而不考虑其语法和句子结构。Seq2seq通过深度学习彻底改变了翻译过程。它不仅在翻译时考虑了当前单词/输入,还考虑了其​​邻域。
如今,它可用于各种不同的应用程序,例如图像字幕,会话模型,文本摘要等。
Seq2seq工作:
顾名思义,seq2seq将一系列单词(句子或句子)作为输入,并生成一个输出单词序列。它通过使用递归神经网络(RNN)来实现。尽管很少使用RNN的原始版本,但使用了更高级的版本,即LSTM或GRU。这是因为RNN存在梯度消失的问题。Google提出的版本使用LSTM。它通过在每个时间点进行两次输入来发展单词的上下文。一个来自用户,另一个来自其先前的输出,因此名称为recurrent(输出作为输入)。
它主要有两个部分,即编码器和解码器,因此有时被称为编码器-解码器网络。
编码器: 它使用深层神经网络层并将输入的单词转换为相应的隐藏向量。每个向量代表当前单词和该单词的上下文。
解码器: 类似于编码器。它以编码器生成的隐藏矢量,其自身的隐藏状态和当前单词作为输入,以生成下一个隐藏矢量并最终预测下一个单词。
除了这两个之外,许多优化还导致了seq2seq的其他组件:
注意:解码器的输入是单个向量,必须存储有关上下文的所有信息。这对于大序列来说是一个问题。因此,应用了注意力机制,其允许解码器选择性地查看输入序列。
波束搜索:解码器选择最高概率词作为输出。但是,由于贪婪算法的基本问题,这并不总是能产生最佳结果。因此,应用波束搜索,建议在每个步骤可能进行平移。这样就形成了具有最高k结果的树。
桶装:可变长度的序列是可能的一个seq2seq模型,因为它是为了输入和输出的的0填充的。但是,如果我们设置的最大长度为100,而句子的长度仅为3个字,则会浪费大量空间。因此,我们使用存储桶的概念。我们制作不同大小的存储桶,例如(4,8)(8,15),依此类推,其中4是我们定义的最大输入长度,而8是定义的最大输出长度。
18215660330
179001057@qq.com