舒真瀚,許亮
(四川大學計算機學院,成都610065)
隨著人工智能的發展,近年來深度學習[1-2]技術已經替代了傳統的統計學算法成為了自動語音識別(ASR)領域的主流技術[3-4]。正是由于目前神經網絡的火熱,大量基于神經網絡的語音識別系統進入市場,但由于識別領域的細分。目前還沒有出現一種通用的方法或模型在所有領域都表現良好。想要在某領域開發出能使用的產品通常需要花費大量的人力財力收集大量相關領域的語料進行標注和訓練。因此用低成本的通用模型加少量局部語料訓練一個良好的能降低訓練成本和語料收集成本且泛化能力良好的混合模型就有了理論和實踐上的研究價值。
目前能提升語音識別系統的整體泛化能力的方法有很多,大致分為兩類:一類是采用自適應的語言模型或是混合語言模型方式。第二類就是通過遷移學習的方式。
第一類方法主要是優化語言模型。近年主要有Min Ma 和Michael Nirschl[5-7]關于神經網絡語言自適應方法的研究,主要解決了語言模型語料庫不匹配通用ASR 系統的測試分布。范正光等人[8-9]關于混合語言模型語言識別的方法研究,該方法也是語言模型多任務的一種。
第二類方式是目前主流和熱門的方法,D Povey 和Pegah Ghahreman[10]就提出改進基于無格MMI(LFMMI)的ASR 模型。使用具有共享隱藏層的網絡來進行ASR 模型的遷移。近年來深度神經網絡的遷移學習主要是對聲學部分各層特征的可遷移性做研究。多任務訓練將多個任務同時訓練。并加入主次任務,主次的關系主要體現在loss 上面。在訓練過程中次任務輔助主任務取得好的成績。知識蒸餾也是目前解決該問題最前沿的領域,Hinton[11]對聲學模型采用知識蒸餾壓縮法也能一定程度使得模型在學習小規模數據集模型時,能夠不被大模型覆蓋,從中學到知識。Li[12]提出了用大模型指導小模型進行訓練,以此來進行遷移壓縮。
借鑒上述方法的一些思想,本文嘗試用類似知識蒸餾的方法,針對大小數據集或大小模型這種多領域任務的情況,進行聲學模型的建模。知識蒸餾的本質是將一個大而笨重的模型轉化為一個小而緊湊的模型且在轉化過程中不會過多的損失模型精度。而本文將利用知識蒸餾的特點:將大模型的知識盡量無損的注入到小模型中,從而讓生成的新模型盡可能的同時學習到大小數據集中的知識,讓模型的泛化能力在兩個數據集上都能得到體現。具體操作上是在大模型上獲取到大模型的對齊信息利用這些信息生成一個軟標簽集合然后在訓練小模型時將這個軟標簽集合作為小模型總目標函數的一部分,在訓練時這部分數據就會將大模型的知識遷移到新模型中,本文將利用aishell1[13]這個數據集作為大模型的數據集,少量股票代碼數據作為小數據集進行試驗。
在神經網絡的最后一層通常我們用Softmax 層來進行輸出前的概率分布表達。計算公式如下:

但實際情況是通常訓練好的大模型最后的Softmax 層輸出的概率在正確的分類上是相當大的,而在其他分類上的概率是就接近于0 了。可以很容易看出我們若是直接利用Softmax 層的輸出作標簽的話,其實并不能比原本的數據集提供更多的信息。這樣的話我們就沒有將原本大模型的泛化能力,有效地利用到小模型上。Hinton[11]在其論文中提供了解決方案,本文中我們將利用其改進的方法對Softmax 層的計算公式做改進為式(2):

這里加入的新參數T 是指蒸餾溫度,實際上就是對輸出信息的利用強度,可以很容易看出當T 使用較大的值時,會使Softmax 層各分類概率的輸出更為平滑,這樣我們就可以利用大模型學習到更多的信息。T是我們在訓練中用到的一個超參。當T=1 時Softmax的輸出就是正常網絡的訓練目標,在這里我們將其稱為“硬標簽”。當T>1 時,Softmax 輸出的概率分布我們稱之為“軟標簽”。
在實際訓練中大模型和小模型的之間后驗概率分布的差異可以寫作式(3):

也就是他們之間后驗概率分布的KL 散度(相對熵)。
在訓練過程中我們需要將其最小化,可以表示為式(4):

式(3)中i 表示為對齊狀態下的下標;Si就是第i個對齊狀態;Xt為大模型的特征;X 是小模型的特征,我們可以通過向前算法求得Pt(Si|Xt),即特征Xt在i 狀態下的后驗概率。
所以我們實際上要求的分布差異是:
由式子(5)可以看出相對熵的最小化已經化簡為等同于求交叉熵最小化。與標準的以交叉熵為損失函數的訓練過程完全相同。
不同的是在訓練中我們將把硬標簽,替換為加入超參數后產生的軟標簽。這個與Hinton 知識蒸餾的過程有所不同。相對而言有所簡化。
整個訓練的流程分為幾個主要的步驟:①通過大模型來生成硬標簽;②通過大模型調整超參數T 生成軟標簽;③通過軟標簽,硬標簽及小數據集特征訓練小模型。

