少妇脱了内裤让我添,久久久久亚洲精品无码网址蜜桃,性色av免费观看,久久人妻av无码中文专区

分享

【語言模型系列】原理篇一:從one-hot到Word2vec

 520jefferson 2020-08-15

這次的系列文章將會介紹NLP領域語言模型及詞向量表示的發展史,原理篇會從遠古時代的one-hot出現講到時代新星bert及其改進,同時后續的實踐篇將會介紹預訓練模型在房產領域的工業實踐應用,帶你填上一個個的大坑。話不多說,操練起來~

語言模型及詞向量

何為語言模型?這是一個要貫穿整篇文章的問題。所謂語言模型,就是判斷一句話是不是人話的模型,也就判斷出是>的模型。當然,計算機并不認識周杰倫,它只知道0和1,所以我們讓模型進行判斷時,需要將豐富的文字轉換成冷冰冰的數字,這樣計算機才能幫助我們進行計算,這也就是詞向量的由來和存在的意義。

一個好的語言模型就是判斷一句人話的概率盡可能的高,判斷非人話的概率盡可能的低。那什么是一個好的詞向量呢?舉個例子,比如當我們人類看到‘woman’和‘female’時,會覺得這兩個詞應該是相似的意思,那么一個好的詞向量表示就是讓計算機通過計算這兩個詞向量,得出這兩個詞相似的結論。一般就是讓計算機通過計算兩個向量之間的距離來進行判斷。所以如何讓計算機看到的詞向量和我們看到的詞具有相同的意義,這是研究詞向量的究極目標。

語言模型往往需要借助詞向量進行計算,一個好的語言模型的誕生往往會伴隨著質量較高的詞向量的出現,因此詞向量往往是語言模型的副產品。當然,優秀的事務往往不是一蹴而就的,語言模型和詞向量的發展也經歷了多個階段。從詞向量的角度來簡單分類的話,大致可以分為one-hot表示和分布式表示兩個大階段,下面將從這個角度進行介紹。

一、one-hot表示

one-hot的想法簡單粗暴,目的單純,在我們的大腦和計算機之間架起了第一道橋梁。one-hot將每一個詞表示成一個固定維度的向量,維度大小是詞表大小,向量中單詞所在位置為1,其他位置為0。舉個栗子,假設我們的詞庫里只有如下7個詞

my,on,the,bank,river,woman,female

那么bank這個單詞就可以表示為[0,0.0,1,0,0,0],on可以表示為[0,1,0,0,0,0,0],以此類推。

但是想法過于簡單總是會出問題的,one-hot存在的兩個明顯問題:維度災難語義鴻溝

所謂維度災難就是one-hot的向量維度是和詞庫大小一致的,一般我們的詞庫會很大,比如當我們的詞庫里有100000個詞,那么一個詞向量的維度就是,這就導致one-hot表征的向量維度很大,使得數據樣本稀疏,距離計算困難,造成維度災難。當維度災難發生時,一個樣本的特征就會過于多,導致模型學習過程中極其容易發生過擬合。

所謂語義鴻溝的問題是因為one-hot生成的詞向量都是彼此正交的,體現不出任何語義上的聯系。比如on表示為[0,1,0,0,0,0,0],woman表示為[0,0.0,0,0,1,0],female表示為[0,0.0,0,0,0,1],on和woman這兩個向量相乘結果是0,female和woman這兩個向量相乘也是0,所以無法表現出on和woman不相似,female和woman相似這種語義上的聯系。

二、分布式表示

鑒于one-hot表示的缺點,我們希望能有低維稠密的詞向量出現,同時這些向量之間能夠存在語義上的聯系,所以分布式表示就帶著歷史使命出現了。分布式表示描述的是將文本分散嵌入到另一個空間,一般是將高維映射到低維稠密的向量空間。分布式表示依據的理論是Harris在1954年提出的分布式假說,即:上下文相似的詞,其語義也相似

2.1 基于SVD

