1. 程式人生 > >Recurrent Neural Network for Text Classification with Multi-Task Learning

Recurrent Neural Network for Text Classification with Multi-Task Learning

引言

Pengfei Liu等人在2016年的IJCAI上發表的論文,論文提到已存在的網路都是針對單一任務進行訓練,但是這種模型都存在問題,即缺少標註資料,當然這是任何機器學習任務都面臨的問題。
為了應對資料量少,常用的方法是使用一個無監督的預訓練模型,比如詞向量,實驗中也取得了不錯的效果,但這樣的方法都是間接改善網路效果。
作者提出了一種新的方法,將多個任務聯合起來訓練,用來直接對網路進行改善,基於RNN設計了三種不同的資訊共享機制進行訓練,並在四個基準的文字分類任務中獲得了較好的效果。

內容

網路結構

Standard LSTM

在這裡插入圖片描述
最為常見的LSTM結構,利用前面的LSTM網路進行特徵提取,後接一個softmax進行分類。

Model-I: Uniform-Layer Architecture

在這裡插入圖片描述
對於每個任務,共享一個LSTM層和Eembedding層,同時每個任務都擁有自己的Eembedding層,也就是說,對於任務m,輸入x定義為以下形式:
在這裡插入圖片描述

Model-II: Coupled-Layer Architecture

在這裡插入圖片描述
每個任務都擁有自己的LSTM層,但是下一時刻的輸入中包含了下一時刻的char及所有任務在當前時刻的隱層輸出h。
但是像這種情況就需要考慮,不同任務捕捉到的上下文資訊作為特定任務的輸入是否存在問題,這裡作者修改了cell的計算公式以決定儲存多少資訊:
在這裡插入圖片描述
值得注意的是,這裡實際上以一對任務進行輸入,即(m,n)

Model-III: Shared-Layer Architecture

在這裡插入圖片描述
每個任務都擁有一個共享的BI-LSTM層,同時各自有一個LSTM層,LSTM的輸入包括char及BI-LSTM在該時刻的隱層輸出,與模型2一樣,作者也修改了cell的計算公式:
在這裡插入圖片描述

訓練

對於多工的網路結構訓練,比較實用的喂資料方式是隨機選擇一個任務資料,在任務資料中隨機選擇一個樣本,以此迴圈。

Fine Tuning

對於模型1和模型3,因為存在共享層,所以可以額外增加一個微調的步驟,對模型進行進一步的優化。

Pre-training of the shared layer with neural language model

對於模型3,共享了層可以用所有任務資料使用語言模型進行預訓練。

資料集

在這裡插入圖片描述
SST-1:5個情緒類別的電影影評,來自斯坦福情感資料庫
SST-2:2分類電影影評,來自斯坦福資料庫
SUBJ:主觀性資料集,任務目的是將句子分為主觀和客觀
IMDB:2分類的電影影評,大多數評價為長句子

結果

在這裡插入圖片描述
上述依次是模型1到模型3在各個資料集上的訓練結果,其中的single task指的是使用Standard LSTM訓練得到的結果。
作者還對比了模型3與當前state-of-art模型的差別,如下:
在這裡插入圖片描述

案例

比較有意思的是,作者使用單層LSTM和模型3進行比較,對每一時刻的hidden state進行情感分類,直觀顯示每個詞對模型的貢獻,加深對模型3效果理解:
在這裡插入圖片描述
從圖c可以看到,模型3在merry這個詞中獲得了更多的資訊,從而得到一個正確的判斷,這個資訊流則是由全域性門控函式g控制從共享層流向特定任務層。

錯誤分析

對於任務中錯誤的case,基本可以總結為以下兩種型別:
1、具有複雜的語句結構,比如雙重否定或者倒裝句等,這種情況可以考慮tree-base LSTM
2、需要進行一定的推理,比如“I tried to read the time on my watch.”,假設在電影評價中,實際上可以根據推理得到一個負面的評價。

總結

作者利用多個任務聯合訓練以提升實驗結果,但是對於不同的任務,其資訊能否共享或者那些資訊能夠共享還存在一定疑問,同時在實際任務中也比較少見這種做法。
當然,如果不同任務的標記資料共享後能夠對結果提升,那對於工程來說也能解決一些問題,這種思想值得仔細研究。