語言模型發展綜述


語言模型發展綜述

摘要

語言模型(language model)是自然語言處理中非常基礎且重要的問題。本文首先介紹了語言模型的定義及其應用場景,接着說明了語言模型的發展歷史,本文將語言模型分為統計語言模型和神經網絡語言模型兩個大階段,對各個階段中出現的語言模型的特點、數學原理、對之前模型的改進,以及存在的缺點進行了詳細的說明。最后,本文對目前先進的大規模預訓練語言模型進行了評價,指出了其存在的根本性問題,並對語言模型的未來做出了展望。

問題定義

語言模型是定義在單詞序列上的概率模型。通過將一個句子或者一段文字視作單詞序列,可以運用概率論,統計學,信息論,機器學習等方法對語言進行建模,從而實現對單詞序列的概率進行計算。

一般來說,概率更大的單詞序列意味着其在語言交流中出現的可能性更大,也即其可能更加符合語言習慣和會話邏輯。

例如將原始句子

"美聯儲主席本 伯南克昨天告訴媒體7000億美元的救助資金將借給上百家銀行,保險公司和汽車公司。"

調整語序變為

"本 伯南克美聯儲主席昨天7000億美元的救助資金告訴媒體將借給銀行,保險公司和汽車公司上百家。"

其可讀性就下降了很多,出現在日常對話中的概率就下降了。

而倘如進一步將其打亂為一個完全不通順的句子

"聯主美儲席本 伯訴南將借天的救克告媒咋助資金70元億00美給上百敗百家銀保行,汽車險公司公司和。"

則其概率會進一步下降。[1]

語言模型可以應用於分詞,搜索引擎,輸入法,機器翻譯等任務中。例如,在分詞時,我們可以認為其本質上就是求得一種分割方式,使得分詞后得到的單詞序列的語言模型概率最大化;搜索引擎和輸入法通過應用語言模型預估用戶要輸入的單詞,從而提高用戶的使用體驗;機器翻譯任務可以通過語言模型來檢查翻譯后的句子的通順程度,從中選最優秀的翻譯結果等。

總而言之,語言模型是自然語言處理中非常重要的一塊基石,其發展歷史也象征了整個自然語言處理學科的發展歷史,值得我們的深入研究和思考。

發展歷史與主要方法分類

發展歷史

語言模型的發展可以分為兩個大的階段,分別是使用n-gram語言模型的統計語言模型階段,和后來居上的神經網絡語言模型階段。神經網絡語言模型又可以分為早期的以設計神經網絡結構為主的階段和目前的通過巨量語料進行訓練,再通過微調進行部署的預訓練語言模型階段。

統計語言模型

顧名思義,統計語言模型是運用統計學方法對語言進行建模而得到的模型。數學家馬爾科夫(Andrey Markov)以馬爾科夫鏈的形式對單詞序列進行了建模[2]。

如前文所說,一個語言模型通常構建為句子\(s\)的概率分布 \(p(s)\) ,這里 \(p(s)\)試圖反映的是單詞序列 \(s\) 作為一個句子出現的頻率。

假設\(s\)\(m\)個基元(可以為字、詞或短語等)構成,為了方便以下均默認為"詞",即\(s=w_1,w_2,...,w_n\)。則其概率公式可以表示為

\[p(s)=p(w_1)p(w_2|w_1)p(w_3|w_1,w_2)...p(w_m|w_1,...,w_{m-1})=\prod_{i=1}^m p(w_i|w_1,...,w_{i-1}) \]

上式中,\(p(w_i|w_1,...,w_{i-1})\)表示第\(i(1\leqslant i\leqslant m)\)個詞的概率由前\(i-1\)個詞來決定,通過將每個詞的概率連乘,就能計算出 \(p(s)\)。但這一理論在實際應用中存在一巨大的問題,假設一門語言的詞匯量為\(V\),根據句子的長度\(m\),其能組合出的句子總數為\(V^m\)​,這意味着隨着句子長度呈幾何級數增長的數據量。一門語言的詞匯量本就很大,當句子長度較長時,其數據量很顯然不是當前的計算機能夠處理的。

