您的位置:首頁>科技>正文

CMU與穀歌新研究到MetaMind:如何讓機器學習跳讀

在自然語言處理的很多子領域, 迴圈神經網路都表現出了很大的潛力, 這些子領域涵蓋文檔分類、機器翻譯和自動問答等等。 儘管潛力巨大, 但許多迴圈模型都必須要逐詞閱讀整個文本, 這會使得長文檔的處理速度緩慢。 比如說, 要使用一個迴圈網路閱讀一本書並回答有關於其的問題是很困難的。 在這篇論文中, 我們提出了一種閱讀文本的方法, 其可以在有需要的時候跳過不相關的資訊。 該方法的底層模型是一個迴圈網路, 其可以在閱讀了少量輸入文本的詞之後瞭解需要跳過多少內容。

我們使用一種標準的策略梯度方法訓練了該模型, 使其可以做出離散的跳躍決策。 在不同的四種任務(包括數值預測、情感分析、新聞文章分類和自動問答)的基準上, 我們提出的一種帶有跳過(jumping)的修改過的 LSTM 的速度可以達到標準序貫 LSTM(sequential LSTM)的 6 倍, 而且同時還能維持同樣的準確度或甚至達到更好的準確度。

方法

在這一節, 我們介紹了我們提出的模型 LSTM-Jump。 我們首先描述了其主要結構, 後面介紹了評估該模型部分參數由不可微分性(nondifferentiability)而造成的難點。 為了解決這個問題, 我們借助了一種強化學習形式並採用了一種策略梯度方法。

模型概述

我們提出的模型的主要架構如圖 1 所示, 該模型基於一個 LSTM 迴圈神經網路。 在訓練之前,

首先要選擇允許的 jump 的數量 K、每兩次 jump 之間讀取的 token 的數量 R 和最大的 jump 大小 K。 對於該模型, K 是一個固定的參數, 而 N 和 R 是可以在訓練和測試中變化的超參數。 另外, 在這篇論文中, 我們會使用 d1:p 來表示一個序列 d1, d2, ..., dp

圖 1:我們提出的用於處理文本文檔的模型的一個合成樣本。 在這個例子中, jump K 的最大大小為 5, 一次 jump 之前讀取的 token R 為 2, 允許的 jump 數量為 10. 綠色的 softmax 用於 jump 預測。 處理過程終止的情況有三種:a) 這個 softmax 預測到了一個 0、b) jump 次數超過了 N、c) 該網路處理完了最後一個 token。 圖中僅給出了 a) 的情況。

接下來, 我們詳細討論該模型在處理文本時是如何工作的。 給定一個訓練樣本 x1:T, 該迴圈網路將讀取第一個 R token x1:R 的嵌入, 並輸出隱藏狀態(hidden state)。 然後該狀態會被用於計算 jumping softmax, 其確定了 1 到 K jump 步驟上的分佈。

然後該模型會從這個分佈採樣一個 jump 步驟, 其會被用於確定下一個被讀入該模型的 token。 設 κ 為被採樣的值, 那麼下一個起始 token 是 xR+κ。 這個過程會持續, 直到遇到下列情況:

a) 這個 jump softmax 採樣了一個 0

b) jump 次數超過了 N

c) 該網路處理完了最後一個 token xT

在停止之後, 作為輸出, 最後的隱藏狀態將會進一步被用於預測想得到的目標。 怎樣利用這個隱藏狀態取決於當前特定的任務。 比如說, 對於 3.1、3.1 和 3.3 中的分類問題, 其可以直接被用於產生一個用於分類的 softmax;而在 3.4 中的問答問題上, 其可被用於計算與候選答案之間的關聯, 以便選擇出其中最好的一個。 圖 1 給出的例子是 K = 5、R = 2、N = 10, 終止於條件 a)。

以上是CMU與穀歌的最新研究論文, 而MetaMind就曾深度解讀NLP研究:如何讓機器學習跳讀,

下面是MetaMind所做的描述。

學習何時跳讀何時閱讀

知道什麼時候在兩個不同模型之間轉換還不夠, 因為我們要構建一個更通用的系統, 學習在所有不同模型之間轉換。 這樣的系統將説明我們處理更複雜的行為。

在監督學習中當閱讀完勝於跳讀時, 我們可以學習嗎?

LSTM 自左到右地「閱讀」我們, 每一步都存儲一個記憶, 而「跳讀」則使用 BoW 模型。 在來自詞袋模型上的概率操作時, 我們基於不變數做決策, 這個不變數是指當詞袋系統遭到質疑時, 更強大的 LSTM 工作地更好。 但是情況總是如此嗎?

當詞袋和 LSTM 關於一個句子是正確或錯誤的時候的「混淆矩陣」(confusion matrix)。 相似於來自之前的詞袋和 LSTM 之間的混淆 T-SNE 圖。

事實上, 結果證明這種情況只適用於 12% 的句子, 而 6% 的句子中, 詞袋和 LSTM 都錯了。 在這種情況下, 我們沒有理由再運行 LSTM, 而只使用詞袋以節省時間。

學習跳讀, 配置

