第 10 章 从稀疏表示到 Word2Vec 与神经语言模型
10.1 什么信息,能把“酒店”与“住宿”联系起来?
Section titled “10.1 什么信息,能把“酒店”与“住宿”联系起来?”第 9 章的“酒店补助”没有命中,尽管文档集中已有相关住宿制度。Keyword、Count、TF-IDF 都需要文档词表中的词项重合;把 IDF 调大,也不能凭空给不同拼写造出共同坐标。这个失败引出另一个问题:能否利用相似语境中的出现情况,让不同词共享有用的数值特征?
什么才算改善,也应先说清楚。比较 检索 时,沿用 KA-0 的五份文档、九个查询、相关性标注和放弃预测规则;比较 语言预测 时,让每个语言模型给相同的下一 Token 事件计分。文档名次不能替代语言模型概率,困惑度更低也不能单独证明检索更好。
本章先检查一套有意给定的静态表示,再解释哪些训练信号可以学出表示,最后把一个小型神经语言模型从 ID 跟踪到损失。手工向量、实际训练结果与文献中的学习目标,是三种不同的证据。
10.2 让不同词共享特征,而不是各占一列
Section titled “10.2 让不同词共享特征,而不是各占一列”BoW 为每个词表项分配一个坐标。另一种安排是给每个词一行更短的数值,再把一份文档里的各行组合起来。同一个坐标可以为许多词作贡献,不再专门对应一种拼写,这叫作 分布式表示(distributed representation)。与一大片主要记录词项缺席的坐标相比,如果用较短的一组普通数值坐标存储,通常称为 稠密嵌入(dense embedding)。稠密表示也可以含零;“稠密”不表示每个坐标都非零,更不表示已经理解语义。
例 10.1 — 一套完整的手工诊断向量。 为单独观察共享特征的作用,给各词指定下面三维向量。这些是假设, 不是 Word2Vec 或 GloVe 的训练结果。仅在这个例子里,我们有意把三维叫作住宿/地点、订单、铁路;学习得到的嵌入轴并不会自动拥有这些名称。
表 10.1 — 给定静态映射中的全部非默认行。 未分配的词,包括两个金额,都贡献 [0,0,0]。
| 词项 | 给定向量 |
|---|---|
| 北京、住宿、酒店、补助 | [1,0,0] |
| 订单、处理中、审批 | [0,1,0] |
| 火车 | [0,0,1] |
| 600、750 | [0,0,0] |
用各 Token 向量的算术平均表示卡片,分母也计入零向量所在的 Token。于是 A 变为 [2/3,0,0],B 为 [3/4,0,0],C 为 [3/4,0,1/4],D、E 都为 [0,1,0]。查询“酒店补助”的平均向量是 [1,0,0]。它与 A、B 的余弦均为 1,与 C 为 ,与 D、E 为零。同分规则选择 A。
按照查询 4 的 寻找任一版本来源 契约,这次成功了,因为 A、B 都相关。但它没有成功认证当前限额为 750 元。事实上,同一映射让 A、B 的方向重合,也让处理中与审批变成同一行。它修复一次词法漏检,却破坏了其他问题所需的区别。从八维缩到三维,不是语义变好的证据。
这套表示是 静态(static) 的:映射固定后,同一个词每次出现都取同一行。改变其他词,文档平均向量仍会变化;但无法让眼前这个词根据当前词义取不同的一行。要选择有用的行,需要训练证据;之后还需要更直接地使用上下文。
10.3 用邻近词提供学习信号
Section titled “10.3 用邻近词提供学习信号”分布假设(distributional hypothesis) 指出了一类可利用的证据:出现在相似语言环境中的词,往往在含义或功能上有相近之处。假设英文 hotel 与 lodging 都经常出现在 room、night 附近,让它们的表示帮助预测这些邻近词,训练就可能促成共享特征。这是一种可利用的倾向,不是同义关系定理;反义词也会出现在相似语境里,主题相关更不等于意思相同。
Word2Vec 是一类词表示训练架构的名称。 连续词袋(continuous bag of words,CBOW) 把周围词的表示组合起来预测中心词; Skip-gram 则用中心词预测周围词。这样的上下文可能同时包含左右两边,与从已知过去预测尚未出现的下一个 Token 的从左到右语言模型不同。Mikolov 等,2013,第 3.1—3.2 节
例 10.2 — 看清一次 Skip-gram 预测在奖励什么。 另设一个缩小且数值给定的训练情形:中心词为 hotel,输入向量 ;上下文目标只有 room 与 train,输出向量分别为 、。点积得到 [ln 3,0],Softmax 得到 [3/4,1/4]。如果实际观察到的邻近词是 room,损失就是 。
这个训练信号鼓励提高实际邻近词相对于另一个候选的分数。借助第 7 章的链式法则,损失可以同时改变中心词输入行与上下文输出行。另一个中心词若反复预测相似邻近词,共享的预测任务就提供了统计信息共享的途径。上面的数值只展示给定条件下的目标函数,并不声称实际训练过 Word2Vec。
使用完整 Softmax 的 Skip-gram,其目标概率可以写成
是中心词, 是实际邻近词, 是上下文目标词表。即使拼写集合相同,输入行 与输出行 也承担不同职责。代入刚才两行,就恢复 。对很大的词表求和,成本较高。 负采样(negative sampling) 改用区分观测词对与选定噪声词对的对比目标;它不能直接当成归一化的下一 Token 分布,也不能直接用来报告语言模型困惑度。Mikolov 等,2013,第 2 节
GloVe 使用另一种学习信号:先收集词与上下文的共现计数,再用点积和偏置拟合计数的对数。假设手工给定 hotel–room 共现 4 次,hotel–train 共现 1 次,拟合目标就是 与 ,不是概率 4 和 1。其目标具有以下形式:
是按明确上下文规则得到的共现计数,向量和偏置是要拟合的参数。括号里是以对数计数为尺度的预测误差,平方会惩罚正负两种偏差; 为不同计数范围分配权重,而不是让每项计数以同样方式主导计算。零计数项在取对数前就省略,与零处权重为零的约定相符;不能先算 log(0),再让无穷大乘零。这说明了全局共现证据怎样训练静态行,并未复现论文的大语料实验。Pennington 等,2014,第 3 节
10.4 把神经语言模型的一次预测跟踪到底
Section titled “10.4 把神经语言模型的一次预测跟踪到底”神经语言模型(neural language model,NNLM) 可以直接围绕下一 Token 预测,与其他参数一起学习嵌入。它用共享数值运算替代第 4 章中分别保存的上下文计数行:查出末尾几个 Token 的向量,组合起来,算隐藏值,产生 logits,再给已知的下一 Token 计分。Bengio 等人的模型确立了这种固定窗口与表示联合学习的思路。下面采用本书原创的小型简化版本,不复现论文的实测配置。Bengio 等,2003,第 2 节
例 10.3 — 参数全部给定的两词窗口预测。 词表按 beijing, lodging, 750, EOS 排列,ID 为 0—3。上下文是 beijing lodging,ID 为 [0,1];给定的下一 Token 目标为 ID 2,即 750。这张四项纸笔词表,与第 3 章 tokenizer 及下文实测词表分别定义。参数全部由作者手工给定,数值无量纲。
查表矩阵为
四种 Token 各有两个坐标。只有一个样本时,ID 形状为 [B,W]=[1,2], 是窗口长度。查表得到两行 [[1,0],[0,1]],形状为 [B,W,C]=[1,2,2]。 按位置顺序拼接,得到 ,形状为 [1,4]。拼接是把坐标接到后面,不是把向量相加,更不是把 ID 相加。
给定隐藏层矩阵与偏置:
的形状是 [W×C,J]=[4,2],其中 表示隐藏坐标数。第一个输出是 ,第二个是 。加上零偏置,再过 ReLU,仍为 ,形状 [1,2]。
最后给定
的形状为 [J,V]=[2,4], 对每个输出候选各有一项。logits 为 ,形状 [1,4]。取指数得到 [1,1,3,1],总和为 6,目标概率为 ,目标损失为 。参与计算的矩阵、偏置、输入 ID 和目标,至此全部给齐。
- 行编号beijing、lodging → ID [0,1],形状 [1,2]
- 模型保存的数值E[0]=[1,0];E[1]=[0,1] → [1,2,2]
- 一组数字拼接 → [1,0,0,1],形状 [1,4]
调换上下文顺序会改变拼接结果,即使平均向量不变。
- 处理步骤ReLU(xH+b) → [1,1],形状 [1,2]
- 一组数字hU+d → [0,0,ln 3,0],形状 [1,4]
- 处理步骤目标 ID 2:p=3/6=1/2;损失=ln 2
完整模型可以用同一个损失更新 E、H、U 和偏置;本图数值由作者给定,并非训练所得。
图 10.1 在展平之前,保留了位置维与坐标维的区别。通用路径是先算 ,再算 。反向传播可以一起更新 。查表选中的是参数行,不是对 Token 整数 ID 求导;同一共享行会收到所有使用它的位置传来的贡献。
把上下文倒过来,变成 lodging beijing,拼接结果就变为 [0,1,1,0]。乘以给定的 得到 [0,0],四个 logits 都是零,目标概率降为 。如果取两行平均,结果却仍是 [1/2,1/2]。拼接可以保留窗口内的词序,平均则不行。
10.5 实际运行小模型,分清它与检索的任务
Section titled “10.5 实际运行小模型,分清它与检索的任务”实际 CPU 实验把五张 KA-0 索引卡作为五条规范词项序列进行训练。两种语言的 tokenizer 把作者给定的平行文本映射到这些词项符号,这不是学会中英翻译的证据。每条序列开头加两个仅作输入的 BOS,末尾计入一个 EOS,共有 20 个训练事件,上下文不跨文档边界。
输出词表为 EOS, beijing, lodging, 600, 750, train, order, processing, approval,ID 为 0—8;输入表再加入 ID 9 的 BOS。因此,实测嵌入表的形状是 [10,4],与例 10.3 的 [4,2] 不同。一个包含 20 个事件的批次,依次经过 [20,2] → [20,2,4] → [20,8] → [20,8] → [20,9],分别对应 ID、嵌入、拼接、隐藏值、logits。目标形状为 [20]。BOS 不参加输出候选,EOS 参加计分。查表矩阵提供 个参数,隐藏层提供 个,输出层提供 个,合计 个可训练数值。
表 10.2 — 固定的语言预测划分。 表中每条序列都另计末尾 EOS。这些短变体是作者构造的诊断数据,不是有代表性的语言语料。
| 划分 | 序列 | 计分事件数 |
|---|---|---|
| 训练 | 表 9.1 中五张完整索引卡对应的规范词项 | 20 |
| 验证 | beijing lodging 750;order order processing | 8 |
| 测试 | beijing lodging lodging 600;beijing train | 8 |
固定种子 23、CPU float64、一个线程、嵌入维度 4、隐藏层宽度 8、ReLU,采用学习率 0.03 的 Adam,完整批次更新 200 次。按最早达到最低验证平均损失的规则,选中第 10 步:训练损失 1.258041,验证损失 1.454214。选完后才给两个测试序列计分。这次本地运行已经完成,记录包含各步损失、模型数值、散列和耗时,不使用预训练权重或模型账号。
表 10.3 — 每个留出目标,由两个可比的语言模型计分。 计数基线是 Token 三元语言模型,在同样九个输出候选上做加一平滑,拟合同样五条训练序列。不同序列中的重复上下文仍分别计分。
| 上下文 | 目标 | 计数模型的目标概率 | NNLM 的目标概率 | 计数模型首选 | NNLM 首选 |
|---|---|---|---|---|---|
| BOS, BOS | beijing | 0.626829 | beijing | beijing | |
| BOS, beijing | lodging | 0.206176 | lodging | beijing | |
| beijing, lodging | lodging | 0.198903 | lodging | lodging | |
| lodging, lodging | 600 | 0.050457 | 750 | EOS | |
| lodging, 600 | EOS | 0.735836 | EOS | EOS | |
| BOS, BOS | beijing | 0.626829 | beijing | beijing | |
| BOS, beijing | train | 0.044952 | lodging | beijing | |
| beijing, train | EOS | 0.418215 | EOS | EOS |
先独立复核一个计数分数。训练中,beijing lodging 后面一次接 600,一次接 lodging。加一平滑后,目标 lodging 的分子为 2,分母为 。lodging lodging 后面只见过一次 750,因此没见过的 600 得到 。共享数据在神经代码运行之前就保留了全部计数分数。
按第 6 章方法,对包含 EOS 的八个负自然对数求平均。计数语言模型得到 1.700367 nat、困惑度 5.475957,首选猜中 6/8;NNLM 得到 1.424429 nat、困惑度 4.155483,首选猜中 5/8。平均似然更好,却猜中得更少,两者可以同时发生:NNLM 给部分实际目标,包括几个 EOS,更大概率,但仍漏掉其他目标。这两组结果都不能证明当前制度问答更好,它们只衡量这八个具体事件的语言预测。
10.6 把学到的行,用回原来的检索任务
Section titled “10.6 把学到的行,用回原来的检索任务”可以取出训练后 NNLM 的输入行,对每张 KA-0 卡片或每个查询求平均,再评估余弦检索。这是对已学参数的另一种用法:NNLM 优化的是下一 Token 损失,不是文档相关性。本诊断给未知词零向量;平均组合也会丢掉 NNLM 在语言预测时通过拼接保留的顺序。
表 10.4 — 用于检索的八个实际学习词项行。 数值来自第 10 步快照,显示六位小数;完整精度文件两版共享,没有给任何坐标轴指定语义名称。
| 词项 | 坐标 0 | 坐标 1 | 坐标 2 | 坐标 3 |
|---|---|---|---|---|
| beijing | 0.569753 | −0.722903 | −0.734649 | 0.059505 |
| lodging | −0.795324 | 0.581996 | −1.227129 | 0.518582 |
| 600 | −2.142605 | 0.133056 | 0.276963 | 2.535696 |
| 750 | −0.374394 | 1.196375 | 1.021346 | 0.727679 |
| train | 1.584991 | 0.127829 | −0.787009 | −0.355882 |
| order | 0.718588 | 0.659329 | −0.136400 | −0.680204 |
| processing | 1.036222 | 1.458809 | −0.177986 | 0.490404 |
| approval | 1.488073 | 0.489607 | 0.885100 | 1.945827 |
对查询 1,平均 beijing 和 lodging 两行;对 B,则平均 beijing、lodging、lodging、750 四行。两者的余弦为 0.734791,与 A 的余弦则为 0.642097,因此 B 排第一。这些数由学习行和指定组合规则算出,并不能说明某个坐标就叫“当前”。
表 10.5 — 原有全部查询上的检索对照。 Count、TF-IDF 各有八个坐标,给定静态映射有三个,学习行的平均表示有四个。新方法列出完整排序,首位即预测;横线表示放弃预测,全零存储顺序为 A—E。原有词法完整排序仍见表 9.7。
| 查询 | Count 首选 | TF-IDF 首选 | 给定静态向量排序 | NNLM 行平均排序 |
|---|---|---|---|---|
| 1,当前住宿 | B | B | A > B > C > D > E | B > A > C > D > E |
| 2,地名与状态 | C | D | A > B > D > E > C | D > E > C > B > A |
| 3,明确 750 | B | B | A > B > C > D > E | B > A > D > E > C |
| 4,酒店补助 | — | — | A > B > C > D > E | — |
| 5,历史 600 | A | A | A > B > C > D > E | A > B > E > C > D |
| 6,处理中 | D | D | D > E > A > B > C | D > E > C > B > A |
| 7,审批 | E | E | D > E > A > B > C | E > D > C > B > A |
| 8,旧前提 | A | A | A > B > C > D > E | A > B > C > E > D |
| 9,范围外 | — | — | — | — |
| 成功案例数 | 6/9 | 7/9 | 4/9 | 7/9 |
给定映射修复同义查询,是因为我们明确给了相关词相同方向;它也把审批与处理中混在一起,无法按方向区分制度版本。学习行平均在这份小集合上的首选成功数,碰巧与 TF-IDF 相同,但后续名次不同。它仍漏掉同义查询,因为 hotel 与 allowance 都没有出现在训练词表里。采用神经模型,并不会免费得到一个从未学习过的词项行。
查询 8 在所有表示下仍然失败。它的已知词恰好重现旧卡片方向,在那里得到余弦 1。版本处理与当前意图识别仍是缺失能力。持续演进 KA 时,应把词法结果与新结果一起保留,不能做完一次有利比较,就替换掉原有基线。
10.7 静态行混合词义,窗口还会彻底丢掉线索
Section titled “10.7 静态行混合词义,窗口还会彻底丢掉线索”英文 train 很容易展示多义:它可以指火车,也可以表示训练模型。实际小语料里只有铁路含义。一条冻结的向量,无法在 train a model 中自行切换词义。其他词可以改变整句平均向量,但 train 那一行本身没变。基本形式的 Word2Vec、GloVe 也给出静态行;即使用更大语料训练,也可能只是把不同词义混在一行,而不是为每次出现选定当前词义。
固定窗口 NNLM 还有另一种限制。它能利用窗口里的不同词组合,但窗口外的线索根本不在输入中。如果输入映射已经让两种情况完全相同,增加隐藏层宽度或延长训练,都找不回被移除的信息。
例 10.4 — 排除未知词问题,证明窗口碰撞。 单独声明词表 red, blue, filler, key, is,ID 为 0—4。诊断提示开头给出钥匙颜色,中间重复六个相同填充 Token,末尾用 key is 要求补出颜色,正确输出就是开头的颜色。两条 ID 序列分别为 [0,2,2,2,2,2,2,3,4] 和 [1,2,2,2,2,2,2,3,4],目标分别为 red 和 blue。
窗口长度为 2 时,两种输入都变成 [3,4]。只要参数固定,无论隐藏层多宽,两者的输出分布都相同。这是指定接口下的表示能力限制,不是让 KA 实测模型处理未知词后测得的一次准确率失败。按确定的首选颜色规则,模型不可能把两题都答对;随机选出不同输出,也不会让选择依赖已经丢失的线索。
- 文本片段red、filler × 6、key、is
- 行编号可见的末尾窗口:[3,4]
- 应用保存的记录应答颜色:红(0)
开头的颜色已经离开窗口。
- 文本片段blue、filler × 6、key、is
- 行编号可见的末尾窗口:[3,4]
- 应用保存的记录应答颜色:蓝(1)
输入 ID 相同、参数固定,输出概率分布就相同。
图 10.2 把两种不同线索放在相同末尾窗口之外。增大窗口可以把边界往前推,但也会扩大拼接输入及其后矩阵,仍然存在有限边界。通向第 11 章的问题已经很具体:能否在 Token 逐个到来时,把某种状态向前传,让早先信息不必全部装进固定长度拼接里?循环机制从那里开始,本章不假定它已经实现。
10.8 实践记录与本章小结
Section titled “10.8 实践记录与本章小结”05-representations-and-nnlm.ipynb 会复现纸笔计算,训练固定 CPU 模型,验证留出事件的计数分数,并在原有 KA-0 查询上比较两种静态方法。共享输入为 nnlm-paper.json、nnlm-data.json、ka-static-v1.json;实际输出和选中参数保存在 nnlm-run.json、nnlm-model.json。配套 README 记录版本、种子、候选顺序、精度与执行命令,原始静态映射与训练快照明确分开。
稀疏词法方法给拼写分配坐标;学习嵌入则可以借助把各次出现联系起来的训练目标,让不同词共享特征,但是否有用取决于数据与任务。Word2Vec 的邻词预测、GloVe 的共现拟合服务于表示学习;固定窗口 NNLM 预测下一个 Token,并联合学习输入行。平均向量检索与序列预测仍是不同计算,使用不同指标。静态词义和缺失的早期上下文,是具体限制,不能据此宣称稠密表示都更好。
10.9 Part II 检查点:跟踪一个有依据的回答
Section titled “10.9 Part II 检查点:跟踪一个有依据的回答”进入循环网络之前,用贯穿案例检查整条链路。答案直接列出,这个检查点也可以用来定位自己还没读懂的环节。
| 应能回答的问题 | 应能重建的证据 |
|---|---|
第 5 章的 [2,2,2] 表示什么? | 两个样本,每个样本两个存储位置,每个位置两个坐标;交换维度可能保持形状,却改变内容 |
| 两个目标概率怎样变成一个分数? | 、 给出总损失 ,按两个事件平均为 ,困惑度为 |
| 什么操作真正改变参数? | 输入 [1,2]、目标 1、零参数时,以 0.1 做梯度下降,权重变为 [0.05,0.1],偏置变为 0.05 |
| 为什么训练成功 24/24 还不够? | 固定分类器最后的验证损失为 8.150310,验证规则选中的第 5 步却只有 0.581859 |
| 文本处理必须保留什么? | 原始来源、版本、所需金额与否定词;抽取原文片段时还要位置映射,单个检索键无法全部保留 |
| 已经证实了哪些基线改善? | Count 修正查询 1 的关键词同分问题,TF-IDF 修正查询 2 的地名干扰;词法方法仍漏掉查询 4,并在查询 8 上失败 |
| 加入学习行之后,还缺什么? | NNLM 平均表示仍漏掉未学同义词、跟随旧前提;两词窗口无法区分上面的红蓝线索 |
这条链路已经达到第一个可用的知识助手基线和完整的小型训练闭环,但尚未提供能利用固定窗口之外线索的表示、来源版本判断规则或已授权的订单操作流程。这些缺口将明确交给后续章节。
10.10 习题
Section titled “10.10 习题”- 在给定静态映射中,计算
订单 处理中与订单 审批的平均向量和余弦。丢掉了什么区别,导致审批查询失败?给三条轴改名能修复吗? - 例 10.2 保持 logits 不变,把实际邻近词从 room 改为 train,求新损失。为什么这条观测要求不同的更新方向?
- 例 10.3 使用倒序上下文,目标仍为 750,求隐藏值、logits、目标概率与损失。若一次有三个这样的样本,ID、嵌入、拼接、logits 的形状分别是什么?
- 有人指着较低的 NNLM 困惑度,说检索已经优于 TF-IDF。结合两个实测任务判断这个结论,并说明各有多少观测。
- 红蓝诊断保持窗口 2,增加 100 个隐藏坐标能解决问题吗?输入接口必须怎样改变?
- 一份 Word2Vec 报告把手工向量图称为训练结果,还直接用负采样词对分数计算困惑度。指出两项证据错误,并说明有效比较需要什么。
- 系统准备把今天的住宿限额答成 600,理由是检索卡片的余弦为 1。接下来应查什么证据?分清相似度、来源适用性与操作权限。
10.11 参考解答
Section titled “10.11 参考解答”- 两者平均向量均为
[0,1,0],余弦为 1。映射把处理中和审批分配成相同行,平均操作无法区分。改轴名不会改变数值,也恢复不了信息;需要另一种能保留差别的表示或任务规则。 - train 的概率为 ,损失是 ,而 room 的损失为 。实际目标现在是低分候选,应提高它相对于 room 的分数。同一个输入向量可以从不同邻词观测收到相互冲突的贡献,训练要把它们合并。
- 拼接为
[0,1,1,0],乘给定隐藏矩阵得到[0,0],四项 logits 都为零,目标概率 ,损失 。批次为 3 时,形状依次为[3,2]、[3,2,2]、[3,4]、[3,4]。后两者形状恰好相同,一边却是拼接输入坐标,另一边是输出候选。 - 似然比较针对八个留出目标,NNLM 困惑度为 4.155483,计数语言模型为 5.475957,首选猜中数却为 5/8 与 6/8。检索另有九个查询,NNLM 行平均与 TF-IDF 都成功 7/9。这些数都不支持“检索已经改善”的说法,两份极小诊断也不能证明总体表现。
- 不能。两种可见上下文仍是
[3,4],任何参数固定的确定性网络都收到相同输入。接口必须提供包含线索的更长上下文,或传入保留相关早期信息的状态表示。单纯增加隐藏坐标无法重建已删除的输入差别。 - 给定图只能展示作者数值假设下的关系;训练结论需要实际目标函数、数据、配置与运行证据。负采样分数区分观测与噪声词对,不会自动成为归一化的下一 Token 概率。困惑度比较需要明确合法的输出分布,以及完全匹配的 Token 事件、词表和边界规则。
- 余弦 1 只说明在当前表示下方向相同。还要查问题问的是当前还是历史制度、来源是否已被替代、生效日期规则怎样适用。在约定当前日期下,B 支持 750 元。金额回答需要这些来源证据;订单操作还另外需要已授权的操作路径与审批。检索分数既不给适用性,也不给权限。
10.12 参考文献
Section titled “10.12 参考文献”- Bengio 等,2003,《神经概率语言模型》。第 2 节描述固定窗口嵌入查表、组合与联合训练的下一词预测。本书纸笔跟踪和小型 CPU 运行均为原创简化,分别声明形状。
- Mikolov 等,2013,《向量空间中词表示的高效估计》。第 3.1—3.2 节区分 CBOW 与 Skip-gram 的训练职责。本书没有借用其类比基准或速度结果。
- Mikolov 等,2013,《词与短语的分布式表示及其组合性》。第 2 节规定输入词、输出词的职责,并区分完整 Softmax 预测与负采样。
- Pennington、Socher、Manning,2014,GloVe。第 3 节说明加权对数共现拟合的动机。本章用目标函数解释学习信号,不复现预训练模型或论文基准分数。