徐冬冬
(中國航天科工集團(tuán)第二研究院研究生院 北京 100854)
自動(dòng)語聲識(shí)別(Automatic speech recognition,ASR)中的序列到序列(Sequence to sequence, S2S)方法漸漸得到廣泛關(guān)注,這是由于能夠訓(xùn)練一個(gè)共同的目標(biāo)來優(yōu)化整個(gè)模型結(jié)構(gòu),與傳統(tǒng)的混合系統(tǒng)相比,它降低了模型優(yōu)化的復(fù)雜性。ASR 系統(tǒng)將聲學(xué)、發(fā)音字典和語言建模組件的功能組合到單個(gè)神經(jīng)網(wǎng)絡(luò)中,實(shí)現(xiàn)從聲頻號(hào)到文本序列的直接映射。早期ASR方法采用連接時(shí)序分類(Connectionist temporal classification, CTC)[1],但是,這些模型需要與外部語言模型保持一致才能獲得良好的性能[2]。最初提出用于機(jī)器翻譯的具有注意力[3]的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent neural network, RNN)編碼器-解碼器[4]是端到端ASR[5]的有效方法。這些系統(tǒng)在無語言模型設(shè)置中[2]的性能下降較少。
最近,Transformer[6]編碼器-解碼器體系結(jié)構(gòu)已應(yīng)用于ASR[7?9]。Transformer 訓(xùn)練可實(shí)現(xiàn)跨時(shí)間并行化,與帶有循環(huán)機(jī)制的模型相比,速度更快[6]。這使得它們特別適合語聲識(shí)別中遇到的大型聲頻語料庫。此外,Transformer是一種強(qiáng)大的自回歸模型[10],在推理過程中無需使用語言模型即可獲得不錯(cuò)的識(shí)別效果而不會(huì)產(chǎn)生存儲(chǔ)和計(jì)算開銷問題[8]。
盡管當(dāng)前的ASR 技術(shù)在準(zhǔn)確性上已取得了顯著提高,但Transformer 層在自注意的加權(quán)操作中不會(huì)保留位置信息,為了引入輸入特征順序,使用了正弦位置嵌入。之前ASR 系統(tǒng)在編碼網(wǎng)絡(luò)中顯式的添加循環(huán)神經(jīng)網(wǎng)絡(luò)層,也在一定程度上獲得了上下文相關(guān)信息。但本文認(rèn)為上述位置編碼增加了模型優(yōu)化的代價(jià),隱式的添加相對(duì)位置信息,會(huì)具有更好的效果。具體來說,利用神經(jīng)網(wǎng)絡(luò)將輸入特征和位置信息融合起來,并映射為高層特征表達(dá),作為Transformer 自注意層的輸入。本文通過比較基于Transformer 的不同位置編碼技術(shù)特點(diǎn),探索更加適合普通話語聲識(shí)別的位置編碼技術(shù)。
本文工作中使用的架構(gòu)與Vaswani 等[6]介紹的Transformer 模型類似,模型可以視為編碼器-解碼器模型。編碼器模型以經(jīng)過子層處理的語聲特征作為輸入,并對(duì)輸入進(jìn)行非線性變換以生成隱狀態(tài)表示,該隱狀態(tài)表示被饋送到解碼器中,該解碼器再次應(yīng)用非線性變換以產(chǎn)生文本。Transformer 整體架構(gòu)如圖1所示,左半部分和右半部分分別表示堆疊多層自注意層和全連接前饋神經(jīng)網(wǎng)絡(luò)層的編碼器和解碼器結(jié)構(gòu)。下面從局部到整體詳細(xì)解釋每個(gè)模塊。

圖1 Transfor mer 語聲識(shí)別系統(tǒng)架構(gòu)Fig.1 Transformer speech recognition system architecture
首先,注意力是指使用基于內(nèi)容的信息提取器的方法將維度為dmodel的輸入映射到一組查詢Q、鍵K和值V的矢量輸出中[11]。其中查詢Q和鍵K的維度為dk,值V的維度為dv。使用所有的鍵計(jì)算查詢的點(diǎn)積,再分別用根號(hào)dk進(jìn)行除法運(yùn)算,并應(yīng)用softmax 函數(shù)來獲得值的權(quán)重。最后返回值的加權(quán)總和,如式(1)所示:

