200314 Embedding及其與word2vec關(guān)系的個(gè)人理解

參考鏈接keras:3)Embedding層詳解
示例原文鏈接:
https://blog.csdn.net/qianshishangdi/article/details/88640204

個(gè)人理解:

以下是個(gè)人對(duì)Embedding及其與word2vec關(guān)系的通俗理解,表達(dá)盡量接地氣,語(yǔ)言可能不準(zhǔn)確,有不正確的地方歡迎指正。
keras原型和關(guān)鍵參數(shù):
keras.layers.embeddings.Embedding(input_dim, output_dim, input_length=None)
? input_dim: int > 0。詞匯表大小, 即,最大整數(shù) index + 1。
? output_dim: int >= 0。詞向量的維度。
? input_length: 輸入序列的長(zhǎng)度,必須和輸入數(shù)據(jù)長(zhǎng)度一致。當(dāng)它是固定的時(shí)。 如果你需要連接 Flatten 和 Dense 層,則這個(gè)參數(shù)是必須的 (沒有它,dense 層的輸出尺寸就無(wú)法計(jì)算)

Embedding:建立一個(gè)可訓(xùn)練的兩層神經(jīng)網(wǎng)絡(luò),對(duì)輸入的數(shù)據(jù)進(jìn)行預(yù)處理;包括輸入層、input層和output層。
input_dim即input層節(jié)點(diǎn)數(shù)對(duì)應(yīng)詞匯表,Embedding層自動(dòng)實(shí)現(xiàn)每節(jié)點(diǎn)對(duì)應(yīng)一個(gè)詞匯
Embedding實(shí)質(zhì)是訓(xùn)練一個(gè)與輸入相關(guān)的向量表,該向量表的尺寸為[input_dim,input_length,output_dim](隱含要求輸入是one-hot碼);訓(xùn)練過程input層和output層權(quán)重逐漸優(yōu)化,權(quán)重表可以表達(dá)訓(xùn)練數(shù)據(jù)之間的邏輯關(guān)系。
Embedding輸出=輸入*Embedding,相當(dāng)于按輸入one-hot碼在Embedding權(quán)重矩陣中查表,得到一個(gè)與輸入對(duì)應(yīng)的向量。該向量在nlp中可以用作詞向量,與one-hot相比,該詞向量尺寸更小并且可以表達(dá)詞之間的邏輯關(guān)系,詞向量之間的夾角表示詞向量之間語(yǔ)義相近程度。
word2vec與Embedding關(guān)系:word2vec本身是一個(gè)語(yǔ)言模型,一般認(rèn)為是一個(gè)三層的神經(jīng)網(wǎng)絡(luò),其中第一層相當(dāng)于Embedding,且優(yōu)化了查表速度(因?yàn)镋mbedding本身是兩層網(wǎng)絡(luò),所以可以將word2vec理解為一個(gè)4層的深度神經(jīng)網(wǎng)絡(luò))。word2vec第一層的權(quán)重即為輸入的詞向量表,第一層的輸出即為word2vec的詞向量。很多NLP將word2vec單純作為文本向量化工具。

示例代碼

import numpy as np
from keras.models import Sequential
from keras.layers import Embedding, Masking

# Embedding和Masking都可以用來(lái)處理變長(zhǎng)文本,Embedding只能過濾0

model = Sequential()
model.add(Embedding(input_dim=2,
                    output_dim=2,   #將輸入拆分成一個(gè)幾維的量
                    input_length=7,
                    ))

print('Embedding input shape:\n', model.layers[0].input_shape)
print('Embedding output shape:\n', model.layers[0].output_shape)

model.compile('rmsprop', 'mse')
a=np.array([[0, 1, 0, 1, 1, 0, 0],
            [1, 1, 1, 1, 1, 1, 1]]
)
print('input shape a:\n', a, a.shape)

result = model.predict(a)
print('Embedded a:\n', result)
print('shape Embedded a:\n', result.shape)

運(yùn)行結(jié)果

Using TensorFlow backend.
Embedding input shape:
 (None, 7)
Embedding output shape:
 (None, 7, 2)
input shape a:
 [[0 1 0 1 1 0 0]
 [1 1 1 1 1 1 1]] (2, 7)
2019-03-18 15:23:16.590430: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
Embedded a:
 [[[ 0.00076254  0.04154864]
  [-0.03167279 -0.00586861]
  [ 0.00076254  0.04154864]
  [-0.03167279 -0.00586861]
  [-0.03167279 -0.00586861]
  [ 0.00076254  0.04154864]
  [ 0.00076254  0.04154864]]

 [[-0.03167279 -0.00586861]
  [-0.03167279 -0.00586861]
  [-0.03167279 -0.00586861]
  [-0.03167279 -0.00586861]
  [-0.03167279 -0.00586861]
  [-0.03167279 -0.00586861]
  [-0.03167279 -0.00586861]]]
shape Embedded a:
 (2, 7, 2)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最近新接觸文本分類問題,對(duì)于我來(lái)數(shù)第一個(gè)問題就是Word Embedding這個(gè)詞到底是什么意思,因此也就開始學(xué)習(xí)...
    小松qxs閱讀 25,196評(píng)論 2 27
  • 獨(dú)熱編碼 獨(dú)熱編碼即 One-Hot 編碼,又稱一位有效編碼,其方法是使用N位狀態(tài)寄存器來(lái)對(duì)N個(gè)狀態(tài)進(jìn)行編碼,每個(gè)...
    阡陌哥哥閱讀 273,722評(píng)論 18 270
  • 1、 前言 本篇主要介紹關(guān)鍵詞的向量表示,也就是大家熟悉的word embedding。自Google 2013...
    leepand閱讀 16,792評(píng)論 2 13
  • 獨(dú)熱編碼其方法是使用N位狀態(tài)寄存器來(lái)對(duì)N個(gè)狀態(tài)進(jìn)行編碼,每個(gè)狀態(tài)都有它獨(dú)立的寄存器位,并且在任意時(shí)候,其中只有一位...
    Jessie_83bf閱讀 568評(píng)論 0 0
  • 一夜的不眠 盼黎明的曙光 它如一盞燈 能照亮孤獨(dú)的心靈 讓人忘記痛苦 讓心不在孤寂 探望 從窗簾下 只有路燈 探望...
    淡然若怡閱讀 260評(píng)論 1 7

友情鏈接更多精彩內(nèi)容