為了解決參數呈指數級增長的問題,n-gram模型引入了馬爾科夫假設:當前詞的出現概率僅與前\(n-1\)個詞有關。基於此,單詞序列\(s\)​概率的計算公式可近似如下:

\[p(s)=p(w_1,w_2,w_3,...,w_m)=\prod_{i=1}^m p(w_i|w_{i-n+1},...,w_{i-1}) \]

當n取1、2、3時,n-gram模型又分別可稱為unigram、bigram、trigram。在n-gram模型中,模型參數為 \(V^n\),n越大,模型在理論上越准確,但也越復雜,需要的計算量和訓練語料數據量也就越大,因此\(n>4\)的情況非常少。

通過上面的分析,我們知道通過n-gram模型計算句子概率最主要的就是求得參數\(p(w_i|w_{i-n+1},...,w_{i-1})\)​。在給定了訓練語料的情況下,我們可以通過最大似然估計的方法對參數進行求取。

\[p(w_i|w_{i-n+1},...,w_{i-1}) = \frac{C(w_{i-n+1},...,w_{i-1},w_i)}{C(w_{i-n+1},...,w_{i-1})} \]

即訓練語料中,給定\(w_{i-n+1},...,w_{i-1}\)的條件下,\(w_i\)出現的相對頻度。

使用最大似然估計的方法計算參數會由於數據稀疏導致零概率問題,即部分少見的單詞序列在訓練語料中沒有出現,導致通過最大似然估計方法求得的參數為0,進而導致整個句子的概率直接變為0。

為解決這一問題,引入了數據平滑(data smoothing)的方法,其基本思想為調整最大似然估計的概率值,使零概率增值,使非零概率下調,“劫富濟貧”,消除零概率,改進模型的整體正確率。具體方法有Good-Turing法,Katz后退法,絕對減值法,線性減值法等。

在優化n-gram統計語言模型時,以困惑度作為其評價指標。香農(Claude Shannon)發表了奠基性論文《通信的數學理論》,開創了信息論領域。在論文中,香農提出了熵的概念,研究了n元模型的性質[3]。我們可以利用交叉熵刻畫一個統計語言模型在測試集上的表現。

對於一個平滑后的n-gram模型,其概率為\(p(w_i|w_{i-n+1},...,w_{i-1})\),通過其可以計算整個句子的概率\(p(s)=\prod_{i=1}^m p(w_i|w_{i-n+1},...,w_{i-1})\)。假設測試語料\(T\)\(l_T\)個句子構成\((t_1,t_2,...,t_{l_t})\),則可以求得整個測試集的概率(測試集中每個句子的概率的連乘)\(P(T)=\prod_{i=1}^{l_t}p(t_i)\)

從而概率統計模型對於測試語料的交叉熵為:

\[H_p(T)=-\frac{1}{W_T}log_2p(T)=-\frac{1}{W_T}\sum_{i=1}^{l_t}log_2p(t_i) \]

其中,\(W_T\)是測試文本 \(T\) 的詞數。模型 \(p\) 的困惑度 \(PP_p(T)\) 定義為:\(PP_p(T)=2^{H_p(T)}\)

對於交叉熵,可以將其理解為統計語言模型所學習到的統計概率分布與測試集中的實際概率分布之間的差別程度,交叉熵越大,意味着統計概率分布和實際概率分布的差別越大,即統計語言模型的表現越差。困惑度與交叉熵成正相關,因此統計語言模型的優化目標就是盡量減小困惑度。

至此,統計語言學方法已經大致介紹完畢,其通過簡潔的形式對語言進行了建模,得到了n-gram模型,並被廣泛的應用到了如搜索引擎、輸入法等各種場景中,取得了良好的成效。但其存在兩大根本性的問題:

1,過強的獨立性假設,每個單詞只與少數的前n個的單詞具有關聯,不具備長距離捕捉信息的能力