這一類方法的一般操作是將共現矩陣進行SVD分解,即,然后取分解后的的作為詞向量矩陣(一般取U的子矩陣)。所以啥是共現矩陣,啥是SVD呢?

2.1.1 共現矩陣

共現矩陣一般有兩種,第一種叫Window based Co-occurrence Matrix,是通過統計指定窗口大小的單詞共現次數構成的矩陣,舉個栗子,假設我們的語料庫中只有三個句子

I like deep learning.I like NLP.I enjoy flying.

選取窗口大小為3,那么構成的共現矩陣如下圖所示

共現矩陣1

第二種叫Word-Document Matrix,是將單詞在文檔中出現的頻率構成矩陣,再舉個栗子,假設我們一共有三篇文檔

document1: I like deep learning. I enjoy deep learningdocument2: I like NLP.document3: I enjoy flying.

那么構成的共現矩陣如下圖所示

共現矩陣2

2.1.2 SVD

前面提到,SVD是將矩陣進行分解,,其中的矩陣,的矩陣,的矩陣,的矩陣,如何求解得到這三個矩陣呢?

首先回顧一下特征值和特征向量的定義:

其中,A是的實對稱矩陣,是一個維向量,則稱是一個特征值,是矩陣的特征值對應的一個特征向量。如果我們求出了個特征值及其對應的特征向量,如果這個特征向量線性無關,那么矩陣就可以表示為

其中,是有個特征向量組成的的矩陣,是由個特征值為主對角線的維矩陣。一般會將進行標準化,即,也就是得到了,那么就可以表示為

需要注意的是,直接進行特征分解的矩陣是方陣,而在SVD中的矩陣不一定是方陣,這時需要再做一些推導。

由于,所以

因為是一個的方陣,所以通過求解的特征向量,就可以得到矩陣。同理,通過求解的特征向量,就可以得到矩陣,通過對的特征值矩陣求平方根,就可以得到矩陣的奇異值矩陣\Sigma$。至此,我們得到了矩陣A的分解。

值得注意的是,奇異值是從大到小排列的,通常前10%甚至1%的奇異值的和就占了所有奇異值和的99%以上,奇異值在集合意義上代表了特征的權重,所以我們一般不會選擇將整個矩陣作為詞向量矩陣,而是選擇前k維,最終的詞向量表大小就是是詞表大小,是詞向量維度。

基于SVD的方法得到了稠密的詞向量,相比于之前的one-hot有了一定提升,能夠表現單詞之間一定的語義關系,但是這種方法也存在很多問題:

  • 矩陣過于稀疏。因為在構建共現矩陣時,必然有很多詞是沒有共現的
  • 分解共現矩陣的復雜度很高
  • 高頻無意義的詞影響共現矩陣分解的效果,如is,a
  • 一詞多義問題,即同一個詞具有不同含義卻被表示為一個向量,比如bank既有銀行的意思,也有岸邊的意思,但在這里被表示為統一的向量

2.2 基于語言模型

基于語言模型的方法拋棄了共現矩陣這種問題重重的東西,轉而通過構建語言模型來產生詞向量。so,啥是語言模型呢?

標準定義:對于語言序列,語言模型就是計算該序列出現的概率,即

通俗理解:構建一個模型,使得看起來像人話的句子序列出現的概率大,非人話的句子序列出現的概率小,也就是>

語言模型一般包括統計語言模型和神經網絡語言模型,統計語言模型一般就是指N-gram語言模型,神經網絡語言模型包括NNLM、Word2vec等。

2.2.1 N-gram

N-gram就是一個語言模型,其目的并非產生詞向量,一般用于判斷語句是否合理或者搜索sug推薦,這里簡單一提。

前面說了,語言模型計算一句人話的概率,也就是,利用鏈式法則可知

直接計算上式計算量太大,所以N-gram模型引入馬爾科夫假設,即當前詞出現的概率只與其前n-1個詞有關

當語料足夠大時

真正常用的N-gram的n不會超過3,一般為n=2。當n=2時,利用上式計算一句話的概率

2.2.2 NNLM

