背景
在深度學(xué)習(xí)火爆的今天,大規(guī)模數(shù)據(jù)下訓(xùn)練的大規(guī)模模型在線上任務(wù)中日益常見。隨著大模型效果的提升,隨之帶來了一些使用上的不便。通常情況下,大模型需要基于大量語料、文本訓(xùn)練,迭代周期長。且對于特定場景下詞語在訓(xùn)練語料中出現(xiàn)次數(shù)不多,常常擬合不好。本文介紹的是關(guān)鍵詞即特定場景語料,在序列到序列任務(wù)中通過構(gòu)建狀態(tài)轉(zhuǎn)移自動(dòng)機(jī)的方法改善最終效果的方案。
生成模型即生成模型解碼
序列到序列模型常用于機(jī)器翻譯、語音識別等任務(wù)。其架構(gòu)提出于 2014 年 [1],包含兩個(gè)核心組件:編碼器、解碼器。本文中略去這種模型的訓(xùn)練過程,對該模型在使用過程中解碼這一過程進(jìn)行介紹

通過這個(gè)圖我們不難發(fā)現(xiàn),每個(gè)時(shí)刻的生成結(jié)果不僅于輸入時(shí)刻序列有關(guān),還與輸出序列相關(guān),一個(gè)簡單的想法,將每個(gè)時(shí)刻置信度最高的結(jié)果存下來,做為下一個(gè)時(shí)刻輸入,但這樣很容易產(chǎn)生問題:在一個(gè)時(shí)刻缺乏全局視野,即某一個(gè)時(shí)刻最優(yōu)不代表是全局最優(yōu)的結(jié)果。而將所有結(jié)果都記錄下來,這將會(huì)是指數(shù)級增長的數(shù)據(jù)量。因此一種 beam search 的方法被提出用來解決這一問題,我們用一個(gè)形象的例子來講述 beam search 這一過程。
假設(shè)我們得到了一串拼音序列:
| y | i | d | a | l | i | zh | i |
我們?nèi)绾沃肋@個(gè)拼音序列代表什么意思呢?
如下圖所示,我們展現(xiàn)了一個(gè)通過簡單概率模型產(chǎn)生的文本,在第零個(gè)時(shí)刻的 5 個(gè)候選(為了展示方便,這里省略了編號為④的候選),在第一個(gè)時(shí)刻各產(chǎn)生了三個(gè)延伸在這 15 個(gè)候選中,通過語言模型概率選取了 top5 保留,剩余的舍棄掉,以達(dá)到縮減搜索空間的目的。通過這樣的方法,每一個(gè)時(shí)刻不保留全部結(jié)果只保留 top N,最終將指數(shù)級增長的搜索空間變?yōu)槠椒郊壴鲩L的搜索空間。

傳統(tǒng)解碼應(yīng)用問題與改進(jìn)
這種方法與全部狀態(tài)保存的方案相比犧牲了準(zhǔn)確度以換取時(shí)間,具有一定局限性。對于通常情況,每個(gè)時(shí)刻 top N 能覆蓋當(dāng)前時(shí)刻 90% 以上的情況,但是這種方法在面對關(guān)鍵詞檢測、風(fēng)控詞語檢測等任務(wù)會(huì)產(chǎn)生兩個(gè)問題:
1、待檢測關(guān)鍵字在日常語料中較少出現(xiàn),傳統(tǒng) beam search 非常容易漏召回。
2、時(shí)效性強(qiáng),經(jīng)常有實(shí)時(shí)插入的新檢測詞語,要即時(shí)生效。
對于第一個(gè)問題,一種直觀的思想是通過標(biāo)注數(shù)據(jù),弱標(biāo)注數(shù)據(jù)等重新訓(xùn)練模型,但這顯然迭代周期長且迭代預(yù)期不穩(wěn)定。
Google 在 2018 年論文中 [2],提出一種設(shè)計(jì)方案調(diào)整 beam search 的結(jié)果,即不重新訓(xùn)練模型,僅在解碼時(shí)通過追加模型進(jìn)行重新打分來改善對小眾語料的擬合。

以上圖中識別系統(tǒng)設(shè)計(jì)為例,除去傳統(tǒng)聲學(xué)識別模塊還增加了上下文模塊,這個(gè)模塊舉例了幾個(gè)功能,包括標(biāo)點(diǎn),語言模型打分,文本歸一。其中語言模型的使用如下圖,用 beam search 對中間結(jié)果進(jìn)行追加打分,更新 beam search 中 top N,并將當(dāng)前結(jié)果作為下一時(shí)刻解碼的輸入。這種方式的優(yōu)點(diǎn)是,在不更新語音識別模型的情況下,也可以通過添加不同語境的語言模型影響 beam search 過程中 top N 選取,從而達(dá)到改善結(jié)果的目的。缺點(diǎn)便是顯著增加了計(jì)算量;盡管語言模型計(jì)算量常常不高,但 beam search 過程中每個(gè)候選結(jié)果都要多次經(jīng)過語言模型,次數(shù)過多,耗時(shí)上升比較明顯。

