Mnih A. and Teh Y. W. A fast and simple algorithm for training neural probabilistic language models. ICML, 2012.
概
NCE 用在语言模型的训练上.
Noise contrastive estimation
-
给定 context h, 下一个词为 w 的条件概率按照如下方式定义:
Pθ(w|h)=exp(sθ(w,h))∑w′exp(sθ(w′,h)),
-
作者认为, 当词表过大的时候, normalizing term Zh=∑w′exp(sθ(w′,h)) 的计算过于消耗时间了. 所以本文求助 NCE 来解决这一个问题.
-
对于这类问题, NCE 的处理方式是设计一个二分类任务:
P(C=1|w,h;θ)=Pθ(w|h)Pθ(w|h)+kPn(w|h),
其中 Pn(w|h) 是一个噪声分布, k 表示采样过程中, w 采样自真实分布和噪声分布的比例为 1:k.
-
令 ch=lnZh, 我们有
lnPθ(w|h)=sθ(w,h)−c.
-
此时
P(C=1|w;θ)=σ(s′θ(w,h)),s′θ(w,h)=sθ(w,h)−ch−lnkPn(w|h).
-
NCE 将 ch 也作为一个参数训练, 然后具体的损失为 (对于每个 h):
−Ew∼P(w|h)logσ(s′θ(w,h))−kEw∼Pn(w|h)log(1−σ(s′θ(w|h))).
-
这里的一个问题是, 自然语言里的 context h 太多了, 所以很难说给每个 ch 都设为一个参数去学习, 作者发现, ch≡0 实验中的效果就很好. 故而, 实际中我们所采用的为:
s′θ(w,h)=sθ(w,h)−lnkPn(w|h).
-
特别地, 如果我们采取一种最简单的噪声分布, 即 Pn(w|h)=Pn(w)=1N (N 为词的个数), 我们有:
s′θ(w,h)=sθ(w,h)−lnkN.
-
进一步地, 我们可以把 −lnkN 也省略, 只要我们相信 sθ(w,h) 本身有能力意识到这一点. 实际上, 这也是 Word2Vec 中的 NEG (Negative sampling) 的做法.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2019-12-13 Spurious Local Minima are Common in Two-Layer ReLU Neural Networks