使用語言模型產生詞向量的一個里程碑論文是Bengio在2003年提出的NNLM,該模型通過使用神經網絡訓練得到了一個語言模型,同時產生了副產品詞向量。模型的總體架構如下圖所示,表達的思想是利用前n-1個詞去預測第n個詞的概率,所以這里的輸入是n-1個詞,輸出是一個維度為詞表大小的向量,代表每個詞出現的概率。

NNLM原理結構圖

這個結構在現在看起來是很簡單

  • 首先輸入層將當前詞的前個詞作為上文,通過對詞向量表進行look-up得到詞向量表示,每個詞的維度是

  • 然后將這個詞向量進行拼接,得到一個維度是的長向量,然后經過隱層計算,得到一個的向量,模型訓練過程中最大的運算量就在這一層

    參數,其中是偏置,是參數矩陣,是將詞向量直連到輸出時的參數,可以置為0,是超參數。

    利用softmax對輸出概率進行歸一化

  • 使用交叉熵作為損失函數,所以對于單個樣本,其優化目標是就是最大化,利用隨機梯度下降進行優化

優化結束后,得到了一個語言模型,同時得到了詞向量矩陣

NNLM模型在獲取詞向量上的工作是奠基性的,但是其模型訓練的復雜度還是過高,后續很多算法都是在NNLM的基礎上進行改進,比如耳熟能詳的Word2vec對其訓練的復雜度進行了針對性的改進。

前面所講的都是一些開胃小菜,建立該系列文章的核心概念--詞向量。接下來我們將會對經典算法Word2vec單獨拿出來進行詳細的原理介紹~

三、word2vec

Word2vec是谷歌團隊在2013年開源推出的一個專門用于獲取詞向量的工具包,其核心算法是對NNLM運算量最大的那部分進行了效率上的改進,讓我們來一探究竟。

3.1 Word2vec原理解析

word2vec有兩種模型--CBOW和Skip-gram,這兩個模型目的都是通過訓練語言模型任務,得到詞向量。CBOW的語言模型任務是給定上下文預測當前詞,Skip-gram的語言模型任務是根據當前詞預測其上下文。

Word2vec還提供了兩種框架--Hierarchical Softmax和Negative-Sampling,所以word2vec有四種實現方式,下面將對其原理進行介紹。

3.1.1 CBOW

3.1.1.1 結構

CBOW的核心思想就是利用給定上下文,預測當前詞,其結構表示為

CBOW結構

我們知道基于神經網絡的語言模型的目標函數通常是對數似然函數,這里CBOW的目標函數應該就是

其中是單詞的上下文,是詞典。所以我們關注的重點應該就是的構造上,NNLM和Word2vec的本質區別也是在于該條件概率函數的構造方式不同。

3.1.1.2 原理

3.1.1.2.1 基于Hierarchical Softmax

CBOW模型的訓練任務是在給定上下文,預測當前詞。基于Hierarchical Softmax的CBOW結構相當于在NNLM上的改進,如下圖所示

基于Hierarchical Softmax的CBOW模型

CBOW模型一共是有三層,分別是輸入層(input layer),投影層(projection layer)和輸出層(output layer)。

輸入層:輸入是當前詞的上下文,共個詞向量

投影層:投影層將個詞向量進行累加,得到,即,這里不包含當前詞的向量表示

輸出層:輸出是一個用語料中出現的詞為葉子結點構建的Huffman樹,結點的權值是各詞在語料中出現的次數。圖中的Huffman樹共個結點,對應語料中的個詞,非葉子結點個,即圖中標黃的。

基于Hierarchical Softmax的CBOW模型和之前介紹的NNLM的主要區別:

  • 從輸入層到投影層,CBOW采用的是求和,而NNLM是拼接
  • CBOW沒有隱藏層
  • 輸出層,基于Hierarchical Softmax的CBOW是樹形結構,NNLM是線性結構

之前說過,NNLM的主要運算量就是在于隱藏層和輸出層的softmax的計算量,基于Hierarchical Softmax的方法通過對這些關鍵點進行了針對性的優化,去掉了隱藏層,更改了輸出結構,大大提升了運算效率。下面介紹基于Hierarchical Softmax的CBOW是如何利用樹結構訓練得到詞向量的。

對于huffman的某個葉子結點,假設該結點對應詞典中的詞,定義以下符號

  • :從根結點出發到達對應的葉子結點的路徑
  • :路徑中包含的結點個數
  • :路徑中的個結點,其中代表根結點,代表詞對應的結點
  • :詞的Huffman編碼,由位編碼構成,即根結點不對應編碼
  • :路徑中非葉子結點對應的向量,代表路徑中第個非葉子結點對應的向量

下面通過一個示例說明運算原理,如下圖所示,考慮當前詞=“足球”,那么圖中的紅色邊串起來的5個結點就構成路徑,其長度是路徑的5個結點,其中對應的是根結點,分別是1,0,0,1,即當前詞“足球”的Huffman編碼為1001,分別是路徑上4個非葉子結點對應的向量。

CBOW原理示例

所以,講了這么多,我們的重點究竟是怎么構建的呢?

我們知道詞庫里的每一個詞都可以被表示為一個Huffman編碼,如果把Huffman樹每一個結點都看成一次二分類,那么這個語言模型的任務就變成輸入上下文,使得當前詞的Huffman編碼對應的路徑的概率最大。這里約定將一個結點進行二分類時,分到左邊為負類,分到右邊為正類(主要為了和源碼對應),即

由前面介紹的邏輯回歸可以知道,結點分為正類的概率是

所以分為負類的概率就是。這里的就是當前詞的上下文通過求和得到的,就是每一個結點的,是待訓練參數。

舉個栗子,還是前面說的當前詞是“足球”,從根結點出發到達這個詞一共需要經過4次二分類

  • 第一次:
  • 第二次:
  • 第三次:
  • 第四次:

所以對于當前詞“足球”,我們的條件概率函數為

由上面的小例子,我們可以擴展出一般的條件概率公式

其中

寫成整體表達式

所以我們要優化的目標函數就是

使用隨機梯度上升法進行目標函數優化,下面推導一下梯度的計算

所以,更新參數

其中,是學習率。

同理可以計算得到

我們最終想優化的向量是詞表中的每一個詞向量,而是當前詞上下文的累加,那么該如何更新每個詞的向量表示呢?word2vec中的做法很簡單直接,就是將的梯度變化等效于每個詞的梯度變化,即

至此,基于Hierarchical Softmax的CBOW模型的原理就介紹完了,通過不斷訓練就可以得到我們想要的詞向量表。

3.1.1.2.2 基于Negative-Sampling

基于Negative-Sampling(負采樣,NEG)的方法的目的是進一步提升訓練速度,同時改善詞向量的質量。NEG不再使用相對復雜的huffman樹,而是使用簡單的隨機負采樣,大幅度提升性能。

CBOW是利用上下文預測當前詞,那么將當前詞替換為其他詞時,就構成了一個負樣本。

書面一點,對于給定的,詞就是一個正樣本,其他詞就是負樣本,假設我們通過負采樣方法選取好一個關于的負樣本子集。得到樣本集后,我們的目標是最大化

其中

所以

這里,還是代表上下文的詞向量之和,表示詞對應的一個待訓練輔助向量。直觀上看,這就是最大化的同時,最小化,其中,也就是最大化正樣本的概率的同時最小化負樣本的概率。

對于給定的語料庫C,最終的目標函數是

為了推導梯度更新的過程,令

所以

同理

3.1.2 Skip-gram

3.1.2.1 結構

Skip-gram的核心思想就是利用給定的當前詞,預測上下文,其結構表示為

Skip-gram結構

我們知道基于神經網絡的語言模型的目標函數通常是對數似然函數,這里Skip-gram的目標函數應該就是

其中是單詞的上下文,是詞典。所以我們關注的重點應該就是的構造上。

3.1.2.2 原理

3.1.2.2.1 基于Hierarchical Softmax

前面說了,Skip-gram的語言模型任務是根據當前詞預測其上下文,原理上和CBOW很相似,基于Hierarchical Softmax的Skip-gram的結構如下圖所示

基于Hierarchical Softmax的Skip-gram模型

輸入層:中心詞的詞向量

投影層:恒等投影,只是為了和CBOW模型進行對稱類比

輸出層:和CBOW一樣,是一顆huffman樹

Skip-gram的重點是條件概率函數的構造,SKip-gram中對于該條件概率函數的定義為

所以,Skip-gram的目標函數為

所以

同理

3.1.2.2.2 基于 Negative-Sampling

基于負采樣的skip-gram模型基本與前面基于負采樣的CBOW推導的類似,目標函數為

也就是當給定當前詞時,希望其上下文出現的概率最大,其中

這里代表的就是上下文中某個詞出現的概率,表示處理詞時生成的負樣本子集,是輸入的當前詞,是待訓練的輔助向量。

所以

可以看出來,這里需要對上下文中的每一個詞做一次負采樣。實際上,作者在源碼實現過程中并沒有這么做,而是針對進行了次負采樣,這樣依賴,我們的目標函數變成

其中

這里表示處理詞時生成的負采樣子集。

最終的目標函數變成

考慮梯度更新,令

所以

同理

3.2 Word2vec不可忽視的問題

Word2vec算法雖然在前些年取得了良好的效果,但是也有不足之處,其中最不可忽視的問題就是一詞多義的問題。Word2vec中最后對每一個詞生成一個固定的向量表示,那么對于相同單詞有多個含義時,就不能很好的解決。比如bank,既有銀行的意思,也有岸邊的意思,當算法的結果只有一個固定向量對其進行表征時,必然導致這個詞的表征不夠準確。

既然存在問題,那就存在解決問題的方法,現在比較火的預訓練相關的算法就解決了這個問題。具體咋回事呢?下一篇文章見~

作者介紹

李東超,2019年6月畢業于北京理工大學信息與電子學院,畢業后加入貝殼找房語言智能與搜索部,主要從事自然語言理解等相關工作。

下期精彩

【語言模型系列】原理篇二:從ELMo到ALBERT

招賢納士



歡迎加入AINLP預訓練模型交流群

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發表

    請遵守用戶 評論公約

    類似文章 更多

    主站蜘蛛池模板: 日韩国产亚洲欧美成人图片| 亚洲AV无码乱码精品| 国产乱码一区二区三区| 男女肉粗暴进来120秒动态图| 免费国精产品—品二品| 东京热一区二区三区无码视频| 日韩精品无码视频一区二区蜜桃| 116少妇做爰毛片| 亚洲精品熟女国产| 男男车车的车车网站w98免费| 后入内射无码人妻一区| 亚洲AV秘?成人久久无码海归| 九九久久精品国产波多野结衣| 中文字幕精品亚洲字幕资源网| 天堂资源最新在线| 少妇内射兰兰久久| 国产男女猛烈视频在线观看| 国产亚洲精品自在久久vr| 亚洲男人第一av网站| 久久九九兔免费精品6| 少妇人妻偷人激情视频| 色老久久精品偷偷鲁| 国产欧美亚洲精品第1页青草| 亚洲精品久久无码av片| 亚洲成av人片无码bt种子下载| 国产精品自在欧美一区| 少妇午夜啪爽嗷嗷叫视频| 国产精品卡一卡二卡三| 一本一道色欲综合网中文字幕| 99视频精品免视看| 欧美黑人又粗又大xxxx| 亚洲日韩看片无码电影| 大肉大捧一进一出好爽| 18禁白丝喷水视频www视频| 6699嫩草久久久精品影院| 国产欧美精品一区二区色综合| 性色av免费网站| 免费观看全黄做爰的视频| 狂野欧美激情性xxxx在线观看| 高大丰满欧美熟妇hd| 无遮挡高潮国产免费观看|