神经网络 Embedding层理解

Embedding:高维稀疏特征向量到低维稠密特征向量的转换;嵌入层将正整数(下标)转换为具有固定大小的向量

Embedding 字面理解是 “嵌入”,实质是一种映射,从语义空间到向量空间的映射,同时尽可能在向量空间保持原样本在语义空间的关系,如语义接近的两个词汇在向量空间中的位置也比较接近。
神经网络 Embedding层理解

应用:

在深度学习推荐系统中,Embedding主要的三个应用方向:

1、在深度学习网络中作为Embedding层,完成从高维稀疏特征向量到低维稠密特征向量的转换;

2、作为预训练的Embedding特征向量,与其他特征向量连接后一同输入深度学习网络进行训练;

3、通过计算用户和物品的Embedding相似度,Embedding可以直接作为推荐系统或计算广告系统的召回层或者召回方法之一。

代码简单说明

keras Embedding接口:
神经网络 Embedding层理解
Embedding(4, 3, input_length=5) :
1)4是词表去重后的总数量,例如这里np.array([[0,1,2,1,1],[0,1,2,1,3]])共0、1、2、3四个数字,所以词表数为4
2)3是输出单个词向量维度
3)5是input_length输入的长度np.array([[0,1,2,1,1],[0,1,2,1,3]])中[0,1,2,1,1]长度为5

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

model = Sequential()
model.add(Embedding(4, 3, input_length=5))  

model.compile('rmsprop', 'mse')
data = np.array([[0,1,2,1,1],[0,1,2,1,3]])

res1 = model.predict(data)
res1
上一篇:一款embedding可视化工具(转)


下一篇:PyTorch 词向量(Word Embedding)