這里除以根號(hào)dk的原因是為了抵消softmax 函數(shù)輸入過大時(shí),計(jì)算梯度太小的影響。
多頭注意是指采用h個(gè)注意力操作表示輸入信息,最后將輸出結(jié)果串聯(lián)。即多頭注意層輸出是將各個(gè)注意頭的級(jí)聯(lián)輸出乘以權(quán)重矩陣來計(jì)算的。


編碼器:編碼器由12個(gè)相同的層塊組成。每個(gè)層塊都有兩個(gè)子層。第一個(gè)是多頭自注意層;第二個(gè)是完全連接的前饋神經(jīng)網(wǎng)絡(luò)層,該前饋神經(jīng)網(wǎng)絡(luò)由兩個(gè)線性變換組成,中間具有ReLU 激活。公式表達(dá)如下:

由式(4)可以看出該前饋過程也可描述為內(nèi)核大小為1 的卷積。兩個(gè)子層附近都添加了殘差連接,接著進(jìn)行層規(guī)范化[12]。
解碼器:與編碼器類似,解碼器是由6 個(gè)相同的層塊組成。不同的是,解碼器層的每個(gè)層塊由3個(gè)子層組成,其中兩個(gè)子層的功能與編碼器子層相同,而兩個(gè)子層中間的子層對(duì)編碼器層的輸出執(zhí)行多頭關(guān)注。具體來說,來自最終編碼器層的鍵和值向量被饋送到解碼器層中的多頭注意層,查詢向量值從其下一層中獲得。同時(shí)要保持模型的自回歸特性,本文在解碼器的多頭注意層中使用掩蔽,以防止其依賴于將來的位置,從而使輸出的標(biāo)簽序列只利用的當(dāng)前位置以前的信息。殘差和層歸一化的設(shè)置與編碼器相同。使用可學(xué)習(xí)的嵌入將輸入標(biāo)記和輸出標(biāo)記轉(zhuǎn)換為維度dmodel的向量。
Transformer 層的一個(gè)明顯特點(diǎn)是輸出對(duì)于輸入順序排列是不變的。即,對(duì)于施加在輸入序列x1,x2,···,xT上的任何排列π,可以通過在z1,z2,···,zT上應(yīng)用相同的排列π來獲得Transformer 層的輸出。這意味著transform 不對(duì)輸入序列的順序建模。文獻(xiàn)[6]通過正弦位置嵌入將絕對(duì)位置信息注入到輸入序列中。但本文認(rèn)為在處理語聲識(shí)別問題時(shí),相對(duì)位置對(duì)于語聲信號(hào)可能更有用。于是在接下來研究中,比較了4 種將位置信息編碼到Transformer 層輸入中的方法:正弦位置編碼、幀組合編碼、幀堆疊編碼、卷積編碼。
(1)在第一種方法中,正弦位置編碼,是將絕對(duì)位置信息進(jìn)行了編碼。

其中,pos 是位置,i是維度。也就是說,位置編碼的每個(gè)維度對(duì)應(yīng)于正弦曲線。波長形成從2π 到10000×2π 的幾何級(jí)數(shù)。例如,pos=3,dmodel=512,那么3對(duì)應(yīng)的位置向量如下:

需要注意的是,位置向量與輸入序列向量需要進(jìn)行相加這樣的特征組合方式,因此位置向量的長度必須為dmodel。
(2)在第二種方法中,幀組合是每兩幀疊加并跨步一次:它不會(huì)破壞特征序列中的排列不變性,因此表示為幀組合編碼。
(3)在第三種方法中,幀堆疊是將當(dāng)前幀和接下來的8 個(gè)未來幀堆疊在一起,然后進(jìn)行移動(dòng)步長stride = 2采樣,以形成新的Transformer輸入序列。這里由于堆疊的幀與其相鄰的堆疊的幀部分地重疊,因此排列不變性不再成立。
(4)在第四種方法中,卷積是對(duì)基于幀序列的梅爾濾波器組特征進(jìn)行操作,結(jié)構(gòu)如圖2所示。利用卷積神經(jīng)網(wǎng)絡(luò)的在時(shí)間和空間維度的平移穩(wěn)定性,將相對(duì)位置信息添加到特征序列中。