為了改進(jìn)計(jì)算效率,經(jīng)典 wfst 解碼 [3] 方案重新在 seq2seq 模型中使用 [4],這種解碼方案注意到了我們是在一個(gè)序列過程中重打分,不需在每一個(gè)時(shí)刻對從開始至當(dāng)前所有文本進(jìn)行重新計(jì)算,我們將語言模型生成新的概率轉(zhuǎn)移自動(dòng)機(jī) [5],解碼時(shí),維護(hù)當(dāng)前 beam search 過程中 top N 于圖 2 狀態(tài)。如下圖為 cat(音標(biāo):k?t) 這個(gè)單詞的狀態(tài)轉(zhuǎn)移圖,當(dāng)聲學(xué)識別模塊產(chǎn)出 c 對應(yīng)的 k 的音其轉(zhuǎn)移到狀態(tài) 1,而當(dāng) a 對應(yīng)的?產(chǎn)生時(shí),不在需要從狀態(tài) 0 計(jì)算 k ?一起的概率,而是計(jì)算當(dāng)前狀態(tài) 1 的后繼狀態(tài)中是否有?。沒有則計(jì)算回退到初始狀態(tài)的概率。這樣對于在序列生成中的計(jì)算,只需要記錄其處于圖中狀態(tài),在新的識別結(jié)果產(chǎn)生時(shí)對當(dāng)前狀態(tài)計(jì)算可行的轉(zhuǎn)移狀態(tài)即可。與普通語言模型相比,相當(dāng)于省去了從狀態(tài) 0 至當(dāng)前狀態(tài)的重復(fù)計(jì)算,復(fù)雜度大為降低。

這種淺融合的方案很好的解決了訓(xùn)練語料不均衡的問題,缺點(diǎn)是不能實(shí)時(shí)對圖進(jìn)行修改,且缺乏對特定詞的加權(quán),為此我們引入了前綴自動(dòng)機(jī)來對這一過程改進(jìn)。
基于前綴自動(dòng)機(jī)的解碼加權(quán)方案
前綴自動(dòng)機(jī),是一種經(jīng)典算法,常應(yīng)用于多模式串匹配。如果我們有一個(gè)字典,對于輸入文本想檢測是否命中字典中詞語,這便是一個(gè)多模式串匹配任務(wù)。對于這類任務(wù),一個(gè)顯然的方案是遍歷全部字典,但這樣復(fù)雜度太高。
對此我們開始優(yōu)化,一種方式是優(yōu)化字典結(jié)構(gòu),即字典中字符有公共部分的比如 teach 和 teacher 都在字典中,那如果 teach 不匹配了,teacher 這個(gè)單詞也不用匹配了。將順序的字典變?yōu)榍熬Y樹的存儲方式。

與此同時(shí),我們繼續(xù)在這種情況下優(yōu)化,如果一個(gè)詞前綴為另一個(gè)詞的子串,如上圖中 she 和 her,檢測字符串 sher 中含有前綴樹中多個(gè)詞,當(dāng) she 在狀態(tài) 4 匹配成功后我們知道 he 也是待匹配串中的,因此我們不需要跳回狀態(tài) 1,而是直接跳轉(zhuǎn)至狀態(tài) 9,從 r 開始匹配即可。這便是前綴自動(dòng)機(jī)的核心思想。
這種跳轉(zhuǎn)關(guān)系構(gòu)建方法是一種遞歸過程。用一句話來概括,一層一層的構(gòu)建,如果我的父節(jié)點(diǎn)的跳轉(zhuǎn)狀態(tài)的子節(jié)點(diǎn)中有與我相同的,那就是我的跳轉(zhuǎn)狀態(tài),否則我的跳轉(zhuǎn)狀態(tài)就是根結(jié)點(diǎn)。按照這個(gè)思路,我們將上圖的點(diǎn)按遍歷順序重新標(biāo)號以便于理解

有了這個(gè)前綴轉(zhuǎn)移關(guān)系,我們便能高效的處理熱詞構(gòu)建及查詢,一個(gè)帶有前綴自動(dòng)機(jī)的解碼流程如下:

