Python迅速掌握語音識別之知識儲備篇
概述
從今天開始我們將開啟一個新的深度學習章節(jié), 為大家來講述一下深度學習在語音識別 (Speech Recognition) 的應用. 語音識別技術(shù)可以將語音轉(zhuǎn)換為計算機可讀的輸入, 讓計算機明白我們要表達什么, 實現(xiàn)真正的人機交互. 希望通過本專欄的學習, 大家能夠?qū)φZ音識別這一領(lǐng)域有一個基本的了解.
RNN
RNN (Recurrent Neural Network) 即循環(huán)神經(jīng)網(wǎng)絡, 用于處理輸入有相關(guān)性的任務. RNN 網(wǎng)絡包括一個輸入層, 一個隱層, 和一個輸出層組成, 如圖:
計算
隱層 (Hidden Layer) 定義了整個網(wǎng)絡的狀態(tài), RNN 網(wǎng)絡的計算過程如下:
計算狀態(tài) (State)
計算輸出:
RNN 存在的問題
梯度消失問題 (Vanishing gradient problem). 如果導數(shù)小于 1, 隨著網(wǎng)絡層數(shù)的增加梯度跟新會朝著指數(shù)衰減的方向前進, 這就是梯度消失, 如圖:
我們可以看出, 隨著時間的增加, 深層的網(wǎng)絡對淺層的感知變得越來越微弱, 梯度接近于0.
梯度爆炸問題 (Exploding gradient problem). 如果導數(shù)大于 1, 隨著網(wǎng)絡層數(shù)的增加梯度跟新會朝著指數(shù)增加的方向前進, 這就是梯度爆炸. 當 RNN 網(wǎng)絡導數(shù)大于 1 時就會出現(xiàn)時序依賴, 從而造成梯度爆炸.
LSTM
LSTM (Long Short Term Memory), 即長短期記憶模型. LSTM 是一種特殊的 RNN 模型, 解決了長序列訓練過程中的梯度消失和梯度爆炸的問題. 相較于普通 RNN, LSTM 能夠在更長的序列中有更好的表現(xiàn). 相比 RNN 只有一個傳遞狀態(tài) ht, LSTM 有兩個傳遞狀態(tài): ct (cell state) 和 ht (hidden state).
LSTM 增加了輸入門, 輸出門, 遺忘門 三個控制單元. LSTM 的 cell 會決定哪些信息被留下, 哪些信息被遺忘, 從而解決神經(jīng)網(wǎng)絡中長序列依賴的問題.
GRU
GRU (Gate Recurrent Unit) 和 LSTM 類似, 但是更易于計算. GRU 由重置門, 更新門, 和輸出門組成. 重置門和 LSTM 的遺忘文作用一樣, 用于決定信息的去留. 同理, 更新門的作用類似于 LSTM 的輸入門.
Seq2seq
Seq2seq 由 Encoder 和 Decoder 兩個 RNN 組成. Encoder 將變長序列輸出, 編碼成 encoderstate 再由 Decoder 輸出變長序列.
Attention 模型
Attention 是一種用于提升 RNN 的 Encoder 和 Decoder 模型的效果的機制. 廣泛應用于機器翻譯, 語音識別, 圖像標注等多個領(lǐng)域. 深度學習中的注意力機制從本質(zhì)上講和人類的選擇性視覺注意力機制類似. 核心目標也是從眾多信息中選擇出對當前任務目標更關(guān)鍵的信息.
Attention 實質(zhì)上是一種 content-based addressing 的機制. 即從網(wǎng)絡中某些狀態(tài)集合中選取給定狀態(tài)較為相似的狀態(tài), 進而做后續(xù)的信息抽取.
首先根據(jù) Encoder 和 Decoder 的特征計算權(quán)值, 然后對 Encoder 的特征進行加權(quán)求和, 作為 Decoder 的輸入. 其作用的將 Encoder 的特征以更好的方式呈獻給 Decoder. (并不是所有的 context 都對下一個狀態(tài)的生成產(chǎn)生影響, Attention 就是選擇恰當?shù)?context 用它生成下一個狀態(tài).
Teacher Forcing 機制
早起的 RNN 在訓練過程中的預測能力非常弱, 如果一個 unit 預測錯了, 后面的 unit 就很難再獲取對的結(jié)果. 比如我們翻譯一句話:
- Life is like a box of chocolates.You never know what you're going to get
- 人生就像一盒巧克力,你永遠也不知道下一塊是什么味道
如果我們把 life 翻譯成 “西伯利亞”, 那么后面再翻譯對的可能性就幾乎為 0.
Teacher Forcing 是一種網(wǎng)絡訓練的方法, 使用上一個 label 作為下一個 state 的輸入. 還是用上面的例子說明: 當使用 Teacher Forcing 機制的時候, 即時我們把 life 翻譯成 “西伯利亞”, 下一個 Decoder 的輸入我們會使用上一個的 label 作為 state, 即 “人生”, 而不是 “西伯利亞”. 這樣就大大提高了 RNN 網(wǎng)絡的預測能力.
到此這篇關(guān)于Python迅速掌握語音識別之知識儲備篇的文章就介紹到這了,更多相關(guān)Python 語音識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中使用haystack實現(xiàn)django全文檢索搜索引擎功能
django是python語言的一個web框架,功能強大。配合一些插件可為web網(wǎng)站很方便地添加搜索功能。下面通過本文給大家分享Python中使用haystack實現(xiàn)django全文檢索搜索引擎功能,感興趣的朋友一起看看吧2017-08-08以911新聞為例演示Python實現(xiàn)數(shù)據(jù)可視化的教程
這篇文章主要介紹了以911新聞為例演示Python實現(xiàn)數(shù)據(jù)可視化的教程,主要基于NMF主題模型,需要的朋友可以參考下2015-04-04Python multiprocessing 進程間通信方式實現(xiàn)
本文主要介紹了Python multiprocessing 進程間通信方式實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02pytorch 實現(xiàn)多個Dataloader同時訓練
這篇文章主要介紹了pytorch 實現(xiàn)多個Dataloader同時訓練的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05