圖2 卷積位置編碼Fig.2 Convolutional position code
本文配置了兩個(gè)2D 卷積層,每個(gè)卷積層后連接歸一化層和Relu激活,第二層后接一池化尺寸為2×2的最大池化層。兩層通道數(shù)分別為32和64。對(duì)于80維的特征輸入,輸出是2560維。比較了不同卷積核尺寸對(duì)識(shí)別性能的影響。
最后連接一個(gè)線性投影層用于將特征向量投影到Transformer 可以接受的尺寸,即dmodel。為了保證實(shí)驗(yàn)公平性,本文標(biāo)簽序列嵌入向量均采用正弦位置編碼,維度為512,進(jìn)一步研究編碼器輸入的不同位置編碼方法對(duì)識(shí)別性能的影響。
語聲數(shù)據(jù)來自于中文語聲數(shù)據(jù)集AISHELL-1,包含178 h 來自400 個(gè)說話人的普通話聲頻和相應(yīng)文本信息。AISHELL-1 中的聲頻數(shù)據(jù)重采樣為16 kHz,16 位的WAV 格式。開發(fā)人員將數(shù)據(jù)集分為3 個(gè)部分:訓(xùn)練集、驗(yàn)證集和測試集。訓(xùn)練集包含來自340 個(gè)說話者的120098 個(gè)發(fā)音和大約140 h的普通話語聲數(shù)據(jù);驗(yàn)證集包含來自40個(gè)說話者的14326 個(gè)語句;測試集包含來自20 個(gè)說話者的7176個(gè)語句。對(duì)于每個(gè)說話者,大約發(fā)布了360 個(gè)語句(大約26 min的語聲)。
輸入特征是80維梅爾濾波器組特征,將語聲通過預(yù)加重、分幀和加窗、傅里葉變換和功率譜以及濾波器組有序計(jì)算的[13]。設(shè)置窗長為20 ms,幀移為10 ms。
普通話ASR 任務(wù)的典型建模單元是帶有聲調(diào)的聲母/韻母分開單元,帶有聲調(diào)的音節(jié)和單個(gè)漢字[14]。語聲數(shù)據(jù)集中聲頻對(duì)應(yīng)標(biāo)注即文本。考慮到使用其他建模單元進(jìn)行重新標(biāo)注的成本,本文使用pypinyin庫將漢字轉(zhuǎn)化為拼音。例如,“中國航天科工二院”分別用上述3 種建模單元獲得的標(biāo)簽序列為“zh ong1 g uo2 h ang2 t ian1 k e1 g ong1 er4 y uan4”、“zhong1 guo2 hang2 tian1 ke1 gong1 er4 yuan4”、“中 國 航 天 科 工 二 院”。考慮到本文的任務(wù)需要對(duì)齊每個(gè)漢字,選擇標(biāo)簽數(shù)量較少的帶聲調(diào)的音節(jié)作為輸出標(biāo)簽。
在本文工作中,dmodel參數(shù)設(shè)置為256。dmodel參數(shù)確定子層和嵌入層的輸出尺寸。參數(shù)注意頭數(shù)h設(shè)置為32。參數(shù)dk(查詢,鍵向量維)、dv(值向量維)設(shè)置為dmodel/h= 8。參數(shù)dff設(shè)置為1024。參數(shù)dff表示編碼器和解碼器層中完全連接的前饋神經(jīng)網(wǎng)絡(luò)層中隱藏單元的數(shù)量。
使用交叉熵作為模型的損失函數(shù)。在解碼器塊之后,線性全連接層用于執(zhí)行細(xì)微變換并將輸出映射到標(biāo)簽數(shù)量的維度,本文統(tǒng)計(jì)的標(biāo)簽數(shù)為1356。而softmax 激活用于獲得輸出預(yù)測概率。本文結(jié)合使用了波束搜索解碼器和外部3-gram語言模型,稱為淺層融合[15]。在解碼器預(yù)測結(jié)束標(biāo)簽之后,標(biāo)簽預(yù)測過程停止。
使用Adam[16]優(yōu)化器對(duì)該模型進(jìn)行了120 個(gè)周期的訓(xùn)練,并且批處理大小設(shè)置為100。在這項(xiàng)工作中,使用了基于帶聲調(diào)拼音的模型。該模型在每個(gè)時(shí)間步都預(yù)測一個(gè)拼音。所有代碼均使用keras和Tensorowow 2.0深度學(xué)習(xí)框架編寫。
(1)設(shè)置兩個(gè)卷積層的卷積核尺寸大小分別為(31, 9)和(16, 9),移動(dòng)步長分別為(2, 2)和(2, 1)。這里設(shè)置幀數(shù)目方向上的核尺寸為9,是為了與堆疊幀編碼保持同一水平。將上述配置卷積編碼與其他3 種位置編碼方法比較,在驗(yàn)證集和測試集上的詞錯(cuò)率(Word error rate, WER)實(shí)驗(yàn)結(jié)果如表1所示。

