# RNN part2 (李宏毅) ### RNN 訓練方法 1. Somple RNN Learning Target 示意圖  - 1. 對Training Data做embedding,並帶入輸入層 - 2. 將輸出層與真實Target計算所設定的loss function - 3. 利用Backpropagation進行gradient descent 2. Backpropagation through time(BPTT)  https://en.wikipedia.org/wiki/Backpropagation_through_time 3. RNN並不容易Train   - 1. Loss function有可能會劇烈震盪 - 2. Loss function的等高線圖其實存在一些斷崖,導致當參數剛好落在斷崖上時,gradient就會爆掉而無法training - 3. 可以用Clipping的方式來給一些限制,使gradient不要太大  - 4. 原因為:Somple RNN memory項的參數會一直被疊加,導致在計算gradient時,參數的一點點小變化就會有很大的差異  - 5. LSTM可以解決gradient vanishing的問題,因為Memory及input是疊加的,且forget gate不常關掉,memory就不容易被洗掉導致gradient消失 ### RNN各類應用 #### 多對一 * 需要對一串句子進行分類判斷,所以需要用到RNN的特性來處理句子,最後再將輸出轉為分類模型  #### 多對多 * 輸入音訊,每個一小段時間就用 vector 表示,可以做到每一個 vector 對應到一個 character * input, output 皆為 sequence, 但 output 比較短是 character sequence * 因為取的時間過短,output 可能會有同樣的 character 發生 * 解法:可用 trimming 把重複的 output 拿掉,但會有誤拿的狀況發生  #### CTC * 此問題可以用 CTC 解決,其在 output 後面增加 “中” 表示 null * ctc training 可運用窮舉法,假設全部都是對的,透過 training data 自動把詞彙組合起來   #### sequence to sequence learning * input output 都是 sequence, 不知道哪個長哪個短 * 最後的時點,memory存了所有input information * 會不斷的跑下去,要如何阻止他? 加入symbol ===(斷)  #### Many to Many (No Limitation) * 不做語音辨識,直接把聲音訊號丟進去,model得到辨識的結果 * 不用知道是何種語言(台語) #### Sequence-to-sequence Auto-encoder -Text * document to vector * 可以使用 bag of word 但會忽略掉 word order information * bag of word 詞彙是一樣的,但順序不同就會有不同意思  * word sequence 透過 RNN 變成invalid vector,當作encode輸入,長回一樣的句子 * invalid vector 當作input,長回原來的句子,代表 encode 資訊是重要的  #### sequence-to-sequence auto-encoder -speech * audio segments (word-level) to Fixed-length vector * 把聲音訊號變成vector 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up