教師強制(Teacher Forcing)は、RNNなどの系列生成モデルを訓練するときに使われる定番テクニックです。モデル構造の話ではなく「学習のさせ方」の話である点が、この節の他のキーワードと毛色が違うところです。何を解決し、どんな副作用があるのかをセットで理解しましょう。
📖 ひと言でいうと
教師強制とは、系列を生成するモデルの訓練時に、1つ前の時刻のモデル自身の出力ではなく、正解データを次の入力として与える学習手法です。例えるなら、ピアノの練習で生徒が1小節ごとに音を間違えても、先生がすかさず正しい音を弾き直してから次の小節に進ませるようなものです。生徒(モデル)は常に正しい流れの上で次を練習できるため、間違いが雪だるま式に膨らむのを防げます。厳密には、これは訓練時だけの補助であり、本番(推論時)では先生はいなくなり、モデルは自分の出力を頼りに生成を続けることになります。
🖼 1枚でわかる教師強制
📘 公式テキストの説明
教師強制(Teacher Forcing)は、リカレントニューラルネットワーク(RNN)の訓練手法の一つで、モデルの出力ではなく、正解データを次の入力として使用する方法を指す。この手法により、モデルは正解データに基づいて学習を進めることができる。具体的には、RNNが系列データを生成する際、各時刻においてモデルの予測結果を次の時刻の入力として使用するのではなく、実際の正解データを入力として与える。これにより、モデルは誤差の蓄積を防ぎ、効率的な学習が可能となる。ただし、教師強制を用いると、訓練時と推論時の入力分布が異なるため、推論時に性能が低下する可能性がある。この問題を解決するため、訓練時にモデルの予測結果を一定の確率で次の入力として使用するScheduled Samplingなどの手法が提案されている。
この説明の核心は「次の入力を何にするか」という選択です。系列生成モデルは本来、自分が出した予測を次の入力にして生成を続けます。しかし訓練の初期はモデルの予測がでたらめなので、間違った予測を入力にすると、その先の予測もすべて狂ってしまいます。そこで訓練中は正解データを入力に差し替えて、各時刻の学習を「正しい前提」の上で行わせる。これが教師強制です。
🔍 しっかり理解する
何が問題だったのか: 誤差の雪だるま
教師強制なしで訓練する場合と比べると、その価値がよくわかります。
- 次の入力=正解データ
- 各時刻を常に正しい文脈で学習
- 誤差が蓄積せず学習が速く安定
- 並列計算とも相性がよい
- 次の入力=モデル自身の予測
- 初期は予測が不正確で文脈が崩れる
- 1つの誤りが後続すべてに波及
- 学習が不安定・収束が遅い
例えば言語モデルの訓練で「今日は天気がいい」という文を学習させるとします。「今日は」まで入力した時点でモデルが誤って「犬」と予測したとしましょう。もしこの「犬」を次の入力にすると、モデルは「今日は犬」という壊れた文脈の続きを学習することになり、正解の「天気がいい」との誤差計算も意味を失っていきます。教師強制なら、予測が「犬」でも次の入力には正解の「天気」を与えるため、続きの学習は正常に進みます。
副作用: 露出バイアス(訓練と本番のギャップ)
教師強制には代償があります。訓練中のモデルは常に「正解だけで作られたきれいな文脈」しか見ていません。ところが推論時(本番)には正解データは存在せず、モデルは自分の予測を入力にして生成を続けるしかありません。自分の小さな予測ミスが混ざった文脈は訓練中に一度も経験していないため、ミスからの立て直しができず、誤りが連鎖して性能が低下することがあります。これが公式テキストのいう「訓練時と推論時の入力分布が異なる」問題です。
この対策として提案されたのがScheduled Samplingです。訓練中、次の入力として正解データを使うかモデル自身の予測を使うかを確率的に切り替え、学習が進むにつれて予測を使う割合を増やしていきます。こうすることで、モデルは訓練段階から「自分のミスが混ざった文脈」への対処も少しずつ経験できます。
RNN専用ではない: Transformerでも使われる
教師強制はRNNの文脈で登場した手法ですが、考え方自体は「1つ前の出力が次の入力になる」タイプのモデル全般に適用できます。実際、Transformerの学習でも同様に活用されており、正解系列を(未来が見えないようマスクした上で)入力として与えることで、全時刻の予測を一度に学習できます。系列生成モデルの訓練における標準テクニックとして押さえておきましょう。
💡 具体例で考える
機械翻訳モデルの訓練を考えます。英文「I have a pen」を「私はペンを持っている」に翻訳するタスクで、デコーダは「私は」→「ペンを」→「持って」→「いる」と1語ずつ生成していきます。教師強制では、デコーダが2語目を予測するときの入力に、1語目のモデル予測(たとえ「彼は」と間違えていても)ではなく正解の「私は」を与えます。訓練データには正解の日本語文が丸ごとあるので、全時刻分の「正しい入力」を最初から用意できるわけです。これにより、翻訳文の後半の学習が前半の予測精度に足を引っ張られなくなります。
一方、訓練を終えたこのモデルを本番で使うときは正解文がないので、「私は」と自分で生成した語を次の入力にして進みます。もし本番で1語目を「彼は」と間違えたら、その誤った文脈で続きを生成することになります。訓練中ずっと正解に守られていたモデルほどこの状況に弱い、というのが教師強制のジレンマです。
⚠️ よくある誤解・紛らわしい用語
- 「教師あり学習」と混同しない — 教師あり学習は「正解ラベル付きデータで学ぶ」という学習の枠組み全体を指します。教師強制はその中で使われる、系列モデル特有の「入力の与え方」のテクニックです。「教師」つながりで混同させる選択肢に注意してください。
- 「推論時にも正解を入力する手法」ではない — 教師強制は訓練時だけの話です。推論時には正解データが存在しないため、モデルは自身の出力を次の入力に使います。
- 「教師強制を使えば性能が必ず上がる」は不正確 — 訓練は効率化しますが、訓練時と推論時の入力分布のずれにより、推論時の性能が低下する可能性があるという副作用があります。
- Scheduled Samplingとの関係 — Scheduled Samplingは教師強制の代替ではなく、教師強制の副作用(分布のずれ)を緩和するために予測入力を確率的に混ぜる改良手法です。
📝 試験でのポイント
- 「モデルの出力ではなく正解データを次の入力として使用する訓練手法」という定義文を選ばせる形式が最も想定されます。「出力ではなく正解データ」という言い回しがキーです。
- 利点(誤差の蓄積を防ぎ効率的に学習)と欠点(訓練時と推論時の入力分布が異なり推論時に性能低下の恐れ)を対で問う形式に備えましょう。
- 欠点への対策としてScheduled Samplingの名前と「予測結果を一定の確率で入力に使う」という中身を結びつけられるようにしておきましょう。
- RNN限定の手法だと思わせる誤答に注意。入力系列と出力系列の対応があるモデルに広く使え、Transformerの学習でも活用されています。
📚 まとめ
教師強制は、系列生成モデルの訓練時に、モデル自身の予測ではなく正解データを次の入力として与える手法です。訓練初期の不正確な予測による誤差の連鎖を断ち切り、学習を効率化・安定化させます。ただし訓練時と推論時で入力分布がずれるため推論時に性能が低下する恐れがあり、その緩和策としてScheduled Samplingがあります。「訓練時だけの話」「教師あり学習とは別概念」の2点を押さえれば、選択肢問題で迷いません。
