時間延遲神經網路
時間延遲神經網路(TDNN)是一種多層人工神經網路架構,其目的為 1) 以位移不變性對模式進行分類,以及 2) 在網路的每一層建立上下文模型。它本質上是一種一維卷積神經網路(CNN)。
位移不變分類意指分類器在分類前不需要明確的分割。對於時序模式(如語音)的分類,TDNN因此無需在分類聲音前確定其起點和終點。
在TDNN中進行上下文建模時,每一層的每個神經單元不僅接收來自下一層的激活值/特徵,還接收來自單元輸出模式及其上下文的輸入。對於時間訊號,每個單元接收來自下方單元隨時間變化的激活模式作為輸入。應用於二維分類(影像、時頻模式)時,TDNN可以在座標空間中以位移不變性進行訓練,從而避免在座標空間中進行精確分割。
歷史
TDNN於1980年代末期被提出,並應用於語音訊號中自動語音辨識的音素分類任務,在該任務中,精確的音段或特徵邊界難以或無法自動確定。因為TDNN能辨識音素及其底層的聲學/音韻特徵,且不受時間位置影響,所以其效能優於靜態分類。它也被應用於二維訊號(語音中的時頻模式,以及光學字元辨識中的座標空間模式)。
福島邦彥於1980年發表了新認知機。最大池化出現在1982年關於新認知機的出版物中,並於1989年出現在LeNet-5的出版物中。
1990年,Yamaguchi等人將最大池化應用於TDNN,以實現一個語者獨立的孤立詞辨識系統。
總覽
架構
以現代術語來說,TDNN的設計是一種1D卷積神經網路,其卷積方向是沿著時間維度。在最初的設計中,它恰好有三層。
網路的輸入是連續的語音訊號,經預處理後成為一個二維陣列(梅爾尺度頻譜圖)。一個維度是時間,每幀10毫秒;另一個維度是頻率。時間維度可以任意長,但頻率維度只有16。在最初的實驗中,他們只考慮發音為單一詞彙(如「baa」、「daa」、「gaa」)的極短語音訊號。因此,語音訊號可能非常短,實際上只有15個幀長(時間上為150毫秒)。
具體來說,他們是這樣處理語音訊號的:
- 輸入語音以12 kHz取樣,並經過漢明窗處理。
- 每5毫秒計算一次其快速傅立葉變換(FFT)。
- 透過取每個梅爾尺度能量帶中的對數能量,從功率譜計算出梅爾尺度係數。
- 時間上相鄰的係數會被平滑處理,結果為每10毫秒一個幀。
- 對於每個訊號,由人工手動偵測母音的起始點,並將整個語音訊號除了起始點前後各7個幀以外的部分截斷,總共只留下以母音起始點為中心的15個幀。
- 係數透過減去平均值後再進行縮放來進行標準化,使訊號值落在-1和+1之間。
TDNN的第一層是一個1D卷積層。該層包含8個形狀為 <math>3 \times 16 </math> 的卷積核。它輸出一個形狀為 <math>8 \times 13</math> 的張量。
TDNN的第二層是一個1D卷積層。該層包含3個形狀為 <math>5 \times 8</math> 的卷積核。它輸出一個形狀為 <math>3 \times 9</math> 的張量。
TDNN的第三層不是卷積層。它只是一個有3個神經元的固定層。設第二層的輸出為 <math>x_{i,j}</math>,其中 <math>i \in 1:3</math> 且 <math>j \in 1:9</math>。第三層的第 <math>i</math> 個神經元計算 <math>\sigma(\sum_{j\in 1:9} x_{i,j})</math>,其中 <math>\sigma</math> 是S型函數。基本上,它可以被視為一個有3個形狀為 <math>1 \times 9</math> 卷積核的卷積層。
它在約800個樣本上進行了20000至50000次的反向傳播步驟訓練。每個步驟都是對整個訓練資料集進行批次計算,即非隨機。這需要使用一台配備4個處理器的Alliant超級電腦。
範例
在語音訊號的情況下,輸入是隨時間變化的頻譜係數。
為了學習關鍵的聲學-音韻特徵(例如共振峰轉移、爆裂音、摩擦音等)而無需先進行精確定位,TDNN以時間位移不變的方式進行訓練。時間位移不變性是透過訓練時跨時間的權重共享來實現的:在輸入範圍內(如圖1從左到右)製作TDNN的時間位移副本。然後從一個整體的分類目標向量(見TDNN圖,輸出層顯示了三個音素類別目標(/b/、/d/、/g/))進行反向傳播,這會為每個時間位移的網路副本產生通常不同的梯度。然而,由於這些時間位移的網路只是副本,位置依賴性可以透過權重共享來消除。在這個範例中,這是透過在執行權重更新前,對每個時間位移副本的梯度進行平均來完成的。在語音方面,時間位移不變訓練被證明能夠學習到不受輸入精確位置影響的權重矩陣。這些權重矩陣也被證明能夠偵測到對人類語音感知重要的聲學-音韻特徵,如共振峰轉移、爆裂音等。TDNN也可以透過預訓練的方式進行組合或擴展。
實作
TDNN的精確架構(時間延遲、層數)主要由設計者根據分類問題和最有效的上下文大小來決定。延遲或上下文視窗是根據每個應用特定選擇的。目前也已有研究致力於創建可適應時間延遲的TDNN,以消除這種手動調整。
最新技術發展
在早期的比較中,基於TDNN的音素辨識器與基於隱馬可夫模型(HMM)的音素模型相比表現優異。現代的深度TDNN架構包含更多隱藏層,並在較高層級的更廣泛上下文中進行子取樣或池化連接。與基於高斯混合模型(GMM)的聲學模型相比,它們達成了高達50%的字詞錯誤率降低。雖然TDNN的不同層旨在學習上下文寬度漸增的特徵,但它們確實是對局部上下文進行建模。當需要處理長距離關係和模式序列時,學習狀態和狀態序列變得很重要,此時TDNN可以與其他建模技術結合。TDNN架構也已被應用於脈衝神經網路,取得了頂尖的成果,同時也適用於節能的硬體實作。
應用
語音辨識
TDNN於1989年被引入用於解決語音辨識中的問題,最初專注於位移不變的音素辨識。語音非常適合使用TDNN,因為口語聲音的長度很少一致,且精確分割困難或不可能。透過掃描聲音的過去和未來,TDNN能夠以時間位移不變的方式為該聲音的關鍵元素建立模型。這在聲音因混響而變得模糊時特別有用。大型的音素TDNN可以透過預訓練和組合較小的網路來進行模組化建構。
大詞彙量語音辨識
大詞彙量語音辨識需要在大型發音詞典的約束下,辨識組成單詞的音素序列。將TDNN整合到大詞彙量語音辨識器中是可行的,方法是引入狀態轉換並在構成單詞的音素之間進行搜尋。由此產生的多狀態時間延遲神經網路(MS-TDNN)可以從詞彙層級進行區別性訓練,從而將整個配置優化為詞彙辨識而非音素分類。
語者獨立性
為了實現語者獨立性,有人提出了二維變體的TDNN。在此,位移不變性同時應用於時間軸和頻率軸,以學習不受時間和頻率精確位置影響的隱藏特徵(後者是由於說話者的可變性所致)。
混響
語音辨識中一個持續存在的問題是辨識被回音和混響干擾的語音(例如在大型房間和使用遠距離麥克風的情況下)。混響可被視為語音被其自身的延遲版本所干擾。然而,一般來說,對訊號進行去混響處理是困難的,因為對於任何任意空間,其脈衝響應函數(以及訊號所經歷的卷積噪聲)是未知的。TDNN已被證明能有效地在不同程度的混響下穩健地辨識語音。
讀唇 – 影音語音
TDNN也成功地應用於早期的影音語音展示中,其中語音的聲音由視覺上的唇部運動讀取來輔助。在這裡,基於TDNN的辨識器共同使用視覺和聲學特徵以提高辨識準確度,尤其是在有噪聲的情況下,來自替代模態的互補資訊可以很好地在神經網路中融合。
手寫辨識
TDNN已被有效地用於緊湊且高效能的手寫辨識系統。位移不變性也被應用於離線手寫辨識影像中的空間模式(x/y軸)。
影片分析
影片具有時間維度,這使得TDNN成為分析運動模式的理想解決方案。這種分析的一個例子是結合車輛偵測和行人辨識。在檢視影片時,後續的影像被作為輸入送入TDNN,每個影像都是影片中的下一幀。TDNN的優勢在於其能夠檢視在時間上前後移動的物體,從而定義一個在時間變化時可被偵測的物體。如果一個物體能以這種方式被辨識,應用程式便可以預期該物體在未來會被找到,並執行最佳的行動。
影像辨識
二維TDNN後來以「卷積神經網路」之名被應用於其他影像辨識任務,其中位移不變訓練被應用於影像的x/y軸。
常用函式庫
- 由於方法上的等效性,TDNN幾乎可以在所有機器學習框架中使用一維卷積神經網路來實作。
- Matlab:神經網路工具箱具有明確的功能,可根據時間延遲的步長和可選的訓練函數來產生時間延遲神經網路。預設的訓練演算法是一種監督式學習的反向傳播演算法,它根據萊文伯格-馬夸特優化來更新濾波器權重。該函數為 timedelaynet(delays, hidden_layers, train_fnc),會回傳一個使用者可以訓練並提供輸入的時間延遲神經網路架構。
- Kaldi自動語音辨識工具包中有一種TDNN的實作,並針對語音辨識進行了多項優化。
參見
- 卷積神經網路:當卷積沿著資料的時間軸進行時,卷積神經網路與TDNN非常相似。
- 循環神經網路:循環神經網路也處理時序資料,但方式不同。RNN不是使用隨時間變化的輸入,而是維持內部隱藏狀態來追蹤過去(在雙向RNN的情況下,也包括未來)的輸入。