深度學習與自然語言處理 主要概念一覽

轉載自:http://blog.csdn.net/aliceyangxi1987/article/details/71915180


CS224d-Day 1:

要開始系統地學習 NLP 課程 cs224d,今天先來一個課程概覽。 
課程一共有16節,先對每一節中提到的模型,算法,工具有個總體的認識,知道都有什麼,以及它們可以做些什麼事情。


簡介:

1. Intro to NLP and Deep Learning

NLP:

Natural Language Processing (自然語言處理)的目的,就是讓計算機能‘懂得’人類對它‘說’的話,然後去執行一些指定的任務。

這些任務有什麼呢?

Easy: 
• Spell Checking--拼寫檢查 
• Keyword Search--關鍵詞提取&搜索 
• Finding Synonyms--同義詞查找&替換 
Medium: 
• Parsing information from websites, documents, etc.--從網頁中提取有用的信息例如產品價格,日期,地址,人名或公司名等 
Hard: 
• Machine Translation (e.g. Translate Chinese text to English)--自動的或輔助的翻譯技術 
• Semantic Analysis (What is the meaning of query statement?)--市場營銷或者金融交易領域的情感分析 
• Coreference (e.g. What does “he” or “it” refer to given a document?) 
• Question Answering (e.g. Answering Jeopardy questions).--複雜的問答系統

NLP的難點:
  • 情境多樣
  • 語言歧義

Deep Learning:

深度學習機器學習的一個分支,嘗試自動的學習合適的特徵及其表徵,嘗試學習多層次的表徵以及輸出。

它在NLP的一些應用領域上有顯著的效果,例如機器翻譯,情感分析,問答系統等。

和傳統方法相比,深度學習的重要特點,就是用向量表示各種級別的元素,傳統方法會用很精細的方法去標註,深度學習的話會用向量表示 單詞,短語,邏輯表達式和句子,然後搭建多層神經網絡去自主學習。

這裏有簡明扼要的對比總結。

向量表示: 
詞向量: 
One-hot 向量: 
記詞典裏有 |V| 個詞,每個詞都被表示成一個 |V| 維的向量,設這個詞在字典中相應的順序爲 i,則向量中 i 的位置上爲 1,其餘位置爲 0.

  • 詞-文檔矩陣: 
    構建一個矩陣 X,每個元素 Xij 代表 單詞 i 在文檔 j 中出現的次數。

  • 詞-詞共現矩陣: 
    構建矩陣 X,每個元素 Xij 代表 單詞 i 和單詞 j 在同一個窗口中出現的次數。


模型算法:

2. Simple Word Vector representations: word2vec, GloVe

word2vec:

word2vec是一套能將詞向量化的工具,Google在13年將其開源,代碼可以見 https://github.com/burness/word2vec ,它將文本內容處理成爲指定維度大小的實數型向量表示,並且其空間上的相似度可以用來表示文本語義的相似度。

Word2vec的原理主要涉及到統計語言模型(包括N-gram模型和神經網絡語言模型),continuousbag-of-words 模型以及 continuous skip-gram 模型。

  • N-gram的意思就是每個詞出現只看其前面的n個詞,可以對每個詞出現的概率進行近似。 
    比如當n=2的時候:

  • 神經網絡語言模型(NNLM)用特徵向量來表徵每個詞各個方面的特徵。NNLM的基礎是一個聯合概率:

其神經網絡的目的是要學習:

  • Continuous Bag-of-Words(CBOW) 模型與NNLM類似,結構如下:

CBOW是通過上下文來預測中間的詞,如果窗口大小爲k,則模型預測:

其神經網絡就是用正負樣本不斷訓練,求解輸出值與真實值誤差,然後用梯度下降的方法求解各邊權重參數值的。

  • Continuous skip-gram 模型與CBOW正好相反,是通過中間詞來預測前後詞,一般可以認爲位置距離接近的詞之間的聯繫要比位置距離較遠的詞的聯繫緊密。目標爲最大化:

結構爲:

應用: 
- 同義詞查找, 
- 文本聚類,實現方法:用關鍵詞來表徵文本。關鍵詞提取用TF-IDF,然後用word2vec訓練得到關鍵詞向量,再用k-means聚類,最後文本就能夠以關鍵詞的類別進行分類了。 
- 文本類別投遞,實現方法:人工標記出該詞屬於各個類別的概率,出全體詞屬於各個類別的概率。

Glove:

Global Vectors 的目的就是想要綜合前面講到的 word-document 和 word-windows 兩種表示方法,做到對word的表示即 sementic 的表達效果好,syntactic 的表達效果也好:

3. Advanced word vector representations: language models, softmax, single layer networks

softmax:

softmax 模型是 logistic 模型在多分類問題上的推廣, logistic 迴歸是針對二分類問題的,類標記爲{0, 1}。在softmax模型中,label可以爲k個不同的值。

4. Neural Networks and backpropagation – for named entity recognition

5. Project Advice, Neural Networks and Back-Prop (in full gory detail)

Neural Networks:

神經網絡是受生物學啓發的分類器,可以學習更復雜的函數和非線性決策邊界。


模型調優:

6. Practical tips: gradient checks, overfitting, regularization, activation functions, details

**UFLDL:**Unsupervised Feature Learning and Deep Learning

Gradient Checking(梯度檢測):

反向傳播因爲細節太多,往往會導致一些小的錯誤,尤其是和梯度下降法或者其他優化算法一起運行時,看似每次 J(Θ) 的值在一次一次迭代中減小,但神經網絡的誤差可能會大過實際正確計算的結果。

針對這種小的錯誤,有一種梯度檢驗(Gradient checking)的方法,通過數值梯度檢驗,你能肯定確實是在正確地計算代價函數(Cost Function)的導數。

GC需要對params中的每一個參數進行check,也就是依次給每一個參數一個極小量。

overfitting:

就是訓練誤差Ein很小,但是實際的真實誤差就可能很大,也就是模型的泛化能力很差(bad generalization)

發生overfitting 的主要原因是:(1)使用過於複雜的模型(dvc 很大);(2)數據噪音;(3)有限的訓練數據。

regularization:

爲了提高模型的泛化能力,最常見方法便是:正則化,即在對模型的目標函數(objective function)或代價函數(cost function)加上正則項。


平臺:

7. Introduction to Tensorflow

Tensorflow:

Tensorflow 是 Python 封裝的深度學習庫,非常容易上手,對分佈式系統支持比 Theano 好,同時還是 Google 提供資金研發的

在Tensorflow裏:

  • 使用張量(tensor)表示數據.
  • 使用圖(graph)來表示計算任務.
  • 在被稱之爲會話(Session)的上下文 (context)中執行圖.
  • 通過變量 (Variable)維護狀態.
  • 使用feed和fetch可以爲任意的操作(arbitrary operation)賦值或者從其中獲取數據.

TensorFlow 算是一個編程系統,它使用圖來表示計算任務,圖中的節點被稱之爲operation(可以縮寫成op),一個節點獲得0個或者多個張量(tensor,下文會介紹到),執行計算,產生0個或多個張量。


模型與應用:

8. Recurrent neural networks – for language modeling and other tasks

RNN:

在深度學習領域,傳統的前饋神經網絡(feed-forward neural net,簡稱FNN)具有出色的表現。

在前饋網絡中,各神經元從輸入層開始,接收前一級輸入,並輸入到下一級,直至輸出層。整個網絡中無反饋,可用一個有向無環圖表示。

不同於傳統的FNNs,RNNs引入了定向循環,能夠處理那些輸入之間前後關聯的問題。定向循環結構如下圖所示:

9. GRUs and LSTMs – for machine translation

傳統的RNN在訓練 long-term dependencies 的時候會遇到很多困難,最常見的便是 vanish gradient problem。期間有很多種解決這個問題的方法被髮表,大致可以分爲兩類:一類是以新的方法改善或者代替傳統的SGD方法,如Bengio提出的 clip gradient;另一種則是設計更加精密的recurrent unit,如LSTM,GRU。

LSTMs:

長短期內存網絡(Long Short Term Memory networks)是一種特殊的RNN類型,可以學習長期依賴關係。

LSTMs 刻意的設計去避免長期依賴問題。記住長期的信息在實踐中RNN幾乎默認的行爲,但是卻需要很大的代價去學習這種能力。

LSTM同樣也是鏈式結構,但是重複的模型擁有不同的結構,它與單個的神經網層不同,它有四個, 使用非常特別方式進行交互。

GRUs:

Gated Recurrent Unit 也是一般的RNNs的改良版本,主要是從以下兩個方面進行改進。

一是,序列中不同的位置處的單詞(已單詞舉例)對當前的隱藏層的狀態的影響不同,越前面的影響越小,即每個前面狀態對當前的影響進行了距離加權,距離越遠,權值越小。

二是,在產生誤差error時,誤差可能是由某一個或者幾個單詞而引發的,所以應當僅僅對對應的單詞weight進行更新。

10. Recursive neural networks – for parsing

11. Recursive neural networks – for different tasks (e.g. sentiment analysis)

Recursive neural networks:

和前面提到的 Recurrent Neural Network 相比:

recurrent: 時間維度的展開,代表信息在時間維度從前往後的的傳遞和積累,可以類比markov假設,後面的信息的概率建立在前面信息的基礎上。

recursive: 空間維度的展開,是一個樹結構,就是假設句子是一個樹狀結構,由幾個部分(主語,謂語,賓語)組成,而每個部分又可以在分成幾個小部分,即某一部分的信息由它的子樹的信息組合而來,整句話的信息由組成這句話的幾個部分組合而來。

12. Convolutional neural networks – for sentence classification

Convolutional neural networks:

卷積神經網絡是一種特殊的深層的神經網絡模型,它的特殊性體現在兩個方面,一方面它的神經元間的連接是非全連接的, 另一方面同一層中某些神經元之間的連接的權重是共享的(即相同的)。它的非全連接和權值共享的網絡結構使之更類似於生物 神經網絡,降低了網絡模型的複雜度,減少了權值的數量。

13. Guest Lecture with Andrew Maas: Speech recognition
14. Guest Lecture with Thang Luong: Machine Translation

大數據:

15. Guest Lecture with Quoc Le: Seq2Seq and Large Scale DL

Seq2Seq:

seq2seq 是一個機器翻譯模型,解決問題的主要思路是通過深度神經網絡模型(常用的是LSTM,長短記憶網絡,一種循環神經網絡)將一個作爲輸入的序列映射爲一個作爲輸出的序列,這一過程由編碼輸入與解碼輸出兩個環節組成。

Encoder:

Decoder:

注意機制是Seq2Seq中的重要組成部分:

應用領域有:機器翻譯,智能對話與問答,自動編碼與分類器訓練等。

Large Scale DL:

爲了讓 Neural Networks 有更好的效果,需要更多的數據,更大的模型,更多的計算。

Jeff Dean On Large-Scale Deep Learning At Google


未來方向:

16. The future of Deep Learning for NLP: Dynamic Memory Networks

dynamic memory network (DMN):

利用 dynamic memory network(DMN)框架可以進行 QA(甚至是 Understanding Natural Language)。

這個框架是由幾個模塊組成,可以進行 end-to-end 的 training。其中核心的 module 就是Episodic Memory module,可以進行 iterative 的 semantic + reasoning processing。


發佈了72 篇原創文章 · 獲贊 25 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章