論文:
ATTENTION-BASED MODELS FOR TEXT-DEPENDENT SPEAKER VERIFICATION
思想:
可以看作是在Google15年提出的d-vector算法的改進,
1)采用可學習的帶權重和偏置的cosine得分;
2)為減少語句中的噪聲和靜音干擾,對LSTM的輸出引入attention機制,自動學習時序依賴的重要性;此外,還對輸出進行了最大池化操作以提升模型時序變化魯棒性。
模型:
本文采用多層LSTMP結構,為減少噪聲和靜音影響,在LSTM結構后接attention結構;此外,對attention權重進行最大池化操作來提升模型對時序變化的魯棒性;損失采用邏輯思特回歸損失函數;注冊時,代表說話人的N個文本相關語句輸入到網絡中得到特征表達后取平均,以此作為說話人特征表達;test語句同樣輸入到網絡中提取特征表達;test表達和說話人表達計算帶權重的cosine得分;

- 相似度計算:ck為N個文本相關語句的均值特征,w~為attention輸出,w、b為cosine權重和偏置

- LSTMP:LSTM結構通過三個門控單元對流入流出信息進行篩選過濾,在時序依賴建模方面具有一定的優勢;在LSTM后接一層低維的線性映射來減少模型參數;

- attention: attention結構能夠對時序依賴的重要性進行建模,降低噪聲、靜音等造成的影響;attention的核心在於權重因子αt的學習,αt決定了時序的上下文信息中重要性;一般αt的計算通過多層感知機結構實現


- 本文對於et的映射函數f進行了討論,主要包括常量因子、線性函數、權重共享線性函數、非線性函數、權重共享非線性函數
1)常量因子

2)線性函數

3)權重共享線性函數

4)非線性函數

5)權重共享非線性函數

-
- 本文對於αt的輸入也進行了討論,分為跨層輸入和分層輸入
1)跨層輸入:采用倒數第二層的LSTM輸出作為attention輸入

2)分層輸入:采樣最后一層LSTM輸入作為attention輸入

- 最大池化:本文采用了兩種最大池化策略,對attention權重α進行最大池化操作,提升模型對時序變化的魯棒性

- 滑窗最大池化:采用固定大小窗口沿着權重α的維度進行滑動,每個窗口取保留最大值,其余置為0
- 全局最大池化:對α進行全局最大池化,僅保留最大的K個維度值,其余置為0
- 損失函數:邏輯斯特回歸二分類函數,輸入為cosine得分;當test語句的說話人j與說話人k相同時,δ為1,否則為0,σ即為sigmoid函數


訓練:
- 數據集:
- 訓練集:“OK Google” 和“Hey Google”的混合語料630k speakers 150M utts;
- 測試集:人工收集的“OK Google” 和“Hey Google”共計665 speakers;分為兩個注冊集和兩個驗證集,分別對應“OK Google” 和“Hey Google”;
- 關鍵詞檢測系統KWS[1]:提取800ms(80幀)語句長度
- 輸入特征:40維log-fbank
- 模型結構:3*LSTMP(128,64)
- 最大池化層:
- 滑窗最大池化的窗口為10幀,步長為5幀
- 全局最大池化的k值為5
- 錯誤率指標:等錯率EER(錯誤接受率FAR,錯誤拒絕率FRR)
實驗效果:
- 從文本相關說話人確認效果來看,attention結構確實能夠在一定程度上提升識別效果;此外,對於不同attention函數,權重共享非線性函數效果最好,然后分別是非線性函數、權重共享線性函數、線性函數、常量因子

- attention結構的輸入,選擇最后一層LSTM的輸出,相比於倒數第二層顯然效果更好一點

- 從實驗結果看,對attention權重進行最化池化操作在一定程度上確實能夠提升了模型對時序變化的魯棒性;滑窗最大池化操作相比全局最大池化操作又具有一定的優勢


結論:
本文提出了一種基於關鍵詞提取的文本相關說話人確認系統,並通過實驗驗證了該系統的有效性;通過系統性實驗比較,得到的最佳實踐為:1)采用了一種權重共享的非線性attention函數;2)采用最后一層的LSTM輸出作為attention函數輸入;3)對attention權重向量應用滑窗最大池化操作;通過以上優化,本文相比於基於LSTM的d-vector將EER降低了14%;
Reference:
[1]
https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/42537.pdf
(keyword spotting)