您的位置:首頁>正文

複雜的就好嗎?來聰明的選擇深度學習模型吧

深度學習、機器學習與人工智慧已經對電腦科學領域產生極為深遠的影響。 從圖像識別到圍棋競技等眾多領域, 深度學習的實際表現都已遠超人類。

深度學習的一大優勢在於, 深度學習的水準提升可以在各類場景下實現通用。

在某一領域中適用於深度學習的具體技術, 通常可以直接轉移至其他領域而無需經過任何修改。

更具體地講, 構建大量計算密集型圖像與語音辨識類深度學習模型的方法, 已經全面滲透至自然語言處理當中。 現在, 深度學習社區正在將自然語言處理(簡稱NLP)視為技術研究與應用的下一個前沿。

深度學習系統是需要大量計算設備作為配合的。 不僅要從現實世界資料中發現複雜的分析模型, 同時還要這些模型能夠以規模化方式應用於其他任務。 而這就提出了新的問題。

深度學習的兩種模型應用

是否一切任務都要使用複雜的模型?答案是不, 簡單模型就夠用了。

下面, 我們一起來看一套雙層式 MLP 模型(此模型已實現情感分析)

這是一套簡單的深度學習系統, 我們將其稱為“詞袋”模型, 它會把句子分為正或負兩類。 最終視覺化效果由詞袋模型中雙層 MLP 架構中處於上層的 T-SNE 隱藏層實現。 每個數據點對應一個句子, 並根據深度學習系統的預測結論與真實目標標以不同顏色。 圖中的邊界框體根據句子的內容進行繪製。

現實世界中, 有些句子很容易分類, 但也有一些句子包含複雜的語義結構。 對於那些易於分類的句子, 我們可能並不需要高容量系統即可完成處理, 那麼, 利用簡單的模型是否可以得到相同的結論?

文本內容與深度學習

大多數深度學習方法要求利用浮點數位作為輸入內容——除非你之前嘗試過處理文本資訊,

否則大家肯定會抱有以下疑問:

1、如何將文本片段與深度學習對接起來?

我們在處理文本內容時, 其核心問題在於如何表達任意數量的資訊。 目前比較流行的解決方案是將文本標記為單詞、子詞彙甚至是字元。 我們可以利用 word2vec 或者 GloVe 等方案將各個單詞轉換為浮點向量。 如此一來, 大家即可通過不同單詞之間的隱含關係表達單詞意義。

選擇一個單詞, 將其轉化為一個高維度嵌入體(如三百維), 而後利用 PCAaftT-SNE(二者皆為高人氣降維工具, 在本示例中可將其降至二維)來發現單詞之間的有趣關聯。 上圖提示 uncle 與 aunt 之間具備類似詞義,

只是分別指向男性與女性。

利用標記化以及 word2vec 方法, 我們可以將文本片段轉化為一條用以表達每個單詞的浮點序列。

2、現在, 我們該如何使用這條浮點序列?

詞袋模型

現在我們來討論詞袋模型(bag-ofwords, 簡稱BoW), 這可能是大家接觸過的最為簡單的機器學習演算法之一。

選取多個詞彙表達(即底部灰色框), 通過相加或取平均值的方式將其歸納為另一通用運算式(藍色框), 其中包含每個單詞中的部分資訊。 在本文當中, 這一通用運算式負責預測句子表達的情感為正抑或為負(紅色框)。

詞袋模型可以實現直接對特徵維度取平均值。 在簡單的詞彙平均嵌入場景下, 即使完全忽略句子內的表達順序, 這套模型仍能夠在多數簡單實例中運行良好。 而與深度神經網路(稍後將進一步說明)相結合後, 詞袋模型能夠給出理想的理解基準線。

另外, 平均值是一項低資源占用量操作, 且可幫助我們將句子的維度降低為一項固定大小的向量。

遞迴神經網路

某些句子中可能包含更為複雜的結構或者需要以更高精度加以處理。 單靠詞袋模型並不足以解決這些難題,因此是時候祭出另一款神器——遞迴神經網路

在每個 timestep(由左至右)上為 RNN(灰色框)提供一條輸入內容(例如一個單詞),並將此作為原有內部記憶(藍色框)之外的新增內容。RNN 隨後會在新的內部記憶(藍色框)中進行計算,這部分結果代表的是全部此前見到過的單元(例如全部原有單詞)。RNN 現在已經獲得了句子層級上的全新資訊,意味著它能夠更好地預測句子所表達的情感為正抑或為負(紅色框)。

每個嵌入單詞都會按順序被饋送至一套遞迴神經網路當中,後者負責管理以往見到過的存儲資訊,並將這部分資訊與新詞彙加以結合。在使用長-短期記憶單元(簡稱 LSTM)或者門控遞迴單元(簡稱 GRU)等知名記憶單元支援下的 RNN 時,RNN 將能夠記住包含大量單詞的句子的具體含義!(由於 LSTM 獲得了成功,採用 LSTM 記憶單元的 RNN 通常也被直接稱為 LSTM。)這些模型當中最大的八個部分彼此相互堆疊。

歡迎來到最為先進的深度學習模型中,它利用配備 LSTM 記憶單元的 RNN 實現語言翻譯。粉色、橙色與綠色框即為擁有 LSTM 單元的遞迴神經網路。它們可在不同 lstm 層之間實現 skip 連接等處理技巧的交換,同時具備一項名為 attention 的方法。如大家所見,綠色的 LSTM 指向相反的方向。當將其與正常 LSTM 相結合後,即可生成所謂雙向 LSTM,能夠以兩個方向從資料序列中獲取資訊。

然而,LSTM 的運行資源需求要遠遠高於低成本詞袋模型,也通常需要由經驗豐富的深度學習工程師負責實現並高效支持與之配套的高性能計算硬體。

示例:情感分析

情感分析屬於一種文檔分類機制,可對文檔內容的主觀傾向進行判斷。在向其提交一個句子後,這套模型能夠評估其表達的情感為正面、負面抑或中性。希望在客戶行動之前通過客戶的推文將其找到?情感分析能夠有效滿足您的需求!

在這方面,最為知名的公共資料集(也正是我們將在後文中使用的選項)正是斯坦福情感樹圖庫(簡稱 SST)。SST 不僅能夠對句子進行分類(正面或者負面),同時亦可對句子中的各單獨語法進行判斷。

初始 SST 將情感分為五種類別:非常正面、正面、中立、負面、非常負面。出於示例的考慮,我們認為二分法應該更為簡單且易於理解,因此我們將非常正面與正面加以合併,非常負面與負面亦進行合併,同時將所有中性判斷結果加以去除。

我們已經對示例中所要使用的模型架構進行了概括與技術性介紹。其中最重要的並非具體架構設計方式,而在於低成本模型能夠在 64 項批量處理流程中以 10 毫秒延遲提供 82% 的驗證準確率,而高成本 LSTM 則在 64 項批量處理流程中以 87 毫秒的延遲提供僅略有改善的 88% 驗證準確率(頂級模型的準確性一般在 88% 到 90% 之間)。

底部綠色框代表嵌入詞彙,由 GloVe 進行初始化,而後提取詞意(詞袋模型)並由一套雙層 MLP 模型進行分析及中性要素去除。

底部青綠色框代表嵌入詞彙,由 GloVe 進行初始化。此後我們不再對嵌入詞彙進行追蹤。這裡我們使用與 LSTM 單元相似的具備 LSTM 單元的雙向 RNN。我們利用 RNN 隱藏狀態以獲取平均值與最大值,而後是雙層 MLP 模型進行分析及中性要素去除。

低成本淺探閱讀方案

在某些任務中,各類演算法能夠提供與人類水準相近的準確度,但其提出的伺服器性能要求往往也令人難以承受。正如前文中所提出,我們並不需要始終利用 LSTM 這類高性能需求量方案處理實際資料——大多數情況下詞袋模型已經足以完成任務。但有時候,我們可能面對著以下這類難題:

“演員表現非常糟糕,完全缺少真實感……但我仍然願意給出9分好評”

作為一類忽略順序的演算法,詞袋模型肯定會將這句話理解成負面表達。這樣簡單且明確的表達居然成為拉低分析準確率的罪魁禍首,明顯無法接受。因此問題就變成:

我們能否學會如何區分“簡單”與“困難”兩類句子?

另外,我們能否利用低成本模型完成這項任務?

深入探索

探索深度學習模型的一種主流方式是立足隱藏層對每個句子的表示方式進行繪製。由於隱藏層通常位於高維,我們可以使用 T-SNE 等演算法首先將其降維至二維,從而以人類可以理解的方式實施繪製。

BoW:預測

BoW:概率

在上圖中,大家會看到詞袋模型(BoW)中繪製的最新隱藏層。在將滑鼠懸停至任何資料點時,您將看到表示該資料點的對應句子。句子本身的顏色由其標籤決定。

預測標籤(Predictios tab):系統預測結果與實際模型標準間的比較。資料點的中央表示其預測結論(藍色為正面,紅色為負面),而周邊的線條代表實際標籤。如此一來,我們就能輕鬆判斷系統結論是否正確。

概率標籤(Probabilities tab):代表我們在輸出層中分配給預測結論的具體概率。它負責告訴我們該模型對其預測結論的確信度。另外,在將滑鼠懸停至資料點上時,圖表將提供給定資料點的概率,並根據模型預測結論進行著色。需要注意的是,概率的起始值為0.5,代表任務本身為二分類型,且值為0.5時意味著確信度最低——為五五開。

T-SNE 製圖極易受到過度解讀的影響,但其中部分因素的影響效果往往更為明顯。

T-SNE解讀

將句子拆分為多個聚類(clusters)。這些聚類包含有不同的語義類型;

部分聚類擁有的多重性相對簡單,意味著模型對於準確度擁有較高的確信度;

另一些聚類則準確度較低,且對結論的確信度亦不高;

同時包含正面與負面表達的句子往往更難進行判斷。

下面來看根據LSTM模型生成的繪製圖表。

LSTM:預測

LSTM:概率

採用與詞袋模型相同的設置,旨在對 LSTM 進行深入探索

我們可以發現,LSTM 的大多數結果與詞袋模型並無區別。然而,LSTM 對於大多數結論都擁有更高的確信度,且其在判斷同時包含正面與負面表達的句子時表現得也要比詞袋模型更好。

如此看來,詞袋模型完全有能力對句子進行聚類拆分,並利用概率機制對所作出預測的準確性進行量化判斷。以此為基礎,我們基本可以得出以下推斷:

高確信度答案一般準確性更高。

為了調查這一假設,我們可以對概率閾值進行觀察。

概率閾值

詞袋模型與 LSTM 已經經過訓練,旨在為每個類提供對應概率,而我們可以將此作為確信度的衡量指標。具體來講,如果詞袋模型返回值為 1,則代表其對於預測結論極具信心。

一般來講,在預測當中我們會選取模型所提供的可能性最高的類。在二元分類當中(即非正即負),可能性必然高於 0.5(否則我們將會給出相反的結論)。然而,較低的概率值代表著模型本身對於當前論斷並不能確定。舉例來說,如果模型預測的負面值為 0.49,而正面值為 0.51,則代表著結論準確的可能性極低。

在提到閾值時,我們的實際表意是將預測概率與某個給定值進行比較,從而評估該概率對應的結論是否可信。舉例來說,我們可以決定直接使用概率值高於 0.7 的全部結論。或者,我們也可以選擇查看概率值在 0.5 到 0.55 之間的句子,從而瞭解模型在這一確信度區間作出了怎樣的預測——這部分內容我們將在後方進行詳盡說明。

BoW

LSTM

在閾值(threshold)繪圖中,條狀圖形的高度對應兩個閾值內資料點的準確度,而線條則代表其以全部資料點(而非給定閾值)為參照時的近似準確度。

在資料量(data amount)繪圖中,條的高度對應兩個閾值之間全部資料量的累加,而線條則代表來自各閾值限定區間內的累加資料。

通過詞袋模型繪圖,大家可能會發現提升概率閾值會改善預測準確度。然而這一點在 LSTM 圖中則表現得並不明顯,這主要是由於 LSTM 已經不再依賴於訓練集,而只提供高確信度答案。

使用詞袋模型處理簡單示例,LSTM則負責複雜示例。

因此,通過輸出的概率值,我們即可基本判斷句子內容是否簡單以及何時才有必要動用更為強大的LSTM等分析系統。

利用概率閾值,我們創建出一項新的策略,這裡將其稱為“概率策略”。其能夠説明我們獲取詞袋系統中的概率閾值,並利用 LSTM 進一步處理那些確信度達不到閾值要求的預測結論。如此一來,我們就能夠將一部分資料交由詞袋模型處理(概率高於閾值的句子),而另一部分資料則可選擇詞袋模型或者 LSTM(特別是概率低於閾值的句子)加以處理。在此之後,我們將獲得一項 BoW 與 LSTM 之間的使用率比值,由 0.0(即只使用 LSTM)到 1.0(只使用 BoW),從而得出分析計算所需要的時間與預期準確率。

確立基準

為了確立基準,我們需要選定兩套模型的具體使用比例,例如將 0.1 的資料交由 BoW 而將 0.9 的資料交給 LSTM,則意味著最終準確率將九成由 LSTM 決定,一成由 BoW 決定。我們的目標在於建立起一項無需策略指導的基準,其能夠根據隨機分配的句子內容決定使用 BoW 抑或是 LSTM。然而,這項策略的執行本身也需要成本。

我們需要首先通過詞袋模型對全部句子進行處理,旨在確定哪些句子適用於詞袋、而哪些適用於LSTM。如果任何一個句子的預測確信度都沒有達成基準概率要求,則意味著我們必須將其全部交給LSTM——而這同時意味著我們的閾值設定可能存在問題。

為了避免這種狀況,我們決定通過以下方式計算策略的成本與模型使用比例。

其中 C 代表成本,而 p 代表詞袋模型中所使用資料的比例。

驗證集中的結果比較了BoW與LSTM(紅線)與概率閾值策略(藍線)不同搭配比例的對應準確度與處理速度。左側的資料點代表僅使用LSTM的情況,而右側則代表僅使用詞袋模型的情況,二者之間則為雙方皆有使用。

藍線代表在無指導策略影響下的BoW與LSTM組合,而紅色曲線描繪了利用詞袋概率作為策略以指導應對哪部分資料使用哪種系統的情況。您可將滑鼠懸停線上上以查看不同比例/概率閾值所帶來的處理時間節約效果。需要注意的是,在僅使用詞袋模型的情況下,其達到時間節約能力上限——最高約90%。

這裡我們得出一項有趣的發現,即使用詞袋閾值的效果要明顯優於未使用任何指導策略的情況。

我們將此曲線視為曲線速度(簡稱SUC),並對其取平均值。結果如下表所示。

利用驗證集判斷應使用BoW或者LSTM的離散選擇結果。每種模型使用不同素材計算十次。表中的結果為SUC平均值。將概率策略與使用比例進行比較。

瞭解何時淺探而何時深究

光是瞭解何時在兩種不同模型間切換顯然還不夠。我們希望建立一套更具通用性的系統,用以學習何時在每種模型間切換。這樣一套系統能夠説明我們處理更為複雜的行為:

我們能否通過固定的管理方式瞭解何時深究比淺探效果更好?

“深究”代表利用LSTM由左至右進行處理,並將每個timestep的結果保存在記憶體中;

“淺探”則代表使用BoW模型。

在利用詞袋模型計算概率時,我們可以據此作出判斷,即當某一單詞的含義存在不確定性時,更為強大的LSTM應該能夠提供更準確的結果——但事實是否真是如此?

詞袋模型與 LSTM 對同一句子存在判斷正確或不正確的混淆矩陣。其類似於此前在詞袋模型與 LSTM 之間進行混淆 T-SNE 繪圖。

事實上,可以看到 LSTM 只有 12% 的機率提供比 BoW 更好的判斷結果,而在 6% 的情況下詞袋模型或 LSTM 都無法給出正確結果。考慮到這一點,我們似乎沒有理由使用 LSTM——單純依靠詞袋模型已經能夠帶來較為準確的結果,且處理速度要快得多。

瞭解“淺探”——設置

也就是說,即使 BoW 對結果不夠確定,我們也並未總應使用 LSTM 加以進一步處理。那麼我們能否讓自己的詞袋模型瞭解 LSTM 在哪些情況下會出現錯誤,而哪些情況下高資源占比的 LSTM 能給出正確結果?讓我們再次審視 T-SNE 繪圖,但現在我們要關注的是 BoW 與 LSTM 之間的混淆矩陣。我們希望找到該混淆矩陣中各元素間的關係,特別是 BoW 出現錯誤的情況。

BoW:與LSTM比較

LSTM:與BoW比較

大家可以移動、縮放、保存並將滑鼠懸停在資料點上以查看其資訊。請注意,在向右側渲染的情況下(即將資料點移動至左側)提示工具可能表現更好。我們對BoW與LSTM的預測結果進行比較,旨在瞭解二者的準確率差異。這能説明我們評估哪種模型的效果更好。另外,在將滑鼠懸停至某一資料點時,其將提供正確性與概率。概率資訊根據預測結果進行著色。

通過比較情況來看,我們發現能夠更輕鬆地判斷BoW何時正確而何時對結果不太確定。然而,LSTM的正確及錯誤之間則沒有明確的關聯。

我們能否把握這一關聯?

此外,概率策略本身也存在明顯的局限性,因為其依賴于繼承式二分決策且要求配合概率值。因此,我們提出了一套基於神經網路的可訓練決策網路。如果單純著眼於混淆矩陣,我們可以利用這部分資訊為監控下的決策網路生成標籤。如此一來,我們即可保證僅在BoW為錯誤而LSTM為正確的情況下使用LSTM。

為了生成該資料集,我們需要一組句子,其中包含詞袋模型與LSTM給出的正確、底層預測。然而在訓練當中,LSTM通常能夠實現99%甚至更高的準確度,這意味著訓練集的規模已經不足以為其提供更多經驗。為了避免這種狀況,我們將訓練集拆分為模型訓練集(包含80%的訓練資料)與決策訓練集(包含其餘20%訓練資料),後者在訓練過程中始終不會被交付至模型當中。在此之後,我們利用決策訓練集對模型進行細節調整,希望決策網路能夠在這部分從未出現過的資料中提供同樣出色的預測表現。

詞袋模型與LSTM初始皆利用“模型訓練”集(即80%訓練資料)進行訓練,接下來由這兩套模型為決策網路生成標籤,最後再利用完整資料集對模型進行再次訓練。在這一過程中,我們始終使用同樣的驗證集。

為了構建我們的決策網路,我們挖掘了低成本詞袋系統中最後一個隱藏層(我們亦利用該層生成了T-SNE繪圖)。在此之後,我們將一套雙層MLP堆疊在模型訓練集的詞袋訓練之上。我們發現如果不採取這樣的作法,則決策網路將無法掌握BoW模型的變化趨勢,意味著結果不能得到有效推廣。

底部青綠色框體代表來自詞袋系統的各層(未經篩選)。此後,我們將一套雙層MLP堆疊在其上,並生成一個類以判斷應使用詞袋模型抑或LSTM。

決策網路根據模型訓練集訓練出的模型所選擇的各個類隨後會在整體訓練集中進行全面應用——但繼續保持高度關聯性。我們之所以將該訓練完成的模型應用於完整訓練集,是因為該模型訓練集上的模型往往水準較差並將導致準確度較低。在對驗證集上的SUC進行最大化後,決策網路能夠提前停止訓練。

我們的決策網路執行效果如何?

我們首先來看看這套決策網路的預測結果。

資料點與之前我們使用詞袋模型時繪製的 T-SNE 曲線圖相同。綠色點代表由詞袋模型進行預測的句子,而黃色點則代表由 LSTM 進行預測的句子。

這裡我們需要注意結果與詞袋模型中概率閾值的相似度。現在讓我們看看決策網路最後一個隱藏層的 T-SNE,借此瞭解其是否能夠準確判斷 LSTM 預測結果的正確與錯誤情況。

各資料點基於決策網路最後一個隱藏層的句子表達,且源自驗證句子。其顏色所代表的含義與之前的比較繪圖一致。

