系統學習NLP(二十七) EMLo

2021-10-01 05:18:40 字數 1558 閱讀 7370

**:deep contextualized word representations

參考:elmo的語言理解是通過**訓練單詞序列中的下乙個單詞來實現,這項任務被稱為語言建模。這是很方便的,因為我們有大量的文字資料,這樣的模型不需要標籤就可以從中學習。

今天給大家介紹一篇2023年提出的**《deep contextualized word representations》,在這篇**中提出了乙個很重要的思想elmo。elmo是一種是基於特徵的語言模型,用預訓練好的語言模型,生成更好的特徵。

elmo是一種新型深度語境化詞表徵,可對詞進行複雜特徵(如句法和語義)和詞在語言語境中的變化進行建模(即對多義詞進行建模)。我們的詞向量是深度雙向語言模型(bilm)內部狀態的函式,在乙個大型文字語料庫中預訓練而成。

說到詞向量,我們一定會聯想到word2vec,因為在它提出的詞向量概念給nlp的發展帶來了巨大的提公升。而elmo的主要做法是先訓練乙個完整的語言模型,再用這個語言模型去處理需要訓練的文字(怎麼理解?),生成相應的詞向量,所以在文中一直強調elmo的模型對同乙個字在不同句子中能生成不同的詞向量。

前面也說過elmo最重要的一點是就是訓練語言模型,語言模型的結構如下:

他們使用的是乙個雙向的lstm語言模型,由乙個前向和乙個後向語言模型構成,目標函式就是取這兩個方向語言模型的最大似然。

前向lstm結構:

反向lstm結構:

最大似然函式:

實際的bilstm是這樣的:

由上面emlo語言模型結構可以看出,實際上,有兩層bilstm。

初始輸入的詞向量,作者推薦使用字元卷積網路來生成。當然為了加速訓練,也可以在輸入時直接使用word2vec或glove等傳統詞向量。

在預訓練好這個語言模型之後,elmo就是根據公式來用作詞表示,其實就是把這個雙向語言模型的每一中間層進行乙個加權求和。最簡單的也可以使用最高層的表示來作為elmo。然後在進行有監督的nlp任務時,可以將elmo直接當做特徵拼接到具體任務模型的詞向量輸入或者是模型的最高層表示上。

elmo的假設前提乙個詞的詞向量不應該是固定的,所以在一詞多意方面elmo的效果一定比word2vec要好。

word2vec的學習詞向量的過程是通過中心詞的上下視窗去學習,學習的範圍太小了,而elmo在學習語言模型的時候是從整個語料庫去學習的,而後再通過語言模型生成的詞向量就相當於基於整個語料庫學習的詞向量,更加準確代表乙個詞的意思。

elmo還有乙個優勢,就是它建立語言模型的時候,可以運用非任務的超大語料庫去學習,一旦學習好了,可以平行的運用到相似問題。

個人補充:其實,感覺這裡還有一點,word2vec只是學習了固定小視窗範圍的中心詞與附近詞的空間關係,但沒有強調語法及語義關係,而bilstm更能學習到這種語法、語義關係,其實說白了,就是把word2vec中的簡單線性求和,用更複雜的bilstm來代替,同時堆疊了2層。

OpenGL學習二十七 混合

混合步驟 1.設定混合模式 2.啟用混合 glcolor4f 1.0f,1.0f,1.0f,0.5f 全亮度,50 alpha 混合 glblendfunc gl src alpha,gl one 基於源象素alpha通道值的半透明混合函式 glenable gl blend 開啟混合 opengl...

系統學習NLP(二十六) NBSVM

baselines and bigrams good sentiment and topic classification 參考 跟原文有一定差異,理解不一致。樸素貝葉斯 bayes,nb 和支援向量機 support vector machines,svm 的變體常被用作文字分類的基線方法,但它們...

系統學習NLP(二十八) GPT

improving language understandingby generative pre training 本文對2018年openai提出的 improving language understandingby generative pre training 做乙個解析。乙個對文字有效的...