循環神經網絡應用|深度學習(李宏毅)(六)
一、Many to one
- 情感分析
存在許多有標籤的句子,將這些句子使用RNN讀一遍,然後取RNN的最後一個輸出作為預測情感的結果進行分類。
- 關鍵詞提取
使用RNN將多篇帶有關鍵詞標籤的文章讀一遍,然後把最後一個輸出拿出來做attention,然後將結果放到前饋網絡中去,最後輸出文章的關鍵詞。
二、Many to Many
- Many to Many (輸出較短)
在語音辨識中,可以將聲音訊號(Acoustic Features)按照每一固定時間(如0.1s)劃分為多個輸入向量得到一個序列,然後使用RNN訓練該序列,網絡會輸出RNN對應標籤中的哪一個字。
將網絡輸出進行trimming就可以得到該輸出對應的標籤為「好棒」。
但是這樣網絡仍然存在問題,網絡無法區分「好棒」和「好棒棒」。CTC(Connectionist Temporal Classification)可以很好地解決這個問題,CTC添加了一個額外的符號「φ」來代表「null」,使用CTC進行識別的結果如下:
由於網絡的輸出比語音的label要長,無法確定每一幀與字符之間的對應關係,因此使用枚舉的方式,將所有的可能都當做正確來進行訓練。
以下為使用CTC進行語音識別的一個例子:
- Many to Many (輸出長度無限制)
這一部分指的是輸入和輸出都是序列,但是具有不同的長度(Sequence to sequence learning)。
- 機器翻譯
在機器翻譯中,可以將一種語言的序列丟進RNN中,然後取RNN得最後一個輸出當做輸入繼續訓練,然後將每一個輸出當做輸入繼續訓練就可以得到另一種語言的一個序列:
但是這樣的話不能確定什麼時候停下來結束翻譯,因此加入一種字符「===」 (斷)來表示翻譯結束:
- 語法解析
使用RNN來訓練一些句子使其輸出句子的語法序列,訓練得到的模型就可以用來解析句子的語法結構:
- 文本自編碼器
對文本的特徵提取可以使用RNN來訓練文本的自編碼器,通過自編碼器可以學習到文本的特徵信息。自編碼器的Encoder將一個句子中的詞的詞向量作為輸入,然後將最後一個輸出作為輸入傳入Decoder,使Decoder輸出一個一模一樣的句子出來,因此Encoder的輸出就包含了句子的特徵信息。
另外一個文本自編碼器的例子是一個四層的LSTM,這個自編碼器的Encoder將句子分別獲得不同的向量,然後將得到的向量繼續編碼得到整個document的向量。自編碼器的Decoder先將Encoder的輸出還原成句子的向量,然後在繼續Decode還原會原來的文本內容。
- 語音自編碼器
RNN自編碼器也可以使用語音信號作為輸入,也就成為了語音自編碼器,該網絡可以將語音信號轉換成固定長度的向量。在將編碼得到的向量進行可視化以後可以看到具有相同或相似單詞的聲音訊號會距離比較近:
語音自編碼器可以用來進行語音搜索、聽歌識曲這樣的工作,假如有一個語音數據庫,可以將數據庫中的語音數據劃分為多個segment,然後編碼這些數據的segment得到其編碼向量,在進行搜索時就可以將搜索的聲音訊號獲得其編碼向量來比較與數據庫中數據的編碼向量的相似度即可。其過程如下:
其網絡結構如下:
經過自編碼器編碼的語音訊號通常具有一定的規律,比如在下圖中將一個單詞的「f」換成「n」會使得編碼向量向同樣的方向變化:
- 聊天機械人
使用RNN還可以用來做聊天機械人,RNN接收問題序列作為輸入,輸出對應的回答:
三、Attention-based Model
- Attention-based Model介紹
除了RNN還有另一種使用記憶的模型叫做Attention-based Model,這個模型可以看做RNN的一種進階版本。
在Attention-based Model中,機器會存儲「記憶」在memory中,當外界需要獲取某些信息時機器會組織存儲的記憶來給出對應的回答:
在該模型中會有一個DNN或者RNN作為中央處理器來接收輸入並且根據輸入來操縱一個Reading Head Controller,從而從機器的memory中獲取對應的數據:
Attention-based Model還有一個進階的版本,在這個模型中DNN或RNN還會操縱一個Writing Head Controller,從而可以實現將數據存儲到對應的memory中,這個模型就是神經圖靈機(Neural Turing Machine):
- 閱讀理解(Reading Comprehension)
Attention-based Model可以用來做閱讀理解(Reading Comprehension),模型會將資料進行語義分析得到語義的向量,當一個Query輸入到中央處理器中時,中央處理器就會多次移動探頭獲取相應的信息來進行響應:
下圖為使用Attention-based Model進行的一次實驗,其中Hop1、Hop2、Hop3代表時間,藍色區塊代表探頭的位置,最終根據問題機器給出了正確的回答:
- 圖像問答(Visual Question Answering)
訓練數據中的圖像會經過CNN得到對應的向量,當外界的Query輸入到中央處理器中時,中央處理器就會多次移動探頭獲取相應的信息來回答輸入的圖像由什麼組成的問題:
其架構如下:
- 語音問答(Speech Question Answering)
這部分的實驗使用的是托福聽力考試的資料,模型會將訓練數據的語音進行語音識別然後對識別的結果進行語音分析得到memory中存儲的記憶,模型也會對問題進行語義分析然後從memory中找到對應的答案:
下圖實驗結果中前五個是不使用神經網絡的樸素方法,可以看到使用神經網絡的方法得到的準確率是相對比較高的: