深探無監督預訓練技術落地 火山語音「演算法優化+工程革新」並舉

WBOY
發布: 2023-04-08 12:44:18
轉載
1430 人瀏覽過

長期以來,火山引擎為時下風靡的視訊平台提供基於語音辨識技術的智慧視訊字幕解決方案。簡單來說,就是透過AI技術自動將影片中的語音和歌詞轉化成文字,輔助影片創作的功能。但伴隨平台使用者的快速成長以及對語言種類更加豐富多元的要求,傳統採用的有監督學習技術日漸觸及瓶頸,這讓團隊著實犯了難。

眾所周知,傳統的有監督學習會對人工標註的有監督數據產生嚴重依賴,尤其在大語種的持續優化以及小語種的冷啟動方面。以中文普通話和英語這樣的大語種為例,儘管視頻平台提供了充足的業務場景語音數據,但有監督數據達到一定規模之後,繼續標註的ROI將非常低,必然需要技術人員考慮如何有效利用百萬小時等級的無標註數據,來進一步改善大語種語音辨識的效果。

相對小眾的語言或方言,由於資源、人力等原因,資料的標註成本高昂。在標註資料極少的情況下(10小時量級),有監督訓練的效果非常差,甚至可能無法正常收斂;而採購的資料往往和目標場景不匹配,也無法滿足業務的需要。

因此,火山引擎語音團隊迫切需要研究如何盡可能低標註成本的充分利用大量無標註數據,提升少量標註數據下的識別效果並落地到實際業務中。 所以,無監督預訓練技術成為視訊平台ASR(Automatic Speech Recognition / 自動語音辨識)能力推廣給小語種的關鍵。

儘管近年來學術界在語音無監督預訓練領域取得了許多重大進展,包括Wav2vec2.0[1]、 HuBERT[2]等,但在工業界卻鮮有落地案例可以參考借鏡。 整體來看,火山語音團隊認為,以下三方面原因,阻礙了無監督預訓練技術的落地:

  1. #模型參數量大、推理開銷大。大量無標註資料需要用較大的模型做無監督預訓練,才能得到高品質的語音表徵,但這樣的模型如果直接部署到線上,會帶來高昂的推理成本。
  2. 無監督預訓練只專注於語音表徵的學習,需要結合大量純文字訓練的語言模型聯合解碼才能達到理想效果,和端對端ASR推理引擎不相容。
  3. 無監督預訓練開銷大、週期長且不穩定。以Wav2vec2.0為例,300M參數量的模型用64張V100 GPU預訓練60萬步,耗時長達半個月;此外由於資料分佈的差異,在業務資料上訓練容易發散。

針對以上三大痛點,進行了演算法改進與工程最佳化,形成一套完整易推廣的落地方案。本文將針對方案,從落地流程、演算法最佳化以及工程最佳化等環節展開詳盡介紹。

落地流程

下圖是無監督預訓練的低資源語種ASR的落地流程,大致可以分割為數據收集、種子模型訓練、模型遷移三個階段。

深探無監督預訓練技術落地 火山語音「演算法優化+工程革新」並舉

基於無監督預訓練的ASR落地流程

具體來說,第一階段的資料收集,可以透過語種分流、採購等手段收集目標語言的無標註語音、標註語音和純文字資料。

第二階段的種子模型訓練,也就是經典的「無監督預訓練 有監督微調」過程。 這階段將會得到一個聲學模型,通常會基於連接時序分類(Connectionist Temporal Classification, CTC[3])損失函數微調。聲學模型結合純文字訓練的語言模型,構成一個完整的語音辨識系統,可以達到不錯的辨識效果。之所以稱之為種子模型,是因為這個模型不適合直接上線到業務,火山引擎更傾向於使用LAS(Listen, Attend and Spell[4])或RNN-T(Recurrent Neural Network Transducer[5])這類端對端模型進行線上部署。

歸其原因,主要是LAS/RNN-T具有出色的端到端建模能力,同時在近年來已經取得了優於傳統CTC模型的效果,並在工業界得到越來越多的應用。火山引擎針對端對端語音辨識模型的推理和部署做了大量最佳化工作,並形成一套相對成熟的方案支援眾多業務。在維持效果無損的前提下,如果可以沿用端對端推理引擎,就能大幅降低引擎的運維成本。

