训练一个能够生成文本的模型,听起来是一个简单的任务:给它看很多文本,让它学会预测下一个词。但真正动手实现时,一个根本性的问题会摆在面前——训练时模型应该看到什么?

假设模型要生成"我喜欢吃苹果"这句话。在预测"欢"这个字时,模型应该以什么作为输入?是上一个时间步的正确输出"喜",还是模型自己预测的结果(可能是错的)?这个看似微小的选择,决定了序列生成模型训练的底层逻辑,也引出了一个困扰了研究者三十年的核心问题。

1989年,Williams和Zipser在研究循环神经网络的训练时,提出了一个简单而有效的方案:训练时始终使用真实标签作为下一个时间步的输入。这种方法被称为Teacher Forcing——就像老师在课堂上不断纠正学生的错误,确保学生永远走在正确的道路上。

这个看似"作弊"的技术,统治了序列模型训练整整三十年。从最早的RNN到后来的LSTM、GRU,再到今天的GPT、LLaMA,几乎所有主流的自回归语言模型都在使用它。但Teacher Forcing并非没有代价,它带来的Exposure Bias问题,至今仍是序列生成领域最难解的困境之一。

一个两难选择的本质

要理解Teacher Forcing为什么是一个两难选择,需要从自回归生成的本质说起。

自回归模型的核心假设是:序列中的每个元素都可以根据前面所有元素预测出来。数学上,这可以表示为:

$$P(x_1, x_2, ..., x_T) = \prod_{t=1}^{T} P(x_t | x_1, ..., x_{t-1})$$

这个公式看起来优雅,但训练时却面临一个实际问题:在第$t$步预测$x_t$时,模型的输入$x_1, ..., x_{t-1}$从哪里来?

flowchart TD
    subgraph Teacher_Forcing["Teacher Forcing 训练模式"]
        direction LR
        TF1["真实标签 x₁"] --> TF2["真实标签 x₂"] --> TF3["真实标签 x₃"] --> TF4["真实标签 x₄"]
        TF1 --> M1["模型预测 ŷ₁"]
        TF2 --> M2["模型预测 ŷ₂"]
        TF3 --> M3["模型预测 ŷ₃"]
        TF4 --> M4["模型预测 ŷ₄"]
    end
    
    style TF1 fill:#90EE90
    style TF2 fill:#90EE90
    style TF3 fill:#90EE90
    style TF4 fill:#90EE90

方案一:使用真实标签(Teacher Forcing)

训练时,无论模型预测得对不对,下一个时间步都使用真实的$x_{t-1}$作为输入。这就像考试时,每道题做错了都立刻有人告诉你正确答案,然后用正确答案继续做下一题。

优点显而易见:

  • 训练过程稳定,不会因为早期的错误导致后续训练崩溃
  • 可以利用GPU的并行计算能力,一次性计算整个序列的损失
  • 梯度传播更加有效,收敛更快

缺点同样明显:

  • 模型从未学会如何处理自己的错误
  • 推理时一旦出错,错误会像滚雪球一样越来越大
flowchart TD
    subgraph Free_Running["Free Running 训练模式"]
        direction LR
        FR1["真实标签 x₁"] --> FM1["模型预测 ŷ₁"]
        FM1 --> FM2["模型预测 ŷ₂"]
        FM2 --> FM3["模型预测 ŷ₃"]
        FM3 --> FM4["模型预测 ŷ₄"]
    end
    
    style FR1 fill:#90EE90
    style FM1 fill:#FFB6C1
    style FM2 fill:#FFB6C1
    style FM3 fill:#FFB6C1
    style FM4 fill:#FFB6C1

方案二:使用模型自身输出(Free Running)

训练时,每一步都使用模型的预测结果作为下一步的输入。这更像真实的考试——第一题做错了,后面所有题目都会受到影响。

这种方法的优点是训练和推理完全一致,模型有机会学习如何从错误中恢复。但缺点是致命的:

  • 训练极不稳定,早期的微小错误可能导致后续训练完全崩溃
  • 无法并行计算,必须逐个时间步进行,训练效率极低
  • 对于离散输出(如文本生成),argmax操作不可微分,反向传播变得复杂
flowchart TD
    subgraph TF_Pros["Teacher Forcing 优点"]
        A1["✓ 训练稳定"]
        A2["✓ 可并行计算"]
        A3["✓ 梯度传播有效"]
        A4["✓ 收敛速度快"]
    end
    
    subgraph TF_Cons["Teacher Forcing 缺点"]
        B1["✗ 无法处理错误"]
        B2["✗ 训练推理不一致"]
        B3["✗ 错误累积"]
        B4["✗ Exposure Bias"]
    end
    
    subgraph FR_Pros["Free Running 优点"]
        C1["✓ 训练推理一致"]
        C2["✓ 可学习恢复"]
        C3["✓ 更鲁棒"]
    end
    
    subgraph FR_Cons["Free Running 缺点"]
        D1["✗ 训练不稳定"]
        D2["✗ 不可并行"]
        D3["✗ 梯度问题"]
        D4["✗ 效率极低"]
    end

Exposure Bias:模型从未见过的世界

Teacher Forcing带来的核心问题,被研究者称为Exposure Bias(暴露偏差)。

sequenceDiagram
    participant 训练 as 训练过程
    participant 模型 as 语言模型
    participant 推理 as 推理过程
    
    训练->>模型: 输入 <s>,预测"你"
    模型->>训练: 预测正确 ✓
    训练->>模型: 输入 <s>你(真实标签)
    模型->>训练: 预测"好" ✓
    训练->>模型: 输入 <s>你好(真实标签)
    模型->>训练: 预测"世" ✓
    
    Note over 训练: 训练时每步都是正确的
    
    推理->>模型: 输入 <s>,预测"你"
    模型->>推理: 预测正确 ✓
    推理->>模型: 输入 <s>你
    模型->>推理: 预测"的" ✗(错误!)
    推理->>模型: 输入 <s>你的(模型预测)
    模型->>推理: 预测"朋"(基于错误)
    
    Note over 推理: 推理时错误会累积

想象一个翻译模型,训练时学习将"Hello world"翻译成"你好世界"。在Teacher Forcing下,模型的训练过程是这样的:

  • 输入<s>(开始符),预测"你"
  • 输入<s>你,预测"好"(使用真实的"你")
  • 输入<s>你好,预测"世"(使用真实的"好")
  • 输入<s>你好世,预测"界"(使用真实的"世")

每一步,模型都站在坚实的地面上,前面所有的输入都是正确的。

但推理时,情况完全不同:

  • 输入<s>,模型预测"你"(假设正确)
  • 输入<s>你,模型预测"的"(错了!)
  • 输入<s>你的,模型预测"朋"(基于错误的"的")
  • 输入<s>你的朋,模型预测"友"(越走越远)

模型从未在训练中见过"你"后面跟着"的"这种情况,不知道如何处理。一个微小的错误,引发了连锁反应,最终输出可能完全偏离预期。

graph LR
    subgraph 训练分布["训练数据分布"]
        T1["正确前缀 A"] --> T2["正确前缀 B"]
        T2 --> T3["正确前缀 C"]
    end
    
    subgraph 推理分布["推理数据分布"]
        R1["正确前缀 A"] --> R2["错误前缀 A'"]
        R2 --> R3["更错前缀 A''"]
        R1 --> R4["正确前缀 B"]
    end
    
    训练分布 -->|"分布偏移"| 推理分布
    
    style T1 fill:#90EE90
    style T2 fill:#90EE90
    style T3 fill:#90EE90
    style R1 fill:#90EE90
    style R2 fill:#FFB6C1
    style R3 fill:#FF6B6B

2019年,He等人在EMNLP发表的论文对这个问题进行了深入研究。他们发现,在开放域生成任务中,模型确实表现出一种"自我恢复"能力——即使前缀被破坏,模型仍能回到合理的生成轨迹。但在结构化任务(如机器翻译)或领域迁移场景下,Exposure Bias的影响是灾难性的。

Wang等人在2020年的研究中量化了这种现象:在领域迁移的机器翻译任务中,使用更大的beam size本应提高翻译质量,但实际上却加剧了幻觉问题,BLEU分数反而下降。这是Exposure Bias的典型表现——beam search会放大错误传播的影响。

为什么三十年无法替代?

既然Teacher Forcing有如此明显的问题,为什么它至今仍是主流?答案在于:替代方案的代价更高

Free Running的困境

flowchart TD
    A["Free Running 面临的问题"] --> B["离散输出不可微"]
    A --> C["错误累积"]
    A --> D["无法并行训练"]
    
    B --> B1["argmax 操作"]
    B1 --> B2["梯度无法传播"]
    B2 --> B3["需要 Gumbel-Softmax 等技巧"]
    
    C --> C1["训练初期预测随机"]
    C1 --> C2["错误级联放大"]
    C2 --> C3["几乎无法学习"]
    
    D --> D1["必须串行计算"]
    D1 --> D2["训练时间增加 100x+"]
    D2 --> D3["经济上不可接受"]

直接使用模型自身输出进行训练,理论上是最正确的方案。但实际操作中面临三个难以克服的障碍:

1. 离散输出的不可微问题

文本生成输出的是离散的词表索引。模型输出一个概率分布,然后用argmax选择概率最高的词。这个过程不可微分,梯度无法通过argmax反向传播。

解决方案如Gumbel-Softmax技巧可以提供可微的近似,但会引入额外的噪声和不稳定性。Jang等人在2016年提出的Concrete分布(Gumbel-Softmax)虽然理论上可以解决离散采样问题,但在长序列生成中效果有限。

2. 错误累积导致的训练崩溃

早期的模型预测往往是随机猜测,这些错误会级联放大。一个长度为100的序列,如果每一步的准确率只有50%,最终正确序列的概率会下降到$0.5^{100}$,几乎为零。

这意味着在训练初期,模型几乎不可能通过Free Running学到任何有意义的东西。必须先用Teacher Forcing预训练,再切换到Free Running——这其实就是Scheduled Sampling的思想。

3. 无法并行训练

Free Running必须逐个时间步计算,无法利用现代GPU的并行能力。对于一个长度为1024的序列,Teacher Forcing可以一次计算所有位置,而Free Running需要1024次串行计算。在今天的GPU上,这可能意味着训练时间增加几个数量级。

研究者的妥协

了解了这些困境,就不难理解为什么研究者最终选择了Teacher Forcing。正如Alex Graves在NeurIPS 2018的演讲中所说:Teacher Forcing虽然会导致"短视"的表示和脆弱的生成,但它仍然是实际可行的选择。

这不是一个理想与现实的选择,而是一个"能用"与"根本无法训练"之间的选择。

三十年的突围尝试

尽管Teacher Forcing难以替代,研究者并没有放弃寻找更好的方案。从2010年代开始,一系列创新方法被提出,试图弥合训练与推理之间的鸿沟。

Scheduled Sampling:渐进式训练

flowchart LR
    subgraph 训练过程["训练过程"]
        direction TB
        S1["训练初期<br/>p = 1.0<br/>100% Teacher Forcing"] --> S2["训练中期<br/>p = 0.8<br/>混合模式"]
        S2 --> S3["训练后期<br/>p = 0.5<br/>更多 Free Running"]
    end
    
    subgraph 概率分布["输入选择概率"]
        P1["Teacher Forcing: p"]
        P2["Free Running: 1-p"]
    end

