概述
Instead of scoring every possible output, they teach the model to tell real (positive) examples from a handful of fake (negative) ones.
深入探讨
当词汇表有数十万个单词时,普通的 softmax 必须对每个训练步骤的每个单词进行归一化——太慢了。噪声对比估计将问题重新构建为二元分类:给定目标和从已知分布中提取的一些“噪声”样本,学习将真实样本与噪声区分开,这会隐式恢复所需的概率,而无需显式归一化。负采样由 word2vec 的 Skip-Gram 模型普及,是一个简化的表亲:对于每个真实(单词、上下文)对,它会采样 k 个负样本,并使用 sigmoid 目标训练模型,为真实对分配高分,为假对分配低分。两者都将昂贵的多类问题转化为许多廉价的二元问题,使大规模嵌入训练变得可行。噪声分布的选择(通常是一元组的 3/4 次方)会严重影响质量。
现实世界的实施
word2vec Skip-gram,具有负采样功能,可以从数十亿个标记中学习单词嵌入,而无需完整的 softmax。
历史上,语言模型使用 NCE 来有效地训练数十万个单词的词汇。
推荐和检索系统对用户未与之交互的“负面”项目进行采样,以训练两塔嵌入模型。
使用负样本来学习实体关系的图和知识图嵌入(例如,破坏三元组的头部或尾部)。
负采样和噪声对比估计的未来
核心思想——通过对比正样本和负样本来学习——现在支撑着现代视觉、语言和推荐的自我监督和对比表征学习。未来的工作重点是硬负例挖掘(选择信息丰富的负例而不是随机负例)、消除假负例的偏差,以及通过大型内存库或批量采样以低廉的成本缩放负例。随着模型的增长,只要输出空间或候选集巨大,例如检索和大规模推荐器,有效的采样目标仍然至关重要。
付诸实践
为什么这很重要
- 成本与预算. 多年来,架构决策决定着性能和运营成本。
- 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
- 质量控制. 更好的工程选择可以减少生产中的可靠性事故。
留意
- 优化一项基准测试可以隐藏更广泛的系统弱点。
- 基础设施和维护成本常常被低估。
- 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
后续步骤
- 在实施之前定义延迟、质量和成本目标。
- 在实际负载和数据条件下进行基准测试。
- 仪器监控错误、漂移和用户影响。
- 在扩展之前准备回滚和事件响应路径。
不断探索
常见问题
What is Negative Sampling and Noise Contrastive Estimation?
负采样和噪声对比估计 (NCE) 是让模型学习大量词汇的技巧,而无需计算昂贵的完整 softmax。他们不是对每一个可能的输出进行评分,而是教导模型从一些假(负)例子中区分真实(正)例子。
负采样和NCE主要解决什么问题?
这两种方法都通过将训练重新定义为更便宜的二元歧视来避免对大量词汇进行标准化。
噪声对比估计如何重构学习任务?
NCE 训练模型以区分真实样本和从已知噪声分布中提取的样本。
哪种模型普及了用于学习词嵌入的负采样?
负采样是由 word2vec 的 Skip-gram 变体引入并普及的。
负采样与完全 NCE 有何不同?
负采样通过消除标准化、用概率正确性换取速度和良好的嵌入来简化 NCE。
为什么负数经常从一元分布的 3/4 次方中采样?
0.75 指数平滑了频率分布,因此常见单词不会占主导地位,罕见单词仍然会出现。