AI 大模型能理解语言,第一步就是把词变成数字。词向量和 one-hot 编码做的是同一件事,路线却完全相反:一个走稀疏,一个走稠密,这个分叉决定了后面所有上层能力的形态。
两种表示,一张表先看结论
one-hot 编码的思路很直白:词典里有 N 个词,就准备一条长度为 N 的向量,目标词所在位置写 1,其余位置全部写 0。词向量则把每个词固定压成一小串实数,常见长度从几十维到上千维,而且每一维都带着具体数值。
- 向量长度:one-hot 随词表大小膨胀,词向量固定为几十至上千维
- 稀疏程度:one-hot 只有一个 1,词向量几乎每个位置都有值
- 语义关系:one-hot 下任意两词都互相垂直,词向量下近义词彼此靠近
- 使用场景:one-hot 多见于早期文本分类,词向量是大模型输入层的地基
one-hot:一个词占一条长线
假设词典有三万个词,「猫」就是第 8765 位为 1、其余两万九千多位全为 0 的向量。它不需要训练、实现简单,早期垃圾邮件过滤、关键词匹配、朴素贝叶斯文本分类都靠它起步。
短板同样直观:一条向量里只有一个 1,存储和矩阵运算都在为大量零付出代价;更关键的是,「猫」和「狗」在空间里同样垂直,模型无法从表示本身看出二者都是动物,只能再靠人工规则把语义补回来。
词向量:把意思压进一小串数字
词向量把词义拆到多个连续维度上:物种、性别、时态、情感倾向各自占一些分量。训练完成后,「猫」与「狗」的向量夹角很小,「猫」与「汽车」的夹角很大,远近关系可以直接用余弦相似度算出来。
今天的大模型并不只靠查一张静态词表完事:输入会先把 token 映射成稠密向量,再交给多层 Transformer 加工。你在 DeepSeek、文心一言里敲下的每句话,都要先走这一步,地基从稀疏长线换成稠密短串,上层结构才敢往大规模做。
从稀疏到稠密,变了什么
变化首先是信息密度:one-hot 用几万个数字装一个词,词向量用几百个数字装一个词,后者的每一维都在参与表意。其次是使用方式:one-hot 之后往往要紧跟人工特征工程,词向量之后可以直接接神经网络端到端训练。
还有一个常被忽略的差异是扩展性。one-hot 遇到词典外的新词只能单独加一列,整套表示跟着膨胀;词向量可以按子词切片,给没见过的词拼出一个合理向量,这正是今天大模型能处理新词、错别字和中英混合输入的基础。
从工程视角看,这次换轨还改变了硬件的用法。稀疏表示让矩阵运算退化成查表,算力大量闲置;稠密表示让每次计算都落在连续内存上,GPU 的并行能力才真正被用满,训练规模也才有了继续放大的空间。
换成稠密之后,四处变化最值得记住。
| 变化维度 | one-hot 稀疏表示 | 词向量稠密表示 |
|---|---|---|
| 信息密度 | 几万个数字装一个词,只有一个 1 | 几百个数字装一个词,每一维都参与表意 |
| 使用方式 | 之后往往要紧跟人工特征工程 | 之后可以直接接神经网络端到端训练 |
| 扩展性 | 词典外新词只能单独加一列,整套表示跟着膨胀 | 可按子词切片,给没见过的词拼出合理向量 |
| 硬件用法 | 矩阵运算退化成查表,算力大量闲置 | 计算落在连续内存上,GPU 并行能力被用满 |
可带走的判断是:看到「稀疏」「稠密」这对说法别当成玄学,它描述的是一条向量里真正有值的比例;比例越低,浪费越大,语义也越难直接参与计算。想理解向量之上还有哪些结构分叉,可以接着看模型家族的变体怎么挑,也可以对照生成式模型和判别式模型的差别,以及专家数不同的 MoE 有什么差异。
关于词向量的三个常问问题
- one-hot 是不是完全没用了?:在小词典、小样本的规则系统里它仍然轻便可靠,但要做开放域语义理解,词向量是更合适的地基。
- 词向量的长度是固定好的吗?:模型设计时定死,常见几百到几千维,同一模型内所有词共用一套长度,不随词表增减而变化。
- 换了分词器,词向量还能通用吗?:它和具体模型绑定,跨模型直接套用会错位,需要按目标模型的词表重新映射。


