1. 程式人生 > >【吳恩達deeplearning.ai】深度學習(9):迴圈神經網路

【吳恩達deeplearning.ai】深度學習(9):迴圈神經網路

隨深度學習技術的發展,使用迴圈神經網路(Recurrent Neural Network,RNN)建立的各種序列模型,使語音識別、機器翻譯及自然語言理解等應用成為可能。

表示與型別

自然語言、音訊等資料都是前後相互關聯的資料,比如理解一句話要通過一整句而不是其中的幾個詞,分析一段音訊要通過連續的片段而不是其中的幾幀。前面所學的DNN以及CNN處理的都是前後毫無關聯的一個個單獨資料,對於這些序列資料則需要採用RNN進行處理。

序列

用迴圈神經網路處理時間序列時,首先要對時間序列進行標記化。對一個序列資料x,用符號xt來表示這個序列資料中的第t個元素。這個元素的型別因資料型別而異,對一段音訊,它可能其中的幾幀,對一句話,它可能是一個或幾個單詞,如下圖所示。

Harry Potter

i個序列資料的第t個元素用符號x(i)t表示,其標籤用符號y(i)t表示。

序列中的每個元素有相應的標籤,一般需要先建立一個包含序列中所有型別的元素的字典(Dictionary)。例如對上圖中的句子,建立一個含有10000個單詞的列向量詞典,單詞順序以A~Z排列,然後根據單詞在列向量中的位置,用one-hot向量來表示該單詞的標籤,部分表示如下圖:

字典

標記化完成後,將訓練資料輸入網路中。一種迴圈神經網路的結構如下圖:
RNN結構

左邊的網路可簡單表示為右圖的結構,其中元素xt輸入對應時間步(TIme Step)的隱藏層的同時,該隱藏層也會接收上一時間步的隱藏層啟用

at1,其中a0一般直接初始化為零向量。一個時間步輸出一個對應的預測結果y^t,輸入、啟用、輸出有對應的引數WaxWaaWy

以上結構的前向傳播過程,有:

a0=0 at=g1(Waaat1+Waxxt+ba) y^t=g2(Wyat+by)

其中baby是兩個偏差引數,啟用函式g1通常選擇tanh,有時也用ReLU,g2的選擇取決於需要的輸出型別,可選sigmoid或Softmax。

具體計算中以上的式子還可以進一步簡化,以方便運算。將WaxWaa堆疊成一個矩陣Waat1xt也堆疊成一個矩陣,有:

Wa=[Wax,Waa]