在应用中,用于训练的源数据(source domain)和测试的目标数据(target domain)之间的分布可能会有所不同,因此需要研究两者的分布。
本章研究的就是采样到的数据 X={x1,x2,…,xN} 和数据分布 θ 之间的关系。比如对于高斯分布而言,给定一系列采样数据,我们可以估计出其参数;而如果给定参数,我们又可以对其进行采样。
From sample to distribution
- 首先要知道分布类型。常见分布有
- 二项分布:p(k∣n,p)=k!(n−k)!n!pk(1−p)n−k
- 泊松分布:p(k∣λ)=k!e−λλk
- 高斯分布:p(x∣μ,Σ)=2πσ21exp[−2σ2(x−μ)2]
- 然后得到参数
- 假如有足够的先验信息,比如知道数据如何产生,那么就能直接得到参数
- 如果没有先验信息,那么可以根据样本进行估计。常用的估计方式为最大似然估计。
Maximum Likelihood Estimation (MLE)
但是如果对数据没有任何先验知识,那么还需要假设一个分布,通常我们假设数据为高斯分布。然后我们可以使用最大似然估计来估计高斯分布的参数:
p(x1,x2,…,xN∣θ)=i=1∏Np(xi∣μ,σ)=(2πσ21)2Nexp(−2σ2∑i=1N(xi−μ)2)
然后将上述似然函数分别对参数 μ 和 σ 求导:
∂μ∂logp(x1,x2,...,xN∣θ)=0⟶μ^=N1i=1∑Nxi∂σ∂logp(x1,x2,...,xN∣θ)=0⟶σ^2=N1i=1∑N(xi−μ^)2
Biased estimation
对分布进行参数估计之后,还可以分析估计的参数是否有偏。这里同样以高斯分布为例,假设真实分布的参数为 μ 和 σ,而极大似然估计得到的参数为:
μ^=N1i=1∑Nxiσ^2=N1i=1∑N(xi−μ^)2
对于参数 μ^:
E[μ^]=E[N1i=1∑Nxi]=N1i=1∑NE[xi]=μ
为无偏估计。而对于参数 σ^2:
E[σ^2]=E[N1i=1∑N(xi−μ^)2]=E[x2]−2E[N1i=1∑Nxiμ^]+E[μ^2]=E[x2]−E[μ^2]=Var[x]+E[x]2−Var[μ^]−E[μ^]2=Var[x]−N1Var[x]=NN−1σ2
因此参数 σ^2 的估计为有偏估计。但是在采样过程中,只要 N→∞,那么 σ^2 就会接近无偏估计。
Gaussian Mixture Model
如果数据的分布较为复杂,那么仅仅使用一个高斯分布显然是不够的,因此需要引入混合高斯分布(Gaussian Mixture Model, GMM)。GMM 的建模与求解此处略去,具体可见文章Clustering的最后一节。
From distribution to sample
已知数据分布,想要得到数据,就需要进行采样。而目前只有特定几种简单的分布有高效的采样方式,比如对于范围在 [vl,vh] 的均匀分布,采样方式为:
x=vl+rand(0,1)(vh−vl)
而较为复杂的采样则需要通过一些技巧解决。
Rejection sampling
对于分布 p(z)
- 首先找到一个简单的分布 q(z),使得 ∀z,有 kq(z)≥p(z)。此时 q(z) 称为 envelope distribution。
- 对 q 进行采样 z0∼q
- 对于采样值 z0,以 h0+h1h1=kq(z0)p(z0) 的概率接收。
Adaptive rejection sampling
但有时候,envelope distribution 并不容易找到。
和 rejection sampling 类似,只是这里的 envelope distribution 变成了分段形式。只要 p(z) 满足 log concave,那么就能找到
q(z)=kiλiexp{−λi(z−zi−1)},zi−1<z≤zi
如下图所示:

Importance sampling
还有时候,我们的目的并不是采样 x∼p,而是希望求出期望 Ex∼p[f(x)]
∫f(x)p(x)dx=∫f(x)q(x)p(x)q(x)dx≈S1s=1∑Sf(xs)q(xs)p(xs)
此时仅仅在分布 xs∼q 上采样即可
Markov Chain Monte Carlo (MCMC)
MCMC 是一种通用的策略,通过有偏的随机游走(biased random walk)来近似采样,随机游走的规则根据 p(x) 来设计。比如需要采样下图中的高斯分布,除去初始几个噪音点,后面游走到的点可作为采样点。

Metropolis–Hastings algorithm (unit-variate)
这是一种针对单变量的MCMC算法。算法流程为:
- 初始话
- 选择初始状态 x0
- 设置 t=0
- 迭代
- 根据分布 g(⋅∣xt),生成一个 candidate state x′。其中分布 g 类似于 kernel,是一个需要事先规定好的条件概率。
- 计算接受概率 A(x′,xt)=min(1,p(xt)p(x′)g(x′∣xt)g(xt∣x′))
- 以概率 A 接收 xt+1=x′,否则 xt+1=xt
- t=t+1
Gibbs sampling
该采样针对高维变量。整体思想为将 d 维向量分成两部分,相互生成。记第 i 个采样到的样本为 xi=(xi1,xi2,…,xid)
- 初始化
- 选择初始状态 x0=(x01,x02,…,x0d)
- 设置 t=0
- 迭代
- 令 j=mod(t,d)
- 根据条件概率 p(xj∣xt1,…,xtj−1,xtj+1,…,xtd) 生成 xt+1j
- xt+1=(xt1,…,xtj−1,xt+1j,xtj+1,…,xtd)
- t=t+1