當 BoW 遭受質疑時我們並不總是應該使用 LSTM。 當 LSTM 也犯錯並且我們要保留珍貴的計算資源時, 我們可以使詞袋模型理解嗎?

讓我們再一次看看 T-SNE 圖, 但是現在再加上 BoW 和 LSTM 之間的混淆矩陣圖。我們希望找到混淆矩陣不同元素之間的關係,尤其是當 BoW 錯誤時。

從對比圖中,我們發現當 BoW 是正確的,並遭受懷疑時,我們很容易判決出來。然而,當 LSTM 可能是對或錯時,BoW 與 LSTM 之間並沒有明確的關係。

我們能學習這種關係嗎?

另外,因為概率策略依賴於二元決策並要求概率,其是有很大的限制性的。相反,我們提出了一個基於神經網路的可訓練決策網路(decision network)。如果我們查看混淆矩陣(confusion matrix),那麼我們就能使用這些資訊為監督決策網路生成標籤。因此,我們就能在 LSTM 正確且 BoW 錯誤的情況下使用 LSTM。

為了生成資料集,我們需要一個句子集,其包含了詞袋和 LSTM 的真實、潛在的預測。然而在訓練 LSTM 的過程中,其經常實現了超過 99% 的訓練準確度,並顯然對訓練集存在過擬合現象。為了避免這一點,我們將訓練集分割成模型訓練集(80% 的訓練資料)和決策訓練集(餘下 20% 的訓練資料),其中決策訓練集是模型之前所沒有見過的。之後,我們使用餘下的 20% 資料微調了模型,並期望決策網路能泛化到這一個新的、沒見過的但又十分相關的資料集,並讓系統更好一些。

詞袋和 LSTM 最初都是在「Model train」上先進行訓練(80% 訓練資料),隨後這些模型被用於生成決策網路的標籤,再進行完整資料集的訓練。驗證集在這段時間一直被使用。

為了構建我們的決策網路,我們進入我們低成本的詞袋系統的最後一個隱藏層(用來生成 T-SNE 圖的同一層)。我們在模型訓練集上的詞袋訓練之上疊加一個兩層 MLP。我們發現,如果我們不遵循這個方法,決策網路將無法瞭解 BoW 模型的趨勢,並且不能很好地進行泛化。

底部的長條狀代表詞袋系統的層,不包含 dropout。一個雙層的 MLP 被加在頂部,一個類用於是否選擇詞袋或卓越的 LSTM。

由決策網路在驗證集上選擇的類別(在模型訓練集上訓練過的模型基礎上)接著被應用于完全訓練集上訓練過但非常相關的模型上。為什麼要應用到一個完全訓練集訓練過的模型上?因為模型訓練集上的模型通常較差,因此準確度會比較低。該決策網路是基於在驗證集上的 SUC 最大化而利用早停(early stopping)訓練的。

決策網路的表現如何?

讓我們從觀察決策網路的預測開始。

資料點和之前使用詞袋模型時的 T-SNE 圖相同。綠色點代表使用詞袋預測的句子,黃色點代表 LSTM。

注意:這有多近似詞袋的概率截止(probability cutoff)。讓我們看看決策網路最後一個隱藏層的 T-SNE 是否能夠真的聚集一些關於 LSTM 什麼時候正確或錯誤的資訊。

網路如何執行我們的決策

讓我們從決策網路的預測開始。

資料點基於決策網路最後隱藏狀態的語句表徵,源自驗證語句。顏色和之前的比較圖相同。

看起來決策網路能夠從詞袋的隱藏狀態中拾取聚類。然而,它似乎不能理解何時 LSTM 可能是錯誤的(將黃色和紅色聚類分開)。

紫色曲線代表在驗證集上新引入的決策網路,注意決策網路如何實現接近但略微不同於概率閾值的解決方案。從時間曲線和資料精度來看,決策網路的優勢並不明顯。

Bow 與 LSTM 在測試集和驗證集中的表現。SUC 基於準確率與速度圖的平均值。每個模型都用不同種子計算了十次。表中結果來自 SUC 的平均數。標準差基於與比率的差異。

從預測圖、資料量、準確率和 SUC 分數中,我們可以推斷決策網路很善於瞭解 BoW 何時正確,何時不正確。而且,它允許我們構建一個更通用的系統,挖掘深度學習模型的隱藏狀態。然而,它也表明讓決策網路瞭解它無法訪問的系統行為是非常困難的,例如更複雜的 LSTM。

討論

我們現在終於明白了 LSTM 的真正實力,它可以在文本上達到接近人類的水準,同時為了達到這一水準,訓練也不需要接近真實世界的資料量。我們可以訓練一個詞袋模型(bag-of-words model)用於理解簡單的句子,這可以節省大量的計算資源,整個系統的性能損失微乎其微(取決於詞袋閾值的大小程度)。

這個方法與平均相關,該平均通常是當類似于帶有高置信度的模型將被使用時而執行的。但是,只要有一個可調整置信度的詞袋,並且不需要運行 LSTM,我們就可以自行權衡計算時間和準確度的重要性並調整相應參數。我們相信這種方法對於那些尋求在不犧牲性能的前提下節省計算資源的深度學習開發者會非常有幫助。

