1. 程式人生 > >自然語言處理神經網路模型入門

自然語言處理神經網路模型入門

主要內容

  • 自然語言輸入編碼
  • 前饋網路
  • 卷積網路
  • 迴圈網路(recurrent networks )
  • 遞迴網路(recursive networks)
  • 自動計算梯度的計算圖抽象( the computation graph abstraction for automatic gradient computation)

1.神經網路中的術語

  • feature:具體的語言輸入
  • input vector: the actual input that is fed to the neural-network classifier
  • input vector entry: 輸入的特定值(a specific value of the input)

數學符號

  • 加粗大寫字母(XY, Z ) 表示矩陣
  • 加粗小寫字母代表向量 b
  • W1表示神經網路中的第一層
  • (W)2 (W1)2 矩陣的冪
  • [v1;v2] 表示向量連線

2.神經網路架構

feed-forward networks
包括具有完全連線層的網路,例如多層感知器,以及具有卷積(convolutional )和池化層(pooling)的網路。 All of the networks act as classifiers, but each with different strengths.
  • Fully connected feed-forward neural networks (完全連線層)

    1. 在任何使用線性學習器的地方都可以用作替代品。
    2. 非線性網路以及容易整合預訓練的字嵌入能力,通常可以提高分類的準確性
    3. 作為分類器的替代品,provide benefits for CCG supertagging, dialog state tracking, pre-ordering for statistical machine translation and language modeling.
  • Networks with convolutional and pooling layers

    1. 對於我們希望找到關於class membership的強大本地線索的分類任務非常有用,但這些線索可以出現在輸入的不同位置
    2. 允許模型學習找到這樣的local indicators,而不用管其位置。
    3. show promising results(有希望的結果) on many tasks, including document classification(檔案分類),short-text categorization(短文字分類),sentiment classification(情感分析),relation type classification between entities(實體之間的關係型別分類), event detection(事件探測), paraphrase identification(釋義識別), semantic role labeling(語義角色標註),question answering(問答),predicting box-office revenues of movies based on critic reviews(基於評論的票房預測),modeling text interestingness(建模文字的趣味性),and modeling the relation between character-sequences and part-of-speech tags(模擬字元序列和詞性標籤之間的關係).
    4. 缺點:為了將任意大的 item 編碼為捕獲其最顯著特徵的固定大小向量,它犧牲了大部分結構資訊。
    5. 幸運的是, 迴圈和遞迴架構允許我們使用序列(sequences)和樹(tree),同時保留大量結構資訊
遞迴網路(recursive networks)
旨在模擬序列
  • can produce very strong results for language modeling(語言建模), sequence tagging(序列標記),machine translation(機器翻譯),dependency parsing(依存關係句法分析),sentiment analysis,noisy text normalization(噪雜文字規範化),dialog state tracking(對話狀態跟蹤),response generation(響應生成),modeling the relation between character sequences and part-of-speech tags(模擬字元序列和詞性標籤之間的關係)
迴圈網路
can handle trees
  • 可以產生最先進或接近最先進的結果 for constituency and dependency parse re-ranking(選區和依賴解析重排序), discourse parsing(語義關係分類),semantic relation classification(語義關係分類),political ideology detection based on parse trees(政治意識形態檢測),sentiment classification,target-dependent sentiment classification(依賴目標的情緒分類),question answering.

3.特徵表示

  • a feed-forward neural network 是一個函式 NN(x),其輸入是一個din dimensional vector x,輸出是doutdimensional output vector
  • 該函式作為一個分類器,assigning the input x a degree of membership in one or more of dout classes(為輸入x在一個或多個dout類中分配一個隸屬度)
  • 不再將每個特徵表示為唯一維度而是將其表示為密集向量。也就是說,將每個核心特徵嵌入到d維空間中,並表示為該空間的向量。然後可以像函式NN的其他引數一樣訓練這種嵌入。
  • 基於前饋神經網路的NLP分類系統的基本架構如下:
    1. 提取一系列與預測輸出項相關的核心語言特徵f1,…,fk
    2. 對於每個感興趣的特徵fi,檢索對應的向量v(fi)
    3. 將這些向量組合成輸入向量x
    4. 將x饋入非線性分類器
  • 這個結構的關鍵在於使用密集型特徵向量而不是稀疏特徵向量,使用核心特徵而不是特徵組合
    在這裡插入圖片描述
  • 對於這些核心特徵的表示主要有稀疏和稠密兩種表現形式即one-hot和Dense Vectors,如上圖所示。其主要區別為:
    1)one-hot:每個維度表示一個特徵,其特徵值是二維的,即若該特徵值存在即為1,不存在則為0。每個特徵都有其自身的維度。
    2)Dense Vectors:每個核心特徵代表一個向量,每個輸入向量X對應幾個輸入向量條目。特徵到向量的對映來自於嵌入表。每個特徵都是d維向量,訓練會使得相似的特徵具有相似的向量。
  • 應用場景
    1)如果我們在一個類別中具有相對較少的不同特徵,並且我們相信在不同特徵之間沒有關係,這時採用one-hot表示。
    2)如果我們相信在一個組的不同特徵之間存在聯絡,那麼此時應該採用Dense Vectors,可以讓神經網路弄清楚特徵間的相關性並通過共享引數獲得一些統計強度

3.1 可變數量的特徵

  • 在很多情況下,特徵的數量我們提前是不知道的。因此,我們需要用一個固定長度的向量表示一組無限數量的特徵。一種方法就是CBOW(連續詞袋),它與傳統的詞袋錶示非常相似但是拋棄了順序資訊。
  • CBOW(f1,…,fk) =1k\frac{1}{k} i=1i=kv(fi)\sum_{i=1}^{i=k} v(f_{i})
  • 一個CBOW表示的變體就是權重CBOW,不同的向量有不同的權重:
    WCBOW(f1,…,fk) =1i=1i=kai\frac{1}{\sum_{i=1}^{i=k}a_{i}} i=1i=kaiv(fi)\sum_{i=1}^{i=k} a_{i}v(f_{i})
    aia_{i}:表示不同特徵的相對重要性。例如,aia_{i}可以是TF-IDF分數

3.2 距離和位置特徵

  • 句子中兩個詞的先行距離可以被看成一個informative feature
  • 距離特徵編碼:將距離分成幾組,每一組(bin)與一個d維向量相關聯(得到distance-embedding vector),然後將這些向量作為網路中的常規引數去訓練

3.4 特徵組合

  • 在神經網路中,特徵提取僅涉及核心特徵
  • 在傳統的基於線性模型的神經網路中,功能設計師不僅要手動指定感興趣的核心特徵,還要指定這些特徵之間的相互關係。
  • 線上性模型中特徵組合很重要,因為他們為輸入引入了更多的維度,使得空間資料點更接近線性可分。?
    而在神經網路中定義的非線性的分類器用於尋找指定的特徵組合,減少了工程量
    -Kernel methods(核方法)允許功能設計師僅指定核心特徵,而將特徵組合的方面留給學習演算法,它允許精確的最優化問題。然而,其運算複雜度與訓練的資料量成線性關係,因此不適用於很大的資料集。神經網路的分類的複雜度與訓練的資料大小無關,而只與神經網路的大小線性相關。

3.5 維度(Dimensionality )

  • 維度隨著類成員的數量增加而增長。
  • 由於維度對記憶體需求和處理時間有直接的影響,所以要多嘗試幾次不同的大小,選擇一個在速度和任務準確性上選擇一個最好的。

3.6 特徵共享(Vector Sharing)

  • 在一些情況下,一些特徵共享相同的詞彙表(vocabulary)。
  • 對於兩個向量,是否共享詞彙表是一個經驗問題。如果認為單詞出現在不同位置時表現不同,那麼久使用兩個不同的詞彙表。否則就共享一個詞彙表。

3.7 網路輸出(Network’s Output)

  • 在多類分類問題中,網路的輸出是一個k維向量,每個維度代表一個特定輸出類的強度。也就是說,輸出仍然保持在傳統的線性模型中。
  • 在第四章中,輸出層對應一個d*k維的矩陣。其中,每一列表示d維embeddings,向量表示之間的相似性表示輸出類之間模型學習的相似性。