2015年,Samy Bengio、Oriol Vinyals等人在NIPS发表了题为"Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks"的论文,提出了一个直观的想法:为什么不从Teacher Forcing逐步过渡到Free Running?

核心思想是在训练过程中,以概率$p$使用真实标签,以概率$1-p$使用模型预测。随着训练的进行,$p$逐渐减小,模型逐渐学会处理自己的错误。

Bengio等人提出了三种调度策略:

graph TD
    subgraph 调度策略["三种调度策略对比"]
        direction TB
        
        subgraph Linear["线性衰减"]
            L["p_t = max ε, 1 - kt"]
        end
        
        subgraph Exp["指数衰减"]
            E["p_t = k^t"]
        end
        
        subgraph Sigmoid["逆Sigmoid衰减"]
            S["p_t = k / k + e^t/k"]
        end
    end
    
    Linear --> Result1["简单直接"]
    Exp --> Result2["初期稳定"]
    Sigmoid --> Result3["效果最好"]

线性衰减

$$p_t = \max(\epsilon, 1 - k \times t)$$

指数衰减

$$p_t = k^t$$

逆Sigmoid衰减

$$p_t = \frac{k}{k + e^{t/k}}$$

其中逆Sigmoid衰减在实验中表现最好,因为它在训练初期保持高比例的Teacher Forcing,让模型先学会基本能力,然后才逐渐引入模型预测。

实验结果显示,Scheduled Sampling在图像描述、语音识别、机器翻译等任务上都取得了提升。在MSCOCO图像描述任务上,BLEU-4分数从28.3提升到30.1,相对提升6.4%。

但Scheduled Sampling也有其局限性。Huszar在2015年的一篇博客中指出,从统计学习理论的角度,Scheduled Sampling改变了训练目标,不再是最大似然估计,而是一个不太清晰的目标。这可能导致模型收敛到次优解。

Professor Forcing:对抗式统一

flowchart TD
    subgraph Professor_Forcing["Professor Forcing 架构"]
        direction TB
        
        subgraph Generator["生成器 G"]
            G1["Teacher Forcing 模式"]
            G2["Free Running 模式"]
        end
        
        subgraph Discriminator["判别器 D"]
            D1["判断隐藏状态<br/>来自哪种模式"]
        end
        
        G1 -->|"隐藏状态序列"| D1
        G2 -->|"隐藏状态序列"| D1
        
        D1 -->|"真/假"| Loss["对抗损失"]
        Loss -->|"反向传播"| Generator
    end
    
    style D1 fill:#FFB6C1
    style Loss fill:#87CEEB

2016年,Lamb等人提出了一个更具野心的方案:Professor Forcing。

核心思想来自生成对抗网络(GAN):如果模型在Teacher Forcing和Free Running两种模式下的行为无法区分,那么这两种模式就是等价的,Exposure Bias也就消失了。

具体实现中,模型(称为Generator)正常训练,同时训练一个判别器(Discriminator)来区分两种模式下的隐藏状态序列。Generator的目标是欺骗Discriminator,让Free Running模式下的隐藏状态与Teacher Forcing无法区分。

论文中的T-SNE可视化显示,Professor Forcing确实成功缩小了两种模式下隐藏状态分布的差异。在字符级Penn Treebank任务上,测试似然度有所提升;更重要的是,在长序列生成任务中,生成质量有明显的定性改善。

但Professor Forcing也有代价:

  • 需要训练额外的判别器
  • GAN训练的稳定性问题
  • 计算开销增加

TeaForN:扩展视野

flowchart LR
    subgraph TeaForN["TeaForN: N步解码"]
        direction TB
        
        D1["解码器 1<br/>输入: 真实标签"]
        D2["解码器 2<br/>输入: 解码器1输出"]
        D3["解码器 3<br/>输入: 解码器2输出"]
        DN["解码器 N<br/>输入: 解码器N-1输出"]
        
        D1 --> D2
        D2 --> D3
        D3 --> DN
        
        D1 --> L1["损失 L₁"]
        D2 --> L2["损失 L₂"]
        D3 --> L3["损失 L₃"]
        DN --> LN["损失 L_N"]
    end
    
    L1 --> Total["总损失 = Σ L_i"]
    L2 --> Total
    L3 --> Total
    LN --> Total

