1、深度學習模型的基本結構——RNN


本系列為深度學習課程筆記,課程網址在http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS17.html

深度學習的基本步驟:定義模型-->定義損失函數-->找到優化方法

clipboard

課程大綱

clipboard

1、熟悉定義符號(略過)

clipboard

2、RNN

clipboard

簡單地說就是

clipboard

clipboard

RNN可以看做是一個function反復迭代。

為什么不用feedFord network,因為我們輸入的sequence可能會比較長,這樣的話feedFord network可能就會參數很多,容易導致過擬合。

RNN的一個好處是參數少,有可能比較難train,但是你一旦在training data上獲得比較好的結果,在testing data上的效果通常也不會差。

clipboard

Deep RNN要注意到一點是 f1的輸出和f2的輸入的維度必須一致,這樣才好拼接到一起。

clipboard

雙向RNN。就是要加入一個f3,將f1的輸出和f2的輸出整合在一起。至於f1和f2不必一樣,你可以隨便設計。

下面介紹一些具體的應用

clipboard

這個是直接用sqe2sqe的語音識別。第一層是bi-rnn,第二層是將若干第一層的輸出(合起來)作為輸出,也是bi-rnn,后面都這樣下去。這種結夠比單純的深度bi-rnn更容易訓練。第二層block雖然需要處理若干第一層block的輸出,但是這種法有利於做並行加速。RNN很難做並行,因為下一個節點必須得等第一個節點的輸出才能進行,而pyramidal rnn里高層的block,序列變短了,每個block中雖然運算量較大,但是可以用並行運算加速。

clipboard

最簡單的RNN運算如上圖。

clipboard

C變化較慢,可以記住時間比較久的信息。

clipboard

也可以把C拿下來一塊運算。一般W中對應於C的參數都是對角矩陣。

clipboard

然后如下運算

clipboard

z_i是輸入門,決定了z的哪些信息流入,z_f是遺忘門,決定c_t-1的哪些信息遺忘。

clipboard

然后就可以反復這個步驟。,以上粗箭頭表示乘以一個矩陣,細箭頭表示啥也沒做。

clipboard

使用例子(下面是一些煉丹心得,詳細了解需要認真去讀原論文)

clipboard

簡化版的語音識別任務,每一段聲音識別成一個因素即可,多分類問題。

使用單項RNN有一個有效的trick是 Target Delay

在原始聲音信號(frame)右端補若干個零(圖中是3個),在識別時標簽向后延后若干位開始做識別。

clipboard

以上任務在若干種方法的實驗效果

clipboard

縱軸是分類正確率,橫軸Window size是(如果是MLP)是指:如果input是一排frame(每個frame的聲音信號可能只有0.01秒),每次判斷時將前后若干frame拼接起來作為一個比較長的vector去判斷中間一個frame的標簽是什么。圖中MLP方法的Window size為10時效果最好。

橫軸target delay是(如果是RNN或LSTM)是指label往右shift幾個frame。

clipboard

上面這個圖的橫軸是訓練的輪數,從圖中可以看出LSTM的訓練速度比RNN更快

下面這個圖是LSTM的各種架構跑的結果。論文名字叫LSTM 漫游。嘗試了各種各樣的LSTM架構和參數。

clipboard

clipboard

橫軸是錯誤率,縱軸是訓練時間。不同的顏色代表不同的LSTM架構,相同的顏色不同的點代表同樣的架構,不同的參數。

clipboard

后面三個MUT1、MUT2、MUT3使用基因演算法去尋找最佳的RNN結構,使用LSTM和GRU的結構為初始基因,使用不同的組合去找。

clipboard

還有一個比較經典的RNN結構,普通的RNN受輸入長度的限制。輸入過長時,內存或顯存放不下。而下面這個結構Stack RNN輸入可以無限長,它是將輸入每N個取出來放到一個function里輸出需要存儲的information同時輸出push、pop、nothing操作。具體詳見論文吧。

clipboard


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM