【吳恩達deeplearning.ai】深度學習(9):迴圈神經網路
隨深度學習技術的發展,使用迴圈神經網路(Recurrent Neural Network,RNN)建立的各種序列模型,使語音識別、機器翻譯及自然語言理解等應用成為可能。
表示與型別
自然語言、音訊等資料都是前後相互關聯的資料,比如理解一句話要通過一整句而不是其中的幾個詞,分析一段音訊要通過連續的片段而不是其中的幾幀。前面所學的DNN以及CNN處理的都是前後毫無關聯的一個個單獨資料,對於這些序列資料則需要採用RNN進行處理。
用迴圈神經網路處理時間序列時,首先要對時間序列進行標記化。對一個序列資料,用符號來表示這個序列資料中的第個元素。這個元素的型別因資料型別而異,對一段音訊,它可能其中的幾幀,對一句話,它可能是一個或幾個單詞,如下圖所示。
第個序列資料的第個元素用符號表示,其標籤用符號表示。
序列中的每個元素有相應的標籤,一般需要先建立一個包含序列中所有型別的元素的字典(Dictionary)。例如對上圖中的句子,建立一個含有10000個單詞的列向量詞典,單詞順序以A~Z排列,然後根據單詞在列向量中的位置,用one-hot向量來表示該單詞的標籤,部分表示如下圖:
標記化完成後,將訓練資料輸入網路中。一種迴圈神經網路的結構如下圖:
左邊的網路可簡單表示為右圖的結構,其中元素輸入對應時間步(TIme Step)的隱藏層的同時,該隱藏層也會接收上一時間步的隱藏層啟用
以上結構的前向傳播過程,有:
其中、是兩個偏差引數,啟用函式通常選擇tanh,有時也用ReLU,的選擇取決於需要的輸出型別,可選sigmoid或Softmax。
具體計算中以上的式子還可以進一步簡化,以方便運算。將和堆疊成一個矩陣,和也堆疊成一個矩陣,有: