核心要点

  • 语料决定上限:要领域相关、规模够大,并经清洗、分词、去低频词后再构建词表

  • 关键超参:window 控制语义/句法侧重,维度常取 100-300,min_count 过滤低频,负采样数 5-20,外加 epoch学习率

  • 维度按任务与语料规模权衡:太大易过拟合且浪费算力,太小则欠表达、语义区分不足

  • 训练时长靠负采样/层次 softmax/多线程提速,用类比或下游任务评估并早停

标准回答

一、语料获取与预处理

  • 领域相关:电商搜索就用商品标题/query 日志,做通用语义才用百科、新闻、爬虫文本,领域不匹配时词向量会偏
  • 规模够大:词向量靠共现统计,语料太小会导致大量词训练不充分,通常单领域至少数千万到上亿 token
  • 清洗与分词:去 HTML/乱码、做大小写或繁简归一,中文需先分词(jieba 等),并按需保留或拆分专有名词
  • 构建词表:统计词频后用 min_count 去掉极低频词,既压缩词表又避免噪声词污染,OOV 留给后续兜底

二、超参数怎么定

  • window 窗口:窗口小(2-5)偏重句法/搭配,窗口大(8-10+)偏重主题/语义,按任务取舍
  • 维度 dim:常用 100-300,下面单独展开
  • min_count:典型 5-20,语料越大可设越高,过滤长尾噪声词
  • 负采样数 negative:小语料取 10-20,大语料取 5 左右即可收敛,比层次 softmax 更常用
  • epoch / 学习率:epoch 一般 5-15,语料小可多轮;学习率从 0.025 线性衰减到接近 0

三、维度如何权衡

  • 维度本质是表达能力与过拟合/算力的权衡:语料大、任务复杂可上 300;语料小、任务简单用 100-150 更稳
  • 维度太大而语料不足会过拟合、稀疏方向噪声大;太小则不同词挤在一起、语义区分度差
  • 实践做法:固定其它超参,在 100/200/300 上各训一版,用下游指标选最优

四、训练时长怎么把握

  • 提速手段:负采样层次 softmax 把 softmax 复杂度从 |V| 降下来,配合多线程(gensim 的 workers)吃满 CPU
  • 子采样高频词(sample 参数)既能加速又能提升低频词质量
  • 不要只看 loss:用词类比(king-man+woman≈queen)、相似词检索或直接接下游任务评估,指标不再提升即早停,避免无意义多训

常见误区

⚠️ 常见踩坑

常见误区一:盲目堆大维度,以为维度越高越好,结果在小语料上过拟合且推理变慢;维度要和语料规模匹配。误区二:min_count 设太低,把大量噪声长尾词塞进词表,既拖慢训练又稀释有效共现信号。误区三:只盯训练 loss 下降而不做下游或类比评估,导致训不充分或过度训练都察觉不到。误区四:忽视分词与清洗质量,脏语料直接训出来的向量语义混乱,再调超参也救不回来。

追问

追问 1Skip-gram 和 CBOW 在训练上怎么选?

CBOW 用上下文预测中心词,训练快、对高频词友好,适合大语料追求速度;Skip-gram 用中心词预测上下文,对低频词和小语料表现更好,但更慢。实践中数据偏小或重视长尾词选 Skip-gram,数据极大、求快选 CBOW。

追问 2负采样和层次 softmax 如何取舍?

负采样按噪声分布采少量负样本做二分类,实现简单、对高频词效果好,是目前默认首选,采样数小语料大、大语料小。层次 softmax 用 Huffman 树把复杂度降到 log|V|,对低频词更友好、词表极大时有优势,但实现复杂、整体已不如负采样常用。

追问 3OOV(未登录词)和新词怎么处理?

Word2Vec 词表固定,OOV 没有向量。常见做法:用 FastText 引入子词 n-gram,可为未登录词由字符片段拼出向量;或对 OOV 做归一化/同义词映射、用平均向量兜底;若新词持续涌入,则需定期增量或重训词向量来覆盖。

🔗 相似问题

同一考点的不同问法,面试官可能换着问,一起刷更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习