自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

自然語言處理的一大步,應(yīng)用Word2Vec模型學(xué)習(xí)單詞向量表征

開發(fā) 開發(fā)工具 自然語言處理
本文通過推理、范例及數(shù)學(xué)公式介紹了從原始文本中學(xué)習(xí)「詞嵌入」的模型 Word2Vec。該模型通常用在預(yù)處理階段,可以提高計算效率。

在常見的自然語言處理系統(tǒng)中,單詞的編碼是任意的,因此無法向系統(tǒng)提供各個符號之間可能存在關(guān)系的有用信息,還會帶來數(shù)據(jù)稀疏問題。使用向量對詞進(jìn)行表示可以克服其中的一些障礙。本文通過推理、范例及數(shù)學(xué)公式介紹了從原始文本中學(xué)習(xí)「詞嵌入」的模型 Word2Vec。該模型通常用在預(yù)處理階段,可以提高計算效率。

[[238962]]

讓我們用推理、范例及數(shù)學(xué)公式來介紹 Word2Vec。

引言

Word2Vec 模型用于學(xué)習(xí)被稱為「詞嵌入」的單詞向量表示,通常用在預(yù)處理階段,之后,學(xué)習(xí)到的詞向量可以被輸入到一個判別模型(通常是一個 RNN)中,進(jìn)而生成預(yù)測或被用于處理其他有趣的任務(wù)。

為什么要學(xué)習(xí)詞的嵌入表示

圖像和音頻處理系統(tǒng)與豐富的高維數(shù)據(jù)集一起工作,其處理的圖像數(shù)據(jù)被編碼為各個原始像素強度的向量,因此所有信息都被編碼在數(shù)據(jù)中,從而可以很容易地建立起系統(tǒng)中各種實體之間的關(guān)系(比如貓和狗)。

但是,在常見的自然語言處理系統(tǒng)中,單詞被視為離散的原子符號,因此」貓」可以被表示為 Id537 而」狗」可以被表示為 Id143。這些編碼是任意的,因而無法向系統(tǒng)提供各個符號之間可能存在關(guān)系的有用信息。這意味著該模型在處理關(guān)于「狗」的數(shù)據(jù)時無法充分利用關(guān)于「貓」的知識(例如它們都是動物、寵物、有四只腳等)。

將單詞表示為獨特、離散的序列號還會導(dǎo)致數(shù)據(jù)稀疏問題,這通常意味著我們可能需要更多數(shù)據(jù)才能成功地訓(xùn)練統(tǒng)計模型,而使用向量對詞進(jìn)行表示可以克服其中的一些障礙。

舉例來說:

傳統(tǒng)的自然語言處理方法涉及到許多語言學(xué)本身的知識。理解諸如音素和語素之類的術(shù)語是相當(dāng)基礎(chǔ)和必要的,因為有許多語言學(xué)分支致力于這樣的研究。我們來看看傳統(tǒng)的自然語言處理如何試圖理解下面的單詞。

假設(shè)我們的目標(biāo)是收集關(guān)于這個詞的一些信息(表征它的情感,找到它的定義等)。利用我們的語言學(xué)知識可以將這個詞分解成 3 個部分。

深度學(xué)習(xí)最基本的層次是表示學(xué)習(xí)。在這里,我們將通過相同方法在大規(guī)模數(shù)據(jù)集上為單詞構(gòu)建向量表示。

詞向量

詞向量

我們把每一個單詞表示為一個 d 維的向量。在這里 d=6。我們希望根據(jù)這個句子,為每一個單獨的詞構(gòu)建它的向量表示。

現(xiàn)在讓我們來思考一下如何填充這些值。我們希望這些值能夠一定程度上表示這個單詞和它的上下文、含義或語義信息。一種方法是構(gòu)建共現(xiàn)矩陣。

共現(xiàn)矩陣包含了語料庫(或訓(xùn)練集)中每一個單詞同出現(xiàn)在它后一個單詞的統(tǒng)計信息。下表是上面所示句子的共現(xiàn)矩陣。

通過這個簡單的矩陣,我們能夠獲得非常有用的信息。例如,「love」和「like」這兩個詞對名詞(NLP 和 dogs)的計數(shù)都是 1。他們對「I」的計數(shù)也是 1,這表明這些詞很可能是某種動詞。對于遠(yuǎn)比一個句子更大的數(shù)據(jù)集,可以預(yù)料的是這種相似性會體現(xiàn)得更加清晰,因為「like」、」love」和其他具有相似上下文的同義詞將開始具有相似的向量表示。

這是一個好的開始,但應(yīng)該注意每個單詞的維度將隨著語料庫的大小線性增加。如果我們有一百萬詞(在自然語言處理任務(wù)中并不算很多),我們將會得到一個一百萬乘一百萬的非常稀疏(有很多 0)的矩陣,存儲效率很低。后來人們在探索更好的詞向量表示上取得了很多進(jìn)展。其中***的是 Word2Vec。

正式介紹

向量空間模型(VSM)表示(嵌入)連續(xù)向量空間中的單詞,其中語義上相似的單詞被映射到相鄰的點(「都嵌在彼此附近」)。向量空間模型在自然語言處理中有著悠久、豐富的歷史,但是所有方法都以某種方式依賴于分布假說,該假說認(rèn)為出現(xiàn)在相同語境中的詞語具有相似的語義。基于這一原則的方法可以被分為兩類:

  • 基于計數(shù)的方法(例如隱性語義分析)
  • 預(yù)測方法(例如神經(jīng)概率語言模型)

二者的區(qū)別在于:

基于計數(shù)的方法計算某個詞在大型文本語料庫中與其相鄰詞匯共同出現(xiàn)的頻率的統(tǒng)計數(shù)據(jù),然后將這些統(tǒng)計數(shù)據(jù)映射到每個詞的小而密集的向量。

預(yù)測模型直接嘗試根據(jù)學(xué)習(xí)到的近鄰單詞的小密集嵌入向量(考慮模型的參數(shù))來預(yù)測單詞。

Word2vec 是一種用于從原始文本中學(xué)習(xí)詞嵌入的模型,它有很高的計算效率。它主要有兩種實現(xiàn)方式,一種是連續(xù)詞袋模型(CBOW),另一種是 Skip-Gram 模型。這兩種方式在算法上是相似的,唯一的差別在于 CBOW 從源上下文單詞中預(yù)測目標(biāo)單詞,而 Skip-Gram 則恰恰相反,它根據(jù)目標(biāo)單詞預(yù)測源上下文單詞。

接下來,我們將重點討論 skip-gram 模型。

應(yīng)用到的數(shù)學(xué)知識

神經(jīng)概率語言模型一般使用***似然原則進(jìn)行訓(xùn)練,其目標(biāo)是要***化在給定前面的單詞 h(對于「history」)時的下一個單詞 wt(對于「target」)的 softmax 概率

其中 score(wt, h) 計算目標(biāo)詞 wt 與上下文 h 的相容性(常用點積)。

我們通過在訓(xùn)練集上***化它的對數(shù)似然來訓(xùn)練這個模型。所以,我們要***化以下?lián)p失函數(shù):

這為語言建模提供了一個合適的標(biāo)準(zhǔn)化概率模型。

我們可以用另一種形式來更好地展示這種方法,它可以清晰地展示在訓(xùn)練過程中為了***化目標(biāo)函數(shù)而不斷改變的選擇變量(或參數(shù))。

我們的目標(biāo)是找到可以用于預(yù)測當(dāng)前單詞的周圍詞匯的向量表示。我們尤其希望***化我們在整個語料庫上的平均對數(shù)概率:

這個等式的主要含義是,在當(dāng)前單詞的一定窗口范圍 c 內(nèi)出現(xiàn)的單詞 wt 存在一定的概率 p。這個概率同當(dāng)前詞 wt 和我們設(shè)定的參數(shù) theta 相關(guān)。我們希望設(shè)定的參數(shù) theta 可以***化整個語料庫的上述概率。

基本參數(shù)化:Softmax 模型

基本的 skip-gram 模型定義了經(jīng)過 softmax 函數(shù)計算的概率 p。如果我們的詞匯表中有 N 個詞,而我們希望學(xué)習(xí)的嵌入向量的維度為 k,那么我們可以設(shè)定 wi 是 N 維的 ont-hot 向量,theta 是一個 N×K 的嵌入矩陣,從而有:

值得注意的是,在學(xué)習(xí)之后,矩陣 theta 可以被認(rèn)為是嵌入查找矩陣。

在架構(gòu)方面,它是一個簡單的三層神經(jīng)網(wǎng)絡(luò)。

  • 使用一個 3 層神經(jīng)網(wǎng)絡(luò)(1 個輸入層+ 1 個隱藏層+ 1 個輸出層)。
  • 輸入一個詞,并訓(xùn)練模型來預(yù)測它的相鄰詞匯。
  • 刪除***一層(輸出層)并保留輸入和隱藏層。
  • 現(xiàn)在,輸入一個詞匯表中的單詞。在隱藏層給出的輸出是輸入單詞的「單詞嵌入」。

限制這種參數(shù)化方法在大規(guī)模語料中的應(yīng)用的一個主要缺點是計算的效率。具體來說,為了計算單次的正向傳播過程,我們需要對整個語料庫的詞匯進(jìn)行統(tǒng)計,以計算 softmax 函數(shù)。這對于大型數(shù)據(jù)集來說是非常昂貴的,所以我們希望能夠在這個模型和計算效率之間找到一個平衡。

提高計算效率

對于 word2vec 中的特征學(xué)習(xí),我們不需要完整的概率模型。CBOW 和 skip-gram 模型是使用二元分類目標(biāo)(邏輯回歸)來訓(xùn)練的,其目標(biāo)是要在相同的上下文中將真實目標(biāo)詞語(wt)與 k 個偽(噪音)詞語 -w 進(jìn)行區(qū)分。

