序列生成模型

序列生成模型

  • 15.1 序列概率模型
  • 15.2 N 元统计模型
  • 15.3 深度序列模型
  • 15.4 评价方法
  • 15.5 序列生成模型中的学习问题
    • 15.5.1 曝光偏差问题
    • 15.5.2 训练目标不一致问题
    • 15.5.3 计算效率问题
  • 15.6 序列到序列模型
    • 15.6.1 基于循环神经网络的序列到序列模型
    • 15.6.2 基于注意力的序列到序列模型
    • 15.6.3 基于自注意力的序列到序列模型

  序列数据一般可以通过概率图模型来建模序列中不同变量之间的依赖关系.本章主要介绍在序列数据上经常使用的一种模型:自回归生成模型( Au-toRegressive Generative Model ).

15.1 序列概率模型

序列概率模型有两个基本问题.

  1. 概率密度估计:给定一组序列数据,估计这些数据背后的概率分布;
  2. 样本生成:从已知的序列分布中生成新的序列样本.

序列数据有两个特点: 1 )样本是变长的; 2 )样本空间非常大.

  每一步都需要将前面的输出作为当前步的输入,是一种自回归( AutoRegressive )的方式.因此这一类模型也称为自回归生成模型( AutoRegressive Generative Model ).

这里主要介绍两种比较主流的自回归生成模型: N 元统计模型和深度序列模型.

15.2 N 元统计模型

  由于数据稀疏问题,当 t 比较大时,依然很难估计条件概率 .一个简化的方法是 N 元模型( N-Gram Model ),假设每个词 xt 只依赖于其前面的N − 1 个词( N 阶马尔可夫性质)

  N 元模型的一个主要问题是数据稀疏问题.数据稀疏问题在基于统计的机器学习中是一个常见的问题,主要是由于训练样本不足而导致密度估计不准确.

  大多数自然语言都服从 Zipf 定律( Zipf’s Law ):“在一个给定自然语言数据集中,一个单词出现的频率与它在频率表里的排名成反比.出现频率最高的单词的出现频率大约是出现频率第二位的单词的 2 倍,大约是出现频率第三位的单词的 3 倍.”因此,在自然语言中大部分的词都是低频词,很难通过增加数据集来避免数据稀疏问题.

  数据稀疏问题的一种解决方法是平滑技术( Smoothing ),即给一些没有出现的词组合赋予一定先验概率.其基本思想都是增加低频词的频率,而降低高频词的频率.

15.3 深度序列模型

  深度序列模型( DeepSequenceModel )是指利用神经网络模型来估计条件概率 p (xt|x1∶(t−1) ) .

深度序列模型一般可以分为三个模块:嵌入层、特征层、输出层.

  • 嵌入层:将符号转换为向量形式.
  • 特征层:特征层用于从输入向量序列中提取特征,输出为一个可以表示历史信息的向量 ht
    实现方式如下:
    - 简单平均:历史信息的向量ht 为前面 t − 1 个词向量的平均.
    - 前馈神经网络:馈神经网络要求输入的大小是固定的.
    - 和前馈神经网络不同,循环神经网络可以接受变长的输入序列
  • 输出层一般使用 Softmax 分类器,接受历史信息的向量表示,输出 为词表中每个词的后验概率.

  给定一个训练序列 x1∶t ,深度序列模型的训练目标是找到一组参数 使得对数似然函数最大.

15.4 评价方法

构造一个序列生成模型后,需要有一个度量来评价其好坏.

  困惑度( Perplexity )是信息论中的一个概念,可以用来衡量一个分布的不确定性.困惑度可以衡量模型分布与样本经验分布之间的契合程度.困惑度越低则两个分布越接近.因此,模型分布 p(x) 的好坏可以用困惑度来评价.

  BLEU ( BiLingual Evaluation Understudy )算法是一种衡量模型生成序列和参考序列之间的 N 元词组( N-Gram )重合度的算法,最早用来评价机器翻译模型的质量,目前也广泛应用在各种序列生成任务中.

  ROUGE ( Recall-Oriented Understudy for Gisting Evaluation )算法最早应用于文本摘要领域.和 BLEU 算法类似,但 ROUGE 算法计算的是召回率( Re-call ).

15.5 序列生成模型中的学习问题

  使用最大似然估计来学习自回归序列生成模型时,会存在以下三个主要问题:曝光偏差问题、训练目标不一致问题和计算效率问题.

15.5.1 曝光偏差问题

  在自回归生成模型中,第t步的输入为模型生成的前缀序.而在训练时,我们使用的前缀序列是训练集中的真实数据 ,而不是模型预测.这种学习方式也称为教师强制(Teacher Forcing )这种教师强制的学习方式存在协变量偏移问题.一旦在预测前缀的过程中存在错误,会导致错误传播,使得后续生成的序列也会偏离真实分布.这个问题称为曝光偏差( Exposure Bias )问题.

计划采样:为了缓解曝光偏差问题,我们可以在训练时混合使用真实数据和模型生成数据.

15.5.2 训练目标不一致问题

  序列生成模型的好坏通常采用和任务相关的指标来进行评价,在训练时通常是使用最大似然估计来优化模型,这导致训练目标和评价方法不一致.

  基于强化学习的序列生成:为了可以直接优化评价目标,我们可以将自回归序列生成看作一种马尔可夫决策过程,并使用强化学习的方法来进行训练.基于强化学习的序列生成模型不但可以解决训练和评价目标不一致问题,也可以有效地解决曝光偏差问题.

15.5.3 计算效率问题

  序列生成模型的输出层为词表中所有词的条件概率,需要 Softmax 归一化.当词表比较大时,计算效率比较低.

在实践中,我们通常采用一些近似估计的方法来加快训练速度.常用的方法可以分为两类:

  1. 层次化的 Softmax 方法,将标准 Softmax 函数的扁平结构转换为层次化结构;
  2. 基于采样的方法,通过采样来近似计算更新梯度.

三种加速训练速度的方法:

  • 层次化 Softmax.
  • 重要性采样:通过采样来近似计算训练时的梯度.
  • 噪声对比估计:是将密度估计问题转换为二分类问题,从而降低计算复杂度.

总结:基于采样的方法并不改变模型的结构,只是近似计算参数梯度.在训练时可以显著提高模型的训练速度,但是在测试阶段依然需要计算配分函数.而基于层次化 Softmax 的方法改变了模型的结构,在训练和测试时都可以加快计算速度.

15.6 序列到序列模型

  序列到序列( Sequence-to-Sequence , Seq2Seq )是一种条件的序列生成问题,给定一个序列 x1∶ ,生成另一个序列 y 1∶t

这里我们介绍三种主要的序列到序列模型:

15.6.1 基于循环神经网络的序列到序列模型

  实现序列到序列的最直接方法是使用两个循环神经网络来分别进行编码和解码,也称为编码器 - 解码器( Encoder-Decoder )模型.

编码器:首先使用一个循环神经网络 fenc 来编码输入序列 x1∶ 得到一个固定维数的向量 u ,u 一般为编码循环神经网络最后时刻的隐状态.

解码器:在生成目标序列时,使用另外一个循环神经网络 fenc 来进行解码.

缺点:

  1. 编码向量 u 的容量问题,输入序列的信息很难全部保存在一个固定维度的向量中;
  2. 当序列很长时,由于循环神经网络的长程依赖问题,容易丢失输入序列的信息.

15.6.2 基于注意力的序列到序列模型

  为了获取更丰富的输入序列信息,我们可以在每一步中通过注意力机制来从输入序列中选取有用的信息.

15.6.3 基于自注意力的序列到序列模型

  为了提高并行计算效率以及捕捉长距离的依赖关系,我们可以使用自注意力模型( Self-Attention Model )来建立一个全连接的网络结构.本节介绍一个目前非常成功的基于自注意力的序列到序列模型: Transformer

  对于一个向量序列 ,首先用自注意力模型来对其进行编码.自注意力模型可以看作在一个线性投影空间中建立H中不同向量之间的交互关系.为了提取更多的交互信息,我们可以使用多头自注意力( Multi-HeadSelf-Attention ),在多个不同的投影空间中捕捉不同的交互信息.

  对于一个序列 x1∶t ,我们可以构建一个含有多层多头自注意力模块的模型来对其进行编码.基于自注意力模型的序列编码可以看作一个全连接的前馈神经网络,第 l 层的每个位置都接受第 l − 1 层的所有位置的输出.不同的是,其连接权重是通过注意力机制动态计算得到.

Transformer 模型是一个基于多头自注意力的序列到序列模型,其整个网络结构可以分为两部分:

  • 编码器只包含多层的多头自注意力( Multi-Head Self-Attention )模块,每一层都接受前一层的输出作为输入.
  • 解码器是通过自回归的方式来生成目标序列.
    解码器由以下三个模块构成:
    1. 掩蔽自注意力模块
    2. 解码器到编码器注意力模块
    3. 逐位置的前馈神经网络

你可能感兴趣的:(深度学习与神经网络学习笔记,神经网络,算法,机器学习,人工智能)