ML-Embeddings-嵌套-機器學習原理

什么是Embedding嵌套?

下面是谷歌官方定義:
一種分類特征,以連續(xù)值特征表示。通常,嵌套是指將高維度向量映射到低維度的空間。例如,您可以采用以下兩種方式之一來表示英文句子中的單詞:

  • 表示成包含百萬個元素(高維度)的稀疏向量,其中所有元素都是整數(shù)。向量中的每個單元格都表示一個單獨的英文單詞,單元格中的值表示相應單詞在句子中出現(xiàn)的次數(shù)。由于單個英文句子包含的單詞不太可能超過 50 個,因此向量中幾乎每個單元格都包含 0。少數(shù)非 0 的單元格中將包含一個非常小的整數(shù)(通常為 1),該整數(shù)表示相應單詞在句子中出現(xiàn)的次數(shù)。
  • 表示成包含數(shù)百個元素(低維度)的密集向量,其中每個元素都包含一個介于 0 到 1 之間的浮點值。這就是一種嵌套。

嵌套本質(zhì)上是降維,是化稀疏為密集。


嵌套的概念

嵌套是一種映射,將稀疏不連續(xù)的對象映射到實數(shù)向量。

比如下面是300維度的英語單詞嵌套:

blue:  (0.01359, 0.00075997, 0.24608, ..., -0.2524, 1.0048, 0.06259)
blues:  (0.01396, 0.11887, -0.48963, ..., 0.033483, -0.10007, 0.1158)
orange:  (-0.24776, -0.12359, 0.20986, ..., 0.079717, 0.23865, -0.014213)
oranges:  (-0.35609, 0.21854, 0.080944, ..., -0.35413, 0.38511, -0.070976)

向量中的這些單獨的維度并沒有什么具體意義,它們是向量的位置、距離關(guān)系的整體圖式表達,以便于機器學習使用。

嵌套對于機器學習的輸入非常重要。分類器Classifier、神經(jīng)網(wǎng)絡(luò)Neura networks普遍工作于實數(shù)向量Real number vector。訓練Train最好是基于密集向量dense vector,全部所有數(shù)值共同定義對象。但是,對于機器學習來說,很多重要的輸入比如文本的單詞,都沒有自然的向量表現(xiàn)形式,嵌套函數(shù)就是這么一個標準且有效的函數(shù),可以把稀疏離散discrete/sparse的對象變?yōu)檫B續(xù)的向量表示法。

嵌套也作為機器學習的輸出值。由于嵌套將物體映射為向量,應用程序可以使用向量空間相似的方法,強健且靈活的估算物體之間的相似性。一個通用的用途就是發(fā)現(xiàn)最近鄰對象。

比如上面的單詞向量,下面是每個單詞的三個最近鄰單詞,用角度來展示:

blue:  (red, 47.6°), (yellow, 51.9°), (purple, 52.4°)
blues:  (jazz, 53.3°), (folk, 59.1°), (bluegrass, 60.6°)
orange:  (yellow, 53.5°), (colored, 58.0°), (bright, 59.9°)
oranges:  (apples, 45.3°), (lemons, 48.3°), (mangoes, 50.4°)

最后一行數(shù)字告訴應用程序oranges和apples比較近似(分離45.3度),而和lemons,mangoes稍微區(qū)別大一些(48.3,50.4)。


Tensorflow中的嵌套Embedding

為了創(chuàng)建單詞的嵌套,我們首先把文本劃分為單詞,并為每個詞匯指定一個整數(shù)張量。假設(shè)這已經(jīng)完成,word_ids表示包含這些整數(shù)的向量。比如句子,I have a cat.被劃分為['I','have','a','cat',','],對應的word_ids張量是形狀shape[5],由5個整數(shù)組成,比如[32,177,4,23,16]。要把這些單詞映射為向量,我們需要使用tf.nn.embedding_lookup來生成嵌套變量。

word_embeddings = tf.get_variable(“word_embeddings”,
    [vocabulary_size, embedding_size])
embedded_word_ids = tf.nn.embedding_lookup(word_embeddings, word_ids)

如上,張量embedded_word_ids的形狀變?yōu)閇5,embedding_size],包含了5個嵌套(密集矢量)對應每個單詞。訓練結(jié)束后,word_embeddings將包含所有詞匯單詞的嵌套。

#如果Embedding_size=3,那么embedded_word_ids可能是
[[0.438890,0.782233,0.52721],
 [0.645432,0.523233,0.62333],
 [0.412333,0.124522,0.67223],
 [0.145333,0.133422,0.67223],
 [0.988888,0.765556,0.13344],
]

嵌套可以被多種網(wǎng)絡(luò)類型訓練,各種損失函數(shù)和數(shù)據(jù)集。例如,一個使用卷積神經(jīng)網(wǎng)絡(luò)RNN依賴詞庫去預測某個單詞后面的下一個單詞,或者使用兩個網(wǎng)絡(luò)進行語言翻譯。


視覺化嵌套Visualizing Embeddings

Tensorboard中包含的嵌套投影器Embedding projector,它可以交互的顯示嵌套,他可以從模型中讀取嵌套并渲染到3D空間。

Embedding projector有三個面板:

  • Data panel
  • Projections panel
  • Inspector panel

此處省去很多內(nèi)容的翻譯...


探索人工智能的新邊界

如果您發(fā)現(xiàn)文章錯誤,請不吝留言指正;
如果您覺得有用,請點喜歡;
如果您覺得很有用,感謝轉(zhuǎn)發(fā)~


END

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

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

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