當(dāng)模型給真實單詞分配更高的概率并且將低概率分配給噪音詞時,我們可以得到***化的目標(biāo)函數(shù)。從技術(shù)上來講,我們一般稱之為負(fù)采樣,它提出的更新近似于 softmax 函數(shù)更新的極限。但是從計算角度來看,它擁有很高的效率,因為這樣一來損失函數(shù)的復(fù)雜度僅僅依賴于我們選擇的噪音詞的數(shù)量(k)而不是詞匯表(V)中的所有單詞。這可以大大提高訓(xùn)練的速度。像 Tensorflow 這樣的軟件包使用了一種非常相似的損失函數(shù),稱為噪聲對比估計(NCE)損失。

SKIP-GRAM 模型的直觀感受

以這個數(shù)據(jù)集為例:

 

  1. the quick brown fox jumped over the lazy dog 

我們首先構(gòu)建一個包含所有單詞和它們的上下文的數(shù)據(jù)集?,F(xiàn)在,讓我們保持原始定義,并將「上下文」定義為目標(biāo)單詞左側(cè)和右側(cè)的窗口單詞。設(shè)定窗口大小為 1,我們可以得到(上下文,目標(biāo))對形式的數(shù)據(jù)集。

 

  1. ([the, brown], quick), ([quick, fox], brown), ([brown, jumped], fox), ... 

回想一下,skip-gram 會顛倒上下文和目標(biāo),試圖根據(jù)目標(biāo)詞預(yù)測每個上下文單詞,因此任務(wù)變?yōu)閺摹筿uick」預(yù)測」the」和」brown」以及從」brown」預(yù)測」quick」和」fox」等。

這樣一來我們的數(shù)據(jù)集可以整理為(輸入,輸出)對,如下所示:

  1. (quick, the), (quick, brown), (brown, quick), (brown, fox), ... 

目標(biāo)函數(shù)在定義上依賴于整個數(shù)據(jù)集,但是我們通常使用隨機(jī)梯度下降(SGD)方法來對模型進(jìn)行優(yōu)化,即每次只使用一個例子(或者每次使用一小批數(shù)據(jù),每批的數(shù)量通常在 16 到 512 之間)。接下來讓我們看一下每一步的訓(xùn)練過程。

讓我們想象一下上述例子的訓(xùn)練過程。這里的目標(biāo)是從 the 預(yù)測 quick。我們從一個噪聲分布 P(w)(通常是單字符分布)中選取 num_noise 個噪聲樣本(單字符分布假設(shè)每個單詞的出現(xiàn)與所有其他單詞無關(guān),即我們可以將生成過程看作一個按序列擲骰子的過程)

為了簡單起見,我們設(shè)定 num_noise = 1,我們選擇 sheep 作為一個噪聲樣本。接下來我們計算這對觀察到的和有噪聲的例子的損失,即在」t」時刻的目標(biāo)函數(shù)變成:

我們的目標(biāo)是要對嵌入?yún)?shù)進(jìn)行更新

theta 用來***化這個目標(biāo)函數(shù)。我們通過導(dǎo)出與之相關(guān)的損失梯度來實現(xiàn)這一目標(biāo)。

然后,我們通過向梯度方向邁出一小步來更新嵌入。當(dāng)我們在整個訓(xùn)練集上重復(fù)進(jìn)行這個過程時,可以對每個單詞產(chǎn)生「移動」嵌入向量的效果,直到模型成功地區(qū)分真實單詞和噪音單詞為止。

我們可以通過將它們向下投影到 2 維來可視化學(xué)習(xí)到的向量。當(dāng)我們觀察這些可視化時,很明顯這些向量捕獲到了一些關(guān)于單詞的語義信息以及詞與詞之間的關(guān)系,這在實際中是非常有用的。

原文鏈接:

https://towardsdatascience.com/word2vec-a-baby-step-in-deep-learning-but-a-giant-leap-towards-natural-language-processing-40fe4e8602ba

【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號“機(jī)器之心( id: almosthuman2014)”】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2016-12-01 09:43:21

RDMA over FSSDRDMA

2017-08-17 16:50:19

自然語言Word2Vec嵌入

2013-10-08 09:27:15

Linux

2013-10-09 09:32:58

2017-08-04 10:16:52

自然語言處理嵌入機(jī)器學(xué)習(xí)

2021-03-19 12:53:35

微步在線威脅情報安全

2016-11-07 13:31:24

2022-02-17 09:00:00

深度學(xué)習(xí)人工智能表征學(xué)習(xí)

2024-01-11 09:01:32

GPT商店OpenAI人工智能

2024-10-09 08:00:00

2017-10-19 17:05:58

深度學(xué)習(xí)自然語言

2020-04-24 10:53:08

自然語言處理NLP是人工智能

2017-04-10 16:15:55

人工智能深度學(xué)習(xí)應(yīng)用

2017-10-19 15:09:10

Word2vecskip-gram模型

2024-02-05 14:18:07

自然語言處理

2018-05-06 23:16:22

Windows 功能截圖

2017-05-05 15:34:49

自然語言處理

2021-09-03 12:01:07

模型自然語言

2018-02-27 09:32:13

神經(jīng)網(wǎng)絡(luò)自然語言初探

2020-07-14 10:31:30

自然語言處理人工智能AI
點贊
收藏

51CTO技術(shù)棧公眾號