【筆記】概述-基於神經網絡的自然語言處理

Part0-概述-基於神經網絡的自然語言處理

“基於神經網絡的自然語言處理”一書由Yoav Goldberg於2017年出版,作者整合了近年來用於自然語言處理的神經網絡模型,從而構建了一個比價系統的描述。書的前半部分(Part I和Part II)涵蓋了監督機器學習和前饋神經網絡,在語言數據上使用機器學習的工作基礎以及基於向量(vector-based)而不是詞的符號表示(symbolic representations for words)。同時還覆蓋了計算圖抽象(computation-graph abstraction),可以允許簡單地定義和訓練任意的神經網絡。

這本書的後半部分(Part III和Part IV)介紹了更具體的神經網絡架構,這些架構和技術時當前在機器翻譯、句法分析等state-of-the-art 算法的驅動力。

自然語言處理(Natural Language Processing)作爲計算機科學和語言學的交叉學科(interdisciplinary),也被稱作爲計算語言學(Computational Linguistics)。

統計自然語言處理(Statistical Natural Language Processing)

過去的研究通常將統計機器學習技術應用於自然語言處理,因此有了統計自然語言處理。一個統計自然語言處理系統通常由兩部分組成:訓練數據(樣本)和統計模型(算法)。

但是傳統的機器學習方法在數據獲取和模型構建方面存在一些侷限性,主要表現在:

  • 需要大規模的標記數據

    (大規模、高質量的人工標記數據通常難以獲得) —> 容易造成嚴重的數據稀疏問題

  • 需要人工設計模型需要的特徵或特徵的組合

​ (特徵的好壞通常取決於開發人員對所研究的問題是否有深刻的理解和豐富的經驗)—>好的特徵難以獲得

基於深度學習的自然語言處理

深度學習一般是指建立在多層非線性變化的神經網絡結構上,對數據的表示進行抽象和學習的一系列機器學習算法。深度學習爲自然語言處理的研究帶來了兩方面的變化:

  • 使用統一的分佈式向量表示不同粒度的語言單元,如詞、短語、句子、文檔篇章等
  • 使用循環、卷積、遞歸等神經網絡模型對不同的語言單元向量進行組合
    • 不同粒度的語言單元
    • 不同種類的語言 —> 都可以通過組合方式表示在相同的語義向量空間中
    • 不同模態的數據

神經網絡的端到端訓練(End to End Training)大大降低了門檻

只需要“輸入-輸出映射”,網絡可以自主學習如何將數據和期望的標籤建立聯繫,研究人員只需設計網絡結構和訓練方式。

將神經網絡應用於語言的一個主要組件是使用嵌入層(embedding layer),即將離散的符號應設爲相對低維的連續向量。(discrete symbols -> continual vectors)

幾種主要的神經網絡類型

有兩種主要的神經網絡結構

  • 前饋網絡(feed-forward network)
  • 循環/遞歸網絡(recurrent / recursive network)

它們可以以各種方式組合。

前饋網絡(feed-forward network)

前饋網絡,特別是多層感知計(Multi-Layer Perceptron)。

  • 輸入:允許使用固定大小的輸入,或使用可變長度輸入,我們可以忽略元素的順序。當我們爲網絡提供一系列輸入組件時,它會學習以一種有意義的方式將其組合起來。
  • 效果:之前線性模型能應用的地方,多層感知機都能使用。網絡的非線性性以及易於整合預訓練詞嵌入的能力,通常可以達到很高的分類準確率。

卷積前饋網絡(Convolutional feed-forward network)

卷積前饋網絡是一種特別的架構,專門用於提取數據中的局部模式。它們被提供任意大小的輸入,並且有能力提取出對詞序敏感的有意義的局部模式。非常適合在長句或文件中識別長達固定長度的指示性短語或習語。

循環神經網絡(Recurrent neural network)

循環神經網絡是適合處理序列數據的專用模型。網絡接收輸入序列作爲輸入,併產生固定長度的向量用於概括(summaize)該序列。循環網絡很少被當作獨立組件應用,其能力在於可以被當作可訓練的組件作爲其他神經網絡的輸入,然後一起被串聯地訓練。而遞歸網絡處理的數據對象擴展到樹。

遞歸神經網絡(Recursive neural network)

在自然語言中,我們經常與任意長度的結構化數據打交道,例如序列和樹。我們想要有能力捕獲這種結構中的規則,或者對其結構之間的相似性建模。循環和遞歸架構對序列和樹結構很有效,能夠保留很多結構話信息。循環網絡(1990)被設計用於對序列進行建模,而遞歸網絡(1996)是對循環網絡的泛化,能夠處理樹結構。

一些術語(Terminology)和數學符號說明

術語(Terminology)

  • “特徵(feature)”一詞被用於表示一個具體的、語言學的輸入,如一個詞、一個後綴或一個詞性標籤;
  • 術語"輸入向量(input vector)"用於表示被“喂”給神經網絡分類器的真正輸入;
  • 類似地,術語"輸入向量條目(input vector entry)"表示輸入的具體值。

數學符號(Mathematical Notation)

  • 粗體大寫字母表示矩陣 — (X,Y,Z)​

  • 粗體小寫字母表示向量 — (b)

  • 當有一系列相關的矩陣和向量時(如每一個矩陣代表網絡中不同的層),使用上標(superscript indices) — (W1,W2)(W^{1},W^{2})

  • 我們使用方括號[] 作爲向量和矩陣的索引運算符:

    • b[i]b_{[i]}是向量bb的第ii個元素
    • W[i,j]W_{[i,j]}是矩陣的第ii行第jj
  • 當沒有歧義時,我們有時使用更標準的數學符號表示向量和矩陣

    • bib_{i} 表示向量bb的第ii個元素
    • wi,jw_{i,j}表示矩陣WW的元素
  • 我們使用\cdot表示點乘運算 — wv=iwivi=iw[i]v[i]w\cdot v = \sum_{i}w_{i} v_{i}= \sum_{i}w_{[i]} v_{[i]}

  • 使用x1:nx_{1:n}表示向量x1,,xnx_{1},…,x_{n}的序列

    x1:nx_{1:n}是向量x1,,xnx_{1},…,x_{n}的序列時,xn:1x_{n:1}爲序列的逆序

    x1:n[i]=xi,xn:1[i]=xni+1x_{1:n}[i]=x_{i},x_{n:1}[i]=x_{n-i+1}

    • 我們使用[v1v2][v_{1};v_{2}]表示向量串聯
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章