看起來決策網路確實能夠從詞袋模型的隱藏狀態中提取聚類。不過,其似乎無法發現哪些情況下LSTM也會作出錯誤判斷(從紅色中提取黃色聚類)。

紫色曲線表示驗 證集上新引入的決策網路。請注意決策網路所使用的,與概率閾值相近但略有不同的解決方案。

從時間節約曲線上的資料準確度來看,我們很難判斷這套決策網路是否表現更好。

利用驗證集與測試集判斷應使用 BoW 或者 LSTM 的離散選擇結果。SUC 基於準確度與速度繪圖曲線的平均值。每套模型利用不同素材計算十次。表中的結果為 SUC 的平均值。標準差基於與該比例間的差異。

從預測繪圖來看,我們可以根據資料量、準確度以及 SUC 得分判斷決策網路是否能夠準確判斷 BoW 給出的預測結果是否正確。另外,我們也能夠借此構建起一套更具通用性的系統,確保其能夠觸及深度學習模型當中的隱藏狀態。然而,結果同時表明決策網路很難理解其無法訪問之系統的行為,例如更為複雜的 LSTM。

相關討論

現在我們可以肯定的是,強大的LSTM在文本分析方面可以提供與人類相近的表現,然而並非全部真實資料都需要這種精度極高的分析效果,因此我們可以訓練一套詞袋模型以判斷當前句子是否簡單。對簡單句子施以“淺探”處理能夠幫助我們節約大量計算資源與時間。

這種方法主要通過取均值實現,且一般更適用于具有高確信度的分析模型。通過在詞袋模型中調整確信度標準,我們同樣能夠選取適合實際情況的計算時間與準確度平衡點。為了有效節約計算資源,我們認為這種方法能夠為深度學習工程師們帶來一些有益的啟發。

作者:Alexander Rosenberg Johansen、Bryan McCann、James Bradbury以及 Richard Socher

原文連結:https://metamind.io/research/learning-when-to-skim-and-when-to-read

首發於:http://ai.51cto.com/art/201705/539588.htm

單靠詞袋模型並不足以解決這些難題,因此是時候祭出另一款神器——遞迴神經網路

在每個 timestep(由左至右)上為 RNN(灰色框)提供一條輸入內容(例如一個單詞),並將此作為原有內部記憶(藍色框)之外的新增內容。RNN 隨後會在新的內部記憶(藍色框)中進行計算,這部分結果代表的是全部此前見到過的單元(例如全部原有單詞)。RNN 現在已經獲得了句子層級上的全新資訊,意味著它能夠更好地預測句子所表達的情感為正抑或為負(紅色框)。

每個嵌入單詞都會按順序被饋送至一套遞迴神經網路當中,後者負責管理以往見到過的存儲資訊,並將這部分資訊與新詞彙加以結合。在使用長-短期記憶單元(簡稱 LSTM)或者門控遞迴單元(簡稱 GRU)等知名記憶單元支援下的 RNN 時,RNN 將能夠記住包含大量單詞的句子的具體含義!(由於 LSTM 獲得了成功,採用 LSTM 記憶單元的 RNN 通常也被直接稱為 LSTM。)這些模型當中最大的八個部分彼此相互堆疊。

歡迎來到最為先進的深度學習模型中,它利用配備 LSTM 記憶單元的 RNN 實現語言翻譯。粉色、橙色與綠色框即為擁有 LSTM 單元的遞迴神經網路。它們可在不同 lstm 層之間實現 skip 連接等處理技巧的交換,同時具備一項名為 attention 的方法。如大家所見,綠色的 LSTM 指向相反的方向。當將其與正常 LSTM 相結合後,即可生成所謂雙向 LSTM,能夠以兩個方向從資料序列中獲取資訊。

然而,LSTM 的運行資源需求要遠遠高於低成本詞袋模型,也通常需要由經驗豐富的深度學習工程師負責實現並高效支持與之配套的高性能計算硬體。

示例:情感分析

情感分析屬於一種文檔分類機制,可對文檔內容的主觀傾向進行判斷。在向其提交一個句子後,這套模型能夠評估其表達的情感為正面、負面抑或中性。希望在客戶行動之前通過客戶的推文將其找到?情感分析能夠有效滿足您的需求!

在這方面,最為知名的公共資料集(也正是我們將在後文中使用的選項)正是斯坦福情感樹圖庫(簡稱 SST)。SST 不僅能夠對句子進行分類(正面或者負面),同時亦可對句子中的各單獨語法進行判斷。

初始 SST 將情感分為五種類別:非常正面、正面、中立、負面、非常負面。出於示例的考慮,我們認為二分法應該更為簡單且易於理解,因此我們將非常正面與正面加以合併,非常負面與負面亦進行合併,同時將所有中性判斷結果加以去除。

我們已經對示例中所要使用的模型架構進行了概括與技術性介紹。其中最重要的並非具體架構設計方式,而在於低成本模型能夠在 64 項批量處理流程中以 10 毫秒延遲提供 82% 的驗證準確率,而高成本 LSTM 則在 64 項批量處理流程中以 87 毫秒的延遲提供僅略有改善的 88% 驗證準確率(頂級模型的準確性一般在 88% 到 90% 之間)。

