0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

神經(jīng)網(wǎng)絡(luò)中詞向量是怎么表示的?

深度學(xué)習(xí)自然語(yǔ)言處理 ? 來源:語(yǔ)雀 ? 作者:云不見 ? 2021-02-05 09:22 ? 次閱讀

上一篇我們講到了在神經(jīng)網(wǎng)絡(luò)出現(xiàn)以前的詞向量表示方法:基于同義詞詞典的方法和基于計(jì)數(shù)統(tǒng)計(jì)的方法。想要回顧的可以看這里小白跟學(xué)系列之手把手搭建NLP經(jīng)典模型-2(含代碼)

這一篇我們要真正開始講在神經(jīng)網(wǎng)絡(luò)中,詞向量是怎么表示的,以及它又有什么優(yōu)缺點(diǎn)呢?

067b7aa0-603e-11eb-8b86-12bb97331649.jpg

目錄

基于統(tǒng)計(jì)存在的問題

什么是推理?

神經(jīng)網(wǎng)絡(luò)中輸入的單詞怎么處理?

簡(jiǎn)單的word2vec

CBOW模型的推理

CBOW模型的學(xué)習(xí)

學(xué)習(xí)數(shù)據(jù)的準(zhǔn)備

CBOW模型的實(shí)現(xiàn)

從概率角度看CBOW

總結(jié)


基于計(jì)數(shù)統(tǒng)計(jì)存在的問題

在海量數(shù)據(jù)的今天,基于計(jì)數(shù)統(tǒng)計(jì)的方法難以處理大規(guī)模的語(yǔ)料庫(kù),因?yàn)榻y(tǒng)計(jì)需要一次性統(tǒng)計(jì)整個(gè)語(yǔ)料庫(kù)!實(shí)在是有點(diǎn)難頂。而SVD降維的復(fù)雜度又太大,于是將推出——基于推理的方法,也就是基于神經(jīng)網(wǎng)絡(luò)的方法。

0a142d2e-603e-11eb-8b86-12bb97331649.png

神經(jīng)網(wǎng)絡(luò)一次只需要處理一個(gè)mini-batch的數(shù)據(jù)進(jìn)行學(xué)習(xí),并且反復(fù)更新網(wǎng)絡(luò)權(quán)重,使神經(jīng)網(wǎng)絡(luò)能夠正確預(yù)測(cè)結(jié)果。

0d83a958-603e-11eb-8b86-12bb97331649.png

基于推理的方法以預(yù)測(cè)為目標(biāo),同時(shí)獲得了作為副產(chǎn)品的單詞分布式表示。也就是說,模型學(xué)習(xí)的最終目的是能夠預(yù)測(cè)正確的結(jié)果,而在學(xué)習(xí)的過程中,我們意外的獲得了單詞的分布式表示。

如果看不懂也沒有關(guān)系,這里只是擺出了最終的結(jié)論,接著往下看。


什么是推理?

當(dāng)給出周圍的單詞(上下文)時(shí),預(yù)測(cè)"?"處會(huì)出現(xiàn)什么單詞。

0df3a398-603e-11eb-8b86-12bb97331649.png

也就是說,基于推理的方法和基于計(jì)數(shù)的方法一樣,也是基于分布式假設(shè)的,即“單詞含義由其周圍的單詞構(gòu)成”。


輸入單詞的處理方法

將輸入文本寫為one-hot向量

和之前的方法一樣,不管什么模型都無(wú)法直接輸入文本本身,模型只“看得懂”數(shù)字,因此我們需要先將單詞轉(zhuǎn)化為固定長(zhǎng)度的向量。對(duì)此,一種方式是將單詞轉(zhuǎn)換為 one-hot向量。在 one-hot 表示中,只有一個(gè)元素是 1,其他元素都是 0。還是以“You say goodbye and I say hello.”這一語(yǔ)料作為例子,表示成one-hot向量即如下所示:

0e596d86-603e-11eb-8b86-12bb97331649.png

