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.