技术分享
😆从Seq2Seq到Attention
00 分钟
2024-4-11
2024-4-23
type
status
date
Apr 23, 2024 01:19 PM
slug
summary
category
tags
password
icon

从Seq2Seq到Attention

Seq2Seq

💡
面试官:介绍一下seq2seq模型,以及如何处理长文本,有何优缺点?
  • seq2seq模型由编码器(Encoder)和解码器(Decoder)组成,Encoder 会处理输入序列中的每个元素并获得输入信息,这些信息会被转换成为一个向量(称为 context 向量或者hidden state向量)。当处理完整个输入序列后,编码器把 context向量发送给Decoder,Decoder通过context向量中的信息,逐个元素输出新的序列。
  • 需要注意的是
      1. seq2seq模型中的Encoder和Decoder一般采用的是循环神经网络RNN(Transformer模型还没出现的过去时代)
      1. context的数组长度是基于Encoder RNN的隐藏层神经元数量的,在实际应用中,context向量的长度是自定义的,比如可能是256,512或者1024。
  • 那它是如何处理长文本序列的呢?
      1. 以机器翻译为例,假设序列输入是一个句子,这个句子可以由个词表示:
      1. RNN首先将句子中的每一个单词映射成为一个向量得到一个向量序列,每个单词映射得到的向量通常又叫做:word embedding。
      1. 然后在处理第个时间步的序列输入 时,RNN网络的输入和输出可以表示为:
          • 输入:RNN在时间步的输入之一为单词经过映射得到的向量
          • 输入:RNN另一个输入为上一个时间步得到的hidden state向量,同样是一个向量。
          • 输出:RNN在时间步的输出为 hidden state向量
  • 那它有什么缺点?
    • 基于RNN的seq2seq模型Encoder把所有信息都编码到了一个context向量中,便是这类模型的瓶颈。
        1. 一方面单个向量很难包含所有文本序列的信息
        1. 另一方面RNN递归地编码文本序列使得模型在处理长文本时面临非常大的挑战(比如RNN处理到第500个单词的时候,很难再包含1-499个单词中的所有信息了)。

什么是seq2seq模型?

  • seq2seq是一种常见的NLP模型结构,全称是:sequence to sequence,翻译为“序列到序列”。顾名思义:从一个文本序列得到一个新的文本序列。
  • 典型的任务有:机器翻译任务,文本摘要任务。

基于RNN的seq2seq模型如何处理文本/长文本序列?

notion image
  1. 假设序列输入是一个句子,这个句子可以由个词表示:
  1. RNN首先将句子中的每一个单词映射成为一个向量得到一个向量序列,每个单词映射得到的向量通常又叫做:word embedding。
  1. 然后在处理第个时间步的序列输入 时,RNN网络的输入和输出可以表示为:
      • 输入:RNN在时间步的输入之一为单词经过映射得到的向量
      • 输入:RNN另一个输入为上一个时间步得到的hidden state向量,同样是一个向量。
      • 输出:RNN在时间步的输出为 hidden state向量

seq2seq模型处理长文本序列时遇到了什么问题?

  • 基于RNN的seq2seq模型中 Encoder 把所有信息都编码到了一个context向量中,便是这类模型的瓶颈。
      1. 一方面单个向量很难包含所有文本序列的信息。
      1. 另一方面RNN递归地编码文本序列使得模型在处理长文本时面临非常大的挑战(比如RNN处理到第500个单词的时候,很难再包含1-499个单词中的所有信息了)。

基于RNN的seq2seq模型如何结合attention来改善模型效果?

Attention机制与经典的seq2seq模型主要有两点不同:
  • 首先,编码器会把更多的数据传递给解码器。编码器把所有时间步的 hidden state(隐藏层状态)传递给解码器,而不是只传递最后一个 hidden state(隐藏层状态)
  • 注意力模型的解码器在产生输出之前,做了一个额外的attention处理:
      1. 由于编码器中每个 hidden state(隐藏层状态)都对应到输入句子中一个单词,那么解码器要查看所有接收到的编码器的 hidden state(隐藏层状态)。
      1. 给每个 hidden state(隐藏层状态)计算出一个分数(我们先忽略这个分数的计算过程)。
      1. 所有 hidden state(隐藏层状态)的分数经过softmax进行归一化
      1. 将每个 hidden state(隐藏层状态)乘以所对应的分数,从而能够让高分对应的 hidden state(隐藏层状态)会被放大,而低分对应的 hidden state(隐藏层状态)会被缩小。
      1. 将所有hidden state根据对应分数进行加权求和,得到对应时间步的context向量。
      所以,attention可以简单理解为:一种有效的加权求和技术,其艺术在于如何获得权重。 需要注意的是:注意力模型不是无意识地把输出的第一个单词对应到输入的第一个单词,它是在训练阶段学习到如何对两种语言的单词进行对应。

参考文献

论文:
博客:
 

评论
Loading...