keras中embedding層是如何將乙個正整數(下標)轉化為具有固定大小的向量的?

時間 2021-06-02 00:44:42

1樓:

這個問題我曾經研究過很久很久,其實很簡單

keras的embedding使用的是end-to-end的方法進行訓練獲得的,通俗的講就是根據bp演算法算出來的

首先你可以初始化乙個矩陣來表達全部詞的向量然後用bp演算法來更新這個初始化的向量,更新的目標就是使得代價函式最小化

其實就是學習權重(embedding向量就是權重值)

2樓:梅圈兒

mark一下~我也剛好遇到了這個問題,採納王哲,Domi Zhang和鄭中義的解釋~

此外,實驗了一下,發現keras裡面的embedding layer設為不可訓練時,如果句子長度不足,是往前填0,這跟我想的正好相反,還以為是在後面補0

3樓:Domi

請參考@王哲同學的答案,題主是將Keras裡的Embedding類和WordEmbedding概念混淆了。Keras裡的Embedding僅僅是乙個做Embedding的工具,用來將Word Id轉換為WordEmbedding的一種工具。如果沒有向Embedding傳遞weights矩陣,得到的就是隨機初始化的WordEmbedding,它不表達語義;當向Embedding傳遞weights矩陣,得到的就是語義化的WordEmbedding。

至於如何獲得weights矩陣,就是其他答主提到的GloVe Word2Vec之類的演算法了。

4樓:

嵌入層通過查表將整數(一般是單詞在詞典中的位置下標)轉換成乙個固定長度的向量。

向量的取值是隨機初始化(embeddings_initializer='uniform')並可訓練的。也可以通過嵌入層的weights引數載入預訓練好的詞向量,並設定為不可訓練(trainable=False)。

5樓:

keras中的 Embedding層只是簡單地將輸入裡的詞下標轉換成向量。向量值對應權重矩陣下標獲得。

模型中的Embedding層的權重可以接受訓練,但是單純這個層來說是沒有像word2vec這樣的功能的。

當然,可以將訓練好的詞向量表作為權重匯入,這樣Embedding層相當於乙個預處理層。文件裡有個例子:

在Keras模型中使用預訓練的詞向量 - Keras中文文件

6樓:

個人拙見。

嵌入層Embedding - Keras中文文件1,輸入不是onehot只是下標列表,輸出向量。看起來更像是公升維了(本質上降維了)。

2,演算法裡面沒有用w2v等東西初始化,全是 randomly initialized。

3,embedding層的向量表達被BP訓練。應該是基於fasttext的實現。不確定,我看範例猜的。

7樓:王凱

從id類特徵(category類)使用embedding_lookup的角度來講:

1、onehot編碼神經網路處理不來。embedding_lookup雖然是隨機化地對映成向量,看起來資訊量相同,但其實卻更加超平面可分。

2、embedding_lookup不是簡單的查表,id對應的向量是可以訓練的,訓練引數個數應該是 category num*embedding size,也就是說lookup是一種全連線層。詳見 brain of mat kelcey

3、word embedding其實是有了乙個距離的定義,即出現在同一上下文的詞的詞向量距離應該小,這樣生成向量比較容易理解。autoencode、pca等做一組基變換,也是假設原始特徵值越接近越相似。但id值的embedding應該是沒有距離可以定義,沒有物理意義,只是一種特殊的全連線層。

5、在分類模型中用這種id類特徵,主要是希望模型把這個商品記住。但id類特徵維度太高,同乙個商品的資料量也不大,因此也常常用i2i演算法產出的item embedding來替代id特徵。

8樓:qomo

說白了就是:問題中的乙個整數應該是one hot coding中每個word對應乙個id,而embedding矩陣裡的每一行對乙個word的向量,embedding矩陣裡的行號就是id,所以從乙個id可以變成乙個向量。從數學緯度上看,就是從乙個高維空間對映到乙個低維連續空間~

9樓:

Character-level Convolutional Networks for Text

Classification

Efficient Character-level Document Classification by

Combining Convolution and Recurrent Layers

Very Deep Convolutional Networks

for Natural Language Processing

這三篇都是基於char-level的卷積神經網路來解決文字分類問題的

第一篇是基於one-hot encoding,然後輸進去進行卷積

第二篇是同樣基於one-hot encoding,但是經過了embedding layer,文章說作用是通過embedding layer將輸入資料與W Matrix從而輸出乙個fixed size和降低維度的"a sequence of dense, real-

valued vectors"

第三篇直接用的look up table把char sequence轉換成了a fixed-sized padded text作為model的輸入,也是體現了fixed size

所以我覺得embedding layer就是作為乙個look up table的存在,將各類輸入經過轉換得到padded和fixed size的,low dimension的model的輸入.所以只要model用到了Matrix,經過encoding的輸入,都能放這個layer.具體這個能不能像word-level一樣pre-trained的話,我再思考一下.

有錯誤請指正...

10樓:xlvector

用在推薦系統中的合理性在於他們都是處理矩陣的乙個手段。只是在NLP裡是doc-word矩陣,推薦系統裡是user-item矩陣。

keras裡咋搞的不清楚。mxnet裡知道,在src/operator/embeding-inl.h 裡,通過lookup的方法做的。

tensorflow也是通過lookup的方法。只是tf是基於CPU實現的,mxnet是基於GPU實現的。

keras如果背後用的tf的引擎,那麼就和tf一樣。

深度ctr預估中id到embedding目前工業界主流是端到端直接學習還是預訓練

酸梅湯 端到端訓練吧,feature輸入端到端,網路高層按需求變換結構,我感覺是目前的乙個趨勢。user id是強記憶特徵,而且高緯稀疏。由於高緯稀疏所以必須訓練時間足夠長才能收斂而且正則化係數不能調太高,對於一些訓練次數少和間隔時間長的id embedding在inference時要做剔除。強記憶...

如何入門Keras?

灰灰 Keras是Python中以CNTK Tensorflow或者Theano為計算後台的乙個深度學習建模環境。相對於其他深度學習的框架,如Tensorflow Theano Caffe等,Keras在實際應用中有一些顯著的優點,其中最主要的優點就是Keras已經高度模組化了,支援現有的常見模型 ...

怎麼形象理解embedding這個概念?

鳳舞九天 好想說這題我會,因為最近自己一直在做embedding相關的工作,文字embedding,人臉embedding等等,但是解釋什麼是embedding一時之間還真有點說不出來。只能從應用角度出發來解釋了,以人臉embedding為例,同乙個id的不同人臉影象,其embedding應該盡可能...