第一篇:Natural Language Processing (Almost) from Scratch


一、本文中心內容

  神經網絡語言模型和詞嵌入的經典論文,核心目標是將訓練好的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、詞嵌入的訓練由訓練語言模型變成輸出評價的分,這個思路值得深究。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM