美文网首页
对话系统-seq2seq模型介绍及存在的问题

对话系统-seq2seq模型介绍及存在的问题

作者: 又双叒叕苟了一天 | 来源:发表于2018-11-18 15:50 被阅读0次

    原文:https://arxiv.org/abs/1805.09461?context=stat.ML

    简单的seq2seq模型

    seq2seq模型
    训练步骤:

    对于每个输入序列 input X​ 和输出序列 output Y​

    1. X 上运行 encoding,并获得 encoder 的最终状态 h_{T_e}
    2. h_{T_e} 传入第一个 decoder,并获得采样的输出序列 \hat{Y}
    3. 根据式(3)计算损失并更新模型参数。

    \mathcal L_{CE}=-\sum_{t=1}^{T}\log{\pi_\theta(y_t|y_{t-1},s_t,c_{t-1},X)}\tag3

    测试步骤:

    对于每个输入序列 input X 和输出序列 output Y

    1. 使用训练过的模型通过式(4)采样输出\hat{Y}
    2. 通过一个度量,例如:ROUGE 等来评估模型

    \hat y_{t'}=\underset{y}{\arg \max}\pi_\theta(y|\hat y_t,s_{t'})\tag4

    seq2seq模型训练和测试

    seq2seq模型的两个问题

    1. 暴露偏差(exposure bias)
    2. 训练和测试的度量不一致

    1 暴露偏差

    两个主要原因:

    1. 训练时最小化的是交叉熵损失,而测试时用的是离散度量。
    2. 由于训练时使用了 teacher forcing 的方式,decoder 的训练依赖于真实值 y_t ,而在测试阶段,真实值是没有的。

    teacher forcing: teacher forcing 是一种训练技术,我们训练集中正确的输出反馈到 h(t+1),当模型部署后,真正的输出通常是未知的。这时,我们将模型的输出近似等于正确的输出,反馈给模型。

    ​ 为了避免这个问题,我们可以采用计划抽样法(scheduled sampling method)。

    计划抽样法

    ​ 我们先使用交叉熵预训练模型,然后慢慢将真实值替换成模型本身的 action。我们以概率 \varepsilon 用真实值,以概率 (1-\varepsilon) 用模型自身的 action。当 \varepsilon=1 时,为式(3),即全用真实值。当 \varepsilon=0 时,为式(5),即全用自身的 action。
    \mathcal L_{Inference}=-\sum_{t=1}^T\log{\pi_\theta(\hat y_t|\hat y_1,\cdots,\hat y_{t-1},s_t,c_{t-1},X)}\tag5

    2 训练和测试的度量不一致

    ​ 我们训练时使用的交叉熵误差,而测试时使用的是不可微的度量,例如:BLEU 和 ROUGE,这就会导致训练目标和测试目标不匹配,结果不一致。

    ​ 这两个问题都可以通过强化学习来处理。

    相关文章

      网友评论

          本文标题:对话系统-seq2seq模型介绍及存在的问题

          本文链接:https://www.haomeiwen.com/subject/fwjgfqtx.html