• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于雙通路CNN的端到端語音識別研究*

      2021-11-25 07:39:36黃洪全宋悅陽陳延明
      傳感器與微系統(tǒng) 2021年11期
      關(guān)鍵詞:池化層錯誤率集上

      胡 黎, 黃洪全, 梁 超, 宋悅陽, 陳延明

      (廣西大學 電氣工程學院,廣西 南寧 530003)

      0 引 言

      21世紀初,最先進的語音識別技術(shù)通常是基于隱馬爾可夫模型的高斯混合模型(Gaussian mixture model-hidden Markov model,GMM-HMM)[1]。隨著時代的發(fā)展,GMM-HMM由于網(wǎng)絡(luò)層級相對較淺,參數(shù)訓練會存在嚴重不足的情況,使其無法滿足實際的建模和實用化要求。2011年后,深度神經(jīng)網(wǎng)絡(luò)(deep neural network,DNN)因能更好利用語音幀的上下文信息等特點逐漸取代了GMM,DNN和HMM結(jié)合的語音識別模型,很大程度上降低了語音識別的錯誤率[2]。DNN-HMM模型的成功啟發(fā)了一批卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)和長短期記憶(long short-term memory,LSTM)[3]網(wǎng)絡(luò)等神經(jīng)網(wǎng)絡(luò)模型在語音識別之中的深入運用。

      作為一種能進行深層局部連接的網(wǎng)絡(luò)結(jié)構(gòu),CNN在許多連續(xù)語音識別任務(wù)中都取得了優(yōu)于DNN模型的成績。文獻[4]將CNN應(yīng)用于大型詞匯連續(xù)語音識別任務(wù),相比于DNN模型取得了巨大的精度提升;文獻[5]通過完全卷積層模型實驗驗證了非常深的CNN在語音識別中的優(yōu)異性能。文獻[6]論述了CNN相對于DNN在提取語音特征方面的優(yōu)勢和在大規(guī)模中文語音識別任務(wù)上的出色表現(xiàn)。

      在傳統(tǒng)淺層CNN模型中會存在特征提取不足導(dǎo)致語音識別精度相對不高的問題,常用的解決辦法是通過不斷加深網(wǎng)絡(luò)深度來獲取更多的特征信息,但由此會引入?yún)?shù)量巨大、梯度消失等新的問題。

      本文通過分析CNN原理,提出了一種可行的學習更多特征的方法,即雙通路卷積神經(jīng)網(wǎng)絡(luò)(double-path CNN,DPCNN)。通過DPCNN子網(wǎng)絡(luò)對同一語音輸入進行特征提取,全連接層對子網(wǎng)絡(luò)進行特征融合,并利用級聯(lián)Attention-CTC方法訓練得到了語音到拼音的端到端語音識別模型。

      1 DPCNN

      1.1 CNN

      CNN的基本結(jié)構(gòu)由輸入層(input layer)、卷積層(con-volutional layer,Conv)、池化層(pooling layer)、全連接層(fully connected layers,FC)和輸出層(output layer)構(gòu)成。

      在CNN的一層卷積層中,多個神經(jīng)元排列組成了特征圖,每個神經(jīng)元都只與其部分鄰層神經(jīng)元相連接,位于同一特征圖中的所有神經(jīng)元共享權(quán)值,即卷積核。卷積核通過減少CNN各層之間的連接,降低了網(wǎng)絡(luò)的參數(shù)數(shù)量,從而降低了模型過擬合的風險。卷積層可以計算為

      池化層也叫下采樣層。池化操作相當于對池化層輸入進行了空間維度縮減,并增大了感受野,同時減少模型計算量和參數(shù)數(shù)量。在一定程度上池化層也防止了模型過擬合,利于模型的優(yōu)化。池化的方法有多種,通常用到的池化操作有最大池化(max-pooling)和平均池化(mean-pooling)。

      CNN一般采用多層卷積層和池化層交替設(shè)置,即一個或多個卷積層連接一個池化層,池化層后再連接一個或多個卷積層,通過卷積層和池化層的相互配合來學習特征。CNN中的全連接層相當于一個多分類神經(jīng)網(wǎng)絡(luò),全連接層也能進一步收集更多的特征以滿足特征提取的要求,最終通過SoftMax函數(shù)得到整個網(wǎng)絡(luò)的輸出。CNN通過經(jīng)典的誤差反向傳播算法來調(diào)整參數(shù),完成卷積核和全連接層權(quán)值的更新。

      1.2 DPCNN

      為解決傳統(tǒng)淺層CNN模型特征提取能力不足的問題。本文在保持一定深度的CNN的基礎(chǔ)上適當增大了CNN自身的寬度,提出了DPCNN。DPCNN整體結(jié)構(gòu)由兩個相同的子網(wǎng)絡(luò)“并行”組成,子網(wǎng)絡(luò)結(jié)構(gòu)參考全序列CNN[6]設(shè)計,結(jié)構(gòu)如圖1所示。

      圖1 DPCNN結(jié)構(gòu)

      Conv3—32代表卷積層卷積核為3×3,通道數(shù)為32。Maxpool代表2×2的最大池化。每通路子網(wǎng)絡(luò)由多個卷積層和池化層組成,兩個子網(wǎng)分別進行特征提取和池化,維度拼接后輸入到全連接層進行融合并訓練,最后使用SoftMax函數(shù)輸出網(wǎng)絡(luò)的分類結(jié)果。DPCNN通過增大CNN的寬度使得模型能夠從語音信號中提取和學習到更多的數(shù)據(jù)特征,從而提高模型的識別性能。

      為了進一步提高網(wǎng)絡(luò)識別精度和泛化性能,在每層卷積層后加入批量歸一化(batch normalization,BN)層,加入BN層可以使得網(wǎng)絡(luò)在較大學習率時不受梯度消失的影響,加快網(wǎng)絡(luò)的收斂速度,同時BN層在一定程度上可以防止過擬合。在全連接層使用Dropout,按照丟棄率隨機使部分神經(jīng)元失活,從而進一步防止模型過擬合并增強模型泛化性能。

      2 連接時序分類

      在一般的序列學習任務(wù)中,傳統(tǒng)的序列相關(guān)神經(jīng)網(wǎng)絡(luò)模型需要預(yù)先對輸入序列和輸出序列進行預(yù)處理,明確輸入數(shù)據(jù)和輸出標簽之間的對應(yīng)關(guān)系。在語音識別任務(wù)中,語音數(shù)據(jù)是通過錄制等方式將模擬信號轉(zhuǎn)為數(shù)字信號而得到的,很難獲取到包含輸入語音到輸出標簽之間一一對齊的大規(guī)模訓練樣本。鑒于這一點,本文采用的是由Graves A等人[7]提出連接時序分類(connection timing classification,CTC)方法。CTC語音識別模型與傳統(tǒng)的基于HMM的模型最大的不同在于它不需要事先建立輸入語音特征和輸出標簽之間的對齊關(guān)系,可以讓模型直接對輸入語音特征進行端到端學習,并輸出預(yù)測序列的概率。

      CTC假設(shè)對給定輸入而言,每個輸出之間都是條件獨立的,所以,對于給定長度為T的輸入語音特征x,計算輸入x生成一條正確路徑為π的條件概率是十分簡單的

      CTC引入了一個很特別“blank”標簽,在輸出標簽的首尾和標簽之間都需要插入“blank”,用以表示空白,匹配路徑時需要去掉輸出中連續(xù)重復(fù)的符號和空白。由于“blank”可以插入目標標簽任何位置,所以在每個時間步,對于相同的目標標簽,可以存在許多對匹配路徑。

      例如

      式中 “-”為插入的blank標簽,Β為多對一映射函數(shù),即:對于不同路徑(a,-,-,bb,-,c),(-,aa,-,b,-,c) 和(a,-,b,-,-,c)等候選序列都映射到相同的目標標簽(a,b,c)。

      CTC通過對所有可能的路徑πi的概率求和來獲得目標標簽l的概率

      p(l|x)=∑p(πi|x)

      (4)

      CTC的損失函數(shù)定義為每個訓練樣本正確標記的負對數(shù)概率之和

      LCTC=-lnp(l|x)

      (5)

      由于CTC損失函數(shù)可微,因此,可通過前向—后向動態(tài)規(guī)劃算法有效地計算方程通過不斷降低CTC損失值達到網(wǎng)絡(luò)訓練的目的,使得預(yù)測序逐漸逼近真實標簽。

      整個CTC網(wǎng)絡(luò)可以通過最佳路徑解碼:直接將對應(yīng)最高概率的標簽串聯(lián)起來同時合并重復(fù)項標簽、刪除空白標簽,從而得到最終的輸出序列。

      3 級聯(lián)Attention-CTC

      由于CTC中存在的假設(shè):網(wǎng)絡(luò)所有輸出之間條件獨立,在實際語音環(huán)境中并不成立,從而制約了CTC網(wǎng)絡(luò)性能的進一步提升。為了解決CTC方法的條件獨立性假設(shè)問題,同時為了從輸入語音特征中獲取更多的信息,本文在全連接層中引入了注意力(attention)機制,組成級聯(lián)Attention-CTC結(jié)構(gòu),全連接層中的Attention機制如圖2所示。

      圖2 Attention機制

      Attention得分情況如下

      ehi=tanh(wThi+b)

      (6)

      C=AH

      (8)

      等式(6)中,hi為CNN提取到的高維特征,wT和b為權(quán)重矩陣和偏置矩陣,其值由模型訓練得來。利用雙曲正切函數(shù)tanh得到代表當前輸入特征的Attention得分ehi。為了得到每一個輸入特征相應(yīng)的權(quán)重需要對所有的Attention得分進行指數(shù)歸一化,等式(7)中αi即為對應(yīng)特征的Attention權(quán)重。等式(8)中,A為αi組成的Attention權(quán)重矩陣,通過輸入特征矩陣和權(quán)重矩陣之間的逐元素乘積,Attention機制最終輸出C被輸入到CTC損失函數(shù)以指導(dǎo)模型的訓練過程。Attention機制可以通過對與當前輸出相關(guān)的關(guān)鍵特征賦予更高的權(quán)重的方式在一定程度上削弱了CTC中條件獨立性假設(shè)的約束,減少在模型訓練階段了序列的不規(guī)則對準[8],從而改善CTC端到端設(shè)計方法的建模能力。

      通過級聯(lián)Attention-CTC,本文構(gòu)建了完整的DPCNN-Attention-CTC模型。模型結(jié)構(gòu)如圖3所示。

      圖3 DPCNN-Attention-CTC模型

      4 實 驗

      本實驗在GPU服務(wù)器中完成,GPU為NVIDIA Tesla P100,顯存16G。利用Keras框架搭建模型并完成相應(yīng)訓練和測試。

      4.1 語音數(shù)據(jù)

      實驗采用的語音數(shù)據(jù)為清華大學開源的中文普通話語料Thchs30,該語料庫訓練集時長25 h共10 000句發(fā)音,驗證集時長19 h共893句發(fā)音,測試集時長624 h共2 495句發(fā)音。模型首先對時域的語音信號進行傅里葉變換得到語音的語譜圖,語譜圖綜合了頻譜圖和時域波形的特點[9],利用語譜圖作為輸入,可以避免頻域和時域兩個維度的信息損失[6],模型能更加全面地學習語音信號所包含的各項特征。

      4.2 模型訓練參數(shù)設(shè)置

      本文設(shè)置了6組對比實驗,對CNN-CTC,DPCNN-CTC和DPCNN-Attention-CTC三種網(wǎng)絡(luò)結(jié)構(gòu)在卷積層為8層和10層時分別進行了模型訓練及測試。三種網(wǎng)絡(luò)中卷積池化層都為兩層3×3卷積層和一層2×2最大池化層重復(fù)堆疊,8層和10層卷積層的每層卷積核個數(shù)分別為16-16-32-32-64-64-128-128和16-16-32-32-64-64-128-128-256-256。全連接層都為2層,其輸出維度分別為512和1 024。采用中文拼音作為模型建模單元,模型最終的輸出分類數(shù)為1 423。

      模型的激活函數(shù)選用的是修正線性單元(rectified linear unit,ReLU)函數(shù)。ReLU激活函數(shù)可以有效地進行梯度下降以及反向傳播。因為當輸入大于0時Relu函數(shù)梯度始終為1,小于等于0時始終為0,所以能很好地克服網(wǎng)絡(luò)訓練過程中的梯度消失問題,同時也可以緩解過擬合現(xiàn)象,加快訓練速度,使得模型取得更好的效果。

      實驗采用帶動量的隨機梯度下降優(yōu)化器,初始學習率大小設(shè)置為0.01,動量為0.9。

      4.3 實驗結(jié)果與分析

      在Keras框架搭建相應(yīng)的模型,并在訓練集上完成模型訓練。使用編輯距離作為模型誤差度量。在測試集上隨機選取100句語音測試對應(yīng)模型的識別錯誤率,每個模型測試進行5次,最終錯誤率取5次測試的平均值。六種網(wǎng)絡(luò)結(jié)構(gòu)在Thchs30數(shù)據(jù)集上的訓練測試。

      六種網(wǎng)絡(luò)模型8層CNN-CTC,10層CNN-CTC,8層DPCNN-CTC,10層DPCNN-CTC,8層DPCNN-Attention-CTC,10層DPCNN-Attention-CTC的錯誤率分別為28.2 %,27.4 %,24.2 %,23.8 %,22.9 %,23.3 %??梢钥闯觯?)10層CNN-CTC相較于8層CNN-CTC錯誤率減小0.8 %,表明增加CNN深度有助于提高語音識別系統(tǒng)的準確率;2)8層DPCNN-CTC相比于8層CNN-CTC和10層CNN-CTC錯誤率分別降低了4 %和3.2 %,表明DPCNN在各子網(wǎng)絡(luò)模型深度較淺時,能得到相比更深的單通路CNN相同甚至更好的效果,從而驗證了DPCNN能夠通過增加模型的寬度從而提高整體的語音識別性能;3)8層DPCNN-Attention-CTC在6種結(jié)構(gòu)中獲得了最低的錯誤率,達到了22.9 %,其相較于8層CNN-CTC和8層DPCNN-CTC錯誤率相對降低了18.8 %和5.4 %,Attention機制的加入使得模型的識別效果進一步增強,證明了DPCNN-Attention-CTC模型的有效性。在Thchs30數(shù)據(jù)集上的訓練結(jié)果可知,10層DPCNN-Attention-CTC相較于8層DPCNN-Attention-CTC錯誤率上升了0.4 %,這是因為隨著模型的層數(shù)加深,模型復(fù)雜度增大,模型在訓練集上的擬合效果增強,反而導(dǎo)致其在測試集上的錯誤率上升,即模型的泛化能力下降。

      圖4為卷積層為8的三種網(wǎng)絡(luò)結(jié)構(gòu)在訓練階段的訓練集損失值變化曲線。圖4中標記了三種網(wǎng)絡(luò)結(jié)構(gòu)損失值到達穩(wěn)定階段所需的訓練輪次和相應(yīng)的損失值。DPCNN-Attention-CTC在24輪次時其損失值基本穩(wěn)定在了12.8左右。相反,DPCNN-CTC和CNN-CTC就要慢得多,損失值到達穩(wěn)定階段分別需要36和42輪次,同時穩(wěn)定的損失值也大于DPCNN-Attention-CTC模型??梢苑治龀鲇柧毿Ч募铀賮碜杂诩壜?lián)Attention-CTC模塊。Attention機制可以被視為消除了CTC解碼器中不必要路徑的預(yù)對齊操作。同時,CTC保證語音幀和拼音標簽之間的單調(diào)對齊,這有助于引導(dǎo)Attention機制將注意力集中在順序相關(guān)的特征和標簽上。因此,模型將生成較少無關(guān)的語音標簽,從而導(dǎo)致觀察到的加速效果。

      圖4 模型損失值變化曲線

      5 結(jié)束語

      本文基于DPCNN實現(xiàn)了一種語音到拼音的端到端語音識別模型。通過在中文語音數(shù)據(jù)集的實驗證明了所提出DPCNN-Attention-CTC模型的有效性。通過增加CNN的寬度從語音信號中提取更多有用的特征用于模型訓練,避免了網(wǎng)絡(luò)深度加深造成的梯度消失、訓練困難等問題。并利用Attention機制改進CTC端到端方法,加快模型訓練的同時進一步降低了模型的識別錯誤率。

      未來的研究主要包括以下幾個方向:1)使用更多的語音數(shù)據(jù),研究該模型在大數(shù)據(jù)集上的表現(xiàn);2)通過多通路神經(jīng)網(wǎng)絡(luò)提取多種語音特征用于模型訓練,從而獲得更加全面的語音信息;3) 引入語言模型,進一步改善CTC網(wǎng)絡(luò)性能。

      猜你喜歡
      池化層錯誤率集上
      限制性隨機試驗中選擇偏倚導(dǎo)致的一類錯誤率膨脹*
      卷積神經(jīng)網(wǎng)絡(luò)模型研究分析*
      基于卷積神經(jīng)網(wǎng)絡(luò)的紙幣分類與點鈔
      Cookie-Cutter集上的Gibbs測度
      基于深度學習卷積神經(jīng)網(wǎng)絡(luò)的人體行為識別研究
      科技傳播(2020年6期)2020-05-25 11:07:46
      鏈完備偏序集上廣義向量均衡問題解映射的保序性
      基于全卷積神經(jīng)網(wǎng)絡(luò)的SAR圖像目標分類*
      復(fù)扇形指標集上的分布混沌
      正視錯誤,尋求策略
      教師·中(2017年3期)2017-04-20 21:49:49
      解析小學高段學生英語單詞抄寫作業(yè)錯誤原因
      手游| 南充市| 深州市| 连南| 巴彦淖尔市| 蒙山县| 丰都县| 贡觉县| 陇西县| 且末县| 旅游| 翼城县| 宁安市| 宕昌县| 富川| 棋牌| 扶绥县| 浦县| 甘南县| 通化县| 兴化市| 丰镇市| 旬阳县| 灵川县| 安义县| 朔州市| 于田县| 柳州市| 仪征市| 沽源县| 德保县| 乌苏市| 郯城县| 大荔县| 横峰县| 富蕴县| 汉中市| 湟中县| 法库县| 南京市| 马尔康县|