【番外】负采样原理

简介: 【番外】负采样原理

NCE(噪声对比估计)


负采样可以看成 NCE 的特化,所以有必要先讲一下 NCE。


Softmax 回归中,样本属于某个分类的概率是:


P(y=kx)=jexp(wjTx+bj)exp(wkTx+bk)=Zexp(wkTx+bk)


也就是说,要计算它属于某个分类的概率,就要把所有分类的概率都计算出来。有的时候算力计算一个是够的,但不够计算这么多。


NCE 的想法很简洁,把多分类变成二分类,还用相同的参数。


我们需要在数据集上采样。对于每个样本,它的特征为 x x x,选取它所属的类别 y 0 y_0 y0,并根据某个分布 N ( y ) N(y) N(y) 选取 n n n 个其它类别 y 1 . . . y n y_1 ... y_n y1...yn。然后把每个 ( x , y i ) (x, y_i) (x,yi) 当做新样本的特征。


然后给每个新样本一个标签 d d d,如果 x x x 属于 y i y_i yi,那么 d = 1 d = 1 d=1,否则 d = 0 d = 0 d=0。


20181122150909983.png


然后整个问题就变成了优化 P ( d = 1 ∣ y , x ) P(d = 1| y, x) P(d=1∣y,x)。

   注:这里把 y = k y=k y=k 省略为 y y y,下同。


我们观察到,在新的数据集中,如果我们选取 d = 1 d = 1 d=1 的样本,它们的 x , y x, y x,y 和原始样本一样。也就是:P(yx,d=1)=P0(yx)


为了避免混淆,把原数据集上的那个函数加了个下标 0。

如果我们选取 d = 0 d = 0 d=0 的样本,它们的 y y y 就是分布 N ( y ) N(y) N(y)。


P(yx,d=0)=N(y)


还有,对于每个 x x x, d d d 总会有一个 1 和 n n n 个 0。


P(d=1x)=n+11P(d=0x)=x+1n


把它们乘一起,就得到了联合分布:


P(d=1,yx)=n+11P0(yx)P(d=0,yx)=n+1nN(y)


然后计算需要优化的那个函数:


P(d=1y,x)=P(d=1,yx)+P(d=0,yx)P(d=1,yx)=P0(yx)+nN(y)P0(yx)



负采样


到现在还是算不出来,Mikolov 在此基础上做了两个改动:


第一,把 N ( y ) N(y) N(y) 变成所抽样标签上的均匀分布,那么 n N ( y ) = 1 nN(y) = 1 nN(y)=1。


第二,把配分项 Z Z Z 变成模型的一个参数 z z z。


于是,


P(d=1y,x)=P0(yx)+1P0(yx)=exp(wkTx+bk)+zexp(wkTx+bk)=1+exp(wkTxbk+logz)1=σ(wkTx+bklogz)


然后在多次试验中发现     z 始终等于 1,就把这项去掉了。现在它就是二分类了。

P(d=1y,x)=σ(wkTx+bk)


优化的时候,我们随机选个 x x x。由于 y y y 是均匀的,我们再随机选个 k,计算 P(d=1∣y,x)。之后再用它和  d 算交叉熵损失,用梯度下降来更新参数即可。





相关文章
|
Linux 数据安全/隐私保护 Windows
音视频开发:大华摄像头配置RTSP与RTMP地址访问视频画面
音视频开发:大华摄像头配置RTSP与RTMP地址访问视频画面
5291 0
音视频开发:大华摄像头配置RTSP与RTMP地址访问视频画面
|
6月前
|
机器学习/深度学习 设计模式 人工智能
workflow is all you need?探讨乐高式流程编排能否实现任意Multi-Agent模式
阿里集团安全部探索利用AI工作流(workflow)构建多智能体系统(MAS),以提升网络安全领域的创造性协作能力。文章围绕“Workflow is All You Need”这一核心观点,分析当前主流AI Workflow产品是否具备支持多种MAS协作模式的能力。通过Dify等工具演示了单Agent、路由、顺序执行、主从控制、反思、辩论、群聊等多种典型协作模式的实现方式,并指出现有平台在异步交互、动态扩展及并行化MOA模式上的局限性。最终强调,尽管目前尚存挑战,但AI Workflow仍是快速搭建多智能体系统的有效路径。
workflow is all you need?探讨乐高式流程编排能否实现任意Multi-Agent模式
|
3月前
wps的看图软件一直打开图片,怎么关闭wps看图软件。或者怎么彻底删除wps?
wps的看图软件一直打开图片,怎么关闭wps看图软件。或者怎么彻底删除wps?
1180 5
|
5月前
|
存储 安全 前端开发
如何开发一套EHS 健康安全环境管理系统?(附架构图+流程图+代码参考)
本文介绍如何开发一套完整的EHS(健康、安全和环境)管理系统,涵盖系统核心模块、技术架构、数据库设计、前后端开发示例及上线建议,帮助企业提升安全管理效率与合规性。
|
3月前
|
机器学习/深度学习 测试技术 Docker
使用Ray进行大规模并行智能体仿真
https://www.anyscale.com/blog/massively-parallel-agentic-simulations-with-ray 译文
|
人工智能 自然语言处理 PyTorch
Text2Video Huggingface Pipeline 文生视频接口和文生视频论文API
文生视频是AI领域热点,很多文生视频的大模型都是基于 Huggingface的 diffusers的text to video的pipeline来开发。国内外也有非常多的优秀产品如Runway AI、Pika AI 、可灵King AI、通义千问、智谱的文生视频模型等等。为了方便调用,这篇博客也尝试了使用 PyPI的text2video的python库的Wrapper类进行调用,下面会给大家介绍一下Huggingface Text to Video Pipeline的调用方式以及使用通用的text2video的python库调用方式。
|
安全 异构计算
为大型语言模型 (LLM) 提供服务需要多少 GPU 内存?
为大型语言模型 (LLM) 提供服务需要多少 GPU 内存?
1141 0
为大型语言模型 (LLM) 提供服务需要多少 GPU 内存?
|
前端开发 JavaScript 编译器
【性能革命】Angular Ivy编译器:一场前端开发者的极速盛宴,揭秘应用瘦身与提速的黑科技,让你的Angular项目焕发新生的终极指南
【8月更文挑战第31天】Angular Ivy编译器是Angular团队推出的更新,旨在改善应用性能,减少构建时间和代码量。自Angular 9起,Ivy成为默认编译器。本文通过案例分析,介绍Ivy的工作原理及其优势。以一个复杂应用为例,展示了Ivy如何通过减少生成的JavaScript代码量、优化模板表达式解析等方式提升性能。通过创建示例项目并比较启用与未启用Ivy的构建结果,证明了Ivy在构建速度和文件大小上的显著改进,同时提高了运行时性能。这对于追求高性能和快速开发的应用至关重要。
263 0
|
前端开发 C#
浅谈WPF之DataGrid动态生成列
在日常开发中,DataGrid作为二维表格,非常适合数据的展示和统计。通常情况下,一般都有固定的格式和确定的数据列展示,但是在某些特殊情况下,也可能会需要用到动态生成列。本文以一些简单的小例子,简述在WPF开发中,如何动态生成DataGrid的行和列,仅供学习分享使用,如有不足之处,还请指正。
693 2