1行定義
CTCとは、入力のどの区間が出力のどの文字に当たるかが分からないデータでも、ブランク記号を導入して系列の変換を学習できるようにする手法のことです。
くわしく
CTC(Connectionist Temporal Classification)は、2006年にグレイブスらが発表した、系列を別の系列に変換するモデルの学習方法です。音声認識で、音声から文字列を直接出力するEnd-to-Endのモデルを学習するときによく使われます。
解決した問題
音声は、10ミリ秒ごとなどの細かいフレームに区切って処理します。1秒の発話でも100フレームほどになり、出力する文字の数よりずっと多くなります。しかも、どのフレームがどの文字に当たるかは、ふつうの学習データには書かれていません。従来は、HMMを使ってフレームと音素の対応を推定したり、人手で区切りを付けたりする必要がありました。
しくみ
CTCでは、ニューラルネットワークが各フレームで、どの文字か、またはブランク(何も出さない)かの確率を出力します。フレームごとの出力の並びは、次の規則で文字列に変換します。
- 連続する同じ記号を1つにまとめる。
- ブランクを取り除く。
たとえば「c c - a a - - t」(-はブランク)は「cat」になります。「hello」のように同じ文字が続く場合は、「l - l」のように間にブランクを挟みます。
同じ文字列になる出力の並びは、たくさんあります。CTCは、それらの確率をすべて足した値を正解の文字列の確率とし、これを大きくするように学習します。この計算は、動的計画法で効率よく行います。
特徴と位置づけ
出力の長さは、入力のフレーム数以下になります。また、各フレームの出力は、入力が与えられたもとで互いに独立だと仮定します。そのため、単語のつながりを補う言語モデルと組み合わせて精度を上げることがよくあります。原論文では双方向LSTMと組み合わせ、音素認識でHMMを使う従来の手法を上回りました。手書き文字の認識など、音声以外の系列にも使えます。
覚え方
「同じ記号はまとめ、ブランクは消す」と覚えます。
G検定での出題
出題のされ方
入力と出力で長さの異なる系列を、フレームごとの正解なしに学習できる点、ブランクと同じ文字の連続をまとめる規則、HMMを使う従来の音声認識との違いが問われます。
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
CTCで、フレームごとの出力が「c c - a a - - t」(-はブランク)のとき、最終的な出力は「cat」になる。
答えを見る
答え ◯ 正しい
まず連続する同じ記号を1つにまとめて「c - a - t」とし、次にブランクを取り除くと「cat」になります。
-
CTCでは、各フレームの出力が、入力が与えられたもとで互いに独立であると仮定している。
答えを見る
答え ◯ 正しい
この仮定により計算は簡単になりますが、前後の文字のつながりはとらえにくくなります。そのため、単語のつながりを補う言語モデルと組み合わせることがよくあります。
-
CTCは、出力する文字列が、入力された音声のフレーム数より長い場合にも使える。
答えを見る
答え × 誤り
CTCは、フレームごとに1つの記号を出力し、それをまとめて文字列を作ります。そのため、出力の長さは入力のフレーム数を超えられません。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目28 音声処理)
- Alex Graves, Santiago Fernández, Faustino Gomez, Jürgen Schmidhuber, Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurrent Neural Networks, ICML 2006
- Alex Graves, Navdeep Jaitly, Towards End-To-End Speech Recognition with Recurrent Neural Networks, ICML 2014, PMLR 32(2):1764–1772