4.前饋神經網路

本章包括:

  • representation power
  • common non-linearities
  • loss function

4.1一個典型的神經網路如下圖所示:

在這裡插入圖片描述
1)其中,每個圓圈代表一個神經元,射入箭頭是神經元的輸入,射出箭頭是神經元的輸出。每個箭頭都攜帶一個權重,代表其重要性。
2)最底層沒有傳入箭頭,是網路的輸入層。最頂層沒有外出箭頭,是網路的輸出層。其他層稱之為“隱藏層”。神經元中的\int代表一個非線性函式,通常是11+exa\frac{1}{1+e^{-xa}}
3)在這個圖的表示中,每一個神經元都與下一層的所有神經元相連線,對於類似網路結構稱之為完全連線層或者仿射層
4)將具有標量輸入和輸出的計算單元看作神經元,計算出每個神經元與其權重的乘積,在進行加和,之後通過一個非線性函式對該加和進行運算,得到輸出。
5)下面,用一些簡潔的數學符號來描述整個運算過程。

  1. 把輸入層看成一個4維的向量x,其上層是一個6維向量(h1)
  2. h = xW,其中W是一個向量矩陣,WijW_{ij}指的是輸入行中第i個神經元與其連線的第j個神經元的權重
  3. 每次向下層傳遞時,都要經過啟用函式g的變換
  4. 因此,第三層得到的輸入為:(g(xW1))W2

4.2用數學符號表示

  • 最簡單的神經網路是感知機,是關於輸入的一個線性函式:

NNPerception(x)NN_{Perception}(x) = xW + b (x∈RdinR^{d_{in}},W∈RdindoutR^{d_{in}*d_{out}}, b∈RdoutR^{d_{out}}
其中,W是權重矩陣,b是偏差項

  • 包含一個隱藏層的多層感知機(MLP1):

NNMLP1(x)NN_{MLP1}(x) = g(xW1+b1xW^{1} + b^{1})W2W^{2} +b2b^{2}
(x∈RdinR^{d_{in}},W1W^{1}Rdind1R^{d_{in}*d_{1}}, b1b^{1}Rd1R^{d_{1}}, W2W^{2}Rd1d2R^{d_{1}*d_{2}},b2b^{2}Rd2R^{d_{2}}

  • 包含兩個隱藏層的多層感知機(如上圖所示):

NNMLP2(x)NN_{MLP2}(x) = g2(g1(xW1+b1)g^{2}(g^{1}(xW^{1} + b^{1})W2W^{2} +b2)W3b^{2})W^{3}

使用中間變數可能更清晰:

NNMLP2(x)NN_{MLP2}(x) = y
h1=g1(xW1+b1)h^{1} = g^{1}(xW^{1} + b^{1})
h2=g2(h1W2+b2)h^{2} = g^{2}(h^{1}W^{2} + b^{2})
y = h2W3h^{2}W^{3}

1)由每個線性變換產生的向量成為"layer",最外層變換結果成為輸出層(其偏差項往往為0),其他線性變換稱為"hidden layer"(每個"hidden layer"都要經過一個非線性的啟用函式)。
2)具有多個隱藏層的網路稱為是深度網路,因此也稱深度學習
3)神經網路的每一層將dind_{in}維向量作為其輸入,並將其轉換為doutd_{out}維向量。層的維度被視為其輸出的維度。對於感知機來說,x的維度是1*dind_{in},W的維度是dindoutd_{in}*d_{out},b的維度是1*doutd_{out}
4)對於doutd_{out},

  • 如果doutd_{out}=1,那麼網路的輸出是一個標量,以通過輸出的值來用於迴歸(或評分),或者通過查詢輸出的符號用於二進位制分類
  • 如果doutd_{out}=k > 1,可以將每一個維度與一個類相關聯,並找出具有最大值的維度,以此用於k-class分類。如果輸出向量條目為正並且總和