首頁>Club>
10
回覆列表
  • 1 # 使用者2708197107530

    Language Model是非常範的稱呼,意指對自然語言進行建模,這個定義是相當抽象的。最早的LM應該是N-gram,數學表示式是:

    可以看出來,N-gram數學本質就是馬爾科夫鏈,然而為啥稱作N-gram語言模型而不是叫做xx鏈?

    簡答來說,就是做了個強假設,待預測的詞僅和之前出現的N詞有關。這個假設是基於語言學特徵的,所以被稱做Language Model。

    後來又發展出其他的統計學語言模型,比如BOW(假設文件的意義跟次序無關),LDA(詞義跟所處文件有關),到word2vec已經是第三代LM了。

    word2vec是語言模型嗎?可能是吧,也可能不是吧。先說說word2vec做了什麼假設。1. CBOW, 周邊詞預測中心詞。2. SkipGram,中心詞預測周邊詞。顯然這兩者都是LM,所以很多人會問在用word2vector的時候你選擇什麼模型。所以word2vec是包含兩者LM的。但是很明顯,不論CBOW或是SkipGram,它們都是在做同樣的假設,詞與上下視窗的內的詞有關。這樣一說,word2vector也是一種LM。至於大眾所使用的word vector,或是embedding layer,它只是這個模型中的表示層而已,並不是word2vector模型本身。

    再說說偉大的ELMo吧。

    在ELMo提出前其實有很多文章發現詞的上下文的表示(contextual represent)對解決問題很有幫助。舉個簡單例子:

    “小明說他不喜歡小王,因為他比小明帥”

    這句話裡有兩個"他",這兩個"他"意義明顯不一樣的,傳統的SLM(Statistical Language Model)分不出,NNLM(Neural network Language Model)也分不出來。那怎麼解決這種問題呢?

    有經驗的可以看出來,這有點像HMM,每個詞其實有個隱狀態的,或者說語義。解決這種問題,LSTM就非常適合。EMLo的原型就應運而生。

    那ELMo的LM假設是啥? 簡單點就是類似完形填空,只不過只有一個空而言,這個空來又是透過又前向後和由後向前進行推測,數學表示式:

    這裡沒有N-gram的強假設,所以建模上更精確。跟word2vector不同的是,ELMo再被用於transform learn的時候,是將整個網路進行transform。而word2vector僅僅是embedding layer。

    值得注意的式,從ELMo開始,LM開始邁向了Deep Learning時代。

    最後簡單說說,BERT吧!

    BERT模型架構本質上就是ResNet。由於ELMo採用的LSTM並不能太深,超過3層後就變的難以計算。但是Transfomer的出現改變了這一現狀, 所以ELMo+ Transformer + ResNet = BERT。

    BERT語言模型部分採用的是Mask Language Model,感覺上更像是完型填空。此外,BERT訓練的時候還加入Next Sentence Prediction任務,這項任務賦予了LM部分推理的能力。

    最後,展望下未來吧,在足夠的算力支援下,未來的LM會逐漸衍化成異常龐大的網路,其能儲存知識,也能進行推理,當然還能進行創作,簡單點,電子人腦的初級形態。不得不說,BERT真是給夠了我幻想的本錢啊。

    (如果大家有興趣的話,我可以專門扒一扒語言模型的進化史。)

  • 中秋節和大豐收的關聯?
  • 曹操究竟為何不殺關羽,是沒有機會還是懼怕關羽?