2020年,Google Research的Goodman和Ding提出了TeaForN(Teacher-Forcing with N-grams)。

核心洞察是:Teacher Forcing的问题在于每一步只看一个正确的词,缺乏"远见"。TeaForN通过堆叠$N$个解码器,让模型能够基于$N$步预测进行参数更新。

具体来说,第一个解码器使用真实标签,第二个解码器使用第一个解码器的预测结果,以此类推。最终损失是所有解码器损失的总和。这使模型在训练时就考虑了多步预测的影响。

在WMT 2014英法翻译和CNN/Dailymail摘要任务上,TeaForN都取得了优于标准Teacher Forcing的结果。

Minimum Risk Training:目标函数的变革

另一种思路是直接改变训练目标。Shen等人在2015年提出的Minimum Risk Training(MRT)不再优化最大似然,而是直接最小化任务相关的风险(如BLEU分数的负值):

$$\mathcal{L}_{MRT} = \mathbb{E}_{y \sim P_\theta(y|x)}[L(y, y^*)] \approx \sum_{y \in \mathcal{S}} P_\theta(y|x) L(y, y^*)$$

其中$L(y, y^*)$是任务特定的损失函数,$\mathcal{S}$是从模型分布中采样的候选序列集合。

flowchart TD
    subgraph MLE["最大似然估计 (MLE)"]
        M1["优化: log P y*|x"]
        M2["目标: 预测正确词"]
        M3["特点: Token级别"]
    end
    
    subgraph MRT["最小风险训练 (MRT)"]
        R1["优化: E[L y,y*]"]
        R2["目标: 优化评估指标"]
        R3["特点: 序列级别"]
    end
    
    MLE -->|"问题: 与评估指标不一致"| Problem
    Problem -->|"解决: 直接优化指标"| MRT
    
    style Problem fill:#FFB6C1

MRT的优势在于直接优化评估指标,而不是代理目标。但需要从模型中采样多个候选序列,计算开销较大。

Self-Critical Sequence Training:强化学习的引入

Rennie等人在2017年提出的Self-Critical Sequence Training(SCST)将序列生成视为强化学习问题。模型输出的序列是"动作",评估指标(如CIDEr)是"奖励"。

SCST的巧妙之处在于使用贪婪解码的结果作为基线,避免了训练额外的价值函数:

$$\nabla \mathcal{L} \approx (r(\hat{y}) - r(y^g)) \nabla \log P_\theta(\hat{y}|x)$$

其中$\hat{y}$是采样的序列,$y^g$是贪婪解码的结果。这个方法在图像描述任务上取得了显著提升。

大模型时代的选择

进入大模型时代,Teacher Forcing的地位似乎更加稳固了。GPT系列、LLaMA系列、Claude系列,几乎所有主流大语言模型都使用标准的Teacher Forcing进行预训练。为什么?

flowchart TD
    subgraph 大模型训练["大模型训练范式"]
        direction TB
        
        Stage1["阶段1: 预训练"]
        Stage2["阶段2: 监督微调 (SFT)"]
        Stage3["阶段3: RLHF"]
        
        Stage1 --> Stage2
        Stage2 --> Stage3
    end
    
    subgraph 训练方式["各阶段训练方式"]
        direction TB
        
        TF1["预训练: Teacher Forcing"]
        TF2["SFT: Teacher Forcing"]
        TF3["RLHF: 生成+奖励"]
    end
    
    Stage1 -.-> TF1
    Stage2 -.-> TF2
    Stage3 -.-> TF3

并行训练的绝对优势

