CTC(Connectionist Temporal Classification)は、音声認識のように「入力系列と出力系列の長さが一致せず、対応関係(アラインメント)も不明」な系列ラベリング問題を、アラインメントの明示的な教師データなしで学習するための損失関数・デコード手法です。End-to-End音声認識の基礎技術として、深層学習による系列変換を理解するうえで重要な項目です。
※この項目はシラバス2026では出題対象外(オプション)ですが、前提知識として重要なため解説します。
📖 概要
音声認識では、入力(音響特徴量のフレーム系列)は数百〜数千ステップに及ぶ一方、出力(文字や音素の系列)ははるかに短く、しかも「どのフレームがどの文字に対応するか」という対応付けは通常与えられていません。従来の音声認識システムは、音響モデル・発音辞書・言語モデルなどを個別に構築し、隠れマルコフモデル(HMM)でアラインメントを扱う複雑なパイプラインを必要としていました。
CTCは、ネットワークの各時刻の出力に「ブランク(空白)」という特殊ラベルを追加し、「可能なすべてのアラインメントの確率の総和」を出力系列の確率として定義することで、この問題を解決します。これにより、RNNなどの系列モデルと組み合わせて、音声から文字列への変換を単一のニューラルネットワークで直接学習するEnd-to-Endモデルが実現できます。
学習時には、膨大な数のアラインメントに関する確率の総和を動的計画法である前向き・後ろ向きアルゴリズムで効率的に計算し、推論時にはビームサーチなどで最も確からしい出力系列を探索します。この「学習」と「推論」の両面を押さえることが本項目のポイントです。
🔍 キーワード解説
End-to-Endモデル
End-to-Endモデルとは、入力から出力までの変換全体を、途中の中間処理(特徴抽出、アラインメント推定、辞書引きなど)を個別に設計することなく、単一のニューラルネットワークとして一括で学習するモデルを指します。音声認識では、音響モデル・発音辞書・言語モデルを分けて作る従来型パイプラインに対し、音声特徴量から文字系列を直接出力する方式がEnd-to-Endと呼ばれます。CTCは、正解のアラインメントを与えなくても系列全体の損失を定義できるため、End-to-End音声認識を可能にした代表的な仕組みの1つです。
CTCの仕組み(ブランクと縮約)
CTCではラベル集合にブランク記号(ここでは「-」と書きます)を追加し、ネットワークは各時刻ごとに「各ラベルまたはブランク」の確率分布を出力します。時刻数と同じ長さのラベル列(パス)から、(1)連続する同じラベルを1つにまとめる、(2)ブランクを取り除く、という縮約操作で最終的な出力系列を得ます。例えば「a a - b b」も「- a b - -」も、縮約するとどちらも「ab」になります。逆に「aa」のように同じ文字が続く単語は、間にブランクを挟んだパス(「a - a」など)でしか表現できません。出力系列の確率は、その系列に縮約されるすべてのパスの確率の総和として定義され、この総和(の対数)を最大化するように学習します。
前向き・後ろ向きアルゴリズム
前向き・後ろ向きアルゴリズムは、上記の「すべてのパスの確率の総和」を効率的に計算するための動的計画法です。パスを1本ずつ列挙すると組合せ爆発が起きますが、「時刻tまでにラベル列の先頭s個分に到達しているパスの確率の和(前向き確率)」と「時刻t以降でラベル列の残りを生成する確率の和(後ろ向き確率)」を漸化式で順に計算すれば、多項式時間で総和が求まります。これはHMMの前向き・後ろ向きアルゴリズムと同種の考え方です。前向き確率と後ろ向き確率の積から各時刻・各ラベルに関する勾配が計算でき、誤差逆伝播法によるネットワークの学習が可能になります。
ビームサーチ
推論時には、確率が最大となる出力系列を求める必要があります。最も単純な方法は各時刻で最大確率のラベルを選ぶ貪欲法(ベストパス復号)ですが、「複数のパスが同じ系列に縮約される」効果を無視するため、必ずしも最適な系列は得られません。ビームサーチは、各時刻で確率の高い候補系列を上位k個(ビーム幅)だけ保持しながら探索を進める近似探索法で、全探索より大幅に少ない計算量で貪欲法より良い候補を見つけられます。CTCのビームサーチでは、同じ系列に縮約される複数の候補の確率を統合しながら探索する点が特徴で、言語モデルのスコアを組み合わせて精度を高めることも多く行われます。
📝 試験でのポイント
- ブランク記号の役割(同一文字の連続を表現する、無音・遷移部分を吸収する)と、縮約操作の具体例(与えられたパスがどの系列に縮約されるか)を問う問題が典型的です
- CTCが「アラインメントの教師データを必要としない」点、すなわちすべてのアラインメントを周辺化して総和を取る点を理解しましょう
- 前向き・後ろ向きアルゴリズムは「パスの総和を動的計画法で効率計算する」ためのものであり、HMMと共通の発想であることを押さえましょう
- 貪欲法(ベストパス)とビームサーチの違い、ビーム幅と計算量・精度のトレードオフを説明できるようにしましょう
- CTCは各時刻の出力を(条件付きで)独立に扱うため、出力間の依存関係のモデル化は弱く、言語モデルとの併用やアテンション系手法との対比が話題になります
📚 まとめ
CTCはブランク記号と縮約操作を導入し、出力系列の確率を「すべてのアラインメントの総和」として定義することで、アラインメント不要のEnd-to-End系列学習を可能にします。学習では前向き・後ろ向きアルゴリズムにより総和と勾配を効率的に計算し、推論ではビームサーチで確からしい系列を探索します。音声認識を代表とする「長さの異なる系列変換」の基礎として、仕組みの流れを一通り説明できるようにしておきましょう。
