以 **SkipGram 负采样工业最常用静态词向量训练方式** 举例全程围绕词向量表一张数字表格从随机初始化逐轮跟着文本一点点修改数值直到不再明显变化就收敛停止。一、第一步预处理原始文本建好初始空白词向量表1. 原始文本举例苹果很甜香蕉好吃苹果水果香蕉水果汽车能开1. 分词[苹果、很甜、香蕉、好吃、苹果、水果、香蕉、水果、汽车、能开]2. 统计词频过滤极低频次字min_count生成词典表格单词编号 idPAD0UNK1苹果2香蕉3水果4汽车5总词汇量\(V6\)设定向量维度\(d3\)词向量表尺寸6 行 ×3 列。3. 初始化整张表格全部填很小的随机正负小数无任何语义完全乱码 初始随机词向量表表格id词语初始随机向量0PAD[0,0,0]固定不变1UNK[0.21, -0.15, 0.33]2苹果[-0.42, 0.11, -0.25]3香蕉[0.35, -0.22, 0.18]4水果[-0.12, 0.41, 0.26]5汽车[0.55, -0.31, -0.22]此时数字毫无含义只是随机占位训练本质就是反复修改表格里每一个浮点数。2. 用滑动窗口切分训练样本window2规则从文本语料中选 1 个中心词左右各 2 个词 上下文。例中心词 苹果上下文很甜、香蕉 → 训练配对(苹果→很甜)、(苹果→香蕉)模型学习目标经常一起出现的词表格里的数字慢慢变得接近从不一起出现的词数字差距越拉越大。二、单轮迭代1 个训练样本完整更新词向量表-与算法密切相关目标输入中心词查表向量尽量猜对上下文单词猜错就反向微调表格数值搭配负采样1 个真实上下文正样本 5 个随机无关词负样本。举例样本正样本【苹果→香蕉】负样本随机选【苹果→汽车】前向计算查表拿出「苹果」向量通过简易网络计算希望苹果预测香蕉概率≈1正例希望苹果预测汽车概率≈0负例算损失误差如果预测偏离目标就算出误差值。反向传播核心修改词向量表数字按照学习率微调苹果、香蕉、汽车三行的所有 3 个浮点数苹果、香蕉同步靠拢对应位置数值互相靠近苹果、汽车互相远离对应位置数值差距拉大✅ 关键每处理一组样本词向量表里对应词语的数字就改动一次整张表动态更新。 处理完全部文本所有样本 1 个 epoch一轮完整迭代。三、多轮 epoch 迭代全过程一轮又一轮反复过全量语料第 15 轮快速变化期表格随机数字大幅改动 苹果、香蕉、水果频繁配对出现三者向量持续靠近 汽车很少和水果类词语共现向量持续和水果类拉开距离 表格数值变化幅度很大损失快速下降。第 630 轮缓慢微调期高频搭配已经基本成型只有低频词语小幅修正数值每轮整体损失下降幅度越来越小。N 轮后收敛停止训练定型为静态词向量训练结束后词向量表格彻底冻结数值不再改动一词永久固定一行向量 静态词向量。训练后的成品向量直观效果表格id词语训练完成向量2苹果[0.61,0.22,-0.55]3香蕉[0.58,0.25,-0.52]4水果[0.53,0.30,-0.48]5汽车[-0.62,0.28,0.35]苹果 / 香蕉 / 水果数值高度近似和汽车数值差异巨大。四、收敛停止的 3 个判定条件满足任意一个就结束训练1. 损失收敛最常用连续多轮 epoch全局损失下降幅度小于设定阈值如 0.0001模型几乎学不到新知识停止训练。 含义再改词表里的数字预测准确度几乎不再提升。2. 到达预设最大迭代轮数 epoch人为提前设定最多迭代 30 轮 / 50 轮跑完直接停止预训练词向量通用方案。3. 词向量空间趋于稳定连续多轮绝大多数词语向量变动幅度小于极小阈值词语之间相对位置不再变化。五、GloVe/FastText 简要区别同样是修改词向量表GloVe先统计全局词语共现次数依托共现值约束数值一边用全局统计、一边用上下文迭代修改向量表FastText额外把单词拆成字符子串子词也存入词表单词向量 自身 所有子词向量之和同样迭代更新整张表格。六、一句话总结全过程原始文本分词建词典词向量表随机填数滑动窗口拆分上下文配对样本逐个样本前向预测算误差反向一点点修改表格浮点数值一轮 epoch 改完整篇语料多轮迭代不断优化直到满足收敛条件停止更新表格固化得到永久不变的静态词向量。