一文了解自然語言處理神經史(上)
本文擴充套件了 ofollow,noindex" target="_blank"> Herman Kamper 和我在 2018 年深度學習 Indaba 組織的自然語言處理前沿課程。整個課程的幻燈片都可以在 這裡 找到,這篇文章將主要討論 NLP 中基於神經網路方法的近期進展。
免責宣告: 本文嘗試將大約 15 年 NLP 的發展歷程濃縮為今天最相關的八個里程碑,因此遺漏了許多相關和重要的發展。特別是,它嚴重偏向於當前的神經方法,這可能給人留下此期間沒有其他有影響力方法的錯誤影響。
年-神經語言模型
語言建模是在給定前面的單詞的情況下預測文字中的下一個單詞的任務。 它可能是最簡單的語言處理任務,具有實際應用,如 SwiftKey" rel="nofollow,noindex" target="_blank"> 智慧鍵盤 和電子郵件響應建議( Kannan et al.,2016 )。語言建模有著豐富的歷史。基於 n-gram 的經典方法採用平滑處理看不見的 n-gram ( Kneser & Ney,1995 )。 Bengio 等人於 2001 年提出了第一種神經語言模型,一種前饋神經網路,如下圖 1 所示。
該模型把 n 個可以在表 C 中查詢的先前單詞向量表示作為輸入。現在,這種向量被稱為詞嵌入。這些詞嵌入被連線並送入隱藏層,然後將其輸出提供給 softmax 層。想要了解更多該模型的資訊,請檢視 此文章 。
最近,前饋神經網路已被用於語言建模的遞迴神經網路( RNN; Mikolov 等人, 2010 )和長短期記憶網路( LSTM; Graves , 2013 )所取代。近年來已經提出了許多經典 LSTM 的新語言擴充套件模型(請參閱 此頁面 以獲得概述)。儘管有這些發展,但經典的 LSTM 仍然是一個強大的基線( Melis 等, 2018 )。即使 Bengio 等人的經典前饋神經網路在某些環境中也與更復雜的模型競爭,但這些通常只學會考慮最近的詞( Daniluk 等, 2017 )。如何理解這些語言模型捕獲的資訊是一個活躍的研究領域( Kuncoro 等, 2018; Blevins 等, 2018 )。
語言建模通常是應用 RNN 時的首選訓練場,併成功捕捉到了想象力,許多人通過 Andrej 的部落格 文章開始瞭解。語言建模是無監督學習的一種形式, Yann LeCun 也將預測性學習作為獲取常識的先決條件( 參見 NIPS 2016 的 Cake 幻燈片 )。 關於語言建模最顯著的方面可能是,儘管它很簡單,但它是本文討論的許多後期進展的核心:
詞嵌入: word2vec 的目標是簡化語言建模;
序列到序列模型:這種模型通過一次預測一個詞來生成輸出序列;
預訓練語言模型:這些方法使用語言模型中的表示來進行遷移學習;
這反過來意味著 NLP 中許多最重要的最新進展減少為一種語言建模形式。 為了做 “ 真正的 ” 自然語言理解,僅僅從原始形式的文字中學習可能是不夠的,我們將需要新的方法和模型。
多工學習
多工學習是在多個任務上訓練的模型之間共享引數的一般方法。在神經網路中,這可以通過繫結不同層的權重來輕鬆實現。多工學習的想法在 1993 年由 Rich Caruana 首次提出,並應用於道路跟蹤和肺炎預測( Caruana , 1998 )。直觀地說,多工學習鼓勵模型學習對許多工有用的表示。特別對於學習一般的低階表示,集中模型的注意力或在有限量的訓練資料的設定中特別有用。有關多工學習的更全面概述,請檢視 此文章 。
Collobert 和 Weston 於 2008 年首次將多工學習應用於 NLP 的神經網路。 在他們的模型中,查詢表(或詞嵌入矩陣)在兩個在不同任務上訓練的模型之間共享,如下面的圖 2 所示。
共享詞嵌入使模型能夠在詞嵌入矩陣中協作和共享一般的低階資訊,這通常構成模型中最大數量的引數。 Collobert 和 Weston 在 2008 年的論文中證明了它在多工學習中的應用,它引領了諸如預訓練詞嵌入和使用卷積神經網路( CNN )之類的思想,這些思想僅在過去幾年中被廣泛採用。它贏得了 ICML 2018 的時間考驗獎 (參見此時的 時間考驗獎論文 )。
多工學習現在用於各種 NLP 任務,並且利用現有或 “ 人工 ” 任務已成為 NLP 指令集中的有用工具。有關不同附加任務的概述,請檢視 此文章 。雖然通常預先定義引數的共享,但是在優化過程期間也可以學習不同的共享模式( Ruder 等, 2017 )。隨著模型越來越多地在多項任務中被評估來評估其泛化能力,多工學習越來越重要,最近提出了多工學習的專用基準( Wang et al , 2018; McCann et al , 2018 )。
詞嵌入
文字的稀疏向量表示,即所謂的 詞袋模型 ,在 NLP 中具有悠久的歷史。正如我們在上面所看到的,早在 2001 年就已經使用了詞或詞嵌入的密集向量表示。 Mikolov 等人在 2013 年提出的主要創新,是通過移動隱藏層和近似目標來使這些詞嵌入的訓練更有效率。雖然這些變化本質上很簡單,但它們與高效的 word2vec 一起實現了大規模的詞嵌入訓練。
Word2vec 有兩種模式,可以在下面的圖 3 中看到:連續的詞袋( CBOW )和 skip-gram 。它們的目標不同:一個基於周圍的詞預測中心詞,而另一個則相反。
雖然這些嵌入在概念上與使用前饋神經網路學習的嵌入技術沒有什麼不同,但是對非常大的語料庫的訓練使它們能夠捕獲諸如性別,動詞時態和國家 – 首都關係之類的詞之間的某些關係,由圖 4 可知:
這些關係及其背後的意義引發了對嵌入詞的初步興趣,許多研究調查了這些線性關係的起源( Arora 等, 2016; Mimno & Thompson , 2017; Antoniak & Mimno , 2018; Wendlandt 等, 2018 ))。然而,使用預訓練嵌入作為初始化的固定詞嵌入,把它作為當前 NLP 的主要內容被證明可以提高各種下游任務的效能。
雖然捕獲的關係 word2vec 具有直觀且幾乎神奇的效能,但後來的研究表明 word2vec 沒有任何固有的特殊性:通過矩陣分解也可以學習詞嵌入( Pennington 等, 2014; Levy & Goldberg , 2014 )和通過適當的調整,經典的矩陣分解方法(如 SVD 和 LSA )可以獲得類似的結果( Levy 等, 2015 )。
從那時起,許多工作已經開始探索詞嵌入的不同方面,可以通過這篇文章瞭解一些趨勢和未來方向。儘管有許多發展,但 word2ve 仍然是如今被廣泛使用的一種流行的選擇。 Word2vec 的範圍甚至超出了詞級別:帶有負抽樣的 skip-gram ,一個基於本地環境學習嵌入的方便目標,已被應用於學習句子的表示( Mikolov & Le , 2014; Kiros et al. , 2015 ) - 甚至超越 NLP ,應用到網路( Grover & Leskovec , 2016 )和生物序列( Asgari & Mofrad , 2015 )等。
一個特別令人興奮的方向是將不同語言的詞嵌入投影到同一空間中以實現(零射擊)跨語言轉移。越來越有可能以完全無監督的方式(至少對於類似語言)學習良好的投影,這開啟了低資源語言和無監督機器翻譯的應用( Lample 等, 2018; Artetxe 等, 2018 )。請檢視( Ruder 等, 2018 )的概述。
2013年-NLP的神經網路
2013 年和 2014 年是神經網路模型開始應用於 NLP 的標誌年份。三種主要型別的神經網路被廣泛使用:遞迴神經網路、卷積神經網路、迴圈神經網路。
遞迴神經網路( RNN )是處理 NLP 中普遍存在的動態輸入序列問題的明顯選擇。 Vanilla RNNs ( Elman , 1990 )很快被經典的長短期記憶網路( Hochreiter & Schmidhuber , 1997 )所取代,後者證明其對 消失和爆炸梯度問題 更具彈性。在 2013 年之前, RNN 仍然被認為很難訓練, Ilya Sutskever 的博士論文 是改變這種現狀的一個關鍵例子。 LSTM 細胞視覺化可以在下面的圖 5 中看到。雙向 LSTM ( Graves 等, 2013 )通常用於處理左右上下文。
隨著卷積神經網路( CNN )被廣泛用於計算機視覺,它們也開始應用於文字( Kalchbrenner 等, 2014; Kim 等, 2014 )。用於文字的卷積神經網路僅在兩個維度上操作,其中濾波器僅需要沿時間維度移動。下面的圖 6 顯示了 NLP 中使用的典型 CNN 。
卷積神經網路的一個優點是它們比 RNN 更可並行化,因為每個時間步的狀態僅取決於本地環境(通過卷積運算)而不是像 RNN 取決過去所有狀態。 CNN 可以使用擴張卷積擴充套件到更寬的感受野,以捕捉更廣泛的背景( Kalchbrenner 等 2016 )。 CNN 和 LSTM 也可以組合和堆疊,並且可以使用卷積來加速 LSTM 。
RNN 和 CNN 都將語言視為一個序列。然而,從語言學的角度來看,語言 本質上是等級的 :單詞被組成高階短語和子句它們本身可以根據一組生產規則遞迴地組合。將句子視為樹而不是序列的語言啟發思想產生了遞迴神經網路,這可以在下面的圖 7 中看到:
與從左到右或從右到左處理句子的 RNN 相比,遞迴神經網路從下到上構建序列的表示。在樹的每個節點處,通過組合子節點的表示來計算新表示。由於樹也可以被視為在 RNN 上施加不同的處理順序,因此 LSTM 自然地擴充套件到樹。
RNN 和 LSTM 不僅僅可以被擴充套件來使用分層結構,而且不僅可以根據本地語言學習詞嵌入,而且可以基於語法背景來學習詞嵌入( Levy & Goldberg , 2014 );語言模型可以基於句法堆疊生成單詞( Dyer et al 。, 2016 ) ; 圖形卷積神經網路可以在樹上執行( Bastings 等, 2017 )。
本文由 阿里云云棲社群 組織翻譯。
文章原標題《using-machine-learning-to-predict-stock-prices》
作者: Vivek Palaniappan 譯者:虎說八道,審校:。
文章為簡譯,更為詳細的內容,請檢視 原文 。