底部綠色框代表嵌入詞彙,由 GloVe 進行初始化,而後提取詞意(詞袋模型)並由一套雙層 MLP 模型進行分析及中性要素去除。

底部青綠色框代表嵌入詞彙,由 GloVe 進行初始化。此後我們不再對嵌入詞彙進行追蹤。這裡我們使用與 LSTM 單元相似的具備 LSTM 單元的雙向 RNN。我們利用 RNN 隱藏狀態以獲取平均值與最大值,而後是雙層 MLP 模型進行分析及中性要素去除。

低成本淺探閱讀方案

在某些任務中,各類演算法能夠提供與人類水準相近的準確度,但其提出的伺服器性能要求往往也令人難以承受。正如前文中所提出,我們並不需要始終利用 LSTM 這類高性能需求量方案處理實際資料——大多數情況下詞袋模型已經足以完成任務。但有時候,我們可能面對著以下這類難題:

“演員表現非常糟糕,完全缺少真實感……但我仍然願意給出9分好評”

作為一類忽略順序的演算法,詞袋模型肯定會將這句話理解成負面表達。這樣簡單且明確的表達居然成為拉低分析準確率的罪魁禍首,明顯無法接受。因此問題就變成:

我們能否學會如何區分“簡單”與“困難”兩類句子?

另外,我們能否利用低成本模型完成這項任務?

深入探索

探索深度學習模型的一種主流方式是立足隱藏層對每個句子的表示方式進行繪製。由於隱藏層通常位於高維,我們可以使用 T-SNE 等演算法首先將其降維至二維,從而以人類可以理解的方式實施繪製。

BoW:預測

BoW:概率

在上圖中,大家會看到詞袋模型(BoW)中繪製的最新隱藏層。在將滑鼠懸停至任何資料點時,您將看到表示該資料點的對應句子。句子本身的顏色由其標籤決定。

預測標籤(Predictios tab):系統預測結果與實際模型標準間的比較。資料點的中央表示其預測結論(藍色為正面,紅色為負面),而周邊的線條代表實際標籤。如此一來,我們就能輕鬆判斷系統結論是否正確。

概率標籤(Probabilities tab):代表我們在輸出層中分配給預測結論的具體概率。它負責告訴我們該模型對其預測結論的確信度。另外,在將滑鼠懸停至資料點上時,圖表將提供給定資料點的概率,並根據模型預測結論進行著色。需要注意的是,概率的起始值為0.5,代表任務本身為二分類型,且值為0.5時意味著確信度最低——為五五開。

T-SNE 製圖極易受到過度解讀的影響,但其中部分因素的影響效果往往更為明顯。

T-SNE解讀

將句子拆分為多個聚類(clusters)。這些聚類包含有不同的語義類型;

部分聚類擁有的多重性相對簡單,意味著模型對於準確度擁有較高的確信度;

另一些聚類則準確度較低,且對結論的確信度亦不高;

同時包含正面與負面表達的句子往往更難進行判斷。

下面來看根據LSTM模型生成的繪製圖表。

LSTM:預測

LSTM:概率

採用與詞袋模型相同的設置,旨在對 LSTM 進行深入探索

我們可以發現,LSTM 的大多數結果與詞袋模型並無區別。然而,LSTM 對於大多數結論都擁有更高的確信度,且其在判斷同時包含正面與負面表達的句子時表現得也要比詞袋模型更好。

如此看來,詞袋模型完全有能力對句子進行聚類拆分,並利用概率機制對所作出預測的準確性進行量化判斷。以此為基礎,我們基本可以得出以下推斷:

高確信度答案一般準確性更高。

為了調查這一假設,我們可以對概率閾值進行觀察。

概率閾值

詞袋模型與 LSTM 已經經過訓練,旨在為每個類提供對應概率,而我們可以將此作為確信度的衡量指標。具體來講,如果詞袋模型返回值為 1,則代表其對於預測結論極具信心。

一般來講,在預測當中我們會選取模型所提供的可能性最高的類。在二元分類當中(即非正即負),可能性必然高於 0.5(否則我們將會給出相反的結論)。然而,較低的概率值代表著模型本身對於當前論斷並不能確定。舉例來說,如果模型預測的負面值為 0.49,而正面值為 0.51,則代表著結論準確的可能性極低。

在提到閾值時,我們的實際表意是將預測概率與某個給定值進行比較,從而評估該概率對應的結論是否可信。舉例來說,我們可以決定直接使用概率值高於 0.7 的全部結論。或者,我們也可以選擇查看概率值在 0.5 到 0.55 之間的句子,從而瞭解模型在這一確信度區間作出了怎樣的預測——這部分內容我們將在後方進行詳盡說明。

BoW

LSTM

在閾值(threshold)繪圖中,條狀圖形的高度對應兩個閾值內資料點的準確度,而線條則代表其以全部資料點(而非給定閾值)為參照時的近似準確度。

在資料量(data amount)繪圖中,條的高度對應兩個閾值之間全部資料量的累加,而線條則代表來自各閾值限定區間內的累加資料。

通過詞袋模型繪圖,大家可能會發現提升概率閾值會改善預測準確度。然而這一點在 LSTM 圖中則表現得並不明顯,這主要是由於 LSTM 已經不再依賴於訓練集,而只提供高確信度答案。

