一、本文中心內容
神經網絡語言模型和詞嵌入的經典論文,核心目標是將訓練好的word embedding去完成詞性標注(POS)、分塊(短語識別CHUNK)、命名實體識別(NER)和語義角色標注(SRL)等任務,並且,本網絡的語言模型只用來預訓練word embedding,然后將其作為具體任務(任務的共同目標是標注)網絡第一層(將詞的one-hot表示變為word embedding)的參數繼續再具體任務中訓練。
本文運用到了多任務訓練的模型,即共享one-hot到word embedding的轉化層的參數,在多項任務上進行訓練。統一標注,便於后續介紹,一個具有L層的前向反饋神經網絡
本文中的神經網絡分為這幾個部分:
首先是詞向量的構建,將一個詞表示為一個向量,即表示為連續空間中的一個點,而不是最原始的one-hot表示。(1)每一個詞表示為一個向量存儲在表中供查詢,lookup table(LW),對於每個詞向量為即大表中的第w列。(2)對於任意一個輸入序列都可以用一個矩陣表示。(3)對於任何離散型特征可以進行擴展,如果每個詞有多個離散特征,則每個離散特征對應一個查表,再將得到的離散特征進行拼接,得到輸入矩陣。
基於窗口方法
1、第一層,(通過查表操作將這些單詞索引中的每一個映射為特征向量)輸入層Input window,對於一個輸入序列,每一個詞對應一個tag並且有一個超參數k,根據特征個數進行查表曹祖,將輸入表示為一個矩陣,並且可以拼接為一個固定長度的向量。
2、線性層,也就是第三層,和標注神經網絡類似,將輸入特征向量進行線性變換
3、非線性變換層:進行hardtanh變換
4、線性輸出層:根據目標函數進行損失函數選擇,一般選擇softmax
其他考慮,對於一個長度為T的序列,將會產生T個輸入,每一個詞組成一個輸入。並且窗口k是一個超參數可以采用CV進行選擇。另外對於窗口小於k的詞,可以添加PADDING詞進行代替。該方法能夠解決大部分的序列標注問題,但是對於SRL問題,常常需要指定某個謂詞作為輸入,此時該方法不能適用,需要考慮句子全部特征。
基於句子方法------相比於基於窗口的方法,加入卷積層照顧到全局特征
1、與窗口方法不同之處在於,查表定輸入的矩陣后,經過一個CONV層,考慮整個句子特征,此時還會加入兩個相對特征即距離謂詞v和待標記詞的相對距離。卷積變換為:
,得到 t 個卷積結果。最大化層:
。
2、剩余步驟與窗口方法一致。
其次,訓練樣本時,對每個詞求詞級別對數似然(WLL),
對每個句子求句子級別對數似然,方法較復雜。再通過SGD進行優化,標准神經網絡求解過程BP算法,每一步都是可導的。
二、提高效果手段
輸出層采用排序標准而不是基於熵;利用語言模型進行初始化,word embedding過程;多任務學習,多個任務同時學習認為共享中間參數,最后幾層作為特定任務的輸出;特征字典;級聯,將多個學習任務進行串聯;模型組合;結構分析-Parsing;固定特征工程。
三、個人總結
1、本文給出了一個統一神經網絡架構能夠處理多種NLP任務,簡單結構能夠處理大部分問題,但是效果一般般。
2、句子級別的對數似然復雜度太高,導致訓練復雜度很高
3、對於NLP問題來說,一個更好的詞嵌入,是成功的一半,在這個時候,word2vec占據半壁江山,詞嵌入在任務中的表現一般。
4、卷積模型,獲取全局特征,或許在處理中,可以發揮出更好的優勢。
5、詞嵌入的訓練由訓練語言模型變成輸出評價的分,這個思路值得深究。