当前位置: 首页 > article >正文

深度学习中的负采样

深度学习中的负采样

负采样(Negative Sampling) 是一种在训练大型分类或概率模型(尤其是在输出类别很多时)中,用来加速训练、降低计算量的方法。

它常用于:

  • 词向量训练(如 Word2Vec)
  • 推荐系统(从大量候选项中学正例与负例)
  • 语言模型、对比学习、信息检索等场景

🧠 本质概念

在许多任务中,我们的模型要从上万个候选中预测正确类别。例如:

给定单词 “cat”,预测它上下文中出现的词(如 Word2Vec 的 Skip-gram)

这时我们本应计算所有词的概率(比如 Softmax over 100,000 words)——这太慢了

所以:
负采样的核心思想是:

只对少数几个“负例”做对比,而不计算所有类别!


💡 Word2Vec 中的负采样

举个例子:

  • 正例:“cat” → “meows”
  • 随机采样 5 个负例(如 “banana”, “airport”, “data”, …)

我们用一个二分类器判断:

  • “cat” → “meows” 是真实的(打标签 1)
  • “cat” → “banana” 是伪造的(打标签 0)

训练目标是:

  • 让正例得分高
  • 让负例得分低

🔢 数学形式

如果正例是 ( w , c ) (w, c) (w,c),负采样损失函数为:

log ⁡ σ ( v c ⊤ v w ) + ∑ i = 1 k E w i ∼ P n ( w ) [ log ⁡ σ ( − v w i ⊤ v w ) ] \log \sigma(v_c^\top v_w) + \sum_{i=1}^k \mathbb{E}_{w_i \sim P_n(w)} [\log \sigma(-v_{w_i}^\top v_w)] logσ(vcvw)+i=1kEwiPn(w)[logσ(vwivw)]

  • σ \sigma σ:sigmoid 函数
  • v c v_c vc v w v_w vw:分别是上下文词和目标词的向量
  • w i ∼ P n ( w ) w_i \sim P_n(w) wiPn(w):从某个分布中采样负词
  • k k k:负采样数量

🧲 负例怎么采?

常用的负例分布是:

P n ( w ) ∝ U ( w ) 3 / 4 P_n(w) \propto U(w)^{3/4} Pn(w)U(w)3/4

  • U ( w ) U(w) U(w):词频
  • 把高频词稍微压低(防止频率太高的词总被采到)

✅ 优点

优点说明
🚀 计算快不用对所有词做 softmax
🧠 更有效学习负例对比带来更清晰的学习信号
💾 占内存少参数只需更新部分词向量

📦 应用场景举例

  • Word2Vec / FastText:负采样代替softmax
  • 对比学习(如SimCLR、CLIP):构造正负对比对
  • 推荐系统:用户喜欢的商品为正,其余为负采样项
  • 知识图谱链接预测:正三元组 vs 负三元组(伪造的头/尾)
http://www.lryc.cn/news/2400750.html

相关文章:

  • php7+mysql5.6单用户中医处方管理系统V1.0
  • Java 大视界 — Java 大数据在智能安防视频监控中的异常事件快速响应与处理机制
  • 智慧物流园区整体解决方案
  • 审批流程管理系统开发记录:layui前端交互的实践
  • 【会员专享数据】1960—2023年我国省市县三级逐年降水量数据(Shp/Excel格式)
  • 2025年精通MVCC
  • 硬路由与软路由
  • OpenCV C++ 心形雨动画
  • Fullstack 面试复习笔记:Java 基础语法 / 核心特性体系化总结
  • 安卓Compose实现鱼骨加载中效果
  • 使用qt 定义全局钩子 捕获系统的键盘事件
  • FreeType 字体信息检查工具 - 现代C++实现
  • el-table 树形数据,子行数据可以异步加载
  • 【使用JAVA调用deepseek】实现自能回复
  • 【Linux系列】rsync命令详解与实践
  • Windows系统工具:WinToolsPlus 之 SQL Server Suspect/质疑/置疑/可疑/单用户等 修复
  • C++——智能指针 unique_ptr
  • 【Python训练营打卡】day43 @浙大疏锦行
  • 1-【源码剖析】kafka核心概念
  • JavaScript中判断两个对象是否相同(所有属性的值是否都相同)
  • Flask 应用的生产环境部署指南
  • 思科设备网络实验
  • Oracle OCP与MySQL OCP认证如何选?
  • AWS之数据分析
  • C# Onnx 动漫人物头部检测
  • 【Ragflow】24.Ragflow-plus开发日志:增加分词逻辑,修复关键词检索失效问题
  • gin 常见中间件配置
  • 蚂蚁森林自动收能量助手:Ant_Forest_1_5_4_3绿色行动新选择
  • Zookeeper 集群部署与故障转移
  • Redis最佳实践——电商应用的性能监控与告警体系设计详解