2,在訓練語言模型時所采用的語料往往來自多種不同的領域,這些綜合性語料難以反映不同領域之間在語言使用規律上的差異,而語言模型恰恰對於訓練文本的類型、主題和風格等都十分敏感

盡管可以通過語言模型的自適應方法,如基於緩存的語言模型 (cache-based LM),基於混合方法的語言模型,基於最大熵的語言模型等加以改善,但始終無法徹底解決上述的兩大問題。

統計語言模型發展的后期,其根本問題無法得到解決,各種方法帶來的提升越來越少,在這樣的困境下,神經網絡語言模型為語言模型的發展注入了新的動力。

神經網絡語言模型

前饋神經網絡語言模型

最早的前饋神經網絡語言模型——NNLM(Neural Network Language Model)在Bengio於2003年發表的《A Neural Probabilistic Language Model》中被提出[4]。

其對於統計語言模型的顛覆之處在於

1,將詞以抽象符號的表示方法轉變為了語義空間下的向量表示

2,以向量表示的單詞序列作為神經網絡的輸入,求取\(p(w_i|w_{i-n+1},...,w_{i-1})\)

統計語言模型的視角下,每個詞都是獨立的抽象符號,忽略了詞之間的語義關聯性,也帶來了數據稀疏的問題。將詞匯表\(V\)中所有詞按照出現的順序排序,每個詞語將對應唯一的下標,這樣每個詞都可以視作為大小為\(|V|\)的one-hot表示的向量,任意兩個one-hot向量之間的向量內積都為0,都是完全正交的。

然而在實際的語言中,存在很多意思相近或者有着語義關聯的單詞,例如"枯燥"和"無聊","這個"和"那個"等。我們希望在低維、稠密的連續實數空間中對這些詞進行表示,語言關聯度高的單詞在空間中具有更近的幾何距離,更大的向量內積,而語義關聯性小的單詞在空間中幾何距離遠,向量內積小。

在神經網絡的輸入層,將大小為\(|V|\times m\)的look-up table參數矩陣\(C\)與one-hot向量表示的詞匯表\(V\)中的單詞\(w_i\)相乘,得到該詞的稠密向量表示\(C(w_i)\),神經網絡的輸入向量\(x=(C(w_{t-n+1}),...,C(w_{t-2}),C(w_{t-1}))\)為將輸入序列對應的所有向量進行拼接。

在神經網絡的隱藏層,設置\(h\)個隱藏單元,權重矩陣\(H \in \mathbb{R}^{h\times(n-1)m}\),偏置向量\(d \in \mathbb{R}^h\),采用tanh作為激活函數。

在神經網絡的輸出層,將隱藏層到輸出層的運算結果(權重矩陣\(U \in \mathbb{R}^{|V|\times h}\),偏置向量\(b \in \mathbb{R}^{|V|}\))和從輸入層直接到輸出層的運算結果(權重矩陣\(W \in \mathbb{R}^{|V|\times(n-1)m}\))相加,得到:

\[y=b+Wx+Utanh(d+Hx) \]

再將\(y\)通過softmax函數,便得到了以概率表示的\(p(w_i|w_{i-n+1},...,w_{i-1})\)

前饋神經網絡語言模型通過用實數向量表示一個單詞或單詞的組合,提高了語言表示的效率、泛化性和可擴展性。在使用詞向量的基礎上,通過神經網絡來表示語言模型,大幅減少了模型的參數。盡管其仍然受到n-gram模型的局限,使用定長的句子作為輸入,但卻為語言模型帶來了徹底的變革,並啟發了大量的后續研究。此外將單詞轉換為稠密向量的word embedding技術成為了后續神經網絡語言模型的基礎。

循環神經網絡語言模型

循環神經網絡語言模型在Tomas Mikolov於2010年發表的《Recurrent neural network based language model》中被提出[5],通過運用循環神經網絡徹底解決了語言模型不能捕捉長距離信息的問題。

在循環神經網絡的輸入層,輸入向量\(x(t)\)由當前輸入詞向量\(w(t)\)和上一隱藏層向量\(s(t-1)\)相加得到。

