趋近智
将文本表示为任意整数序列,例如将“cat”表示为5、“dog”表示为12、“house”表示为87,给机器学习 (machine learning)模型带来了挑战。虽然这提供了一种数字格式,但这些整数本身缺乏固有的含义或语义关联 (semantic relationship)。例如,就含义而言,整数12本质上并不比87“更接近”5,尽管“cat”和“dog”是语义上相关的动物。此外,将大而随意的整数表示直接输入神经网络 (neural network)通常效果不佳。
另一种方法是独热编码(将“cat”表示为 [0,0,0,0,1,0,...],向量 (vector)大小与词汇表 (vocabulary)相同),对于实际规模的词汇表(数万个词),这种方法很快就会变得计算上不可行且数据稀疏。我们需要一种更高效、更有意义的数字方式来表示词语。
这正是嵌入 (embedding)层的作用所在。其核心思想是,将词汇表中的每个独立词元 (token)(词语、字符等)表示为浮点数的密集、相对低维向量,而非单个整数或稀疏向量。这些被称为词嵌入或词元嵌入。
可以把嵌入层看作一个可训练的查找表。
(词汇表大小, 嵌入维度) 的权重 (weight)矩阵。该矩阵中的每行 都对应于整数索引为 的词元的初始嵌入向量。(批次大小, 序列长度) 的序列批次,则输出将是形状为 (批次大小, 序列长度, 嵌入维度) 的张量。整数索引用于在嵌入层的内部权重矩阵中查找对应的密集向量表示。
嵌入层真正的作用在于,嵌入向量 (vector)(查找表中的行)是可训练参数 (parameter)。它们通常随机初始化,然后通过反向传播 (backpropagation)在网络训练过程中进行调整,就像任何其他权重 (weight)一样。
随着网络学习执行其任务(例如,情感分类、语言建模),它会隐式学习在 嵌入维度 空间中排列嵌入向量,从而:
vector("king") - vector("man") + vector("woman") 通常会产生一个非常接近 vector("queen") 的向量。这种学习到的密集表示,与原始整数索引或独热向量相比,为网络的后续层(如RNN、LSTM或GRU)提供了更丰富、更有用的输入信号。输出形状 (批次大小, 序列长度, 嵌入维度) 正是循环层所期望的输入,其中最后一个维度表示序列中每个时间步的每个元素的特征。
实际中,您很少需要自己实现查找机制。像TensorFlow和PyTorch这样的深度学习 (deep learning)框架提供了内置的 Embedding 层,它们高效地处理初始化、查找和训练。您只需将此层作为模型中的第一步添加,置于接收整数编码序列的输入层之后。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•