Neural-Networks

在使用截斷反向傳播時捕獲初始模式 (RNN/LSTM)

  • August 17, 2015

假設我使用 RNN/LSTM 進行情感分析,這是一種多對一的方法(請參閱此博客)。網絡是通過時間截斷反向傳播 (BPTT) 進行訓練的,其中網絡像往常一樣僅展開最後 30 個步驟。

就我而言,我想要分類的每個文本部分都比展開的 30 個步驟(約 100 個單詞)長得多。根據我的知識,BPTT 僅針對單個文本部分運行一次,即當它通過整個文本部分併計算二進制分類目標時,,然後將其與損失函數進行比較以找到錯誤。

然後將永遠不會針對每個文本部分的第一個單詞計算梯度。然後,RNN/LSTM 如何仍然調整其權重以捕獲僅在前幾個單詞中出現的特定模式?例如,假設所有標記為以“我喜歡這個”開頭,所有句子都標記為從“我討厭這個”開始。當 RNN/LSTM 在到達 100 步長序列的末尾時僅展開最後 30 步時,它如何捕捉到這一點?

確實,將梯度傳播限制為 30 個時間步將阻止它學習數據集中所有可能的內容。但是,這在很大程度上取決於您的數據集,這是否會阻止它學習有關模型中特徵的重要信息!

在訓練期間限制梯度更像是限制模型可以高置信度吸收輸入特徵和隱藏狀態的窗口。因為在測試時您將模型應用於整個輸入序列,它仍然能夠將有關所有輸入特徵的信息合併到其隱藏狀態中。在對句子做出最終預測之前,它可能不確切知道如何保存該信息,但它可能仍然能夠建立一些(誠然較弱的)連接。

首先考慮一個人為的例子。假設您的網絡將在其輸入中的任何位置生成 1,否則生成 0。假設您在長度為 20 的序列上訓練網絡,然後將梯度限制為 10 步。如果訓練數據集在輸入的最後 10 步中從未包含 1,那麼網絡將在任何配置的測試輸入中出現問題。然而,如果訓練集有一些像 [1 0 0 … 0 0 0] 和其他像 [0 0 0 … 1 0 0] 的例子,那麼網絡將能夠接受“存在輸入中任何位置的 1" 特徵。

然後回到情緒分析。假設在訓練過程中,您的模型遇到了一個很長的否定句,例如“我討厭這個,因為……周圍和周圍”,省略號中有 50 個單詞。通過將梯度傳播限制為 30 個時間步長,模型不會將“我討厭這個因為”連接到輸出標籤,因此它不會從這次訓練中獲取“我”、“討厭”或“這個”例子. 但它會從句子末尾開始 30 個時間步內提取單詞。如果您的訓練集包含其他包含這些相同單詞的示例,可能還有“仇恨”,那麼它就有機會發現“仇恨”和負面情緒標籤之間的聯繫。此外,如果您有較短的訓練示例,請說:“我們討厭這個,因為它太糟糕了!” 那麼您的模型將能夠將“仇恨”和“這個”特徵連接到目標標籤。如果你有足夠多的這些訓練示例,那麼模型應該能夠有效地學習連接。

在測試時,假設您向模型展示另一個長句,例如“我討厭這個,因為……在壁虎上!” 模型的輸入將以“我討厭這個”開頭,它將以某種形式傳遞到模型的隱藏狀態。這種隱藏狀態用於影響模型的未來隱藏狀態,因此即使在句子結束之前可能有 50 個單詞,這些初始單詞的隱藏狀態在理論上也有可能影響輸出,即使它從來沒有在“我討厭這個”和句子結尾之間包含如此大距離的樣本上進行訓練。

引用自:https://stats.stackexchange.com/questions/167482

comments powered by Disqus