在循環神經網絡的隱藏層,權重矩陣\(U\),采用sigmoid作為激活函數。

在循環神經網絡的輸出層,權重矩陣\(V\),采用softmax作為激活函數,得到\(p(w_i|w_{i-n+1},...,w_{i-1})\)

\[x(t) = w(t) + s(t − 1) \\ s_j (t) = f(\sum_ix_i(t)u_{ji}) \\ y_k(t) = g( \sum_js_j (t)v_{kj}) \]

循環神經網絡的當前隱藏層反復捕捉當前輸入的詞向量上一隱藏層(包含了前文中所有詞向量的信息),從而實現任意長度的句子的全句信息捕捉。

但循環神經網絡存在參數經過多次傳遞后,易發生梯度消失或爆炸的問題,且其平等的對待所有的輸入單詞,但是在實際的語言中,不同的單詞對於句子的重要性其實是不一樣的。

后續提出的長短期記憶(Long short-term memory,LSTM)神經網絡能夠通過某種策略有選擇地保留或者遺忘前文的信息,在沒有改變循環神經網絡基本結構的基礎上,很好的解決了循環升級網絡的問題,同時也保留了其可以捕捉全文信息的優點。

Qian Chen等人在2016年發表的《Enhanced LSTM for Natural Language Inference》將LSTM應用於自然語言處理[6]。相比循環神經網絡,LSTM神經網絡引入了遺忘門(forget gate),並且通過\(C_t\)(Cell State)而非隱藏層\(h_t\)來維護從句子中學習的記憶。

盡管循環神經網絡語言模型(以及LSTM)具備了捕捉全句信息的能力,但由於其串行的結構(下一次輸出的計算依賴於上一次輸出),導致訓練速度非常的慢,對於龐大語料庫,訓練循環神經網絡語言模型所需要的時間過於漫長,而無法應用大規模語料庫又會導致模型對於訓練文本的敏感。

自我注意機制語言模型

谷歌團隊在2017年發表的《Attention Is All You Need》中提出Transformer,在自然語言處理問題中引入了自注意力(Self-Attention)機制,在保證模型全文捕捉能力的同時,改變了循環神經網絡語言模型的串行結構,使得模型可以並行化地在大規模語料庫上訓練[7]。

Transformer應用於翻譯任務時,有Encoder和Decoder兩個部分。其Encoder和Decoder部分實際上都可以單獨提取出來應用於語言模型。

Transformer的輸入層將word embedding后的詞向量和單詞在句子中的位置進行position embedding后的位置向量相加,得到輸入向量序列\(X\),通過position embedding,transfomer可以獲得單詞的位置信息。

Transformer的自注意力機制非常關鍵,首先通過線性變換矩陣\(W_Q\)\(W_K\)\(W_V\)與輸入向量序列\(X\)相乘,得到查詢向量序列\(Q\)、鍵向量序列\(K\)和值向量序列\(V\),通過自注意力機制得到輸出值

\[Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V \]

其中\(d_k\)表示查詢向量的維度。

為何叫做 Self-Attention機制呢?我們不妨先忽視線性變換矩陣對於輸入向量序列\(X=[x_1,...,x_{j-1},x_{j}]\)的影響。則 Self-Attention機制可以表示為

\[e_{jk}=\frac{1}{\sqrt{d_k}}x_j \cdot x_k \\ a_{jk}=\frac{exp(e_{jk})}{\sum_{k^{'}}exp(e_{jk^{'}})} = softmax(\frac{q \cdot K^T}{\sqrt{d_k}}) \\ Attention(q,K,V)=\sum_ka_{jk}x_k \]

其中\(q\)為輸入向量\(x_j\)\(K=V=X\)

從上面的式子中可以看出,Self-Attention計算的結果為權重乘輸入的累加的形式——類似於卷積神經網絡中的卷積運算。而權重的來源是當前詞和整個序列的向量內積,而我們知道在稠密向量空間中,向量內積表征了詞之間的關聯度,關聯度高的詞之間會具有更大內積,從而賦予輸入值更大的權重,而無關的詞則被賦予小的權重。

