
什么是 One-Hot 编码One-Hot 编码是一种将离散类别变量转换为向量的表示方法。对于有 N 个类别的词表每个词用一个长度为 N 的向量表示其中只有该词对应的位置为 1其余全部为 0。示例假设词表为[自然, 语言, 处理, 很有趣]N4自然 → [1, 0, 0, 0] 语言 → [0, 1, 0, 0] 处理 → [0, 0, 1, 0] 很有趣 → [0, 0, 0, 1]句子自然语言处理的表示按位相加[1, 1, 1, 0]表示文本的主要缺点1. 维度灾难向量维度等于词表大小。实际应用中词表通常有数万到数十万词词表 50000 词 → 每个词向量长度 50000每个向量只有 1 个位置为 1其余 49999 个位置全为 0极度稀疏存储和计算浪费严重。2. 无法表达语义相似度任意两个不同词的 One-Hot 向量之间的距离完全相同猫 → [1, 0, 0, 0, ...] 狗 → [0, 1, 0, 0, ...] 汽车 → [0, 0, 1, 0, ...] cos(猫, 狗) 0 cos(猫, 汽车) 0猫和狗的语义明显比猫和汽车更接近但 One-Hot 编码完全无法体现这种关系——所有词两两正交语义信息为零。3. 无法处理未登录词词表中没有的词无法表示。每遇到新词就必须扩展词表并重新编码缺乏泛化能力。4. 忽略词序信息One-Hot 编码本身不包含位置信息。将句子表示为词向量的简单组合如求和或平均后狗咬人和人咬狗的表示完全相同。5. 稀疏性导致模型效率低大量零值参与矩阵运算既不携带信息又消耗计算资源。在深度学习中稀疏 One-Hot 向量经过第一层全连接层时梯度更新极其低效。与词嵌入的对比维度One-Hot 编码词嵌入Word2Vec / BERT维度 词表大小数万通常 100~768低维稠密稀疏性极度稀疏仅 1 个非零稠密大部分位置非零语义关系无所有词正交有相似词向量距离近未登录词无法表示子词方法可部分处理存储开销大小何时仍会使用尽管缺点明显One-Hot 在以下场景仍有价值小规模类别特征类别数较少时如性别、星期几简单有效与嵌入层配合深度学习中先用 One-Hot 作为索引再通过 Embedding 层映射为低维稠密向量基线模型快速搭建文本处理 pipeline 的初始版本一句话总结One-Hot 编码是最朴素的文本向量化方法致命缺陷是维度高、极度稀疏、且完全丢失语义信息——所有词在向量空间中两两正交无法表达词与词之间的相似性。现代 NLP 普遍用词嵌入替代它来解决这个问题。