使用詞袋模型處理簡單示例,LSTM則負責複雜示例。

因此,通過輸出的概率值,我們即可基本判斷句子內容是否簡單以及何時才有必要動用更為強大的LSTM等分析系統。

利用概率閾值,我們創建出一項新的策略,這裡將其稱為“概率策略”。其能夠説明我們獲取詞袋系統中的概率閾值,並利用 LSTM 進一步處理那些確信度達不到閾值要求的預測結論。如此一來,我們就能夠將一部分資料交由詞袋模型處理(概率高於閾值的句子),而另一部分資料則可選擇詞袋模型或者 LSTM(特別是概率低於閾值的句子)加以處理。在此之後,我們將獲得一項 BoW 與 LSTM 之間的使用率比值,由 0.0(即只使用 LSTM)到 1.0(只使用 BoW),從而得出分析計算所需要的時間與預期準確率。

確立基準

為了確立基準,我們需要選定兩套模型的具體使用比例,例如將 0.1 的資料交由 BoW 而將 0.9 的資料交給 LSTM,則意味著最終準確率將九成由 LSTM 決定,一成由 BoW 決定。我們的目標在於建立起一項無需策略指導的基準,其能夠根據隨機分配的句子內容決定使用 BoW 抑或是 LSTM。然而,這項策略的執行本身也需要成本。

我們需要首先通過詞袋模型對全部句子進行處理,旨在確定哪些句子適用於詞袋、而哪些適用於LSTM。如果任何一個句子的預測確信度都沒有達成基準概率要求,則意味著我們必須將其全部交給LSTM——而這同時意味著我們的閾值設定可能存在問題。

為了避免這種狀況,我們決定通過以下方式計算策略的成本與模型使用比例。

其中 C 代表成本,而 p 代表詞袋模型中所使用資料的比例。

驗證集中的結果比較了BoW與LSTM(紅線)與概率閾值策略(藍線)不同搭配比例的對應準確度與處理速度。左側的資料點代表僅使用LSTM的情況,而右側則代表僅使用詞袋模型的情況,二者之間則為雙方皆有使用。

藍線代表在無指導策略影響下的BoW與LSTM組合,而紅色曲線描繪了利用詞袋概率作為策略以指導應對哪部分資料使用哪種系統的情況。您可將滑鼠懸停線上上以查看不同比例/概率閾值所帶來的處理時間節約效果。需要注意的是,在僅使用詞袋模型的情況下,其達到時間節約能力上限——最高約90%。

這裡我們得出一項有趣的發現,即使用詞袋閾值的效果要明顯優於未使用任何指導策略的情況。

我們將此曲線視為曲線速度(簡稱SUC),並對其取平均值。結果如下表所示。

利用驗證集判斷應使用BoW或者LSTM的離散選擇結果。每種模型使用不同素材計算十次。表中的結果為SUC平均值。將概率策略與使用比例進行比較。

瞭解何時淺探而何時深究

光是瞭解何時在兩種不同模型間切換顯然還不夠。我們希望建立一套更具通用性的系統,用以學習何時在每種模型間切換。這樣一套系統能夠説明我們處理更為複雜的行為:

我們能否通過固定的管理方式瞭解何時深究比淺探效果更好?

“深究”代表利用LSTM由左至右進行處理,並將每個timestep的結果保存在記憶體中;

“淺探”則代表使用BoW模型。

在利用詞袋模型計算概率時,我們可以據此作出判斷,即當某一單詞的含義存在不確定性時,更為強大的LSTM應該能夠提供更準確的結果——但事實是否真是如此?

詞袋模型與 LSTM 對同一句子存在判斷正確或不正確的混淆矩陣。其類似於此前在詞袋模型與 LSTM 之間進行混淆 T-SNE 繪圖。

事實上,可以看到 LSTM 只有 12% 的機率提供比 BoW 更好的判斷結果,而在 6% 的情況下詞袋模型或 LSTM 都無法給出正確結果。考慮到這一點,我們似乎沒有理由使用 LSTM——單純依靠詞袋模型已經能夠帶來較為準確的結果,且處理速度要快得多。

瞭解“淺探”——設置

也就是說,即使 BoW 對結果不夠確定,我們也並未總應使用 LSTM 加以進一步處理。那麼我們能否讓自己的詞袋模型瞭解 LSTM 在哪些情況下會出現錯誤,而哪些情況下高資源占比的 LSTM 能給出正確結果?讓我們再次審視 T-SNE 繪圖,但現在我們要關注的是 BoW 與 LSTM 之間的混淆矩陣。我們希望找到該混淆矩陣中各元素間的關係,特別是 BoW 出現錯誤的情況。

BoW:與LSTM比較

LSTM:與BoW比較

大家可以移動、縮放、保存並將滑鼠懸停在資料點上以查看其資訊。請注意,在向右側渲染的情況下(即將資料點移動至左側)提示工具可能表現更好。我們對BoW與LSTM的預測結果進行比較,旨在瞭解二者的準確率差異。這能説明我們評估哪種模型的效果更好。另外,在將滑鼠懸停至某一資料點時,其將提供正確性與概率。概率資訊根據預測結果進行著色。

