如何解决 Iterative 半监督训练 在 ASR 训练中难以落地的问题丨RTC Dev Meetup
前言
「語(yǔ)音處理」是實(shí)時(shí)互動(dòng)領(lǐng)域中非常重要的一個(gè)場(chǎng)景,在聲網(wǎng)發(fā)起的「RTC Dev Meetup丨語(yǔ)音處理在實(shí)時(shí)互動(dòng)領(lǐng)域的技術(shù)實(shí)踐和應(yīng)用」活動(dòng)中,來(lái)自微軟亞洲研究院、聲網(wǎng)、數(shù)美科技的技術(shù)專家,圍繞該話題進(jìn)行了相關(guān)分享。
本文基于數(shù)美科技 NLP 技術(shù)負(fù)責(zé)人李田在活動(dòng)中分享內(nèi)容整理。
01 半監(jiān)督訓(xùn)練在 ASR 領(lǐng)域的必要性
通用 ASR 的字準(zhǔn)確率雖然已經(jīng)非常高,但是在面向具體的場(chǎng)景(游戲場(chǎng)景、私聊場(chǎng)景、群聊場(chǎng)景、主播場(chǎng)景)時(shí),還是存在場(chǎng)景不匹配的問(wèn)題,因?yàn)橥ㄓ玫?ASR 在這些領(lǐng)域中的應(yīng)用相對(duì)比較困難,主要存在以下問(wèn)題。
1、標(biāo)注資源的稀缺性
對(duì)應(yīng)場(chǎng)景的標(biāo)注很難獲取,通常情況下無(wú)法快速獲得業(yè)務(wù)場(chǎng)景需要的大量標(biāo)注樣本。即使樣本的獲取很簡(jiǎn)單,但獲取標(biāo)注樣本仍是非常困難的事情,因?yàn)闃?biāo)注成本非常高。在創(chuàng)建項(xiàng)目或者確定產(chǎn)品方向的時(shí)候,會(huì)發(fā)現(xiàn)涉及領(lǐng)域的 ASR 任務(wù)時(shí)要先解決數(shù)據(jù)問(wèn)題。以前使用音素和文字拆分的時(shí)候,數(shù)據(jù)量要求比較小,而現(xiàn)在常使用端到端的技術(shù),動(dòng)輒 1000 個(gè)小時(shí)起步的數(shù)據(jù)量,不管是自行標(biāo)注還是借助比較知名的數(shù)據(jù)公司,在產(chǎn)品還沒(méi)開(kāi)始的情況下,其費(fèi)用都是很難接受的。
2、標(biāo)注質(zhì)量的不穩(wěn)定
在喚醒、Siri 交互等場(chǎng)景中,用戶知道后端會(huì)進(jìn)行轉(zhuǎn)錄,但大部分業(yè)務(wù)場(chǎng)景中人對(duì)于 ASR 轉(zhuǎn)錄是無(wú)感知的。
比如在與 Siri 溝通的時(shí)候,如果 Siri 沒(méi)聽(tīng)清楚說(shuō)話人表達(dá)的意思,那么人會(huì)進(jìn)行二次嘗試,使表達(dá)更加清楚即可。但是真實(shí)的業(yè)務(wù)層面,大部分情況下客戶并不知道后端在對(duì)其進(jìn)行 ASR 轉(zhuǎn)錄,比如直播平臺(tái)。其中可能會(huì)提供審核層面的需求,此時(shí)不可能通知主播聲音在被轉(zhuǎn)錄,咬字需要更清楚一些。吐字不清晰以及句法成分破碎帶來(lái)的標(biāo)注質(zhì)量是非常不穩(wěn)定的。
那么在標(biāo)注的時(shí)候怎么解決這些問(wèn)題呢?對(duì)數(shù)美業(yè)務(wù)而言,由于覆蓋整個(gè)互聯(lián)網(wǎng)中大量的類似社交場(chǎng)景,面臨著各式各樣五花八門的數(shù)據(jù)和特定術(shù)語(yǔ)等,因此對(duì)這類標(biāo)注的獲取難度非常大,同時(shí)標(biāo)注質(zhì)量也很難保證,但同源數(shù)據(jù)又可以輕易獲得場(chǎng)景的數(shù)據(jù),我們認(rèn)為半監(jiān)督方案是一個(gè)當(dāng)仁不讓的理想選擇。
如果曾經(jīng)接觸過(guò) NLP 或者 CV,相信你對(duì)半監(jiān)督會(huì)有比較明確的定義。在 ASR 這個(gè)領(lǐng)域,尤其基于端到端,目前一般來(lái)說(shuō)分為兩種:Self-training 和 Pre-training,其他不太常見(jiàn),或者目前來(lái)看不能在 ASR 領(lǐng)域獲得比較好的落地。
Self-training 體系主要圍繞大家熟知的 Pseudo labeling。核心方案主要基于 consistency regularization 邏輯。理論上來(lái)說(shuō),Pseudo label 其實(shí)是 true label 的一種噪音,在模型訓(xùn)練的時(shí)候,將 Pseudo label 和 true label 放在一起進(jìn)行訓(xùn)練,這本身是訓(xùn)練抗噪的過(guò)程,可以使模型逐步學(xué)習(xí)。Pre-training 非常簡(jiǎn)單。如果做 NLP 出身就會(huì)比較了解,原先是在對(duì)應(yīng)領(lǐng)域中訓(xùn)練對(duì)應(yīng)領(lǐng)域更合適的表征。這種任務(wù)一般圍繞的是表征的意義或者內(nèi)容的重構(gòu),不需要額外的標(biāo)簽,這些數(shù)據(jù)可以構(gòu)建無(wú)標(biāo)簽/無(wú)人工轉(zhuǎn)錄文字的 Pre-training 的訓(xùn)練任務(wù),再使用對(duì)應(yīng)場(chǎng)景的有人工轉(zhuǎn)錄數(shù)據(jù)進(jìn)行 ASR 任務(wù)訓(xùn)練。
01 半監(jiān)督訓(xùn)練在 ASR 領(lǐng)域的發(fā)展
1、Self-training
一般來(lái)說(shuō),Self-training 起始于 CV。從 2013 年的 Pseudo label ICML 第一次提出 Pseudo label 以來(lái),出現(xiàn)了各式各樣的新體系,諸如 2014 年 Learning with pseudo-ensembles(第一個(gè)體系),將 Pseudo label 與模型 Ensemble 進(jìn)行融合;2016 年 Regularization With Stochastic Transformations and Perturbations for Deep Semi-Supervised Learning 認(rèn)為 Pseudo label 本身的生成邏輯也應(yīng)該是同一個(gè)模型的不同擾動(dòng);2017 年 Mean teachers are better role models: Weight-averaged consistency targets 則著重關(guān)注如何生成更高質(zhì)量的標(biāo)簽,其采用模型平均的方式獲得更好的 teacher 模型,從而確保偽標(biāo)簽的質(zhì)量。
早在 2014 年、2016 年的兩篇論文中,就已經(jīng)提及到在 CV 中較火的領(lǐng)域進(jìn)行對(duì)比學(xué)習(xí),論文中的公式論證從很多層面上幾乎是一樣的,可以說(shuō)技術(shù)的發(fā)展是歷史的輪回。
2、Pre-training
Pre-training 主要集中在 NLP 領(lǐng)域,當(dāng)然在 CV 領(lǐng)域中也有諸如 ladder network 體系,包含 Pre-training 概念。但是 Pre-training 發(fā)展較好的領(lǐng)域還是 NLP。核心問(wèn)題在于 NLP 的底層特征是字符,這本身是一個(gè)非常離散的體系,是很難與 CV 這種稠密的數(shù)據(jù)輸入進(jìn)行比較的。
從這個(gè)體系來(lái)說(shuō),NLP 經(jīng)歷了多年的發(fā)展,從 1994 年的 N-gram-based 特征,到基于 NN 體系,再到后來(lái)對(duì) NN 體系內(nèi)部框架進(jìn)行設(shè)計(jì)所生成的 RNN 和 LSTM 等語(yǔ)言模型的興起,2017 年 ELMO 橫空出世,再到 2018 年 transformer 架構(gòu)出現(xiàn)。現(xiàn)在,不管是 BERT 或者是 GPT 等都在 NLP 領(lǐng)域的各種下游業(yè)務(wù)上都得到了比較充分的驗(yàn)證。
3、ASR 領(lǐng)域的半監(jiān)督發(fā)展
一般來(lái)說(shuō)會(huì)根據(jù) ASR 本身的時(shí)代將其拆成兩節(jié):
①基于音素/文本拆分的時(shí)代:現(xiàn)在很多情況下大家依然會(huì)用 kaidi 作為業(yè)務(wù)層面的 ASR 底層技術(shù)方案。該方案的半監(jiān)督訓(xùn)練邏輯為,聲學(xué)模型可以訓(xùn)練一個(gè)到 general 音素的模型,然后通過(guò)下游語(yǔ)言模型或 rescore 模型輸出具體業(yè)務(wù)所需的文字,從而達(dá)到部分半監(jiān)督的功能。從流程上,它更像是一種遷移學(xué)習(xí)。但是隨著 Alex Graves 在 2013 年完成 CTC 的博士論文后,端到端體系就開(kāi)始逐步嶄露頭角。兩年過(guò)后, EESEN 團(tuán)隊(duì)重新又把 CTC 運(yùn)到音素層面,使音素/文本拆分體系短暫地回歸。
②端到端的時(shí)代:LAS(listen attendance style) 體系興起,以及 CTC/LAS + LM hybrid 體系的興起,使端到端的效果、數(shù)據(jù)、模型質(zhì)量以及推理速度等,開(kāi)始逐步超越 Kaldi 或者傳統(tǒng)的音素/文本拆分模型架構(gòu),業(yè)界也開(kāi)始逐步步入端到端的時(shí)代。其時(shí)間脈絡(luò)為 CTC,Deep speech,Listen,attend and spell, 以及 Hybrid CTC/attention。
在 2017 年以后,隨著 Watanabi 提出 CTC/attention hybrid 和 ESPNET 框架的放出,端到端體系已初步完善并可應(yīng)用于工業(yè)上的各個(gè)業(yè)務(wù)。其提供了一套同Lattice 一樣靈活的聯(lián)合decode框架:基于hypotheses route的設(shè)計(jì),賦予后續(xù)shallow fusion 更加靈活的融合方案。事實(shí)上如果大家使用過(guò) ESPnet,就可以看到整個(gè) hypotheses 路徑設(shè)計(jì)非常靈活,可以引入各式各樣的技術(shù)方案對(duì)route進(jìn)行聯(lián)合打分或者 rescore。
由于不再采用音素等基礎(chǔ),且 CTC 和 Seq2Seq 本身訓(xùn)練成本就非常高,再加上實(shí)際的標(biāo)注數(shù)據(jù)的獲取難度,端到端體系對(duì)數(shù)據(jù)依賴的短板逐步成為了其落地的核心瓶頸。如果在早期尤其是 2015 年-2016 年在大廠做 ASR,大家實(shí)際落地的經(jīng)驗(yàn)是,在 1000 小時(shí)過(guò)后再考慮端到端。
由此,如何約束端到端的數(shù)據(jù)需求成為后期(從 2019 年-2020 年開(kāi)始)優(yōu)化端到端,進(jìn)而解決端到端落地的難題,也是學(xué)術(shù)界和工業(yè)界核心考量的問(wèn)題。自此,基于 ASR 的 Pre-training 和 Self-training 開(kāi)始逐步登上歷史舞臺(tái)。此前,雖然進(jìn)行過(guò)相關(guān)的研究,但是影響范圍較小,直到 2019 年和 2020 年,Facebook AI 分別提出了這兩個(gè)領(lǐng)域能夠工業(yè)落地的,且具備巨大的發(fā)展前景的兩篇論文發(fā)表,人們才開(kāi)始關(guān)注。
wav2vec: Unsupervised pre-training for speech recognition 是 Facebook 提出的基于 Pre-training 的技術(shù)方案。其原理同 word2vec 非常接近,利用負(fù)采樣技術(shù)訓(xùn)練一個(gè)未來(lái)時(shí)刻表征預(yù)測(cè)的任務(wù)。由于其訓(xùn)練結(jié)果可作為任意音頻下游任務(wù)的特征,所以這一套體系是目前工業(yè)界很多大廠都在使用的非常重要的音頻技術(shù)基礎(chǔ)。
Self-training for end to end speech recognition 是 Facebook AI 的 Jacob 團(tuán)隊(duì)的研究,旨在全面的分析 Pseudo label 體系對(duì)于 ASR 的實(shí)際落地應(yīng)用效果。他們當(dāng)時(shí)給出了 Pseudo label 體系在英文 ASR 領(lǐng)域的幾個(gè)核心數(shù)據(jù)集上的 strong baseline,并且第一次系統(tǒng)的闡述了 Pseudo label 體系在 ASR 領(lǐng)域落地需要解決的幾個(gè)核心問(wèn)題。
4、Pre-training VS Self-training in ASR
在 2020 年,由于客戶逐步變多,場(chǎng)景覆蓋也越來(lái)越廣,我們也同樣面臨:要對(duì)某些特定的場(chǎng)景進(jìn)行單獨(dú)的 ASR 構(gòu)建,以獲取相比于競(jìng)品更好的模型效果。單純的利用音素/文本架構(gòu),通過(guò)替換語(yǔ)言模型來(lái)應(yīng)付各個(gè)領(lǐng)域的需求已不能獲得我們所期望的效果。但與此同時(shí),單獨(dú)對(duì)每個(gè)場(chǎng)景要構(gòu)建自己的端到端 ASR,從數(shù)據(jù)標(biāo)注上又是難以接受的。因此我們就開(kāi)始考量選擇 Pre-training 還是 Self-training。
原本我們考慮選擇其他大廠類似的體系,比如 Pre-training 的 wav2vec,但是我們當(dāng)時(shí)多次嘗試了 wav2vec 的實(shí)際操作,成本非常高,下游的 Post-pretraining 在對(duì)應(yīng)領(lǐng)域中的訓(xùn)練加上 Pre-training 本身的訓(xùn)練時(shí)間耗時(shí)也非常漫長(zhǎng),導(dǎo)致模型迭代周期會(huì)被拉長(zhǎng)。重要的是,在 Pre-training+Post-pretraining 階段暫時(shí)是沒(méi)有任何的 ASR 模型產(chǎn)出的,對(duì)于新業(yè)務(wù)要求快速迭代的場(chǎng)景,這是難以接受的。
基于上述矛盾,我們最終還是傾向于在業(yè)務(wù)中使用 Self-training 的技術(shù)方案。因?yàn)?Self-training 的技術(shù)方案可進(jìn)行每訓(xùn)練一個(gè)模型就進(jìn)行評(píng)估,先使用后優(yōu)化,這對(duì)于業(yè)務(wù)來(lái)說(shuō)是比較友好的體系。
5、近期 ASR 領(lǐng)域 Self-training 發(fā)展軌跡
錨定了 Self-training 目標(biāo)后,從 2020 年開(kāi)始我們就在對(duì)這個(gè)領(lǐng)域進(jìn)行調(diào)研跟進(jìn)。我們發(fā)現(xiàn),在這個(gè)領(lǐng)域中主要還是 Facebook,Google,三菱 做得比較完善,其他諸如老牌 ASR 公司 Nuance 和一些高校也會(huì)針對(duì)一些具體問(wèn)題發(fā)表一些改進(jìn)方案或問(wèn)題研究。在 2020 年,他們的研究方向主要如下:
(1) 2020 年
Facebook:
SELF-TRAINING FOR END-TO-END SPEECH RECOGNITION,
END-TO-END ASR: FROM SUPERVISED TO SEMI-SUPERVISED LEARNING WITH MODERN ARCHITECTURES,
ITERATIVE PSEUDO-LABELING FOR SPEECH RECOGNITION
其研究脈絡(luò)為 樸素 Pseudo label 在 CTC 框架上的 strong baseline 及調(diào)研;樸素 Pseudo label 在 CTC/Attention hybrid 架構(gòu)上的效果;多輪迭代式 Pseudo label 體系的研究。
Google:
由于 Google 的 Iterative pseudo-labeling 在 CV 領(lǐng)域已經(jīng)有非常強(qiáng)的技術(shù)底蘊(yùn),所以一上來(lái)他們就給出了他們的多輪迭代式 Pseudo label+model ensemble 方案:Noisy Student Training,并拿下當(dāng)年 Librispeech100 + 860 SOTA。當(dāng)然,Iterative 訓(xùn)練中其實(shí)存在很多坑,尤其是多輪迭代所帶來(lái)的數(shù)據(jù)實(shí)驗(yàn)數(shù)量的爆炸。這個(gè)在我們的方案中有明確的闡述。
三菱:
Iterative 模式,流程上是先對(duì) teacher 進(jìn)行多輪的 pseudo-labeling 訓(xùn)練,每訓(xùn)練一個(gè) pseudo-labeling,內(nèi)部就要打一遍標(biāo)簽,這樣的多輪次會(huì)使訓(xùn)練變得很煩瑣。所以從 2021 年開(kāi)始,我們也逐步在各大領(lǐng)域中看到了 on-the-fly 的方式。比如三菱在 2012 年提出的 MPL(基于 mean teacher 演化而來(lái))。但是 on-the-fly 意味著需要實(shí)時(shí)生成 label,而 ASR 的 label 生成質(zhì)量同 decode 計(jì)算成本直接相關(guān)。簡(jiǎn)單的 CTC 的 greedy search 比較快,但其生成的轉(zhuǎn)錄文字質(zhì)量較差;而較為常見(jiàn)的 shallow fusion 方案,僅由多個(gè)模型融合打分 decode 轉(zhuǎn)錄產(chǎn)生文字,基本上不可能在訓(xùn)練的時(shí)候?qū)崟r(shí)產(chǎn)生。所以一般來(lái)說(shuō),on-the-fly 模式的最終效果其實(shí)不如 Iterative 模式。
其他:
Saleforce 來(lái)了一次“文藝復(fù)興”, 重新將偽標(biāo)簽訓(xùn)練用在了 Essen 框架上。其標(biāo)簽生成采用了 CTC greedy search。Nuance 作為老牌 ASR 技術(shù)廠商,通過(guò)闡述 FixMatch 理論詮釋了半監(jiān)督的理論本質(zhì)實(shí)際上就是 Consistency Training。
(2) 2021 年
三菱:
由于 on-the-fly 模式的缺陷,三菱在 2021 年發(fā)表了 advanced MPL,又回歸了 Iterative 模式。他們將 teacher 模型和后續(xù)的 on the flying 訓(xùn)練流程拆開(kāi),同時(shí)切換成了對(duì)于音頻效果更加穩(wěn)健的 Conformer 框架。最后超越了 Google 的 NST 方案,成為目前的第二名。
Facebook:
Facebook AI 在 2021 年使用了 cache 機(jī)制,在模型訓(xùn)練過(guò)程當(dāng)中同步另外一個(gè)進(jìn)程 decode,如果 cache decode 滿了,就把訓(xùn)練切成 cache 數(shù)據(jù)和 label 數(shù)據(jù)進(jìn)行聯(lián)合訓(xùn)練,N 步過(guò)后 catch 清空,然后重新進(jìn)行 decode。可見(jiàn),雖然 Facebook AI 說(shuō)自己是 on-the-fly 模式,但本質(zhì)來(lái)說(shuō)還是輪次概念。其使用 36 層 transformer,拿到了截至目前 Librispeech100+860 的 SOTA,甚至可以持平 ESPnet 直接訓(xùn)練 Librispeech960 了。
03 我們半監(jiān)督方案解決的問(wèn)題
1、Iterative or on-the-fly
處于效果需求和目前學(xué)術(shù)界工業(yè)界的結(jié)論,我們的技術(shù)方向最終還是錨定了 Iterative 模式。
2、Iterative 的問(wèn)題
但 Iterative 模式訓(xùn)練起來(lái)是非常煩瑣的,由于偽標(biāo)簽數(shù)據(jù)的生成是每一輪訓(xùn)練過(guò)后均需要重新生成的,且若要達(dá)到很好的結(jié)果,根據(jù) Google 和 Facebook 的經(jīng)驗(yàn),需要多輪迭代。
那么每輪迭代都有三個(gè)問(wèn)題,第一,如何在偽標(biāo)簽上面產(chǎn)生高質(zhì)量的數(shù)據(jù)?這其實(shí)本質(zhì)上來(lái)說(shuō)是最簡(jiǎn)單的問(wèn)題,我們有各式各樣的 decode 算法,哪個(gè)算法好就用哪個(gè)。第二,如何篩選出高質(zhì)量的偽標(biāo)簽數(shù)據(jù)?因?yàn)槲覀儾恢滥膫€(gè)標(biāo)簽是對(duì)的,不管質(zhì)量再高,都會(huì)有一些問(wèn)題存在,此時(shí)需要研究如何將出現(xiàn)問(wèn)題的比例降低,有哪些方案可以降低。第三,整個(gè) Iterative 模式中最大的難題就是,如何做標(biāo)注數(shù)據(jù)和無(wú)標(biāo)注數(shù)據(jù)的數(shù)據(jù)平衡。
Google 的 NST 的體系要做五輪迭代,就意味著每一輪的標(biāo)注和無(wú)標(biāo)注的配比都是不一樣的。第二輪大概是 2:7,第三輪是 1:3,在 librispeech 100+860,這個(gè)有標(biāo)簽:無(wú)標(biāo)簽 維護(hù)在 1:3 上下被驗(yàn)證是比較合理的比值。但是在不同的任務(wù)線,其配比也不相同。Facebook 在 Librispeech+LibriVox 數(shù)據(jù)集上實(shí)驗(yàn)結(jié)果證明其比值需要在 1:10 以上。這導(dǎo)致最終在業(yè)務(wù)中進(jìn)行落地的時(shí)候,實(shí)驗(yàn)成本非常巨大。比如有五輪實(shí)驗(yàn), 每輪訓(xùn)練均需進(jìn)行不同比值的多個(gè)數(shù)據(jù)實(shí)驗(yàn),訓(xùn)練完成后挑選模型進(jìn)行 decode 評(píng)估,然后在下一輪再次進(jìn)行不同比值的多個(gè)數(shù)據(jù)實(shí)驗(yàn),這樣迭代五輪。由于 ASR 訓(xùn)練成本高昂,每一輪的訓(xùn)練節(jié)奏都令人非常痛苦。
另外,在有限的標(biāo)注層面,如何進(jìn)行模型的冷啟動(dòng)呢?一般來(lái)說(shuō),初始的訓(xùn)練數(shù)據(jù)是有標(biāo)簽的,訓(xùn)練數(shù)據(jù)都非常少。比如 Iterative 中初始的標(biāo)簽數(shù)據(jù)一般來(lái)說(shuō)非常少,只占能獲得的數(shù)據(jù)的 1/10 左右,那么怎么進(jìn)行冷啟動(dòng)也就成為一個(gè)核心問(wèn)題。
04 Improved NLPL 解決方案
基于這些問(wèn)題,我們提出了自己的解決方案,發(fā)表于 Improved noisy Iterative Pseudo-Labeling for Semi-superivised Speech Recogntion 中。現(xiàn)在先給大家提前簡(jiǎn)單闡述一下我們的解決方案是什么樣的。
1、模型框架
從 2020 年以后,我們就不再使用 Kaldi 體系了,而是切換到了一個(gè)類 ESPnet 的自研究框架。模型框架上,對(duì)于 CTC 的前端 sharedEncoder 和 LAS 的 decoder,我們均采用的是 transformer,圖 1 左側(cè)展示的是 Watanabi 在 CTC/Attention hybrid 那篇論文中的圖,右邊是對(duì)模型框架的介紹,模型參數(shù)方面,SharedEncoder 之前有一個(gè) subLayer,采用的是 2 層 (33+512) 的 CNN,步進(jìn)為 2,這可能與 ESPnet 中的框架略微不太一樣,但基本上大同小異。ransformer 我們目前采用了 128 的 transformer,512 維度,FFN 是 2048,這跟大部分的 formerbase 模型也幾乎是一樣的。另外,AttentionDecoder 我們采用的是 6 層 transformer,它的參數(shù)配置跟 Encoder 也是一樣的。語(yǔ)言模型方面,LT 人!插入的 4 我們額外添加了一個(gè) 6 層的 transformer 語(yǔ)言模型,其余參數(shù)配置與 BERT 是一樣的,12 頭,768dims,FFN 為 3072,這是整體的模型框架。
從 2020 年以后,我們就不再使用 Kaldi 體系了,而是切換到了一個(gè)類 ESPnet 的自研究框架。模型框架上,對(duì)于 CTC 的前端 sharedEncoder 和 LAS 的 decoder,我們均采用的是 transformer,圖 1 左側(cè)展示的是 Watanabi 那篇 CTC/Attention hybrid 論文中的圖,右邊是對(duì)我們模型框架的介紹。模型參數(shù)方面,SharedEncoder 的 sublayer 目前采用的是 2 層 (3*3+512) 的 CNN,步進(jìn)為 2,Transformer 我們目前采用了 12 層 8 頭,512 維度,FFN 是 2048,這跟大部分的 Transformer-based 聲學(xué)模型也幾乎是一樣的。另外,AttentionDecoder 我們采用的是 6 層 transformer,它的參數(shù)配置跟 Encoder 也是一樣的。
對(duì)于語(yǔ)言模型,我們額外添加了一個(gè) 6 層的 transformer 語(yǔ)言模型,其余參數(shù)配置與 BERT 是一樣的,12 頭,768dims,FFN 為 3072。
■圖 1
2、其他通用設(shè)置
我們的實(shí)驗(yàn)數(shù)據(jù)采用 Librrispeech 100+860,100 作為有標(biāo)注數(shù)據(jù),860 作為無(wú)標(biāo)注數(shù)據(jù)。LM 數(shù)據(jù)是 Librispeech 自己的訓(xùn)練數(shù)據(jù),以及官方提供的 800W 的文本語(yǔ)料。我們的聲樂(lè)特征采用的是 100 維 Fbank+3 維 pitch。為了縮減文本標(biāo)簽個(gè)數(shù),我們使用了 BPE,把 word 數(shù)量壓縮到 7002 個(gè) pieces 以減少最終的輸出,同時(shí)加速 CTC 的訓(xùn)練。
訓(xùn)練配置方面涉及學(xué)習(xí)率,學(xué)習(xí)率與 transformer 相似,但存在差異點(diǎn),就是在 decay 到最后位置的時(shí)候,我們會(huì)提前 5000step decay 到最后穩(wěn)定值,然后再緩慢保持一段時(shí)間。這跟后面維護(hù)模型穩(wěn)定的技術(shù)是直接相關(guān)的,讓它能夠在那段時(shí)間之內(nèi)穩(wěn)定地訓(xùn)練一段時(shí)間,使模型平均能夠跟得上。
3、如何在未標(biāo)注的數(shù)據(jù)上產(chǎn)生偽標(biāo)簽
目前業(yè)內(nèi)比較常見(jiàn)的產(chǎn)生 decode 算法且比較高質(zhì)量的方法是 shadow fusion 和 deep fusion 體系。我們采用了 shadow fusion,并且將聲學(xué)模型 CTC、LAS 以及 LM 相融合進(jìn)行搜索,bean size 為 50。大致流程上同 ESPNET 差不多,但是我們有兩點(diǎn)小小的改動(dòng):
第一個(gè)就是我們采用 CTC 貪心搜索的方式進(jìn)行句子終結(jié)的判斷,而 ESPNET 不是這么做的,它有自己的 end detact 算法。
第二個(gè)就是我們不會(huì)對(duì)路徑進(jìn)行過(guò)多的剪枝,而是盡可能多的把路徑保留下來(lái)。
4、如何篩選高質(zhì)量的偽標(biāo)簽數(shù)據(jù)進(jìn)行下一輪半監(jiān)督訓(xùn)練
在進(jìn)行偽標(biāo)簽生成的時(shí)候,很多數(shù)據(jù)的質(zhì)量其實(shí)是不敢恭維的,尤其是前期的訓(xùn)練,比如 NST 或者 Iterative Labeling 的第一輪或第二輪,此時(shí)模型在 librispeech dev 和 test 上的 WER 可能接近 9 或者 10 個(gè)點(diǎn)以上。
針對(duì)這種情況,Google 和 Facebook 采取粗暴排序取百分位的方法,類似于 ESPNET 中的 hypothesis 的分,然后在 decode 過(guò)程當(dāng)中進(jìn)行概率加和,把概率從小從大進(jìn)行排序,然后取其中的 90%。這里可能存在置信率斷崖式的情況,比如前面 85% 的數(shù)據(jù)的概率分布非常相近,然后在 85%~95% 的位置,概率突然出現(xiàn)非常大的差異,掉到可能幾個(gè)點(diǎn)以上變化的概率。為了應(yīng)對(duì)上述問(wèn)題,我們采用分布檢驗(yàn)的方式進(jìn)行樣本抽取:我們先假定它服從高斯分布,然后只保留高斯分布雙邊置信區(qū)間 90% 或者 95% 來(lái)做訓(xùn)練。這里的雙邊置信區(qū)間 90%/95%,并不代表數(shù)據(jù)保留 90% 和 95%,而是在高斯分布的情況下保留置信區(qū)間在這個(gè)里面的數(shù)據(jù),所以它很有可能是少于直接保留 90%數(shù)據(jù)的。
5、標(biāo)注/無(wú)標(biāo)注數(shù)據(jù)配比如何平衡,才能讓模型不會(huì)過(guò)擬合到無(wú)標(biāo)注數(shù)據(jù)的為標(biāo)簽數(shù)據(jù)上
標(biāo)注/無(wú)標(biāo)注數(shù)據(jù)配比如何平衡是在進(jìn)行多輪迭代的半監(jiān)督訓(xùn)練時(shí)最大的問(wèn)題,所有的前序研究均未給出如何進(jìn)行比例篩選,而只給出了對(duì)應(yīng)任務(wù)的大致比例,Facebook 他們是做的是 Librispeed 960+LibriVOX,它的比例是 1:10~1:54 之間。Google 是 Librispeech 100 +800,比例在 1:3 左右。
上述意見(jiàn)均無(wú)法指導(dǎo)實(shí)際生產(chǎn)中能確定落地使用的比例。比如直播場(chǎng)景的 ASR,以 100 個(gè)小時(shí)作為起步價(jià),同時(shí)可能可以很輕松地獲得很多同源無(wú)標(biāo)注數(shù)據(jù)。但是該以怎樣的比例把這些無(wú)標(biāo)注數(shù)據(jù)和有標(biāo)簽數(shù)據(jù)放在一起,才不會(huì)讓模型全部訓(xùn)練到無(wú)標(biāo)簽數(shù)據(jù)上;怎么訓(xùn)練模型才能保證其穩(wěn)定且效果更好,這將需要進(jìn)行無(wú)窮無(wú)盡的數(shù)據(jù)實(shí)驗(yàn)。當(dāng)然,如果公司內(nèi)部機(jī)器資源足夠多的話,的確是可以去做這些實(shí)驗(yàn)的,但是很多時(shí)候大家并不都像 Google 和 Facebook 一樣有那么多臺(tái)機(jī)器,可以直接暴力窮舉。
那么此時(shí)怎么才能得到每個(gè)業(yè)務(wù)線上的指導(dǎo)意見(jiàn)呢?我們?cè)?Librispeech 100/860 上進(jìn)行了詳細(xì)的實(shí)驗(yàn)和定性定量分析,得到了一個(gè)指導(dǎo)意見(jiàn),這個(gè)指導(dǎo)意見(jiàn)在目前我們來(lái)看是非常準(zhǔn)的指導(dǎo)意見(jiàn),可以教大家如何進(jìn)行選擇數(shù)據(jù)平衡選擇。在這里我們先進(jìn)行一個(gè)假設(shè),這與我們?yōu)槭裁匆鰝螛?biāo)簽的半監(jiān)督訓(xùn)練直接相關(guān)。我們認(rèn)為在訓(xùn)練偽標(biāo)簽的時(shí)候,因?yàn)橛袠?biāo)簽數(shù)據(jù)和無(wú)標(biāo)簽數(shù)據(jù)是混合在一起的,所以對(duì)于一些偽標(biāo)簽數(shù)據(jù),我們不知道是否標(biāo)對(duì)了,應(yīng)該在某些特質(zhì)上讓模型訓(xùn)練盡可能的“保守”,不要過(guò)擬合到那些錯(cuò)誤的數(shù)據(jù)或者尾標(biāo)數(shù)據(jù)上。但是又保證一定的樣本多樣性,因?yàn)槿绻耆J?#xff0c;模型訓(xùn)練就會(huì)陷入它認(rèn)為的數(shù)據(jù)層面帶來(lái)的最優(yōu),然后原地踏步落入局部最優(yōu)解。多輪迭代訓(xùn)練會(huì)加劇這個(gè)過(guò)程,導(dǎo)致模型越訓(xùn)練越過(guò)擬合。
為了確認(rèn)應(yīng)該在哪些地方保守,哪些地方保證多樣性,我們把數(shù)據(jù)分成三個(gè)畫(huà)像維度,第一個(gè)畫(huà)像維度為音頻長(zhǎng)度,第二個(gè)畫(huà)像維度為文本/pieces 長(zhǎng)度,第三個(gè)維度為標(biāo)簽本身的分布。問(wèn)題就可以轉(zhuǎn)化為,我們?cè)谀男┚S度要盡可能保證訓(xùn)練保守,哪些維度要盡可能保證樣本的多樣性。基于此,我們進(jìn)行了大規(guī)模的實(shí)驗(yàn),每一輪生成新的偽標(biāo)簽后,我們會(huì)根據(jù)不同的比例,構(gòu)建多個(gè)訓(xùn)練樣本的 candidate,也就是備選集,這個(gè) candidate 中的每一批訓(xùn)練數(shù)據(jù)。在每一輪訓(xùn)練之前,我們都將每一份懸鏈 cadidate 同我們上一次訓(xùn)練的數(shù)據(jù) 在上述三個(gè)維度進(jìn)行比較,并且對(duì)所有的 candidate 進(jìn)行排名。比如 1:2 的 candidate 同上游在三個(gè)維度上進(jìn)行排名,1:4 的 candidate 也會(huì)有一個(gè)排名,1:5 和 1:6 也會(huì)有一個(gè)排名,等等。
在評(píng)估排名方案上,因?yàn)?frame lenth 和 pieces length 是單一維的統(tǒng)計(jì)量,所以我們采用了 KS 檢驗(yàn)。但 label 分布本身是多維的,所以我們先歸一化 TF,然后利用歐式距離評(píng)估本輪數(shù)據(jù)和上輪數(shù)據(jù)的分布差異,再對(duì)每個(gè) candidate 排名。
經(jīng)過(guò)大量的實(shí)驗(yàn),發(fā)現(xiàn)了一個(gè)非常明確的規(guī)律,就是 pieces 分布本身差異越小的前提下,更大的 frame lenth 分布差異和 pieces length 的分布差異一般會(huì)帶來(lái)更好的新一輪的模型效果。上述邏輯可以被描述成一個(gè)通用范式,如圖 2 所示。
■圖 2
6、模型訓(xùn)練中如何確保模型不會(huì)過(guò)擬合到錯(cuò)誤的偽標(biāo)簽上的 trick
這是在整個(gè)這個(gè)體系中我們發(fā)現(xiàn)的一個(gè)關(guān)鍵點(diǎn)。這里我們有兩個(gè)維度。第一個(gè)維度是數(shù)據(jù)層面的維度,我們加入了 specAug 和 specAug++使整個(gè)數(shù)據(jù)具備更好的泛化性。同時(shí)在模型層面,類似于 MPL,我們會(huì)生成 online 和 offline 的生成,在前期選擇 online 的結(jié)果,后期選擇 offline 的結(jié)果,一般來(lái)說(shuō)第五輪過(guò)后 offline 的結(jié)果會(huì)穩(wěn)定高于 online 的結(jié)果。另外,我們還會(huì)進(jìn)行 dropout 提升,對(duì)于 dropout 會(huì)從 0.1 逐步提升到 0.3,因?yàn)?偽標(biāo)簽訓(xùn)練 會(huì)有很大的過(guò)擬合風(fēng)險(xiǎn),但是基本上提升到 0.4 以后就不會(huì)有任何新的收益了。
7、在有限的標(biāo)注樣本下,模型冷啟動(dòng)監(jiān)督訓(xùn)練如何進(jìn)行可以獲得最優(yōu)的效果
我們同樣采用了兩階段式的訓(xùn)練。第一階段式的訓(xùn)練從 dropout0.1 30epoch 搭配到第二階 dropout0.13 100epoch 效果最優(yōu)。具體的實(shí)驗(yàn)結(jié)果如圖 3 所示。這也說(shuō)明了一個(gè)問(wèn)題,就是冷啟動(dòng)時(shí)應(yīng)該先以一個(gè)比較少的 epoch,比較小的 dropout,快速擬合目標(biāo),然后上調(diào) dropout,讓它以一個(gè)相對(duì)比較泛化的訓(xùn)練配置,再訓(xùn)練更多的輪次,讓模型達(dá)到最優(yōu)。這種冷啟動(dòng)方式基本上可以和 Google 的 NST 體系的模型冷啟動(dòng)結(jié)果是持平的。
■圖 3
最后介紹整個(gè) improved NIPL 的最終效果。目前在截止我們投稿 interspeech 2022 來(lái)看,在 Librispeech 100+860 上比我們強(qiáng)的目前是兩家,第一家就是三菱 MPL 的 conformer 是 3.8%/8.2%。但若控制變量為同樣使用transformer,三菱只有 4.8%/10.1%,而我們是 3.93%/9.59%。另一家就是 Facebook 的 simIPL,它的 36 層 transformer 可以做到 3.8%/7.5%,而且不需要任何語(yǔ)言模型,如果加上語(yǔ)言模型和 rescore 可以做到 2.7%/5.2%。這個(gè)效果已經(jīng)屬于超出我們認(rèn)知的效果了。因?yàn)槲覀冇?xùn)過(guò) 960 的數(shù)據(jù),ESPnet librispeech 960 監(jiān)督訓(xùn)練訓(xùn)練出來(lái)是 96.96 應(yīng)該是 3.04%,這意味著 Facebook 不用 860 的數(shù)據(jù),只 100 的 label 就可以做到 2.7%/5.2%。
最后介紹整個(gè) improved NIPL 的最終效果。目前在截止我們投稿 interspeech 2022 來(lái)看,在 Librispeech 100+860 上比我們強(qiáng)的目前是兩家,第一家就是三菱 MPL 的 conformer 是 3.8%/8.2%。但若控制變量為同樣使用 transformer,三菱只有 4.8%/10.1%,而我們是 3.93%/9.59%。另一家就是 Facebook 的 simIPL,它的 36 層 transformer 可以做到 3.8%/7.5%,而且不需要任何語(yǔ)言模型,如果加上語(yǔ)言模型和 rescore 可以做到 2.7%/5.2%。這個(gè)效果已經(jīng)屬于超出我們認(rèn)知的效果了。因?yàn)槲覀冇?xùn)過(guò) 960 的數(shù)據(jù),ESPnet librispeech 960 監(jiān)督訓(xùn)練訓(xùn)練出來(lái)是 96.96 應(yīng)該是 3.04%,這意味著 Facebook 不用 860 的數(shù)據(jù),只 100 的 label 就可以做到 2.7%/5.2%。
05 問(wèn)答環(huán)節(jié)
1、對(duì)比 WER 效果如何?
我們的 test clean 是 3.93,test other 是 9.59,但是我們后來(lái)又繼續(xù)進(jìn)行了NIPL訓(xùn)練第七輪和第八輪,test other 還能再降低。雖然test clean 依舊維持在 3.93,但 test other 到今天為止已經(jīng)降低到了約 9.3。三菱的 conformer 是 3.8%/ 8.2%,比我們的3.93 低,但它們的 transformer 是 4.8%/10.1%。Facebook 的 simIPL 是 3.8%/7.5%,對(duì)于 Facebook simIPL 我們表示有點(diǎn)不太相信,效果有點(diǎn)恐怖。這么來(lái)看我們應(yīng)該是全球第三,比 Google 在 2020 年發(fā)表的那篇 NST 還要好一點(diǎn)。
2、介紹一下 CTC 的使用
CTC 在剛出現(xiàn)的時(shí)候,由于其訓(xùn)練優(yōu)化的難度比較高,對(duì)于數(shù)據(jù)量的要求也比較苛刻,所以當(dāng)時(shí)對(duì) CTC 的使用都是些奇技淫巧。諸如上文所述 ESSEN,把 CTC 用于訓(xùn)練音素,然后依然跟大家一樣去接 WFST。由于音素的個(gè)數(shù)相對(duì)于 word 來(lái)說(shuō)小很多,大幅降低了 CTC 的訓(xùn)練難度,使之能在部分領(lǐng)域上同 MMI,LFMMI 等方案效果不分伯仲。直接裸上 CTC 端到端 ASR 數(shù)據(jù)成本會(huì)非常高昂。
如果你在 2020 年問(wèn)這個(gè)問(wèn)題,在新業(yè)務(wù)上會(huì)推薦你試一下 ESSEN 項(xiàng)目。但現(xiàn)在是 2022 年了,CTC 的工業(yè)界的使用中已經(jīng)發(fā)生了很大的變化。Watanabi 那篇論文告訴大家,CTC 和 LAS hybrid 這套體系能夠有非常好的效果,并且數(shù)據(jù)質(zhì)量也不會(huì)像原先 CTC 那樣要求那么高,因?yàn)?LAS 體系有非常多的優(yōu)化技巧可以用于幫助訓(xùn)練。所以 CTC LAS 是目前相對(duì)來(lái)說(shuō)比較標(biāo)準(zhǔn)的使用方案。如果你沒(méi)有自己的 ASR 訓(xùn)練平臺(tái)的話,我建議你嘗試 ESPnet/Wenet,如果流式識(shí)別是核心業(yè)務(wù)訴求的話,Wenet 可以作為第一選擇。
總結(jié)
以上是生活随笔為你收集整理的如何解决 Iterative 半监督训练 在 ASR 训练中难以落地的问题丨RTC Dev Meetup的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python读取摄像头或者视频文件、并在
- 下一篇: 岚图汽车中大型智能电动SUV完成高温高原