表1 不同位置編碼方法的WERTable 1 WER with different position codes
由表1中數(shù)據(jù)可知,正弦位置編碼仍然保持較好的識(shí)別效果,測試集上的WER為9.31%。幀組合在驗(yàn)證集上的WER 大小和其他方法接近,但是在測試集上的WER 相比偏高,推測該方法沒有將幀序列的相對(duì)位置信息編碼進(jìn)特征中,導(dǎo)致模型欠擬合,存在泛化能力不足的問題。
幀重疊位置編碼得到與正弦位置編碼十分類似的結(jié)果,可以判斷兩者方法都具有改善模型性能的優(yōu)勢。但是也發(fā)現(xiàn),正弦位置編碼在驗(yàn)證集WER大于幀疊加的情況下,測試集WER卻相對(duì)較小。推測正弦位置編碼效果更好,其可以在訓(xùn)練集上迭代更少的輪數(shù)來獲得更好的識(shí)別性能,因?yàn)榻档万?yàn)證集WER 通常需要調(diào)整更多參數(shù)設(shè)置,導(dǎo)致訓(xùn)練時(shí)間更長。
只有卷積位置編碼的WER 低于正弦位置編碼,測試集WER達(dá)到最低的8.62%,相對(duì)降低7.4%。進(jìn)一步驗(yàn)證了卷積操作在時(shí)間和空間維度上的平移穩(wěn)定性。分析原因是,卷積操作不僅在幀序列位置方向表達(dá)了相對(duì)位置信息,并且在梅爾濾波器組特征方向上提取到了高維特征信息。在共享卷積核參數(shù)下實(shí)現(xiàn)這兩種功能,既起到減少模型優(yōu)化參數(shù)量的效果,又融合了語聲的位置和聲學(xué)特征信息。
表1中最后一行還將正弦位置編碼和卷積編碼組合在一起,發(fā)現(xiàn)得不到任何提升。這進(jìn)一步支持了本文上述的推測,即卷積位置編碼的相對(duì)信息為Transformer層提供了足夠的特征,以建立更多的全局語聲序列信息。
(2)為了進(jìn)一步探索卷積位置編碼能在多大程度上提高模型的識(shí)別效果,通過調(diào)整兩層卷積核尺寸大小,獲得最低的測試集WER。實(shí)驗(yàn)過程如下:
首先固定第二層卷積核尺寸為(16, 9),實(shí)驗(yàn)結(jié)果如表2所示。
表2中第一行括號(hào)里數(shù)據(jù)為第一層卷積核的尺寸。由表2中數(shù)據(jù)可得,(41, 11)時(shí)的WER最低。接著固定第一層卷積核尺寸為(41, 11),實(shí)驗(yàn)結(jié)果如表3所示。

表3 第二層卷積核不同尺寸下的WERTable 3 The second layer convolution kernel WER under different sizes
由表3可得,在本文實(shí)驗(yàn)中,兩層卷積核尺寸分別為(41, 11)和(21, 11)的條件下,測試集WER達(dá)到最低的8.16%。相比與正弦位置編碼的基線模型,基于卷積位置編碼的Transformer模型WER降低了12.4%,達(dá)到了最佳的識(shí)別性能。
本文針對(duì)Transformer 模型中編碼器的輸入信息,采用了具有可學(xué)習(xí)性的卷積位置編碼,構(gòu)建了序列到序列的ASR 系統(tǒng)。輸入卷積層捕獲相對(duì)位置信息,這使后續(xù)的Transformer 層能夠了解編碼器中局部概念之間的長距離關(guān)系,進(jìn)而在解碼器中預(yù)測準(zhǔn)確的目標(biāo)序列。本文的4 個(gè)位置編碼方法,在添加3-gram 語言模型基礎(chǔ)上輸出預(yù)測標(biāo)簽,最佳配置將WER 相對(duì)降低了12.4%。將本文的系統(tǒng)與更好的解碼器優(yōu)化方法結(jié)合,或許能夠得到更好的識(shí)別效果。另外,不同模型的組合也會(huì)帶來不錯(cuò)的提升,例如結(jié)合具有循環(huán)機(jī)制的Transformer 層,這將是未來的研究工作。