像這樣,將單詞轉(zhuǎn)化為固定長(zhǎng)度的向量,神經(jīng)網(wǎng)絡(luò)的輸入層的神經(jīng)元個(gè)數(shù)也就可以固定下來(圖 3-5)。

0ebd1e58-603e-11eb-8b86-12bb97331649.png

能用向量表示單詞啦,這樣我們就可以把它們丟進(jìn)神經(jīng)網(wǎng)絡(luò)進(jìn)行處理了。比如,對(duì)于one-hot表示的某個(gè)單詞,

使用全連接層的神經(jīng)網(wǎng)絡(luò)如圖 3-6 所示。

0f314df0-603e-11eb-8b86-12bb97331649.png

但是我們需要關(guān)注權(quán)重W的大小,因此我們將神經(jīng)網(wǎng)絡(luò)畫成如下的形式:

0ffa072c-603e-11eb-8b86-12bb97331649.png

全連接層變換可以寫成如下的 Python代碼。

import numpy as np c = np.array([[1, 0, 0, 0, 0, 0, 0]]) # 輸入youW = np.random.randn(7, 3) # 權(quán)重初始值為7行3列的矩陣隨機(jī)數(shù),且具有標(biāo)準(zhǔn)正態(tài)分布h = np.dot(c, W) # 中間隱藏層節(jié)點(diǎn)print(h)# [[-0.70012195 0.25204755 -0.79774592]]

這里需要注意的是因?yàn)檩斎?c 是 one-hot 表示,單詞 ID 對(duì)應(yīng)的元素是 1,其他地方都是 0。因此,上述代碼中的 c × W 的矩陣乘積相當(dāng)于“提取”權(quán)重的對(duì)應(yīng)行向量。

10760b92-603e-11eb-8b86-12bb97331649.png

這里,僅為了提取權(quán)重的行向量而進(jìn)行矩陣乘積計(jì)算好像不是很有效率。關(guān)于這一點(diǎn),我們會(huì)在后續(xù)進(jìn)行改進(jìn)。而且乘積也可以用MatMul層(專門做矩陣乘積的層)來實(shí)現(xiàn)。

學(xué)習(xí)了基于推理的方法,并用代碼實(shí)現(xiàn)了神經(jīng)網(wǎng)絡(luò)中單詞的處理方法,至此準(zhǔn)備工作就完成了,現(xiàn)在是時(shí)候?qū)崿F(xiàn)word2vec了。

在基于推理(神經(jīng)網(wǎng)絡(luò))的方法中,最著名的就是Word2Vec。接下來我們將詳細(xì)的探討word2vec的結(jié)構(gòu)和如何用代碼把這個(gè)結(jié)構(gòu)搭建起來。


簡(jiǎn)單的word2vec

word2vec有兩種模型:

CBOW模型

Skip-gram模型

兩種模型的區(qū)別如下:

10dcb8ec-603e-11eb-8b86-12bb97331649.png

CBOW 模型是從上下文的多個(gè)單詞預(yù)測(cè)中間的單詞(目標(biāo)詞),而 skip-gram 模型則從中間的單詞(目標(biāo)詞)預(yù)測(cè)上下文的多個(gè)單詞。

本節(jié)我們將主要討論CBOW模型。

114bf3ce-603e-11eb-8b86-12bb97331649.png

CBOW模型的推理

CBOW 模型是根據(jù)上下文預(yù)測(cè)目標(biāo)詞的神經(jīng)網(wǎng)絡(luò)(“目標(biāo)詞”是指中間的單詞,它周圍的單詞是“上下文”)。通過訓(xùn)練這個(gè) CBOW 模型,使其能盡可能地進(jìn)行正確的預(yù)測(cè)目標(biāo)詞,我們就可以獲得中間產(chǎn)物——單詞的分布式表示。

提前劇透一下,這個(gè)學(xué)習(xí)好的、能正確預(yù)測(cè)結(jié)果的權(quán)重就是我們想要的單詞分布式表示。

13ca4038-603e-11eb-8b86-12bb97331649.png

中間層的神經(jīng)元數(shù)量比輸入層少這一點(diǎn)很重要。中間層需要將預(yù)測(cè)單詞所需的信息壓縮保存,從而產(chǎn)生密集的向量表示。這時(shí),中間層被寫入了我們?nèi)祟悷o(wú)法解讀的代碼,相當(dāng)于 “編碼” 工作。而從中間層的信息獲得期望結(jié)果的過程則稱為 “解碼” 。這一過程將被編碼的信息復(fù)原為我們可以理解的形式。

我們從層的角度來看看這個(gè)CBOW模型:

1450e2be-603e-11eb-8b86-12bb97331649.png

如圖 3-11 所示,CBOW 模型一開始有兩個(gè) MatMul 層,這兩個(gè)層的輸出被加在一起。然后,對(duì)這個(gè)相加后得到的值乘以 0.5 求平均,可以得到中間層的神經(jīng)元。最后,將另一個(gè) MatMul 層應(yīng)用于中間層的神經(jīng)元,輸出得分。

MatMul 層的正向傳播,在內(nèi)部會(huì)計(jì)算矩陣乘積。

接下來用代碼實(shí)現(xiàn) CBOW 模型的推理(即求得分的過程) ,具體實(shí)現(xiàn)如下所示( ch03/cbow_predict.py ) 。

import syssys.path.append('..')import numpy as npfrom common.layers import MatMul # 樣本的上下文數(shù)據(jù)c0 = np.array([[1, 0, 0, 0, 0, 0, 0]]) # youc1 = np.array([[0, 0, 1, 0, 0, 0, 0]]) # goodbye # 權(quán)重的初始值W_in = np.random.randn(7, 3)W_out = np.random.randn(3, 7) # 生成層in_layer0 = MatMul(W_in)in_layer1 = MatMul(W_in)out_layer = MatMul(W_out) # 正向傳播h0 = in_layer0.forward(c0)h1 = in_layer1.forward(c1)h = 0.5 * (h0 + h1)s = out_layer.forward(h)print(s) # [[ 0.30916255 0.45060817 -0.77308656 0.22054131 0.15037278# -0.93659277 -0.59612048]]

輸出側(cè)的MatMul層共享權(quán)重W_in。

以上是沒有使用激活函數(shù)的簡(jiǎn)單網(wǎng)絡(luò)結(jié)構(gòu),接下來看看CBOW模型的學(xué)習(xí)(也就是添加激活函數(shù)后得到概率)。

CBOW模型的學(xué)習(xí)

推理完了得到得分,加上激活函數(shù)就得到結(jié)果的概率,這個(gè)概率就表示哪個(gè)單詞會(huì)出現(xiàn)在給定的上下文(周圍單詞)中間。

1520cf4c-603e-11eb-8b86-12bb97331649.png

說白了,CBOW模型的學(xué)習(xí)就是調(diào)整權(quán)重參數(shù),以使預(yù)測(cè)結(jié)果更加準(zhǔn)確。評(píng)估預(yù)測(cè)是否準(zhǔn)確的一大指標(biāo)就是預(yù)測(cè)的結(jié)果和正確的結(jié)果之間進(jìn)行對(duì)比,用什么指標(biāo)去比對(duì)呢?用交叉熵誤差量化對(duì)比模型預(yù)測(cè)的概率和正確結(jié)果之間的差距(也就是loss值),并且反饋給前面的權(quán)重參數(shù)W并進(jìn)行參數(shù)W的調(diào)整,從而不斷的減小與正確結(jié)果之間的距離,這就是模型訓(xùn)練、學(xué)習(xí)的過程。

從層的角度表示如下:

1635f27c-603e-11eb-8b86-12bb97331649.png

CBOW模型的學(xué)習(xí),只需在 CBOW 模型的推理上加上Softmax 層和 Cross Entropy Error 層,就可以得到損失。這就是 CBOW模型的正向傳播。

那么學(xué)習(xí)好的模型最終獲得的權(quán)重參數(shù)是什么樣的呢?

word2vec 中使用的網(wǎng)絡(luò)有兩個(gè)權(quán)重,分別是輸入側(cè)的權(quán)重(Win)和輸出側(cè)的權(quán)重(Wout) 。一般而言,輸入側(cè)的權(quán)重 Win 的每一行對(duì)應(yīng)于各個(gè)單詞的分布式表示?;蛘咻敵鰝?cè)的每一列也同樣對(duì)應(yīng)各個(gè)單詞的分布式表示。

16cbd1a2-603e-11eb-8b86-12bb97331649.png

那么,我們最終應(yīng)該使用哪個(gè)權(quán)重作為單詞的分布式表示呢?這里有三個(gè)選項(xiàng)。

A. 只使用輸入側(cè)的權(quán)重

B. 只使用輸出側(cè)的權(quán)重

C. 同時(shí)使用兩個(gè)權(quán)重

就 word2vec(特別是 skip-gram 模型)而言,最受歡迎的是方案 A。在這里我們也使用Win作為詞向量。而在與 word2vec 相似的 GloVe[27]詞向量表示方法中,使用C方案將兩個(gè)權(quán)重相加,也獲得了良好的結(jié)果。

模型搭建好了,我們還要對(duì)輸入數(shù)據(jù)進(jìn)行預(yù)處理。

學(xué)習(xí)數(shù)據(jù)的準(zhǔn)備

我們上面有說過,模型沒法直接"認(rèn)識(shí)"文本,而只認(rèn)識(shí)數(shù)字,所以我們首先需要將輸入數(shù)據(jù)轉(zhuǎn)化為one-hot向量表示。這里仍以“You say goodbye and I say hello.”為例。

17d5ee48-603e-11eb-8b86-12bb97331649.png

代碼實(shí)現(xiàn)數(shù)據(jù)預(yù)處理如下:

import syssys.path.append('..')from common.util import preprocess, create_contexts_target,convert_one_hot text = 'You say goodbye and I say hello.' corpus, word_to_id, id_to_word = preprocess(text) contexts, target = create_contexts_target(corpus, window_size=1) vocab_size = len(word_to_id)target = convert_one_hot(target, vocab_size)contexts = convert_one_hot(contexts, vocab_size)

convert_one_hot() 函數(shù)實(shí)現(xiàn)了將單詞 ID 轉(zhuǎn)化為 one-hot 表示,內(nèi)容很簡(jiǎn)單,代碼在 common/util.py 中。

至此,學(xué)習(xí)數(shù)據(jù)的準(zhǔn)備就完成了,下面我們來討論最重要的 CBOW 模型的實(shí)現(xiàn)。

CBOW模型的實(shí)現(xiàn)

190a20a4-603e-11eb-8b86-12bb97331649.png

根據(jù)CBOW模型的網(wǎng)絡(luò)結(jié)構(gòu)圖,將該神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)為 SimpleCBOW 類(下一節(jié)將對(duì)其進(jìn)行改進(jìn)為 CBOW 類) 。首先,讓我們看一下 SimpleCBOW 類的初始化方法( ch03/simple_cbow.py ) 。

模型的初始化代碼

import syssys.path.append('..')import numpy as npfrom common.layers import MatMul, SoftmaxWithLoss class SimpleCBOW: def __init__(self, vocab_size, hidden_size): # 詞匯數(shù):vocab_size ;中間層神經(jīng)元個(gè)數(shù):hidden_size V, H = vocab_size, hidden_size # 初始化權(quán)重,用一些小的隨機(jī)值初始化 W_in = 0.01 * np.random.randn(V, H).astype('f') W_out = 0.01 * np.random.randn(H, V).astype('f') # 生成層 self.in_layer0 = MatMul(W_in) self.in_layer1 = MatMul(W_in) self.out_layer = MatMul(W_out) self.loss_layer = SoftmaxWithLoss() # 將所有的權(quán)重和梯度整理到列表中 layers = [self.in_layer0, self.in_layer1, self.out_layer] self.params, self.grads = [], [] for layer in layers: self.params += layer.params self.grads += layer.grads # 將單詞的分布式表示設(shè)置為成員變量 self.word_vecs = W_in

指定 NumPy 數(shù)組的數(shù)據(jù)類型為 astype('f'),初始化將使用 32 位的浮點(diǎn)數(shù)。

實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的正向傳播 forward() 函數(shù)代碼。該函數(shù)接收參數(shù) contexts 和 target,并返回?fù)p失(loss)。

def forward(self, contexts, target): # 接收參數(shù) contexts 和 target,并返回?fù)p失(loss) h0 = self.in_layer0.forward(contexts[:, 0]) h1 = self.in_layer1.forward(contexts[:, 1]) h = (h0 + h1) * 0.5 score = self.out_layer.forward(h) loss = self.loss_layer.forward(score, target) return loss

這里,假定參數(shù) contexts 是一個(gè)三維 NumPy 數(shù)組,即圖3-18 的例子中 (6,2,7) 的形狀,其中第 0 維是 mini-batch 的數(shù)量,第 1 維是上下文的窗口大小,第 2 維表示 one-hot 向量。此外, target 是 (6,7)這樣的二維形狀。

實(shí)現(xiàn)反向傳播 backward()

19c39aac-603e-11eb-8b86-12bb97331649.png

反向傳播代碼如下:

def backward(self, dout=1): ds = self.loss_layer.backward(dout) da = self.out_layer.backward(ds) da *= 0.5 self.in_layer1.backward(da) self.in_layer0.backward(da) return None

“×”的反向傳播將正向傳播時(shí)的輸入值“交換”后乘以梯度。“+”的反向傳播則將梯度“原樣”傳播。

此處正向、反向傳播已實(shí)現(xiàn),通過先調(diào)用 forward() 函 數(shù), 再調(diào)用 backward() 函數(shù),grads 列表中的梯度被更新。

模型學(xué)習(xí)的實(shí)現(xiàn)

CBOW 模型的學(xué)習(xí)和一般的神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)完全相同。

首先,給神經(jīng)網(wǎng)絡(luò)準(zhǔn)備好學(xué)習(xí)數(shù)據(jù)。

然后,求梯度,并逐步更新權(quán)重參數(shù)。

這里,我們使用神經(jīng)網(wǎng)絡(luò)中的 Trainer 類來執(zhí)行學(xué)習(xí)過程,學(xué)習(xí)的源代碼如下所示( ch03/train.py ) 。

模型學(xué)習(xí)的實(shí)現(xiàn)代碼:

import syssys.path.append('..')from common.trainer import Trainerfrom common.optimizer import Adamfrom simple_cbow import SimpleCBOWfrom common.util import preprocess, create_contexts_target,convert_one_hot window_size = 1hidden_size = 5batch_size = 3max_epoch = 1000 text = 'You say goodbye and I say hello.'corpus, word_to_id, id_to_word = preprocess(text) vocab_size = len(word_to_id)contexts, target = create_contexts_target(corpus, window_size)target = convert_one_hot(target, vocab_size)contexts = convert_one_hot(contexts, vocab_size) model = SimpleCBOW(vocab_size, hidden_size)optimizer = Adam()trainer = Trainer(model, optimizer)trainer.fit(contexts, target, max_epoch, batch_size)trainer.plot()

之后,我們都會(huì)使用Train類進(jìn)行網(wǎng)絡(luò)的學(xué)習(xí)。使用 Trainer類, 可以理清容易變復(fù)雜的學(xué)習(xí)代碼。

結(jié)果如圖所示:

1aa57de6-603e-11eb-8b86-12bb97331649.png

通過不斷的學(xué)習(xí),損失的確在減?。∥覀?cè)賮砜纯磳W(xué)習(xí)結(jié)束后的權(quán)重W。我們?nèi)〕鰟倓偙4娴妮斎雮?cè)的權(quán)重。

word_vecs = model.word_vecs for word_id, word in id_to_word.items(): print(word, word_vecs[word_id])

word_vecs 的各行保存了對(duì)應(yīng)的單詞 ID 的分布式表示。結(jié)果如下所示:

you [-0.9031807 -1.0374491 -1.4682057 -1.3216232 0.93127245]say [ 1.2172916 1.2620505 -0.07845993 0.07709391 -1.2389531 ]goodbye [-1.0834033 -0.8826921 -0.33428606 -0.5720131 1.0488235 ]and [ 1.0244362 1.0160093 -1.6284224 -1.6400533 -1.0564581]i [-1.0642933 -0.9162385 -0.31357735 -0.5730831 1.041875 ]hello [-0.9018145 -1.035476 -1.4629668 -1.3058501 0.9280102]. [ 1.0985303 1.1642815 1.4365371 1.3974973 -1.0714306]

我們終于將單詞表示為了密集向量!這就是單詞的分布式表示。

不過,由于這里使用的語(yǔ)料庫(kù)因?yàn)樘×怂圆]有給出很好的結(jié)果。如果換成更大的語(yǔ)料庫(kù),相信會(huì)獲得更好的結(jié)果。但是,如果語(yǔ)料庫(kù)太大,在處理速度方面又會(huì)出現(xiàn)新的問題,因?yàn)楫?dāng)前這個(gè) CBOW 模型的實(shí)現(xiàn)在處理效率方面存在幾個(gè)問題。下一節(jié)我們將改進(jìn)這個(gè)簡(jiǎn)單的 CBOW 模型,實(shí)現(xiàn)一個(gè)“真正的”、更快的CBOW 模型。

從概率角度看CBOW

我們從概率角度再來看一下CBOW模型。首先說明幾個(gè)概率的表示方法。

由概率統(tǒng)計(jì)所學(xué),我們知道:

P(A):表示A發(fā)生的概率;

P(A,B):表示A,B同時(shí)發(fā)生的概率;(聯(lián)合概率)

P(A|B):B發(fā)生時(shí)A發(fā)生的概率。(后驗(yàn)概率)

已知CBOW模型的原理是已知上下文而預(yù)測(cè)目標(biāo)詞。

1bb2e21e-603e-11eb-8b86-12bb97331649.png

我們用數(shù)學(xué)式來表示當(dāng)給定上下文 wt?1和 wt+1時(shí)目標(biāo)詞為 wt 的概率。即使用后驗(yàn)概率,有式 (3.1):

1c19c6a0-603e-11eb-8b86-12bb97331649.png

式 (3.1) 表示“在 wt?1和 wt+1發(fā)生后,wt發(fā)生的概率” 。也就是說,CBOW 模型可以建模為式 (3.1)。

而且使用式 (3.1)可以簡(jiǎn)潔地表示CBOW 模型的損失函數(shù)。

將原交叉熵誤差函數(shù)式以概率的形式來表示就是:

1c861bca-603e-11eb-8b86-12bb97331649.png

CBOW 模型的損失函數(shù)只是對(duì)式 (3.1) 的概率取 log,并加上負(fù)號(hào),這也稱為負(fù)對(duì)數(shù)似然(negative log likelihood) 。式 (3.2) 是一筆樣本數(shù)據(jù)的損失函數(shù)。如果將其擴(kuò)展到整個(gè)語(yǔ)料庫(kù),則損失函數(shù)可以寫為:

1cc6b22a-603e-11eb-8b86-12bb97331649.png

CBOW 模型學(xué)習(xí)的任務(wù)就是讓式 (3.3) 表示的損失函數(shù)盡可能地小。學(xué)習(xí)好的權(quán)重參數(shù)就是我們想要的單詞的分布式表示。這里,我們只考慮了窗口大小為 1 的情況,不過其他的窗口大小(或者窗口大小為 m 的一般情況) 也很容易用數(shù)學(xué)式表示。

理解了 CBOW 模型的實(shí)現(xiàn),在實(shí)現(xiàn) skip-gram 模型時(shí)也就不存在什么難點(diǎn)了。這里就不再介紹 skip-gram 模型的實(shí)現(xiàn)。詳細(xì)代碼可以參考 ch03/simple_skip_gram.py 。


總結(jié)

到目前為止,我們已經(jīng)了解了基于計(jì)數(shù)的方法和基于神經(jīng)網(wǎng)絡(luò)的方法(特別是 word2vec) 。基于計(jì)數(shù)的方法通過對(duì)整個(gè)語(yǔ)料庫(kù)的統(tǒng)計(jì)數(shù)據(jù)進(jìn)行一次學(xué)習(xí)來獲得單詞的分布式表示,而基于推理的方法則通過反復(fù)觀察語(yǔ)料庫(kù)的一部分?jǐn)?shù)據(jù)進(jìn)行學(xué)習(xí)(mini-batch 學(xué)習(xí)) 。

如果需要向詞匯表添加新詞匯并更新詞向量。

基于計(jì)數(shù)的方法:需要從頭開始計(jì)算,重新生成共現(xiàn)矩陣、進(jìn)行SVD降維等操作。

而基于神經(jīng)網(wǎng)絡(luò)的方法:允許參數(shù)的增量學(xué)習(xí)??梢詫⒅皩W(xué)習(xí)好的權(quán)重參數(shù)作為初始值繼續(xù)學(xué)習(xí)更新權(quán)重參數(shù)。

但是現(xiàn)階段的CBOW模型在學(xué)習(xí)效率上還存在一些問題。下一節(jié)我們將改進(jìn)這個(gè)CBOW模型,使其更加高效的學(xué)習(xí)詞向量表示。

原文標(biāo)題:師妹問我:如何在7分鐘內(nèi)徹底搞懂word2vec?