通過比較情況來看,我們發現能夠更輕鬆地判斷BoW何時正確而何時對結果不太確定。然而,LSTM的正確及錯誤之間則沒有明確的關聯。

我們能否把握這一關聯?

此外,概率策略本身也存在明顯的局限性,因為其依賴于繼承式二分決策且要求配合概率值。因此,我們提出了一套基於神經網路的可訓練決策網路。如果單純著眼於混淆矩陣,我們可以利用這部分資訊為監控下的決策網路生成標籤。如此一來,我們即可保證僅在BoW為錯誤而LSTM為正確的情況下使用LSTM。

為了生成該資料集,我們需要一組句子,其中包含詞袋模型與LSTM給出的正確、底層預測。然而在訓練當中,LSTM通常能夠實現99%甚至更高的準確度,這意味著訓練集的規模已經不足以為其提供更多經驗。為了避免這種狀況,我們將訓練集拆分為模型訓練集(包含80%的訓練資料)與決策訓練集(包含其餘20%訓練資料),後者在訓練過程中始終不會被交付至模型當中。在此之後,我們利用決策訓練集對模型進行細節調整,希望決策網路能夠在這部分從未出現過的資料中提供同樣出色的預測表現。

詞袋模型與LSTM初始皆利用“模型訓練”集(即80%訓練資料)進行訓練,接下來由這兩套模型為決策網路生成標籤,最後再利用完整資料集對模型進行再次訓練。在這一過程中,我們始終使用同樣的驗證集。

為了構建我們的決策網路,我們挖掘了低成本詞袋系統中最後一個隱藏層(我們亦利用該層生成了T-SNE繪圖)。在此之後,我們將一套雙層MLP堆疊在模型訓練集的詞袋訓練之上。我們發現如果不採取這樣的作法,則決策網路將無法掌握BoW模型的變化趨勢,意味著結果不能得到有效推廣。

底部青綠色框體代表來自詞袋系統的各層(未經篩選)。此後,我們將一套雙層MLP堆疊在其上,並生成一個類以判斷應使用詞袋模型抑或LSTM。

決策網路根據模型訓練集訓練出的模型所選擇的各個類隨後會在整體訓練集中進行全面應用——但繼續保持高度關聯性。我們之所以將該訓練完成的模型應用於完整訓練集,是因為該模型訓練集上的模型往往水準較差並將導致準確度較低。在對驗證集上的SUC進行最大化後,決策網路能夠提前停止訓練。

我們的決策網路執行效果如何?

我們首先來看看這套決策網路的預測結果。

資料點與之前我們使用詞袋模型時繪製的 T-SNE 曲線圖相同。綠色點代表由詞袋模型進行預測的句子,而黃色點則代表由 LSTM 進行預測的句子。

這裡我們需要注意結果與詞袋模型中概率閾值的相似度。現在讓我們看看決策網路最後一個隱藏層的 T-SNE,借此瞭解其是否能夠準確判斷 LSTM 預測結果的正確與錯誤情況。

各資料點基於決策網路最後一個隱藏層的句子表達,且源自驗證句子。其顏色所代表的含義與之前的比較繪圖一致。

看起來決策網路確實能夠從詞袋模型的隱藏狀態中提取聚類。不過,其似乎無法發現哪些情況下LSTM也會作出錯誤判斷(從紅色中提取黃色聚類)。

紫色曲線表示驗 證集上新引入的決策網路。請注意決策網路所使用的,與概率閾值相近但略有不同的解決方案。

從時間節約曲線上的資料準確度來看,我們很難判斷這套決策網路是否表現更好。

利用驗證集與測試集判斷應使用 BoW 或者 LSTM 的離散選擇結果。SUC 基於準確度與速度繪圖曲線的平均值。每套模型利用不同素材計算十次。表中的結果為 SUC 的平均值。標準差基於與該比例間的差異。

從預測繪圖來看,我們可以根據資料量、準確度以及 SUC 得分判斷決策網路是否能夠準確判斷 BoW 給出的預測結果是否正確。另外,我們也能夠借此構建起一套更具通用性的系統,確保其能夠觸及深度學習模型當中的隱藏狀態。然而,結果同時表明決策網路很難理解其無法訪問之系統的行為,例如更為複雜的 LSTM。

相關討論

現在我們可以肯定的是,強大的LSTM在文本分析方面可以提供與人類相近的表現,然而並非全部真實資料都需要這種精度極高的分析效果,因此我們可以訓練一套詞袋模型以判斷當前句子是否簡單。對簡單句子施以“淺探”處理能夠幫助我們節約大量計算資源與時間。

這種方法主要通過取均值實現,且一般更適用于具有高確信度的分析模型。通過在詞袋模型中調整確信度標準,我們同樣能夠選取適合實際情況的計算時間與準確度平衡點。為了有效節約計算資源,我們認為這種方法能夠為深度學習工程師們帶來一些有益的啟發。

作者:Alexander Rosenberg Johansen、Bryan McCann、James Bradbury以及 Richard Socher

原文連結:https://metamind.io/research/learning-when-to-skim-and-when-to-read

首發於:http://ai.51cto.com/art/201705/539588.htm

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