大模型训练的核心挑战是计算效率。以GPT-3为例,1750亿参数,3000亿token的训练数据。如果使用Free Running,训练时间可能增加100倍以上,这在经济上是不可接受的。

Teacher Forcing使模型能够一次性处理整个序列,充分利用GPU的并行计算能力。在Transformer架构下,所有位置的token可以同时计算,训练效率是Free Running的数百倍。

预训练-微调范式的适配

现代大模型采用预训练-微调的两阶段范式。预训练阶段使用海量数据进行Teacher Forcing训练,让模型学习语言的统计规律。微调阶段可以通过指令微调、RLHF等方式进一步优化。

有趣的是,RLHF阶段确实在某种程度上缓解了Exposure Bias。在PPO训练过程中,模型会生成完整的回复,然后根据奖励信号进行更新。这个过程让模型有机会"练习"处理自己的输出。

BERT的另类选择

flowchart TD
    subgraph GPT架构["GPT: 自回归生成"]
        direction LR
        G1["x₁"] --> G2["x₂"] --> G3["x₃"] --> G4["x₄"]
        G1 --> G5["预测 x₂"]
        G2 --> G6["预测 x₃"]
        G3 --> G7["预测 x₄"]
        
        Note1["单向注意力<br/>Teacher Forcing 训练"]
    end
    
    subgraph BERT架构["BERT: 掩码预测"]
        direction LR
        B1["x₁"] --> B2["MASK"] --> B3["x₃"] --> B4["MASK"]
        B2 --> B5["预测 x₂"]
        B4 --> B6["预测 x₄"]
        
        Note2["双向注意力<br/>无 Teacher Forcing 问题"]
    end

作为对比,BERT选择了完全不同的训练方式:Masked Language Modeling(MLM)。

BERT的训练过程是:随机掩盖输入中15%的词,让模型预测这些被掩盖的词。这与自回归生成有本质区别:

  • 不存在Teacher Forcing的问题,因为所有位置都是同时预测的
  • 模型可以看到双向上下文,而不是单向的
  • 但无法用于自回归生成任务

BERT和GPT的选择反映了两种不同的设计哲学:BERT追求理解能力,GPT追求生成能力。两者在各自擅长的领域都取得了成功。

实践中的权衡

理解了Teacher Forcing的理论和历史,如何在实践中做出选择?

预训练阶段:Teacher Forcing是唯一选择

对于大模型的预训练,Teacher Forcing几乎是唯一可行的方案。原因很简单:

  • 数据规模太大(数千亿token),任何降低效率的方案都不可行
  • 预训练的目标是学习语言表示,而不是完美的生成质量
  • 后续阶段可以进一步优化

微调阶段:可以考虑混合策略

在微调阶段,如果生成质量至关重要,可以考虑:

  1. Scheduled Sampling:从1.0的Teacher Forcing Ratio开始,逐步降低到0.7-0.8
  2. MRT/SCST:如果评估指标明确(如BLEU、CIDEr),可以直接优化这些指标
  3. RLHF:如果目标是与人类偏好对齐,PPO训练会让模型体验自己的输出
flowchart TD
    subgraph 方法选择["方法选择决策树"]
        Q1{"任务类型?"}
        Q2{"数据规模?"}
        Q3{"有明确评估指标?"}
        Q4{"需要人类对齐?"}
        
        Q1 -->|"生成任务"| Q2
        Q1 -->|"理解任务"| A1["BERT风格MLM"]
        
        Q2 -->|"大规模"| A2["Teacher Forcing"]
        Q2 -->|"中小规模"| Q3
        
        Q3 -->|"是"| A3["MRT/SCST"]
        Q3 -->|"否"| Q4
        
        Q4 -->|"是"| A4["RLHF"]
        Q4 -->|"否"| A5["Scheduled Sampling"]
    end

推理阶段的补救

