噪声对比估计 Noise-contrastive estimation

2021/4/9 10:29:10

本文主要是介绍噪声对比估计 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(\bold u; \hat{\alpha})d\bold u = 1. \]

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

\[p_m(.;\alpha) = \frac{p_m^0(.;\alpha)}{Z(\alpha)},\qquad Z(\alpha) = \int p_m(\bold u; \alpha) d \bold 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(.; \theta) = \ln p_m^0(.;\alpha) + c, \]

其中待估参\(\theta = \{\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 _t\in X\), 或者\(C_t = 0, if\ u_t \in Y\), 这样:

\[p(\bold u| C=1,\theta) = p_m(\bold u; \theta)\qquad p(\bold u|C=0) = p_n(\bold u) \]

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

\[\begin{aligned} P(C=1|\bold u; \theta) &= \frac{p_m(\bold u; \theta)}{p_m(\bold u; \theta)+k\cdot p_n(\bold u)} = \frac{p_m(\bold u; \theta)}{p_m(\bold u; \theta)+p_n(\bold u)} = h(\bold u;\theta)\\ P(C=0|\bold u; \theta) &= 1 - h(\bold u; \theta) \end{aligned} \]

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

\[\begin{aligned} l(\theta) &= ln \Pi_t P(C_t=1|\bold u_t,\theta)^{C_t}\cdot P(C_t=0|\bold u_t; \theta)^{1-C_t}\\&= \sum_{t} C_{t} \ln P\left(C_{t}=1 \mid \mathbf{u}_{t} ; \theta\right)+ \left(1-C_{t}\right) \ln P\left(C_{t}=0 \mid \mathbf{u}_{t} ; \theta\right) \\ &= \sum_{t} \ln \left[h\left(\mathbf{x}_{t} ; \theta\right)\right]+\ln \left[1-h\left(\mathbf{y}_{t} ; \theta\right)\right] \end{aligned} \]

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

\[J_{T}(\theta)=\frac{1}{2 T} \sum_{t} \ln \left[h\left(\mathbf{x}_{t} ; \theta\right)\right]+\ln \left[1-h\left(\mathbf{y}_{t} ; \theta\right)\right] \]

其中

\[\begin{aligned} h(\mathbf{u} ; \theta) &= \frac{p_m(\bold u; \theta)}{p_m(\bold u; \theta)+p_n(\bold u)} =\frac{1}{1+\exp [-G(\mathbf{u} ; \theta)]}, \\ G(\mathbf{u} ; \theta) &=\ln p_{m}(\mathbf{u} ; \theta)-\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.



这篇关于噪声对比估计 Noise-contrastive estimation的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程