基於此團隊設計了第三階段,即模型遷移階段。 主要藉由知識蒸餾的思想,用種子模型對無標註資料打偽標籤,然後提供一個參數量較小的LAS模型做訓練,同步實現了模型結構的遷移和推理計算量的壓縮。 整個流程的有效性在粵語ASR上得到驗證,具體實驗結果如下表所示:

深探無監督預訓練技術落地 火山語音「演算法優化+工程革新」並舉

##首先,團隊購買了1kh成品資料用於實驗對比,直接訓練LAS模型效能不佳,字錯率(Character Error Rate, CER)高達44.2%。經過分析,火山引擎認為主要原因是採購資料(對話)和業務測試集(影片)領域不匹配,在wav2vec2.0上的初步實驗也發現了類似的現象。

相比用採購資料做預訓練,火山引擎採用了和目標領域一致的資料做預訓練,在業務測試集上的CER可以從42.0%下降到29.4%;將業務場景的無標註資料累積到50kh,模型參數量從100M增加到300M,CER進一步下降到23.1%。

最後火山引擎驗證了模型遷移的效果,結合粵語語言模型對50kh無標註資料解碼得到偽標籤,訓練LAS模型。 可以看到,基於偽標籤訓練的LAS模型,基本上可以維持CTC種子模型的辨識效果,而且模型參數量減少了三分之一,可以直接基於成熟的端對端推理引擎部署上線。

深探無監督預訓練技術落地 火山語音「演算法優化+工程革新」並舉

模型參數量與CER比較

最終,在模型結構和參數量不變的前提下,團隊以50kh無標註業務數據和10h有標註業務數據取得了23.0%的CER,相對基線模型下降48%。 在解決了線上運算量和相容性的問題之後,聚焦到整個流程中最為核心的無監督預訓練技術,針對wav2vec2.0,火山引擎分別從演算法和工程兩個維度進行了優化。

演算法優化

wav2vec2.0作為Meta AI在2020年提出來的自監督預訓練模型,開啟了語音無監督表徵學習的新篇章。其核心思想在於以量化模組將輸入特徵離散化,透過對比學習優化,模型主體與BERT類似實現隨機mask部分輸入特徵。

深探無監督預訓練技術落地 火山語音「演算法優化+工程革新」並舉#

wav2vec2.0模型結構示意圖(資料來源:wav2vec 2.0 Figure 1 [1])

在業務資料上訓練wav2vec 2.0模型時也遇到了兩個棘手的問題:一個是訓練效率低,300M的大模型64卡要十幾天才能訓完;另一個是訓練不穩定,容易發散。 為此火山引擎提出Efficient wav2vec以緩解上述兩個問題。

對於訓練效率低的問題,團隊透過降低模型的幀率來加快訓練速度,將輸入特徵從waveform替換成filterbanks,幀率由原來的20ms變成40ms。這樣既大幅降低了特徵提取捲積的計算量,同時也大幅降低了Transformer內部編碼的長度,從而提高訓練效率。對於訓練不穩定的問題,則是透過分析無監督預訓練的學習方式並結合業務資料實際情況綜合判斷解決,對比學習損失可以用下式表達:

深探無監督預訓練技術落地 火山語音「演算法優化+工程革新」並舉

對於每一幀t,c表示該訊框的編碼器輸出,q表示該幀的量化輸出。除此之外,還需要取樣若干其它影格作為負樣本,從而當前影格與負樣本影格的集合就相當於動態建構的詞表Q

對比學習的最佳化目標是最大化目前幀編碼與該幀量化結果的相似度,同時最小化當前幀編碼與其它幀量化結果的相似度。不難發現,負樣本與正樣本的相似度以及負樣本個數這兩點直接決定了對比學習的效果。而在實際操作中,業務資料的平均長度較短,一句話僅能提供50個負樣本,是遠遠不夠的。考慮到語音相鄰幀之間的相似度很高,就需要確保mask區域的連續,從而提高表徵重構的難度。

為了解決上述兩個問題,火山引擎對應提出了兩點改進:

  1. 等長資料流:預訓練過程中將整個訓練集視為由每句話首尾拼接而成的一段音頻,每個訓練樣本從中截取固定長度得到。這樣做是為了確保負樣本數量足夠多,且上下文編碼網路內部的長度在不同幀率下一致,進而保證訓練的穩健性。
  2. 自適應連續mask:為緩解資料雜訊對訓練的影響,選取較小的mask長度且強制每個mask區域連續,且mask區域對應的音訊長度在不同幀率下相當。這樣既減輕了噪音數據下對比學習的難度,同時也做到了適合不同的幀率。

