Leo Yeh's Blog

SAS 深度學習 (7)

教學目標

初步了解循環神經網路 (Recurrent Neural Networks,RNN) 的基本概念。

重點概念

首先序列模型尤其是循環神經網路 (Recurrent Neural Networks,RNN) ,以下簡稱 RNN,其主要用於處理非結構化序列資料的能力,在過去幾年中獲得了極大的普及,此模型被稱為循環模型或遞歸模型主要是因為其能夠處理按照順序出現的資料,像是文本資料和時間戳資料。此外由於大多數機器學習模型皆無法處理文本資料,但是文本資料在現代分析中無處不在,所以在機器學習中擁有 RNN 將會非常重要。

接著 RNN 擅長自然語言理解以及語言產生的工作方式,包括語義分析,翻譯,語音到文本,情感分類,自然語言產生和圖像字幕,像是用於客戶服務的聊天機器人必須首先使用自然語言理解技術來理解客戶的請求,然後將請求路由到正確的人類回應者,或者使用自然語言產生技術來盡可能自然產生答覆。RNN 模型擅長為文本資料建模,因為它們可以輕鬆識別和記住句子中的重要單詞,例如實體,動詞和形容詞,此外 RNN 的獨特結構通常從頭到尾對句子中的單詞進行逐一評估,它使用前一個單詞的含義來推斷下一個單詞的含義或預測最可能出現的下一個單詞,當然更能夠透過 RNN 提取文本中的情緒。

再來當文本序列很長時,RNN 的主要缺點會出現,主要會發生導致梯度爆炸和梯度消失的問題,其會使數值優化變得非常緩慢且非常不準確,有時甚至無法收斂,因此我們將會在分析中使用門控循環單元 (Gated recurrent unit,GRU) ,以下簡稱 GRU,其主要是 RNN 的主流變體,其具有簡單的結構,易於調整和使用。GRU 在處理長期記憶和小資料集方面比基本形式的 RNN 要好得多,其主要對 RNN 所做的唯一修改就是在以前的基本形式的 RNN 結構上添加了兩個門,分別為更新門和重置門,門的本質上控制著當前隱藏神經元中使用了多少先前資訊,像是可能會忽略像是「a」和「 the」之類不重要的詞來進行分析,或者更加重視具有更多情感價值的詞語,它們的值在 0 到 1 之間的連續,至於更新門主要控制候選狀態對下一狀態的影響程度,當更新門降為零時,以前的狀態用作當前狀態,重置門主要控制先前狀態對候選狀態的影響程度,如果重置門降至零,則 GRU 候選狀態將重置為下一個序列輸入,

最後長短期記憶模型 (Long Short-Term Memory,LSTM),以下簡稱 LSTM,其具有比 GRU 多一個門,GRU只有更新門和重置門,而 LSTM 有忘記門,輸入門和輸出門,LSTM 主要將 GRU 中的更新門分割成忘記門和輸入門,並用輸出門代替重置門。當然 LSTM 具有更複雜的結構,所以比 GRU 更佳靈活,並且調整通常需要更長的時間,我們主要使用以下方程式計算門。此外為了使 LSTM 在一組訓練序列上的總誤差最小,可以透過時間進行反向傳播用於相對於誤差按其導數成比例地更改每個權重。儘管 LSTM 透過將錯誤捕獲在記憶體中克服了消失的梯度問題 LSTM 網路由於其固有的複雜性而成為該區塊的一部分訓練慢,近年來,隨著計算能力的提高,這個問題在很大程度上消失了。

此外我們更能夠透過 Python 透過 DLPy 函式庫使用 SAS Viya 分析平台進行 RNN 的相關應用,像是文本分類分析時間序列預測,以及更多 RNN 模型的理論,則能夠參考 SAS 官方文件的詳細介紹。

相關資源

⬅️ Go back