CTC模型简介
CTC(Connectionist temporal classification),可以理解為基于神經網絡的時序類分類。
比如語音識別的一幀數據,很難給出一個label,但是幾十幀數據就容易判斷出對應的發音label。
語音識別聲學模型的訓練屬于監督學習,需要知道每一幀對應的label才能進行有效的訓練,在訓練的數據準備階段必須要對語音進行強制對齊。?
CTC的引入可以放寬了這種一一對應的限制要求,只需要一個輸入序列和一個輸出序列即可以訓練。
有兩點好處:
1)、不需要對數據對齊和一一標注;
2)、CTC直接輸出序列預測的概率,不需要外部的后處理。
CTC解決這一問題的方法是,在標注符號集中加一個空白符號blank,然后利用RNN進行標注,最后把blank符號和預測出的重復符號消除。比如有可能預測除了一個"--a-bb",就對應序列"ab"。這樣就讓RNN可以對長度小于輸入序列的標注序列進行預測了。
RNN的訓練需要用到前向后向算法(Forward-backward algorithm),對于給定預測序列,比如“ab”,在各個字符間插入空白符號,建立起籬笆網絡(Trellis),然后對將所有可能映射到給定預測的序列都窮舉出來求和。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
如上圖,傳統的Framewise訓練需要進行語音和音素發音的對齊,比如“s”對應的一整段語音的標注都是s;而CTC引入了blank(該幀沒有預測值),“s”對應的一整段語音中只有一個spike(尖峰)被認為是s,其他的認為是blank。對于一段語音,CTC最后的輸出是spike的序列,不關心每一個音素對應的時間長度。
總結
- 上一篇: c语言正弦函数图像,正弦函数图像
- 下一篇: Vim激荡30年发展史