訓(xùn)練自動語音識別( ASR )模型的損失函數(shù)并不是一成不變的。舊的損失函數(shù)規(guī)則不一定是最優(yōu)的??紤]一下 connectionist temporal classification ( CTC ),看看改變它的一些規(guī)則如何能夠減少 GPU 內(nèi)存,這是訓(xùn)練和推斷基于 CTC 的模型所需的內(nèi)存,等等。
聯(lián)結(jié)主義時間分類綜述
若你們要訓(xùn)練一個 ASR 模型,無論是卷積神經(jīng)網(wǎng)絡(luò)還是遞歸神經(jīng)網(wǎng)絡(luò)、transformer 還是組合,你們很可能是用 CTC 損失訓(xùn)練它。
CTC 簡單方便,因為它不需要每幀關(guān)于“什么聲音何時發(fā)音”(所謂的音頻文本時間對齊)的信息。在大多數(shù)情況下,這種知識是不可用的,就像在一個典型的 ASR 音頻數(shù)據(jù)集中,關(guān)聯(lián)文本沒有時間標(biāo)記。
真正的時間校準(zhǔn)并不總是微不足道的。假設(shè)大部分錄音沒有講話,結(jié)尾只有一個簡短短語。 CTC 損失并不能告訴模型何時準(zhǔn)確地發(fā)出預(yù)測。相反,它允許每一種可能的對齊,并且只調(diào)整這些對齊的形式。
下面是 CTC 如何管理所有可能的方式來將音頻與文本對齊。
首先,對目標(biāo)文本進(jìn)行標(biāo)記化,即將單詞切成字母或單詞片段。結(jié)果單元的數(shù)量(無論它們是什么)應(yīng)小于音頻“時間段”的數(shù)量:長度為 0.01 到 0.08 秒的音頻段。
如果時間段少于單位,則算法失敗。在這種情況下,你應(yīng)該縮短時間。否則,只有 RNN 傳感器可以挽救您。如果時間框架與單位一樣多,那么只能有一個對齊(百萬分之一的情況)。
大多數(shù)時候,時間段比單位要長得多,因此一些幀沒有單位。對于這種空幀, CTC 有一個特殊的 單元。本單元告訴您,在這個特定的框架下,模型沒有任何內(nèi)容可以提供給您。這可能是因為沒有演講,或者模型太懶,無法預(yù)測有意義的東西。 CTC 最重要的規(guī)則 提供了如果模型不想做什么也不能預(yù)測的能力。
其他規(guī)則與單元延續(xù)有關(guān)。假設(shè)您的單元是一個持續(xù)時間超過一幀的元音。模型應(yīng)在兩幀中的哪一幀上輸出單元? CTC 允許在多個連續(xù)幀上進(jìn)行相同的單位發(fā)射。但是,應(yīng)該將相同的連續(xù)單元合并為一個單元,以將識別結(jié)果轉(zhuǎn)換為一系列類似文本的單元。
現(xiàn)在,如果標(biāo)記化文本本身包含相同的重復(fù)單位,如“ ll ”或“ pp ”,該怎么辦?如果不進(jìn)行處理,這些單元將合并為一個單元,即使它們不應(yīng)該合并。對于這種特殊情況, CTC 有一條規(guī)則,如果目標(biāo)文本有重復(fù)的單位,那么在推理過程中這些單位必須用 分隔。
綜上所述,在幾乎每一幀中,模型都可以從上一幀 發(fā)射相同的單元,或者如果下一幀與上一幀不同,則可以發(fā)射下一個單元。這些規(guī)則比 規(guī)則更為復(fù)雜,對于反恐委員會來說,它們并不完全必要。
反恐委員會的執(zhí)行
以下是如何表示 CTC 損失。與機器學(xué)習(xí)中的大多數(shù)損失函數(shù)一樣,它通常表示為一個動態(tài)算法,將這些規(guī)則應(yīng)用于訓(xùn)練語句或模型的 softmax 輸出。
在訓(xùn)練中,損失值和梯度由適用于 CTC 規(guī)則的 Baum–Welch algorithm 根據(jù)所有可能路線的條件概率計算得出。 CTC 實現(xiàn)通常有數(shù)百到數(shù)千行代碼,很難修改。
幸運的是,還有另一種執(zhí)行反恐委員會的方法。除了其他應(yīng)用領(lǐng)域外,加權(quán)有限狀態(tài)傳感器( WFST )方法允許模型將動態(tài)算法表示為一組圖形和相關(guān)圖形操作。這種方法使您能夠通過將 CTC 規(guī)則應(yīng)用于特定的音頻和文本,并通過計算損失和梯度來解耦 CTC 規(guī)則。
CTC WFST 應(yīng)用程序
有了 WFST ,您可以輕松地采用 CTC 規(guī)則,并使用不同的標(biāo)準(zhǔn),如最大互信息( MMI )。這些模型通常具有比 CTC 模型更低的字錯誤率( WER )。 MMI 將先前的語言信息納入培訓(xùn)過程。
與 CTC 相比, MMI 不僅最大化了最可行路徑的概率,而且最小化了其他路徑的概率。為此, MMI 有一個所謂的分母圖,它可以在訓(xùn)練期間占用大量 GPU 內(nèi)存。幸運的是,可以修改一些 CTC 規(guī)則以減少分母內(nèi)存消耗,而不會影響語音識別的準(zhǔn)確性。
此外, CTC 規(guī)則的 WFST 表示,或所謂的 topology ,可用于對 CTC 模型進(jìn)行 WFST 解碼。為此,您可以將 N -gram 語言模型轉(zhuǎn)換為 WFST 圖,并將其與拓?fù)鋱D組合在一起。生成的解碼圖可以傳遞給,例如, Riva CUDA WFST Decoder 。
解碼圖可能很大,以至于無法放入 GPU 內(nèi)存。但通過一些 CTC 拓?fù)湫薷?,您可以減少 CTC 的解碼圖形大小。
CTC 拓?fù)?/p>
圖 1 顯示了 CTC 拓?fù)洌?Correct CTC 。這是一個帶自循環(huán)的有向完整圖,因此對于 N 單元(包括空白),有 N 狀態(tài)和弧的平方數(shù)。
正確的反恐委員會是最常用的反恐委員會代表。看看這個拓?fù)洚a(chǎn)生的典型大小。對于 LibriSpeech 4 字語言模型和 256 個模型詞匯單元,解碼圖大小為~ 16Gb 。對于型號詞匯表大小為 2048 的 32Gb GPU ,僅當(dāng)批次大小為 1 時,才可以進(jìn)行冷啟動 MMI 培訓(xùn)。
圖 1.三單元詞匯表的正確 CTC 示例:《 blank 》、 a 和 B
通過刪除一些 CTC 規(guī)則來減少 Correct CTC 引起的內(nèi)存消耗。首先,使用 刪除重復(fù)單元的強制分隔。如果沒有這個規(guī)則,您最終會得到一個名為 CompactCTC 的拓?fù)洌▓D 2 )。它有 3 個 N – 2 個弧用于 N 單元。
圖 2.緊湊型 CTC 示例
盡管有純
(虛擬)弧,但這種拓?fù)浣Y(jié)構(gòu)可用于訓(xùn)練和解碼,不會對識別質(zhì)量產(chǎn)生負(fù)面影響。如果您想知道這是如何工作的,請參閱 CTC Variations Through New WFST Topologies 或 執(zhí)行 NVIDIA NeMo 。
使用 Compact CTC 的解碼圖形大小比使用 Correct CTC 的小四分之一。它還需要 2x 更少的 GPU 內(nèi)存用于 MMI 訓(xùn)練。
現(xiàn)在在多個連續(xù)幀上丟棄相同的單位發(fā)射,只保留 規(guī)則。這樣,您得到的拓?fù)渲挥幸粋€狀態(tài)和 N 單元的 N 弧。
這是可能的最小 CTC 拓?fù)?,所以我們稱之為最小 CTC (圖 3 )。它需要更少的 GPU 內(nèi)存用于 MMI 訓(xùn)練(與 Correct CTC 相比減少了 4 倍),但與基線相比,使用 Minimal CTC 拓?fù)涞?MMI 訓(xùn)練模型的精度會降低。
最小的拓?fù)溥€產(chǎn)生最小的解碼 WFST ,其大小為基線圖的一半。用 Minimal CTC 編譯的解碼圖與用 Correct CTC 或 Compact CTC 構(gòu)建的模型不兼容。
圖 3.最小 CTC 示例
最后,我回到了 Correct CTC ,但這次離開了強制分離重復(fù)單元,并放棄了單元繼續(xù)。名為 Selfless CTC 的拓?fù)浣Y(jié)構(gòu)旨在彌補 Minimal CTC 的缺點。
圖 1 和圖 4 顯示, Correct CTC 和 Selfles CTC 僅在非 自我循環(huán)中有所不同。這兩種拓?fù)浣Y(jié)構(gòu)還提供了相同的 MMI 模型精度,如果模型具有較長的上下文窗口,則可以提供更好的精度。然而, Selfless CTC 在解碼時也與 Minimal CTC 兼容。通過 Minimal CTC ,您只需增加 0.2% 的 WER ,即可將圖形大小減少 2 倍。
圖 4.Selfless CTC 示例;基于正確的 CTC
結(jié)論
有幾個技巧可以提高性能:
在解碼圖構(gòu)造和 MMI 訓(xùn)練中,使用 Compact CTC 代替 Correct CTC 。
為了最大程度地減小解碼圖形的大小,請使用 Selfles CTC 訓(xùn)練您的模型,并使用 Minimal CTC 解碼。
損失函數(shù)不是一成不變的:嘗試使用現(xiàn)有損失函數(shù)的 WFST 表示法并創(chuàng)建新的表示法。這很有趣!
關(guān)于作者
Aleksandr Laptev 是 ITMO 大學(xué)的博士生,也是 NVIDIA 的高級研究科學(xué)家。他的科學(xué)興趣是自動語音識別、語音合成( TTS )和自然語言處理。他撰寫開放獲取科學(xué)文章,為開放源代碼軟件做出貢獻(xiàn),并參加國際語音識別比賽。他目前的研究領(lǐng)域是可微加權(quán)有限狀態(tài)傳感器。
審核編輯:郭婷
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4994瀏覽量
103164 -
語音識別
+關(guān)注
關(guān)注
38文章
1742瀏覽量
112692
發(fā)布評論請先 登錄
相關(guān)推薦
評論