神经网络中的嵌入层是一种特殊的层,它将离散的、分类的数据(如单词、ID 或类别)转换为连续的、低维度的向量。 这种转换通过将分类输入表示为密集向量而不是稀疏的高维 one-hot 编码,从而帮助神经网络更有效地处理分类输入。 例如,包含 10,000 个单词的词汇表可以表示为 10,000 维的 one-hot 向量,但嵌入层可能会将每个单词映射到 300 维的向量。 这些向量在训练期间学习,使模型能够捕获类别之间的语义关系(例如,“国王”和“女王”在向量空间中比“国王”和“汽车”更接近)。 嵌入层充当查找表,其中每个类别都分配有一个唯一的向量,该向量会随着网络的学习而更新。
嵌入层的一个常见用例是在自然语言处理 (NLP) 中。 例如,在文本分类任务中,首先将单词转换为整数索引。 嵌入层获取这些索引并输出相应的密集向量,然后将其馈送到后续层(如 LSTM 或 Transformer)。 与 one-hot 编码相比,这种方法降低了计算复杂度,并通过利用单词之间的相似性使模型能够更好地泛化。 例如,如果模型了解到“快乐”和“喜悦”具有相似的嵌入,则它可以将一个的知识应用于另一个。 嵌入层也用于推荐系统中,其中嵌入用户或项目 ID 以捕获原始数据中未明确定义的潜在特征(例如,用户偏好或产品属性)。
从实现的角度来看,嵌入层由两个关键参数定义:输入维度(唯一类别的数量)和输出维度(嵌入向量的大小)。 在 TensorFlow 或 PyTorch 等框架中,添加一个带有这些参数的 Embedding
层非常简单。 在训练期间,嵌入通过反向传播进行更新,就像网络中的其他权重一样。 开发人员可以随机初始化嵌入,也可以使用预训练的值(例如,用于 NLP 的 Word2Vec 或 GloVe 向量)。 一个实际的例子是训练情感分析模型:嵌入层将单词索引转换为向量,然后由循环层处理以预测情感。 嵌入层的效率和灵活性使其成为在神经网络中处理分类数据的基本工具。