• 噪声对比估计 Noise-contrastive estimation


    Noise-contrastive estimation 噪声对比估计

    目录 Noise-contrastive estimation 噪声对比估计
    这份简短的NCE博文是对自然语言处(四) 词向量编码 word2vec 的一个小补充或额外资料吧.

    在统计中, 估计非标准化的模型参数是非常困难的,或都计算复杂度太高,或者因没有积分解析形式.

    基本的估计模型可如下定义:

    观测变量(X in mathbb{R}^n) 服从某一未知概率分布(probability density function, pdf) (p_m(.; alpha)), 其中(alpha) 为待估参数(向量). 对于(alpha)的某一估计(hat{alpha}), 其需要满足:

    [int p_m(old u; hat{alpha})dold u = 1. ]

    理论上, 我们总可以找到满足此性质的概率密度分布函数,只需要重新定义下pdf:

    [p_m(.;alpha) = frac{p_m^0(.;alpha)}{Z(alpha)},qquad Z(alpha) = int p_m(old u; alpha) d old u, ]

    上面的公式中,(p_m^0(.;alpha)) 为某一普通函数, 比上标准化常数(normalization constant, 也称为配分函数, partition function) (Z(alpha)) 后, 令(p_m(.;alpha)) 等于这个比值,作为概率密度函数, 即满足积分为1的性质. 然而, 配分函数的出现使得参数估计变得复杂, 其或计算复杂度太高,或没有积分解析形式. 处理(Z(alpha)) 的一个直观的方法是将看成一个额外的参数, 不过就不能再用最大似然估计(Maximum Likelihood Estimation, MLE)了. 因为如果(Z(alpha))趋近于0时,似然值会变得非常大. NCE在此就显示出其优越性了. NCE的基本思想是将概率密度函数的参数估计问题建模为一个判别问题, 判别数据是来源于兴趣数据集还是人为制造的噪声. 这也是NCE名字的由来.

    如果将配分函数当作额外参数(比如 c), 可以改写(p_m(.;alpha)):

    [ln p_m(.; heta) = ln p_m^0(.;alpha) + c, ]

    其中待估参( heta = {alpha, c}), c其实为(-ln Z(alpha)). 设(X= (x_1, x_2, ...,x_T))为观测变量, (Y= (y_1, y_2,..., y_T)) 为人工噪声,其分布为(p_n(.)), 将X, Y 合并成一个数据集(U = (u_1,u_2,...,U_{2T})), 并为U的每条数据分配一个标签(C_t), 比如 (C_t=1, if u _tin X), 或者(C_t = 0, if u_t in Y), 这样:

    [p(old u| C=1, heta) = p_m(old u; heta)qquad p(old u|C=0) = p_n(old u) ]

    我们在构建噪声数据集时,数量与目标数据量相等,这不是必需的,可以是目标数据集的k 倍,只是这里k=1,则.

    [egin{aligned} P(C=1|old u; heta) &= frac{p_m(old u; heta)}{p_m(old u; heta)+kcdot p_n(old u)} = frac{p_m(old u; heta)}{p_m(old u; heta)+p_n(old u)} = h(old u; heta)\ P(C=0|old u; heta) &= 1 - h(old u; heta) end{aligned} ]

    于是, 关于( heta)的对数似然:

    [egin{aligned} l( heta) &= ln Pi_t P(C_t=1|old u_t, heta)^{C_t}cdot P(C_t=0|old u_t; heta)^{1-C_t}\&= sum_{t} C_{t} ln Pleft(C_{t}=1 mid mathbf{u}_{t} ; heta ight)+ left(1-C_{t} ight) ln Pleft(C_{t}=0 mid mathbf{u}_{t} ; heta ight) \ &= sum_{t} ln left[hleft(mathbf{x}_{t} ; heta ight) ight]+ln left[1-hleft(mathbf{y}_{t} ; heta ight) ight] end{aligned} ]

    则估计(hat{ heta}_T) 可从如何下目标函数得到:

    [J_{T}( heta)=frac{1}{2 T} sum_{t} ln left[hleft(mathbf{x}_{t} ; heta ight) ight]+ln left[1-hleft(mathbf{y}_{t} ; heta ight) ight] ]

    其中

    [egin{aligned} h(mathbf{u} ; heta) &= frac{p_m(old u; heta)}{p_m(old u; heta)+p_n(old u)} =frac{1}{1+exp [-G(mathbf{u} ; heta)]}, \ G(mathbf{u} ; heta) &=ln p_{m}(mathbf{u} ; heta)-ln p_{n}(mathbf{u}) . end{aligned} ]

    有几个性质定理就不写了,是对估计的进一步阐述.

    [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.

  • 相关阅读:
    Redis的特点
    JavaScript语言和JQuery技术
    学习javaDay13
    学习JavaDay12
    学习JavaDay11
    学习JavaDay10
    学习JavaDay09
    学习JavaDay08
    java的语法基础(二)
    java语法基础(一)
  • 原文地址:https://www.cnblogs.com/vpegasus/p/NCE.html
Copyright © 2020-2023  润新知