Multi-Head Attention 是由多個 Self-Attention 組合形成,通過將多個 Self-Attention計算得到的矩陣拼接,再進行全連接,得到 Multi-Head Attention 的輸出。

Transformer的誕生使得全句信息的捕捉和大規模語料庫上的訓練兩大問題都得到了解決,也使得語言模型進入了一個全新的階段。

預訓練語言模型

隨着神經網絡語言模型的發展,語言模型的准確度得到了持續的提升。但構成神經網絡語言模型基石的word embedding,由於其通過look-up table矩陣計算得到的向量表示是唯一的,導致難以區分一詞多義的問題。

預訓練語言模型使用詞向量在神經網絡模型中的隱藏層向量作為word embedding,從而對不同上下文環境下的詞在編碼上能夠實現區分。

ELMo

ELMo(Embeddings from Language Models)在AllenAI於2018年發表的《Deep contextualized word representations》中被提出[8]。

ELMo使用雙向LSTM模型對上下文信息進行捕捉,使用雙向語言模型作為優化目標。通過在語料庫上的訓練得到參數后,使用多個網絡前向層和后向層隱藏層拼接后的向量加權和作為輸入詞向量的embedding。

\[ELMo^{task}_j=\gamma^{task}\sum_{k=1}^{L}w_k^{task}h_{j,k}^{LM} \\ h_{j,k}^{LM}=[\stackrel{\rightarrow}{h}_{j,k}^{LM},\stackrel{\leftarrow}{h}_{j,k}^{LM}] \]

這個word embedding的結果可以作為下游任務的詞向量的輸入。

ELMo創造性的解決了一詞在不同上下文下如何實現區分的問題,但由於其采用了較淺的兩層雙向LSTM,這使得其難以學習文本數據的所有語言規律,因此其潛力是有限的。此外,雙向LSTM並不是捕獲長距離依賴性的最佳方法,由於其串行的結構,會受到梯度消失的影響,且無法並行計算。最后,預訓練模型的能力還未得到充分的挖掘,因為ELMo僅用於獲取隱層表示,並作為額外的特征應用到下游任務里。也就是說,下游監督任務中的微調模型是從頭開始學習的,並且不共享預訓練模型的參數。

GPT系列

GPT(Generative Pre-Training)在OpenAI於2018年發表的《Improving Language Understanding by Generative Pre-Training》中被提出[9]。

模型主體采用了Transformer的Decoder(去除了中間的一個sub-layer:Multi-Head Attention),訓練目標是單向語言模型,使得其只有捕捉上文信息的能力。

其思想與ELMo的區別是,不再使用隱藏層加權和的結果作為下游模型的word embedding,而是直接通過在預訓練模型的輸入輸出上增加任務導向的小型網絡結構,通過小參數訓練和預訓練模型參數的微調(fine-tuning)搭建下游任務。

2019年的GPT-2在GPT的基礎上,擴大了了訓練數據的數量,同時開始嘗試將任務建模為\(p(output|input,task)\)的形式,從而將多種自然語言處理任務統一到語言模型的形式下。2020年的GPT-3則在GPT-2的基礎上大大提升了訓練數據的數量和模型規模。

BERT

BERT(Bidirectional Encoder Representations from Transformers)在Google於2018年發表的《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》中被提出[10]。

其模型主體采用了Transformer的Encoder,與GPT不同的是BERT能夠雙向的采集句子的信息,從而獲得更強的信息獲取能力,其與GPT系列模型一樣,采用微調(fine-tuning)方式搭建下游任務,為了避免前后文信息穿越的問題,其訓練目標並非雙向語言模型,而是采用了掩碼語言模型。