在業務資料上比較了wav2vec2.0(w2v)與Efficient wav2vec (w2v-e)的效果後,得出下表所示結果(所有模型均採用64 V100 GPUs訓練):

深探無監督預訓練技術落地 火山語音「演算法優化+工程革新」並舉

可以看到改進的Efficient wav2vec相對原始wav2vec 2.0有穩定5%的效能提升,並且訓練效率幾乎翻倍。

#

工程最佳化

儘管團隊提出的Efficient wav2vec已經從演算法層面將訓練效率提升近兩倍,但由於300M模型通訊量大,訓練通訊依然存在波動且多機擴展效率低。對此火山引擎語音團隊總結:「為了提高模型預訓練在同步梯度場景下的通訊效率,我們基於BytePS的分散式訓練框架,在通訊後端完成了Bucket分組通訊優化技術,資料並行效率能取得10%的提升;同時針對模型參數定義順序與梯度更新順序不同造成的等待問題,也實現了自適應的參數重排(Parameter Reorder)策略。」在這些最佳化基礎上,進一步結合梯度累加等技術,300M模型的單卡擴展效率由55.42%提升至81.83%,多機擴展效率由60.54%提升至91.13%,原來需要6.5天訓完的模型現在只需要4天就可以訓完,耗時縮短40%。

此外,為了支持未來探索的大模型大數據場景,火山引擎語音團隊進一步完成了一系列超大規模模型的原子能力建構。 首先實現了local OSS技術,在移除優化器大部分的冗餘記憶體佔用的同時,解決了機間擴展效率問題;之後在同步梯度通訊上支援了bucket lazy init,減少了一倍參數量的顯存佔用,大幅降低顯存峰值並適配顯存資源緊張的超大模型場景;最後在數據並行的基礎上,支持了模型並行和流水線並行,並在1B和10B模型上完成了驗證和客製化支援。這一系列優化為大模型大數據的訓練打下堅實基礎。

目前,透過採用低資源ASR落地流程,已有兩個低資源語言成功落地視訊字幕和內容安全業務。除語音辨識外,基於wav2vec2.0的預訓練模型在其他多個下游任務上也已取得顯著收益,涉及音訊事件偵測、語種辨識、情緒偵測等,未來將陸續落地到視訊內容安全、推薦、分析、音頻分流、電商客服情感分析等相關業務中。 無監督預訓練技術的落地將大幅降低各類音訊資料的標註成本,縮短標註週期,實現對業務需求的快速反應。

總結與展望

火山引擎在實踐中摸索出一套基於wav2vec2.0的低資源語種ASR落地方案,解決了推理開銷大的問題,實現了與端到端引擎的無縫銜接。針對其中最核心的wav2vec2.0訓練效率低和不穩定的問題,提出了Efficient wav2vec。相較於wav2vec2.0,在下游任務上效果提升5%,預訓練耗時縮短一半,結合工程上的優化,最終預訓練耗時相比原始版本縮短70%。 未來,火山引擎將在以下三個方向持續挖掘探索:

#
  1. 無監督演算法升級:#在wav2vec 2.0之後語音無監督預訓練的研究工作如雨後春筍,團隊將持續跟進最新的研究,並內化到業務場景。現階段主要嘗試了HuBERT[2]、MAE[6] 和data2vec[7]等無監督模型,並探討了它們各自在不同下游任務下的表現。未來將從兩個面向提升無監督模型效能:根據不同業務場景,設計高效適配的無監督方案;設計通用的無監督模型,提昇在各類下游任務的表現表現。
  2. 多語言多模態:目前無監督與多語言結合的研究工作有許多,例如XLSR[8]。火山引擎在此基礎上提出了S3Net[9],其透過在預訓練模型中劃分出多個稀疏子網路來分別對不同語言進行建模,有效緩解了不同語言之間的相互幹擾(Language Interference)問題,對大語料語言有明顯的效能提升效果。現有的研究工作主要集中在音訊編碼器端進行,而目前主流的端到端模型均採用了編碼器-解碼器結構,即音訊文字多模態建模。團隊判斷單純的音訊端預訓練已經無法滿足端到端模型的需要,未來將在音訊文字多模態預訓練上進行探索工作,分別是海量非對齊音訊文字與端到端模型聯合建模以及純無監督的多模態預訓練。
  3. 大數據大模型:#現有的模型在10萬小時規模時其效能就接近飽和,團隊在中文10萬小時標註資料訓練的模型基礎上,利用100萬小時無標註資料做NST[10]訓練,在通用測試集上取得相對7%的CER下降,同時模型的泛化能力得到明顯的改善,在20個領域測試集上平均CER相對下降15%。要充分吸收百萬小時量級的海量資料就需要更大的模型,目前火山引擎已經在1B參數量級的模型上取得初步進展。大模型的性能上限高,隨之而來的問題是落地。為了將大模型落地到實際業務中,未來將嘗試各種模型壓縮方法,如矩陣分解、權重裁剪和知識蒸餾等,盡可能做到無損壓縮效果。