但是現在再加上 BoW 和 LSTM 之間的混淆矩陣圖。我們希望找到混淆矩陣不同元素之間的關係,尤其是當 BoW 錯誤時。

從對比圖中,我們發現當 BoW 是正確的,並遭受懷疑時,我們很容易判決出來。然而,當 LSTM 可能是對或錯時,BoW 與 LSTM 之間並沒有明確的關係。

我們能學習這種關係嗎?

另外,因為概率策略依賴於二元決策並要求概率,其是有很大的限制性的。相反,我們提出了一個基於神經網路的可訓練決策網路(decision network)。如果我們查看混淆矩陣(confusion matrix),那麼我們就能使用這些資訊為監督決策網路生成標籤。因此,我們就能在 LSTM 正確且 BoW 錯誤的情況下使用 LSTM。

為了生成資料集,我們需要一個句子集,其包含了詞袋和 LSTM 的真實、潛在的預測。然而在訓練 LSTM 的過程中,其經常實現了超過 99% 的訓練準確度,並顯然對訓練集存在過擬合現象。為了避免這一點,我們將訓練集分割成模型訓練集(80% 的訓練資料)和決策訓練集(餘下 20% 的訓練資料),其中決策訓練集是模型之前所沒有見過的。之後,我們使用餘下的 20% 資料微調了模型,並期望決策網路能泛化到這一個新的、沒見過的但又十分相關的資料集,並讓系統更好一些。

詞袋和 LSTM 最初都是在「Model train」上先進行訓練(80% 訓練資料),隨後這些模型被用於生成決策網路的標籤,再進行完整資料集的訓練。驗證集在這段時間一直被使用。

為了構建我們的決策網路,我們進入我們低成本的詞袋系統的最後一個隱藏層(用來生成 T-SNE 圖的同一層)。我們在模型訓練集上的詞袋訓練之上疊加一個兩層 MLP。我們發現,如果我們不遵循這個方法,決策網路將無法瞭解 BoW 模型的趨勢,並且不能很好地進行泛化。

底部的長條狀代表詞袋系統的層,不包含 dropout。一個雙層的 MLP 被加在頂部,一個類用於是否選擇詞袋或卓越的 LSTM。

由決策網路在驗證集上選擇的類別(在模型訓練集上訓練過的模型基礎上)接著被應用于完全訓練集上訓練過但非常相關的模型上。為什麼要應用到一個完全訓練集訓練過的模型上?因為模型訓練集上的模型通常較差,因此準確度會比較低。該決策網路是基於在驗證集上的 SUC 最大化而利用早停(early stopping)訓練的。

決策網路的表現如何?

讓我們從觀察決策網路的預測開始。

資料點和之前使用詞袋模型時的 T-SNE 圖相同。綠色點代表使用詞袋預測的句子,黃色點代表 LSTM。

注意:這有多近似詞袋的概率截止(probability cutoff)。讓我們看看決策網路最後一個隱藏層的 T-SNE 是否能夠真的聚集一些關於 LSTM 什麼時候正確或錯誤的資訊。

網路如何執行我們的決策

讓我們從決策網路的預測開始。

資料點基於決策網路最後隱藏狀態的語句表徵,源自驗證語句。顏色和之前的比較圖相同。

看起來決策網路能夠從詞袋的隱藏狀態中拾取聚類。然而,它似乎不能理解何時 LSTM 可能是錯誤的(將黃色和紅色聚類分開)。

紫色曲線代表在驗證集上新引入的決策網路,注意決策網路如何實現接近但略微不同於概率閾值的解決方案。從時間曲線和資料精度來看,決策網路的優勢並不明顯。

Bow 與 LSTM 在測試集和驗證集中的表現。SUC 基於準確率與速度圖的平均值。每個模型都用不同種子計算了十次。表中結果來自 SUC 的平均數。標準差基於與比率的差異。

從預測圖、資料量、準確率和 SUC 分數中,我們可以推斷決策網路很善於瞭解 BoW 何時正確,何時不正確。而且,它允許我們構建一個更通用的系統,挖掘深度學習模型的隱藏狀態。然而,它也表明讓決策網路瞭解它無法訪問的系統行為是非常困難的,例如更複雜的 LSTM。

討論

我們現在終於明白了 LSTM 的真正實力,它可以在文本上達到接近人類的水準,同時為了達到這一水準,訓練也不需要接近真實世界的資料量。我們可以訓練一個詞袋模型(bag-of-words model)用於理解簡單的句子,這可以節省大量的計算資源,整個系統的性能損失微乎其微(取決於詞袋閾值的大小程度)。

這個方法與平均相關,該平均通常是當類似于帶有高置信度的模型將被使用時而執行的。但是,只要有一個可調整置信度的詞袋,並且不需要運行 LSTM,我們就可以自行權衡計算時間和準確度的重要性並調整相應參數。我們相信這種方法對於那些尋求在不犧牲性能的前提下節省計算資源的深度學習開發者會非常有幫助。

Next Article
喜欢就按个赞吧!!!
点击关闭提示