nlp中的傳統語言模型與神經語言模型
總有一些專有名詞聽上去“很屌”,瞭解了其概念後,便覺得:“哦,原來是這麼簡單的小知識點”。語言模型就是這樣一個名詞,作為nlp基礎元件之一,在諸多的上層應用中都有重要應用。
簡言之,語言模型就是給一個句子(詞序列)分配一個概率。這個概率表示這句話“合理程度”。舉個例子:
你兒子在我手上,快點把錢叫出來。 prob=0.80
# 這樣一個句子,非常“通順”,就得到一個很高的概率值。
川普在廁所裡擺滿了多個藝員。 prob=0.20
# 這樣一個句子,非常“怪異”,也可能是有別字、語病的,就得到一個很低的概率值。
把語言模型(詞序列-->概率)寫成公式,就得到了
.
上述公式使用了鏈式法則,即當前第n個詞用哪一個,完全取決於前n-1個詞。有了上面的公式,我們就可以基於訓練語料,計算一個句子的概率值了。這裡面有一個問題,每一個詞都取決於前n-1個詞,這使得計算複雜度猛增。為了簡化,採用了Markov-Assumption,即當前要選擇的詞僅僅依賴於前一個詞。有的同學可能會說,對於文字序列,每個當前詞僅取決於前一個詞,這樣會不會過於簡單?是的,太簡單了,所以傳統的語言模型往往採用了k階Markov-Assumption,,寫成公式:
.
很自然的,我們就可以通過對語料的統計,得出一個句子的概率。
傳統的語言模型也是這麼做的,假設表示詞序列在語料中出現的次數。那麼,對於一個詞“word”,運用公式就可以得到:
然後對計算得到的多個連乘,就得到了句子的概率。
這裡有個問題,即分母的等於0,怎麼辦?
有兩種處理方法,1. 平滑技術 2. back-off,又出現了兩個看起來很“屌”的詞彙,其原理其實非常簡單。
平滑技術
既然分母有可能等於0,那我們就加一個常數,不讓其等於0,比如在分母處+1,這就是所謂的平滑。如下所示:
平滑的技術有很多種,大多論文集中在1990-2000年之間,就不詳細介紹了。最常見的叫做平滑,即
其中,是詞表大小,是(0,1]之間的常數。back-off
退一步海闊天空,這可能就是back-off的由來吧,既然為0
,那就想辦法估計一個值出來。這裡我們直接給出最佳的“非神經網路語言模型”中使用到的辦法,如下所示,看起來很複雜,其實原理很簡單。
若為0,則我們使用後一項估計,最後一項是用k-1元gram去估計k元ngram的值。
平滑和back-off的變種很多,詳見這篇論文:An Empirical Study of Smoothing Techniques for Language Modeling
非神經網路的最佳語言模型如下:
語言模型的評價--perplexity 困惑度
語言模型的變種有很多,如何評價語言模型的好壞呢?
公式如下:
其中,
困惑度值, 就是說一個詞序列越不合理,其困惑度越大,即讓你越困惑。。。這裡有個疑問,為什麼用上述公式,其本質是什麼,留給大家思考。
傳統語言模型的缺點是什麼?
- 平滑技術 or back-off,這類方法屬於人工設計規則,設計規則紛繁複雜,哪一種適合什麼樣的語料,難有定論。困惑度可以用於評價各種規則,但困惑度本身並不是一個完美的評價方法。
- 詞表為V的n-gram數目是,如果n每增加1,要計算的n-gram至少會倍增。
- 基於極大似然估計的語言模型缺少對上下文的泛化,比較“死板”。比如,原語料中出現白汽車、黑汽車,而沒有黃汽車,該語言模型就會影響對黃汽車的概率估計。當然,某些具體的nlp應用中,這種“死板”反而是一種優勢,這種語言模型的靈活性低,但能夠降低了recall,提升precision。舉個例子,比如,原語料中出現了黑馬、白馬,這時出現藍馬的概率就很低。而對於靈活的語言模型,很有可能藍馬的概率也偏高。
neural language model 神經語言模型
基於神經網路的語言模型能解決上述三個問題,其模型的數學表示式,簡寫如下:
以k元文法為例,前k-1個詞作為特徵,softmax預測最後一個詞。詞表可能很大,比如1000000,這時可以使用heiraichle softmax,能夠有效提升效果、節省預測時間。當然,還有一種NEC方法,通過一系列的二分類問題替換交叉熵目標函式。
例項總結
在機器翻譯任務中,傳統的語言模型和神經語言模型同時使用,會提升翻譯質量,模型之間似乎在互相補充。綜上所述,神經語言模型的泛化能力更好,傳統方法泛化能力差。紅馬、藍馬的例子中,我們看到泛化能力好,也不一定是優點。在合適的場景下,選擇適合的語言模型就ok了。在開發文字糾錯的應用過程中,我們採用了傳統的語言模型,因為神經語言模型的泛化能力過強,會帶來錯別字大量誤判,反而降低了系統的表現。
相關文章
- 語言模型與神經網路模型神經網路
- NLP教程(5) - 語言模型、RNN、GRU與LSTM模型RNN
- NLP神經語言學的12條假設(不是自然語言處理哪個NLP哈)自然語言處理
- 大語言模型中的MoE模型
- 一文解碼語言模型:語言模型的原理、實戰與評估模型
- 大語言模型模型
- 語言大模型大模型
- NLP入門之語言模型以及n元文法模型
- 自然語言處理中的語言模型預訓練方法自然語言處理模型
- 探索自然語言處理:語言模型的發展與應用自然語言處理模型
- 語言模型:GPT與HuggingFace的應用模型GPT
- N元語言模型模型
- 小語言模型指南模型
- 神經網路語言模型中,詞向量為什麼可以隨著模型的迭代而改變?神經網路模型
- NLP 與 NLU:從語言理解到語言處理
- 再用RNN神經網路架構設計生成式語言模型RNN神經網路架構模型
- ChineseGLUE:為中文NLP模型定製的自然語言理解基準模型
- 新型大語言模型的預訓練與後訓練正規化,谷歌的Gemma 2語言模型模型谷歌Gemma
- 新型大語言模型的預訓練與後訓練正規化,Meta的Llama 3.1語言模型模型
- 8 語言模型簡介模型
- 微調大語言模型模型
- 從經典結構到改進方法,神經網路語言模型綜述神經網路模型
- 新型大語言模型的預訓練與後訓練正規化,蘋果的AFM基礎語言模型模型蘋果
- 蛋白質語言模型綜述模型
- 如何評估大語言模型模型
- NLP領域的ImageNet時代:詞嵌入已死,語言模型當立模型
- 低程式碼與大語言模型的探索實踐模型
- Go語言 | CSP併發模型與Goroutine的基本使用Go模型
- 2024年大語言模型的微調模型
- 探究大語言模型的思維方式模型
- XLM — 基於BERT的跨語言模型模型
- 改進大語言模型的最全方法!模型
- 我的語言模型應該有多大?模型
- 大語言模型與資料庫故障診斷模型資料庫
- 「川言川語」:神經網路RNN模仿川普的語言風格神經網路RNN
- Trends in Plant Science | 植物生物學中的大語言模型模型
- 探索將大語言模型用作推薦系統模型
- 什麼是大語言模型(LLM)?模型