Noise-contrastive estimation(NCE)是一种估计统计模型参数的方法。
基本思想是用非线性逻辑回归(nonlinear logistic regression)区分观测数据和一些人为产生的噪声数据,在区分的时候学习统计模型的参数。
作者证明该方法的估计量是一个一致(收敛)估计量,并分析了渐近方差。
特别地,该方法可以直接用于非归一化模型的参数估计,即概率密度函数积分不为1的模型。归一化常数可以像任何其他参数一样进行估计。
NCE的估计量
用
X
=
(
x
1
,
…
,
x
T
)
X=(\mathbf{x}_1, \ldots, \mathbf{x}_T)
X=(x1,…,xT)表示观测数据,我们用分布
p
m
(
⋅
;
θ
)
p_m(\cdot; \theta)
pm(⋅;θ)去拟合。
Y
=
(
y
1
,
…
,
y
T
)
Y=(\mathbf{y}_1, \ldots, \mathbf{y}_T)
Y=(y1,…,yT)表示任意的噪声数据,其符合分布
p
n
(
⋅
)
p_n(\cdot)
pn(⋅)。估计量
θ
^
T
\hat{\theta}_T
θ^T被定义为最大化下面目标函数的
θ
\theta
θ:
J
T
(
θ
)
=
1
2
T
∑
t
ln
[
h
(
x
t
;
θ
)
]
+
ln
[
1
−
h
(
y
t
;
θ
)
]
(1)
J_T(\theta) = \frac{1}{2T} \sum_t \ln[h(\mathbf x_t;\theta)] + \ln[1-h(\mathbf y_t;\theta)] \tag{1}
JT(θ)=2T1t∑ln[h(xt;θ)]+ln[1−h(yt;θ)](1)其中
h
(
u
;
θ
)
=
1
1
+
exp
[
−
G
(
u
;
θ
)
]
G
(
u
;
θ
)
=
ln
p
m
(
u
;
θ
)
−
ln
p
n
(
u
)
h(\mathbf u;\theta) = \frac{1}{1+\exp[-G(\mathbf u; \theta)]}\\ G(\mathbf u; \theta) = \ln p_m(\mathbf u; \theta) - \ln p_n(\mathbf u)
h(u;θ)=1+exp[−G(u;θ)]1G(u;θ)=lnpm(u;θ)−lnpn(u)
logistic regression的函数是
r
(
x
)
=
1
1
+
exp
(
−
x
)
r(x) = \frac{1}{1+\exp(-x)}
r(x)=1+exp(−x)1,那么
h
(
u
;
θ
)
=
r
(
G
(
u
;
θ
)
)
h(\mathbf u;\theta) = r(G(\mathbf u; \theta))
h(u;θ)=r(G(u;θ))。
公式(1)是区分数据来自X或者噪声Y的logistic regression的log-likelihood。
NCE的思想就是,通过区分数据和噪声,可以学习到数据的分布。
作者证明了估计量
θ
^
T
\hat{\theta}_T
θ^T的一致性:
和监督学习的关系
考虑二分类的问题,假设
u
∈
X
,
C
=
1
\mathbf u \in X,C=1
u∈X,C=1和
u
∈
Y
,
C
=
0
\mathbf u \in Y,C=0
u∈Y,C=0,那么条件概率是
P
(
u
∣
C
=
1
;
θ
)
=
p
m
(
u
;
θ
)
P
(
u
∣
C
=
0
)
=
p
n
(
u
)
P(\mathbf u | C=1; \theta)=p_m(\mathbf u; \theta) \\ P(\mathbf u | C=0)=p_n(\mathbf u)
P(u∣C=1;θ)=pm(u;θ)P(u∣C=0)=pn(u)样本来自两个分布的概率相同,即
P
(
C
=
1
)
=
P
(
C
=
0
)
=
1
2
P(C=1)=P(C=0)=\frac{1}{2}
P(C=1)=P(C=0)=21,那么后验概率是
P
(
C
=
1
∣
u
;
θ
)
=
P
(
u
,
C
=
1
;
θ
)
P
(
u
)
=
P
(
u
∣
C
=
1
;
θ
)
P
(
C
=
1
)
P
(
u
∣
C
=
1
;
θ
)
P
(
C
=
1
)
+
P
(
u
∣
C
=
0
)
P
(
C
=
0
)
=
p
m
(
u
;
θ
)
p
m
(
u
;
θ
)
+
p
n
(
u
)
=
h
(
u
;
θ
)
P(C=1 | \mathbf u; \theta)=\frac{P(\mathbf u, C=1; \theta)}{P(\mathbf u)} = \frac{P(\mathbf u | C=1; \theta)P(C=1)}{P(\mathbf u | C=1; \theta)P(C=1) + P(\mathbf u | C=0)P(C=0)} = \frac{p_m(\mathbf u; \theta)}{p_m(\mathbf u; \theta) + p_n(\mathbf u)} \\ =h(\mathbf u;\theta)
P(C=1∣u;θ)=P(u)P(u,C=1;θ)=P(u∣C=1;θ)P(C=1)+P(u∣C=0)P(C=0)P(u∣C=1;θ)P(C=1)=pm(u;θ)+pn(u)pm(u;θ)=h(u;θ)
P
(
C
=
0
∣
u
;
θ
)
=
1
−
P
(
C
=
1
∣
u
;
θ
)
=
1
−
h
(
u
;
θ
)
P(C=0 | \mathbf u; \theta)=1-P(C=1 | \mathbf u; \theta)=1-h(\mathbf u;\theta)
P(C=0∣u;θ)=1−P(C=1∣u;θ)=1−h(u;θ)
噪声分布的选择
噪声分布应该尽可能的和数据分布相似,否则的话分类问题太过于简单,算法学习不到符合真实数据分布的参数。
可以先学习一个基础的模型去拟合数据分布,再将这个基础模型作为噪声分布。
参考
AISTATS 2010《Noise-contrastive estimation: A new estimation principle for unnormalized statistical models》