圖1 小模型訓練流程
硬標簽等同于原本大模型Softmax 層的輸出,例如[1,0,0,0,0,0,0,0]這組向量就代表輸出的結果是類別1的項。通俗的講就是我們將輸出正確的項看做是概率為100%,也就是一個我們分類之前強制對齊的標注結果。
軟標簽通過設置T>1 進行輸出,向量的概率分布變得相對平滑,例如[0.02,0.83,0.01,0.1,0.07,0.07],這時該向量屬于標簽3 的概率就是0.01。這個做法讓我們在遷移的過程中人為的添加了部分干擾,如果按照傳統的方法進行遷移,小規模的數據難以擾動過大過復雜的模型。新的知識也難以被模型所學習到。同時這樣也讓我們在新模型的訓練上人為地防止了過擬合,提高了模型的泛化能力。
在訓練時,將小數據中提取的特征和軟標簽進行對齊。得到帶小數據特征的對齊軟標簽。然后就可以利用這個特征和軟標簽訓練小模型了。訓練時僅僅更新小模型的參數。訓練過程由之前式(5)KL 散度負責監督進行優化。
本文的大模型數據集采用了希爾貝殼提供的aishell1 數據集作為通用數據集,股票代碼數據作為局部數據集。Aishell1 是中文普通話開源語音數據庫AISHELL-ASR0009-OS1 錄音時長178 小時,是希爾貝殼中文普通話語音數據庫AISHELL-ASR0009 的一部分。AISHELL-ASR0009 錄音文本涉及智能家居、無人駕駛、工業生產等11 個領域。錄制過程在安靜室內環境中,同時使用3 種不同設備:高保真麥克風(44.1kHz,16-bit);Android 系統手機(16kHz,16-bit);iOS 系統手機(16kHz,16-bit)。400 名來自中國不同口音區域的發言人參與錄制。小模型數據集是股票代碼數據是由20 位志愿者錄制的總共9 小時語音標注數據。
本實驗在Kaldi[14]工具集平臺上進行。數據輸入階端點檢測策略采用基于能量值的方式。
使用特征是梅爾頻率倒譜系數(MFCC)和mel 標度濾波器組特征(FBANK),特征輸入幀長取25ms,幀偏移量取10ms。
MFCC 在配置時為了獲得更多的細節我們設置13個梅爾三角濾波器,得到13 個梅爾系數,但在特征輸入前會做一階差分和二階差分運算,所以實際輸入的特征為61 維特征(其中1 維是幀能量值)。
DNN 網絡是由GMM 系統提供對齊信息進行訓練,其入特征為FBANK,其特征維度40 維,相鄰幀由前后5 個窗口共11 幀進行連接,連接的特征經過LDA轉換,維度降低到200。
本文使用的預言模型(LM)是由aishell1 以及9小時股票數據的文本混合訓練的三元文法語言模型(3-gram),其詞表大小為135823。搜索策略為束搜索(beam-search)。
大模型采用兩種網絡模型一種是TDNN[15],另外一種是CNN-TDNN。兩種網絡在測試集上表現差別不大,僅僅是在TDNN 網絡加入了CNN 為頭部。但兩個模型的參數量差別較大。這樣的對比我們希望能看出在遷移過程中大參數量和小參數量模型是否在知識傳授上有所影響。
TDNN 模型包含8 個隱層每層1563 個節點。CNN-TDNN 模型在TDNN 模型的基礎上增加了2 個卷積層和4 個全連接層。全連接層節點數為1600 個,輸出層由3386 個單元組成。卷積層采用最大池化的池化策略。學習率均設置為0.008。采用反向傳播(BP)算法進行訓練。網絡的損失函數為交叉熵,使用隨機梯度下降(SGD)算法進行優化。
對于大模型的數據集劃分,aishell1 的85%劃分為訓練集,10%劃分為測試集(t-test),5%劃分為開發集。訓練集用于模型參數的更新,開發集用于超參數的確定和模型的選擇,測試集用于模型的打分。
對于本文實驗設置兩種測試集一個是t-test,一個是小數據集中的2 小時語料數據s-test,生成的兩個模型分別是T-TDNN 和T-CNN-TDNN,為了結果更容易觀察,再設置一個由aishell1 數據集和股票數據集混合訓練的模型ALL-TDNN,表1 為三種模型在t-test 和s-test 上WER(錯詞率)。
由表1 可以看出,大模型在加入股票數據集進行訓練WER 下降幅度也非常小。在s-test 上的泛化能力沒有得到提升。
小模型選用TDNN 網絡模型,模型包含8 個隱藏層每層1563 個節點。小模型的標簽為之前通過T 進行軟化的大模型(T-TDNN 以及T-CNN-TDNN)的softmax 層輸出。模型參數更新利用小數據集的7 小時數據進行更新,超參數的設置在aishell1 的開發集上進行。學習率為0.008。優化策略為(5)式,即KL 散度最小化。
小模型測試級同樣為t-test 和s-test,生成小模型分別為S-TDNN 和S-CNN-TDNN。表2 為小模型在t-test 和s-test 上的WER。

表2
由表2 可以看出,小模型在接受大模型指導后在t-test 具備同大模型相當的泛化能力,同時在s-test 上WER 有了明顯的下降,泛化能力有所提高。
本文利用知識蒸餾的基本思想,提出了一種中文語音識別在多領域的聲學模型建模方法,利用大模型對小模型進行指導,計算出軟標簽,在訓練過程中防止大模型標簽帶來過快擬合的影響,使得小模型能夠更有效地從小模型中獲取到知識,泛化能力更強。未來將加入更多領域數據進行實驗,同時從語言模型層面對泛化能力進行進一步優化。