Noise-contrastive estimation 噪声对比估计
目录 Noise-contrastive estimation 噪声对比估计
这份简短的NCE博文是对自然语言处(四) 词向量编码 word2vec 的一个小补充或额外资料吧.
在统计中, 估计非标准化的模型参数是非常困难的,或都计算复杂度太高,或者因没有积分解析形式.
基本的估计模型可如下定义:
观测变量X∈Rn 服从某一未知概率分布(probability density function, pdf) pm(.;α), 其中α 为待估参数(向量). 对于α的某一估计^α, 其需要满足:
∫pm(u;^α)du=1.
理论上, 我们总可以找到满足此性质的概率密度分布函数,只需要重新定义下pdf:
pm(.;α)=p0m(.;α)Z(α),Z(α)=∫pm(u;α)du,
上面的公式中,p0m(.;α) 为某一普通函数, 比上标准化常数(normalization constant, 也称为配分函数, partition function) Z(α) 后, 令pm(.;α) 等于这个比值,作为概率密度函数, 即满足积分为1的性质. 然而, 配分函数的出现使得参数估计变得复杂, 其或计算复杂度太高,或没有积分解析形式. 处理Z(α) 的一个直观的方法是将看成一个额外的参数, 不过就不能再用最大似然估计(Maximum Likelihood Estimation, MLE)了. 因为如果Z(α)趋近于0时,似然值会变得非常大. NCE在此就显示出其优越性了. NCE的基本思想是将概率密度函数的参数估计问题建模为一个判别问题, 判别数据是来源于兴趣数据集还是人为制造的噪声. 这也是NCE名字的由来.
如果将配分函数当作额外参数(比如 c), 可以改写pm(.;α):
lnpm(.;θ)=lnp0m(.;α)+c,
其中待估参θ={α,c}, c其实为−lnZ(α). 设X=(x1,x2,...,xT)为观测变量, Y=(y1,y2,...,yT) 为人工噪声,其分布为pn(.), 将X, Y 合并成一个数据集U=(u1,u2,...,U2T), 并为U的每条数据分配一个标签Ct, 比如 Ct=1,if ut∈X, 或者Ct=0,if ut∈Y, 这样:
p(u|C=1,θ)=pm(u;θ)p(u|C=0)=pn(u)
我们在构建噪声数据集时,数量与目标数据量相等,这不是必需的,可以是目标数据集的k 倍,只是这里k=1,则.
P(C=1|u;θ)=pm(u;θ)pm(u;θ)+k⋅pn(u)=pm(u;θ)pm(u;θ)+pn(u)=h(u;θ)P(C=0|u;θ)=1−h(u;θ)
于是, 关于θ的对数似然:
l(θ)=lnΠtP(Ct=1|ut,θ)Ct⋅P(Ct=0|ut;θ)1−Ct=∑tCtlnP(Ct=1∣ut;θ)+(1−Ct)lnP(Ct=0∣ut;θ)=∑tln[h(xt;θ)]+ln[1−h(yt;θ)]
则估计^θT 可从如何下目标函数得到:
JT(θ)=12T∑tln[h(xt;θ)]+ln[1−h(yt;θ)]
其中
h(u;θ)=pm(u;θ)pm(u;θ)+pn(u)=11+exp[−G(u;θ)],G(u;θ)=lnpm(u;θ)−lnpn(u).
有几个性质定理就不写了,是对估计的进一步阐述.
[1]: Gutmann, M., & Hyvärinen, A. (2010). Noise-contrastive estimation: A new estimation principle for unnormalized statistical models. Journal of Machine Learning Research, 9, 297–304.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架