https://www.zhihu.com/question/48107602
鏈接:https://www.zhihu.com/question/48107602/answer/159801895
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
從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的deep&wide提出,但隱藏了具體實現細節。阿里 第七章 人工智能,7.6 DNN在搜索場景中的應用(作者:仁重) 中提下了面對的困難,主要是參數數量過多(引入紫色編碼層)和要使用針對稀疏編碼特別優化過的全連接層( Sparse Inner Product Layer )等。
5、在分類模型中用這種id類特征,主要是希望模型把這個商品記住。但id類特征維度太高,同一個商品的數據量也不大,因此也常常用i2i算法產出的item embedding來替代id特征。
一般做自然語言相關的。需要把每個詞都映射成向量,這個向量可以是word2vec預訓練好的,也可以是在網絡里訓練的。
在網絡里需要先把詞的id轉換成對應的向量,這個函數就是做這件事的。