即對于每個(gè) beam search 過程我們不僅維護(hù) beam search 過程中結(jié)果,同時(shí)維護(hù)其處于前綴自動(dòng)機(jī)狀態(tài);此狀態(tài)便于維護(hù),僅存儲狀態(tài)指針即可。從性能上看,執(zhí)行時(shí)的額外計(jì)算量及內(nèi)存使用量都可以認(rèn)為是常數(shù)增加。
前綴自動(dòng)機(jī)實(shí)時(shí)增加新詞方案
前一段中我們介紹了通過前綴自動(dòng)機(jī)的解碼方案,但這一過程依然不能很好解決“實(shí)時(shí)”這一要求,如果我希望實(shí)時(shí)向解碼過程中添加熱詞,需要怎么改進(jìn)?
回顧上一節(jié)的內(nèi)容,我們了解到前綴自動(dòng)機(jī)構(gòu)建應(yīng)分為兩步,即前綴樹的構(gòu)建與狀態(tài)轉(zhuǎn)移的構(gòu)建。其中,前綴樹是算法正確性的保證,而狀態(tài)轉(zhuǎn)移可以大幅優(yōu)化時(shí)間。同時(shí),狀態(tài)轉(zhuǎn)移需要層次遍歷整棵前綴樹,這意味轉(zhuǎn)移狀態(tài)的構(gòu)建不能隨前綴樹形態(tài)更改而自動(dòng)更改,而必須全量重新構(gòu)建。
當(dāng)我們插入一個(gè)新詞,由于前綴樹的特性,可以在字符長度的復(fù)雜度將該詞插入前綴樹,但是構(gòu)建新的轉(zhuǎn)移狀態(tài)需要遍歷所有節(jié)點(diǎn),如果每次插入新詞都要重新訪問整棵樹全部節(jié)點(diǎn),這種復(fù)雜度是難以接受的。比較起來,損失一些轉(zhuǎn)移狀態(tài)等價(jià)于將部分詞的查詢復(fù)雜度變大,對比遍歷全部詞典的復(fù)雜度這種損失是可以接受的。
根據(jù)上述想法,我們將整體查詢變?yōu)閮煽脴洌豢脼閹мD(zhuǎn)移狀態(tài)的前綴自動(dòng)機(jī),另一棵為普通字典樹,當(dāng)新詞插入時(shí)我們在普通字典樹插入,當(dāng)普通字典樹規(guī)模大于一規(guī)定閾值后我們將他們合并,并在合并后的樹上構(gòu)建轉(zhuǎn)移狀態(tài)。對于一次查詢,復(fù)雜度從詞長變?yōu)樾∽值錁湟?guī)模,但能夠節(jié)省構(gòu)建轉(zhuǎn)移狀態(tài)遍歷全文的時(shí)間。
方案效果
我在語音識別系統(tǒng)中應(yīng)用了這種解碼方案,并通過兩方面指標(biāo)評估該模塊效果,一方面通過標(biāo)注帶關(guān)鍵詞語音數(shù)據(jù)集,評估關(guān)鍵詞準(zhǔn)召。在下表中,beam search 代表普通方案,ac automation 代表前綴自動(dòng)機(jī)加權(quán)解碼方案,發(fā)現(xiàn)在識別結(jié)果中對關(guān)鍵詞召回相對提升 4.6%。另外,我們對比在普通語音識別數(shù)據(jù)集上字錯(cuò)誤率(CER),由于對特殊詞提升了權(quán)重使整體準(zhǔn)確率有一定的下降,但整體損失可以接受,低于對關(guān)鍵詞召回的收益。

總結(jié)?
本文主要基于 seq2seq 類模型,通過追加狀態(tài)轉(zhuǎn)移自動(dòng)機(jī)來減少模型在面對專有領(lǐng)域語料時(shí)的識別準(zhǔn)確率;同時(shí)可以使語料實(shí)時(shí)生效,并將該工作的實(shí)時(shí)性流程構(gòu)建方法加以介紹。對于語音轉(zhuǎn)錄文本中的關(guān)鍵詞檢測,常常局限于語音模型不能實(shí)時(shí)調(diào)整,很難識別出新詞,通過這種方案可以做到秒級別新詞添加,顯著改變這一困擾。
參考文獻(xiàn)
[1] Sutskever, Ilya, Oriol Vinyals, and Quoc V. Le. "Sequence to sequence learning with neural networks." Advances in neural information processing systems 27 (2014).
[2] Zhao, Ding, et al. "Shallow-Fusion End-to-End Contextual Biasing." Interspeech. 2019.
[3] Hori T, Hori C, Minami Y, et al. Efficient WFST-based one-pass decoding with on-the-fly hypothesis rescoring in extremely large vocabulary continuous speech recognition[J]. IEEE Transactions on audio, speech, and language processing, 2007, 15(4): 1352-1365.
[4] Williams I, Kannan A, Aleksic P S, et al. Contextual Speech Recognition in End-to-end Neural Network Systems Using Beam Search[C]//Interspeech. 2018: 2227-2231.
[5] Hori T, Nakamura A. Speech recognition algorithms using weighted finite-state transducers[J]. Synthesis Lectures on Speech and Audio Processing, 2013, 9(1): 1-162.
[6]https://blog.csdn.net/weixin_53360179/article/details/119718426
編輯:黃飛
?
電子發(fā)燒友App



































評論