BERT訓練中的掩碼(MASK)機制仍存在一些缺點。首先其僅采用靜態MASK機制、隨機MASK單個詞;此外,其預訓練和微調之間存在着嚴重差異,在預訓練過程中大量使用的MASK幾乎不會出現在下游任務的微調過程中;最后,BERT假設輸入序列中遮蓋的詞匯之間互相獨立,但實際上這些被遮蓋的詞很可能是存在相互依賴的。

后續的RoBERTa,SpanBERT,ERNIE等模型針對BERT的MASK機制進行了改進。

未來方向

語言模型的發展脈絡令人印象深刻,當歷史推動主流范式從統計語言模型轉向神經網絡語言模型時,其過程既令人驚愕卻又是如此自然,使得我在學習課程時深深的為之震撼。如今的超大規模預訓練語言模型已經能夠用於生成以假亂真的文章、詩詞,機器譯文也非常流暢,我們不由的期待將更多的自然語言處理的任務通過超大規模預訓練模型進行統合(實際上GPT系列正有此意),同時通過進一步擴大模型和數據量從而實現性能的進一步提升,一切都看上去非常promising。

但歌舞升平的同時,我們也得看到神經網絡方法的一些根源性的問題:可解釋性差,我們無法像傳統方法那樣追究每一個結構,每一個步驟的具體數學原理,這導致其難以應用於一些要求高可靠性的系統,並且難以debug;極度依賴於數據集,質量差的數據集對神經網絡的性能會產生嚴重的影響,甚至導致其徹底無法工作,而數據量不足同樣對神經網絡有着致命的影響;有知識而無智慧,盡管學習了海量的信息,但仍然缺乏架構化的知識,甚至缺乏常識。

當前知識圖譜的研究受到了很多人的關注,人們希望將結構化的知識圖譜和數據驅動的深度神經網絡相結合,從而使得新一代的人工智能能夠具備強大的自我思考和推理能力。

也許神經網絡也會像傳統方法那樣,有朝一日來到它的盡頭,而屆時另一種全新的方法將會引領學科步入下一個新的紀元。

引用文獻

本文章主體結構借鑒了

https://zhuanlan.zhihu.com/p/90741508

部分例子和觀點借鑒了

https://zhuanlan.zhihu.com/p/257031088
https://zhuanlan.zhihu.com/p/43453548

感謝以上作者

[1] 吳軍.數學之美[M].北京:人民郵電出版社,2012

[2] Hayes B. First Links in the Markov Chain[J].American Scientist, 2013, 101(2):92.

[3] Shannon C. A Mathematical Theory of Communication[J].The Bell System Technical Journal, 1948, 27(7): 379-423.

[4] Operationnelle, Departement & Bengio, Y. & Ducharme, R & Vincent, Pascal & Mathematiques, Centre. (2001). A Neural Probabilistic Language Model.

[5] Mikolov, Tomas & Karafiát, Martin & Burget, Lukas & Cernocký, Jan & Khudanpur, Sanjeev. (2010). Recurrent neural network based language model. Proceedings of the 11th Annual Conference of the International Speech Communication Association, INTERSPEECH 2010. 2. 1045-1048.

[6] Chen, Qian, Xiao-Dan Zhu, Zhenhua Ling, Si Wei, Hui Jiang and Diana Inkpen. “Enhanced LSTM for Natural Language Inference.” ACL (2017).

[7] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, and Illia Polosukhin. 2017. Attention is all you need. In Proceedings of the 31st International Conference on Neural Information Processing Systems (NIPS'17). Curran Associates Inc., Red Hook, NY, USA, 6000–6010.

[8] Peters, M. E.; Neumann, M.; Iyyer, M.; Gardner, M.; Clark, C.; Lee, K. & Zettlemoyer, L. (2018), 'Deep contextualized word representations' , cite arxiv:1802.05365Comment: NAACL 2018. Originally posted to openreview 27 Oct 2017. v2 updated for NAACL camera ready .

[9] Radford, Alec and Karthik Narasimhan. “Improving Language Understanding by Generative Pre-Training.” (2018).

[10] Devlin, Jacob & Chang, Ming-Wei & Lee, Kenton & Toutanova, Kristina. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.


免責聲明!

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



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