求通俗講解下tensorflow的embedding_lookup介面的意思?
從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應該是沒有距離可以定義,沒有物理意義,只是一種特殊的全連接層。
4、用embedding_lookup做id類特徵embedding由google的deepwide提出,但隱藏了具體實現細節。阿里 第七章 人工智慧,7.6 DNN在搜索場景中的應用(作者:仁重) 中提下了面對的困難,主要是參數數量過多(引入紫色編碼層)和要使用針對稀疏編碼特別優化過的全連接層( Sparse Inner Product Layer )等。
5、在分類模型中用這種id類特徵,主要是希望模型把這個商品記住。但id類特徵維度太高,同一個商品的數據量也不大,因此也常常用i2i演算法產出的item embedding來替代id特徵。
一般做自然語言相關的。需要把每個詞都映射成向量,這個向量可以是word2vec預訓練好的,也可以是在網路里訓練的。在網路里需要先把詞的id轉換成對應的向量,這個函數就是做這件事的。
就是根據train_inputs中的id,尋找embeddings中的對應元素。比如,train_inputs=[1,3,5],則找出embeddings中下標為1,3,5的向量組成一個矩陣返回。
就是個字典,key-value取詞向量的。如果自己訓練了詞向量就不需要這個東西了。
推薦閱讀:
※用Tensorflow自動化構建海洋生物系統,利用上萬的圖片訓練,找到瀕臨物種「海牛」是什麼原理?
※請問batch_normalization做了normalization後為什麼要變回來?
※當tensorflow模型超過單張顯卡顯存的時候,應該怎麼拆分到多個GPU上運行?
※tensorflow是如何求導的?
※怎麼理解tensorflow中tf.train.shuffle_batch()函數?
TAG:機器學習 | 自然語言處理 | 深度學習DeepLearning | TensorFlow |