モデル・技術

CTCとは?整列なしで系列を学ぶ——音声認識のラベル付けを解放する損失

読み:しーてぃーしー / 英:CTC(Connectionist Temporal Classification)

更新日: 読了目安:約6分

CTC(Connectionist Temporal Classification)は、入力系列と出力ラベル系列の1対1の位置対応が分からないときでも学習できる損失関数です。音声認識では、短い文字列「こんにちは」に対して長いフレーム列が入力される——どのフレームがどの文字か、事前に整列ラベルがない——という状況で威力を発揮します。本記事は動的計画法の細部ではなく、「なぜ整列なしで学べるのか」という試験の要点に焦点を当てます。

整列問題の壁

教師あり学習では、入力と正解ラベルの対応がはっきりしていると学習しやすいです。しかし音声認識では次のミスマッチが起きます。

側面入力(音声)出力(テキスト)
系列の長さフレーム列(長い)文字列(短い)
対応どのフレームがどの文字か不明正解文字列だけ分かる
タスク音声認識=音声をテキストに変換(G-351

フレームごとに「この瞬間は『こ』」とラベルを手作業で付ける整列(アライメント)はコストが高い。CTCはこの壁を、損失関数の設計で迂回します。

CTCの発想

試験の定義は次の一文が骨格です(G-358TF-144)。

入力系列と出力ラベル系列の明示的な対応付けがなくても系列変換を学習しやすくする損失である。

CTCの要点を3点に圧縮します。

  • 損失関数 — モデルそのものではなく、損失の一種
  • 系列変換 — 長い入力系列→短い出力系列(音声→文字など)
  • 整列不要 — フレームと文字の1対1対応を事前に与えなくてよい

RNNや後の深層モデルがフレームごとの出力を出すとき、CTCが「どの整列でも正解文字列に結びつくか」を確率として周辺化して評価するイメージです(試験では計算の細部より定義が中心)。

ブランクと重複の圧縮

CTCの仕組みを直感で捉える鍵はブランク(空白)シンボルです。

  1. ブランク — 「今はどの文字にも対応しない」フレーム用の特別ラベルを追加
  2. 重複の許容 — 同じ文字が連続するフレーム出力を許す(「こ」が複数フレームにまたがる)
  3. 圧縮 — 連続する同一文字は1文字にまとめ、ブランクは除去して最終文字列を得る
  4. 学習 — 正解文字列に至るすべての整列パスの確率を合計して損失を計算

だから「10フレームで5文字」——長さが違う系列でも、どこで文字が始まるか分からなくても学習できる、と試験文脈で説明されます。

音声認識パイプラインでの位置

CTCは音声処理の一ピースとして整理します(NLPのテキスト処理とは別分野)。

段階用語・役割CTCとの関係
特徴抽出MFCCなど音響特徴量(G-023入力の前処理。CTCではない
系列モデルRNNLSTMなどフレーム列を処理
損失CTC整列なしで文字列ラベルと学習
タスク音声認識(G-351)音声→テキスト変換

G-358の誤答では、CTCをパディング(B)、物体検出(C)、契約条項(D)とすり替えるパターンがあります——音声の損失として覚えるのが得点の近道です。

試験で押さえるポイント

  • 正式名Connectionist Temporal Classification
  • 種類損失関数(モデル名ではない)
  • 課題 — 入力と出力の長さ・位置対応が異なる系列変換
  • 代表応用音声認識(G-358、TF-144)

演習で確認する

G検定:G-358TF-144G-351G-023

すり替えに注意

誤った説明正しい理解
CTC=パディング損失 vs 長さ揃えの前処理(G-358のB)
CTC=物体検出モデル音声損失 vs 画像のYOLO等(G-358のC)
CTC=MFCC損失 vs 音響特徴量(G-023)
CTC=CNN系列損失 vs 画像畳み込み
CTC=整列ラベルが必須明示的対応がなくても学習しやすくする(TF-144)

よくある質問

CTCは何ですか?

Connectionist Temporal Classificationの略で、音声認識のように入力フレーム列と出力文字列の対応が明示されていない場合でも学習しやすくする損失関数です。系列の長さが異なるタスクで重要です(G-358TF-144)。

CTCとパディングは同じですか?

いいえ。パディングは系列の長さを揃えるための前処理です。CTCは整列情報なしでも学習できる損失関数であり、G-358の誤答Bはパディングの説明です。

CTCとMFCCは同じですか?

いいえ。MFCCは音声波形から抽出する音響特徴量です。CTCは系列変換を学習するための損失関数です。音声認識パイプラインではMFCCで特徴を作り、CTCでラベルとの対応を学ぶ、というように役割が異なります。