火山語音,長期服務位元組跳動各業務線的前沿語音技術透過火山引擎開放,提供業界領先的AI語音技術能力以及卓越的全端語音產品解決方案,包括音訊理解、音訊合成、虛擬數位人、對話互動、音樂檢索、智慧硬體等。目前火山引擎的語音辨識和語音合成涵蓋了多種語言和方言,多篇技術論文入選各類AI頂尖會議,為抖音、剪映、飛書、番茄小說、Pico等業務提供了領先的語音能力,並適用於短視頻、直播、視頻創作、辦公室以及穿戴設備等多樣化場景。

參考文獻

[1] Baevski, A., Zhou, Y., Mohamed, A. and Auli, M ., 2020. wav2vec 2.0: A framework for self-supervised learning of speech representations. Advances in Neural Information Processing Systems, 33, pp.12449-12460.

[2] Hsu, W.N., Bolte, B., Tsai, Y.H.H., Lakhotia, K., Salakhutdinov, R. and Mohamed, A., 2021. Hubert: Self-supervised speech representation learning by maskeded prediction of iddenden IEEE IEEE IEEE IEEE IEEE IEEE pre /ACM Transactions on Audio, Speech, and Language Processing, 29, pp.3451-3460.

[3] Graves, A., Fernández, S. , Gomez, F. and Schmidhuber, J., 2006, June. Connectionist temporal classification: labelling unsegmented sequence data with recurrent neural networks. In Proceedings of the 23rd international conference on Machine learning (pp. 369#163.

##[4] Chan, W., Jaitly, N., Le, Q. and Vinyals, O., 2016, March. Listen, attend and spell: A neural network for large vocabulary conversational speech recognition. In 2016 IEEE international conference on acoustics, speech and signal processing (ICASSP) (pp. 4960-4964). IEEE.

[5] Graves, A., 2012。循環神經網路的序列轉導。 arXiv 預印本arXiv:1211.3711.

[6] He, K., Chen, X., Xie, S., Li, Y., Dollár, P . 和 Girshick, R., 2022。蒙面自動編碼器是可擴展的視覺學習器。 IEEE/CVF 電腦視覺與模式辨識會議論文集(第 16000-16009 頁)。

[7] Baevski, A., Hsu, W.N.、Xu , Q.、Babu, A.、Gu, J. 和Auli, M.,2022。Data2vec:語音、視覺和語言自我監督學習的通用框架。 arXiv 預印本arXiv:2202.03555.

[8] Conneau, A.、Baevski, A.、Collobert, R.、Mohamed, A. 與Auli, M ., 2020。語音辨識的無監督跨語言表示學習。 arXiv 預印本arXiv:2006.13979.

[9] Lu, Y., Huang, M., Qu, X., Wei, P. 和Ma, Z ., 2022 年 5 月。具有稀疏共享子網路的語言自適應跨語言語音表示學習。在 ICASSP 2022-2022 IEEE 聲學、語音和訊號處理國際會議 (ICASSP) 中(第 6882-6886 頁)。 IEEE.

[10] Park,D.S.,Zhang,Y.,Jia,Y.,Han,W.,Chiu,C.C.,Li,B. ,Wu, Y. 和Le, Q.V.,2020。改進了自動語音識別的嘈雜學生訓練。 arXiv 預印本 arXiv:2005.09629.

#

以上是深探無監督預訓練技術落地 火山語音「演算法優化+工程革新」並舉的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板