即使训练时使用Teacher Forcing,推理时也可以采取一些策略来缓解Exposure Bias:

  1. Beam Search:保持多个候选,选择整体概率最高的序列
  2. Temperature Sampling:增加随机性,避免贪婪解码的重复和退化
  3. Nucleus Sampling (Top-p):只在累积概率达到$p$的词中采样
  4. Contrastive Search:结合多样性和连贯性

一个未完结的故事

Teacher Forcing的故事,某种程度上反映了深度学习发展的缩影:工程现实与理论完美的永恒张力

从理论上说,Free Running是最正确的训练方式——让模型体验它将要面对的世界。但从工程上说,Teacher Forcing是唯一可行的方案——它让大规模训练成为可能。

timeline
    title Teacher Forcing 三十年演进
    1989 : Williams & Zipser<br/>提出 Teacher Forcing
    2015 : Bengio 等人<br/>提出 Scheduled Sampling
    2016 : Lamb 等人<br/>提出 Professor Forcing
    2017 : Rennie 等人<br/>提出 SCST
    2020 : Goodman & Ding<br/>提出 TeaForN
    2022 : ChatGPT 发布<br/>RLHF 部分缓解 Exposure Bias
    2024 : Diffusion 模型兴起<br/>无 Exposure Bias 问题

三十年来,研究者们尝试了各种方法来弥合这个鸿沟:Scheduled Sampling、Professor Forcing、TeaForN、MRT、SCST、DAgger……每一种方案都有其价值,但没有一种能够真正替代Teacher Forcing的地位。

2024年,Diffusion模型在图像生成领域取得了巨大成功,其训练过程天然不存在Exposure Bias问题。这让人思考:是否存在一种新的序列建模范式,能够从根本上解决这个问题?

答案尚未揭晓。但有一点是确定的:只要自回归生成仍是主流,只要模型需要在离散词表中采样,Teacher Forcing的困境就会持续存在。这不是一个bug,而是序列生成的本质属性。

理解这一点,才能理解为什么今天的语言模型会"幻觉",为什么它们有时会陷入重复循环,为什么一个错误会导致后续输出完全偏离轨道。这些都不是偶然,而是Teacher Forcing训练方式的必然代价。

正如一位研究者所说:我们用稳定性换取了可训练性。在这个意义上,每一代大语言模型的成功,都建立在Teacher Forcing这个"作弊"技术的妥协之上。


参考文献

  1. Williams, R. J., & Zipser, D. (1989). A learning algorithm for continually running fully recurrent neural networks. Neural Computation, 1(2), 270-280.

  2. Bengio, S., Vinyals, O., Jaitly, N., & Shazeer, N. (2015). Scheduled sampling for sequence prediction with recurrent neural networks. NeurIPS 2015.

  3. Lamb, A. M., Goyal, A., Zhang, Y., Zhang, S., Courville, A. C., & Bengio, Y. (2016). Professor forcing: A new algorithm for training recurrent networks. NeurIPS 2016.

  4. Goodman, S., & Ding, W. (2020). TeaForN: Teacher-Forcing with N-grams. EMNLP 2020.

  5. Shen, S., Cheng, Y., He, Z., He, L., Wu, H., Sun, M., & Liu, Y. (2015). Minimum risk training for neural machine translation. ACL 2016.

  6. Rennie, S. J., Marcheret, E., Mroueh, Y., Ross, J., & Goel, V. (2017). Self-critical sequence training for image captioning. CVPR 2017.

  7. He, T., et al. (2019). Exposure bias versus self-recovery: Are distortions really incremental for autoregressive text generation? EMNLP 2019.

  8. Wang, C., et al. (2020). Exposure bias for neural machine translation. arXiv:1905.10617.

  9. Ross, S., & Bagnell, D. (2010). Efficient reductions for imitation learning. AISTATS 2010.

  10. Jang, E., Gu, S., & Poole, B. (2016). Categorical reparameterization with Gumbel-Softmax. ICLR 2017.