文章出處:【微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:師妹問我:如何在7分鐘內(nèi)徹底搞懂word2vec?

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    遞歸神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)的模型結(jié)構(gòu)

    遞歸神經(jīng)網(wǎng)絡(luò)是一種旨在處理分層結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),使其特別適合涉及樹狀或嵌套數(shù)據(jù)的任務(wù)。這些網(wǎng)絡(luò)明確地模擬了層次結(jié)構(gòu)中的關(guān)系和依賴關(guān)系,例如語(yǔ)言中的句法結(jié)構(gòu)或圖像中的層次表示。它使用遞歸操
    的頭像 發(fā)表于 07-10 17:21 ?310次閱讀
    遞歸<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>和循環(huán)<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的模型結(jié)構(gòu)

    BP神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的關(guān)系

    BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡(jiǎn)稱CNN)是兩種在人工智能和機(jī)器學(xué)習(xí)領(lǐng)域
    的頭像 發(fā)表于 07-10 15:24 ?576次閱讀

    BP神經(jīng)網(wǎng)絡(luò)和人工神經(jīng)網(wǎng)絡(luò)的區(qū)別

    BP神經(jīng)網(wǎng)絡(luò)和人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,簡(jiǎn)稱ANNs)之間的關(guān)系與區(qū)別,是神經(jīng)網(wǎng)絡(luò)領(lǐng)域中一個(gè)基礎(chǔ)且重要的話題。本文將從定義、結(jié)構(gòu)、算法、應(yīng)用及未來發(fā)展等多個(gè)方面,詳細(xì)闡述BP
    的頭像 發(fā)表于 07-10 15:20 ?380次閱讀

    rnn是遞歸神經(jīng)網(wǎng)絡(luò)還是循環(huán)神經(jīng)網(wǎng)絡(luò)

    RNN(Recurrent Neural Network)是循環(huán)神經(jīng)網(wǎng)絡(luò),而非遞歸神經(jīng)網(wǎng)絡(luò)。循環(huán)神經(jīng)網(wǎng)絡(luò)是一種具有時(shí)間序列特性的神經(jīng)網(wǎng)絡(luò),能夠處理序列數(shù)據(jù),具有記憶功能。以下是關(guān)于循環(huán)
    的頭像 發(fā)表于 07-05 09:52 ?384次閱讀

    遞歸神經(jīng)網(wǎng)絡(luò)是循環(huán)神經(jīng)網(wǎng)絡(luò)

    遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡(jiǎn)稱RNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡(jiǎn)稱RNN)實(shí)際上是同一個(gè)概念,只是不同的翻譯方式
    的頭像 發(fā)表于 07-04 14:54 ?448次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的區(qū)別

    循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是深度學(xué)習(xí)領(lǐng)域中兩種非常重要的神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-04 14:24 ?510次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò)的區(qū)別

    循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡(jiǎn)稱RNN)和遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network,簡(jiǎn)稱RvNN)是深度學(xué)習(xí)中兩種重要的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。它們?cè)?/div>
    的頭像 發(fā)表于 07-04 14:19 ?426次閱讀

    深度神經(jīng)網(wǎng)絡(luò)與基本神經(jīng)網(wǎng)絡(luò)的區(qū)別

    在探討深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks, DNNs)與基本神經(jīng)網(wǎng)絡(luò)(通常指?jìng)鹘y(tǒng)神經(jīng)網(wǎng)絡(luò)或前向神經(jīng)網(wǎng)絡(luò))的區(qū)別時(shí),我們需要從多個(gè)維度進(jìn)行深入分析。這些維度包括
    的頭像 發(fā)表于 07-04 13:20 ?329次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)與循環(huán)神經(jīng)網(wǎng)絡(luò)的區(qū)別

    在深度學(xué)習(xí)領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks, RNN)是兩種極其重要
    的頭像 發(fā)表于 07-03 16:12 ?969次閱讀

    反向傳播神經(jīng)網(wǎng)絡(luò)和bp神經(jīng)網(wǎng)絡(luò)的區(qū)別

    反向傳播神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network,簡(jiǎn)稱BP神經(jīng)網(wǎng)絡(luò))是一種多層前饋神經(jīng)網(wǎng)絡(luò),它通過反向傳播算法來調(diào)整網(wǎng)絡(luò)中的權(quán)重和偏置,以達(dá)到最小化誤差的
    的頭像 發(fā)表于 07-03 11:00 ?366次閱讀

    bp神經(jīng)網(wǎng)絡(luò)是深度神經(jīng)網(wǎng)絡(luò)

    BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network)是一種常見的前饋神經(jīng)網(wǎng)絡(luò),它使用反向傳播算法來訓(xùn)練網(wǎng)絡(luò)。雖然BP神經(jīng)網(wǎng)絡(luò)在某些方面與深度
    的頭像 發(fā)表于 07-03 10:14 ?366次閱讀

    bp神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)區(qū)別是什么

    BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡(jiǎn)稱CNN)是兩種不同類型的人工神經(jīng)網(wǎng)絡(luò),它們?cè)?/div>
    的頭像 發(fā)表于 07-03 10:12 ?519次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的原理是什么

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡(jiǎn)稱CNN)是一種深度學(xué)習(xí)模型,廣泛應(yīng)用于圖像識(shí)別、語(yǔ)音識(shí)別、自然語(yǔ)言處理等領(lǐng)域。本文將詳細(xì)介紹卷積神經(jīng)網(wǎng)絡(luò)的原理,包括其
    的頭像 發(fā)表于 07-02 14:44 ?353次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)和bp神經(jīng)網(wǎng)絡(luò)的區(qū)別

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,簡(jiǎn)稱CNN)和BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Networks,簡(jiǎn)稱BPNN)是兩種
    的頭像 發(fā)表于 07-02 14:24 ?1017次閱讀

    神經(jīng)網(wǎng)絡(luò)架構(gòu)有哪些

    神經(jīng)網(wǎng)絡(luò)架構(gòu)是機(jī)器學(xué)習(xí)領(lǐng)域中的核心組成部分,它們模仿了生物神經(jīng)網(wǎng)絡(luò)的運(yùn)作方式,通過復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)實(shí)現(xiàn)信息的處理、存儲(chǔ)和傳遞。隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,各種神經(jīng)網(wǎng)絡(luò)架構(gòu)被提出并廣泛應(yīng)用
    的頭像 發(fā)表于 07-01 14:16 ?342次閱讀