- 目录
- 数据与概率模型
- 相关符号定义
- 频率学派角度看待机器学习问题
- 极大似然估计
- 贝叶斯学派角度看待机器学习问题
- 最大后验概率估计
- 贝叶斯估计及其弊端
- 实例了解极大似然估计和最大后验概率的区别
机器学习领域的一个关键概念——事件发生的不确定性。概率论 为这种不确定性的量化和操纵提供了框架,成为机器学习的核心基础之一。 基于现实世界中所发生现象的任何实际模型,必须要考虑到 随机性 的可能。也就是说,我们所关注的信息可能是事先不可预料的。但是,经过大量重复试验,这种现象往往存在某种 规律性。 因此,表述该现象的模型实质上是概率性的 → \to → 这种模型被称为 概率模型。
示例:投掷一枚质地均匀的硬币。 排除硬币站立等极特殊情况,样本空间 S \mathcal S S中共包含两种情况: S = { H e a d , T a i l } \mathcal S = \{Head,Tail\} S={Head,Tail} 其中 H e a d Head Head表示“硬币正面朝上”, T a i l Tail Tail表示“硬币反面朝上”。 我们发现,投掷硬币这个试验,确实满足上述两种属性:
- 在投掷硬币试验结果出现之前,我们没有办法事先预料硬币是正面朝上还是反面朝上;
- 在大量重复试验过程中,我们发现 规律:硬币正面朝上和反面朝上的次数相差不大。
我们定义 X \mathcal X X为大量数据试验产生的数据集合(data):
-
定义该数据集合共包含 N N N个数据样本;
-
样本维度 数量定义为 p p p; 样本维度,通俗点讲,即使用 一组数值描述数据样本特征,而这组数值的数量即样本维度。 S \mathcal S S中的任意一个样本都可以使用这组数值进行表示。 示例:
如果我们想要统计 收入与人之间 的关联关系,在收集样本时,我们对样本属性进行划分: 性别:0 - 男 \ 1 - 女; 年龄: 学历:0 - 高中\ 1 - 专科\ 2 - 本科\ 3 - 硕士\ 4 - 博士 从事行业:0 - IT行业\ 1 - 金融\ 2 - 服务\ 3 - 管理… 从事年限:0 - 0-1年\ 1 - 1-3年\ 2 - 3-5年\ 3 - 5年以上 婚姻情况:0 - 已婚\ 1 - 未婚 月收入情况:0 - 5000以下\ 1 - 5000-8000\ 2 - 8000-10000\ 3 - 10000以上 现有一个样本描述如下: 一个27岁姑娘,硕士,从事金融行业1年,未婚,月收入9200 使用 向量 表示该样本的特征信息: [ 1 , 27 , 3 , 1 , 0 , 1 , 2 ] [1,27,3,1,0,1,2] [1,27,3,1,0,1,2] 以上我们从 7个维度 对一个样本进行统计,在数据集合中任意一个样本都可以统计到该特征。
回归正题,使用 数学符号 对数据集合 X \mathcal X X进行表示: X = ( x ( 1 ) x ( 2 ) x ( 3 ) ⋮ x ( N ) ) \mathcal X = \begin{pmatrix} x^{(1)} \\ x^{(2)} \\ x^{(3)}\\ \vdots \\ x^{(N)} \end{pmatrix} X= x(1)x(2)x(3)⋮x(N) 其中 N N N表示数据集合 X \mathcal X X中包含的样本数量;每一个样本根据 样本维度 可以进行如下表示( x 1 x_1 x1示例): x ( 1 ) = ( x 1 ( 1 ) , x 2 ( 1 ) , x 3 ( 1 ) , . . . , x p ( 1 ) ) x^{(1)} = \begin{pmatrix} x_1^{(1)},x_2^{(1)} ,x_3^{(1)}, ...,x_p^{(1)} \end{pmatrix} x(1)=(x1(1),x2(1),x3(1),...,xp(1)) 可以将其理解成:使用关于样本 x ( 1 ) x^{(1)} x(1)的 p p p个维度的不同结果 x 1 ( 1 ) , x 2 ( 1 ) , x 3 ( 1 ) , . . . , x p ( 1 ) x_1^{(1)},x_2^{(1)} ,x_3^{(1)}, ...,x_p^{(1)} x1(1),x2(1),x3(1),...,xp(1)对 x ( 1 ) x^{(1)} x(1)进行表示。 综上,将样本数量与维度结合,关于样本集合 X \mathcal X X的表示如下( N × p N \times p N×p 的二维矩阵): X = ( x ( 1 ) x ( 2 ) x ( 3 ) ⋮ x ( N ) ) = ( x 1 ( 1 ) , x 2 ( 1 ) , ⋯ , x p ( 1 ) x 1 ( 2 ) , x 2 ( 2 ) , ⋯ , x p ( 2 ) x 1 ( 3 ) , x 2 ( 3 ) , ⋯ , x p ( 3 ) ⋮ x 1 ( N ) , x 2 ( N ) , ⋯ , x p ( N ) ) N × p \mathcal X = \begin{pmatrix} x^{(1)} \\ x^{(2)} \\ x^{(3)}\\ \vdots \\ x^{(N)} \end{pmatrix} = \begin{pmatrix} x_1^{(1)},x_2^{(1)},\cdots,x_p^{(1)} \\ x_1^{(2)},x_2^{(2)},\cdots,x_p^{(2)} \\ x_1^{(3)},x_2^{(3)},\cdots,x_p^{(3)} \\ \vdots \\ x_1^{(N)},x_2^{(N)},\cdots,x_p^{(N)} \end{pmatrix}_{N\times p} X= x(1)x(2)x(3)⋮x(N) = x1(1),x2(1),⋯,xp(1)x1(2),x2(2),⋯,xp(2)x1(3),x2(3),⋯,xp(3)⋮x1(N),x2(N),⋯,xp(N) N×p
我们将 数据本身 看做概率模型,设该模型的参数(parameter)为
θ
\theta
θ。 某一样本
x
x
x可以进行如下表示:
x
∼
P
(
x
;
θ
)
x \sim P(x ; \theta)
x∼P(x;θ) 可以将其理解成:在
P
(
x
;
θ
)
P(x; \theta)
P(x;θ)的概率分布下,以模型参数
θ
\theta
θ产生一个又一个的相互独立的
x
x
x样本,构成
X
\mathcal X
X数据集合。 样本间相互独立原因是‘每一个样本’均是在相同概率分布下,通过重复试验产生的结果,因此各结果之间不存在关联关系。
例如:投掷两次同一个硬币,第一次正面朝上和第二次正面朝上的概率没有任何关系。
机器学习的核心是通过样本集合 X \mathcal X X学习概率模型的参数 θ \theta θ,并基于 θ \theta θ对新样本进行预测。
频率学派角度看待机器学习问题频率学派认为:概率分布 P ( x ; θ ) P(x ; \theta) P(x;θ)中的参数 θ \theta θ是一个 未知的常量。数据集合 X \mathcal X X本身是随机变量(Random Variable)。
这里引用黑格尔的一句话很贴切:存在即合理。结合 x ∼ P ( x ; θ ) x \sim P(x ; \theta) x∼P(x;θ),既然 x x x是基于参数 θ \theta θ的概率分布 P ( x ; θ ) P(x ; \theta) P(x;θ)产生出来的样本,每一个样本 x x x的存在都有它的道理。
因此,频率学派通过大量试验产生的样本集合 X \mathcal X X将概率模型参数 θ \theta θ估计出来。常用的方法是 极大似然估计(Maximum Likelihood Estimate,MLE)。
极大似然估计极大似然估计表示如下: θ M L E = arg max θ P ( X ; θ ) \theta_{MLE} = \mathop{\arg\max}\limits_{\theta} P(X ; \theta) θMLE=θargmaxP(X;θ) 从字面意思来讲,求得一个具体的参数 θ \theta θ,使得数据集合 X \mathcal X X的概率最大。而 数据集合 X \mathcal X X的概率同样可以表示为数据集合内样本的联合概率分布。公式表示如下: P ( X ; θ ) = P ( x ( 1 ) , x ( 2 ) , . . . , x ( N ) ; θ ) P(X ; \theta) = P(x^{(1)},x^{(2)},...,x^{(N)};\theta) P(X;θ)=P(x(1),x(2),...,x(N);θ)
通常情况下,我们也将极大似然估计表示为如下形式:
θ
M
L
E
=
arg
max
θ
log
P
(
X
;
θ
)
\theta_{MLE} = \mathop{\arg\max}\limits_{\theta} \log P(X ; \theta)
θMLE=θargmaxlogP(X;θ) 为什么要加一个
log
\log
log函数呢? 上面提到,从
P
(
x
;
θ
)
P(x ; \theta)
P(x;θ)概率分布中产生相互独立的样本
x
x
x,我们称
x
x
x服从于
P
(
x
;
θ
)
P(x ; \theta)
P(x;θ)且独立同分布。数学符号记作:
x
∼
iid
P
(
x
;
θ
)
x \overset{\text{iid}}{\sim}P(x ; \theta)
x∼iidP(x;θ) 因此,数据集合
X
\mathcal X
X产生的联合概率分布
P
(
X
;
θ
)
P(X; \theta)
P(X;θ)表示如下:
P
(
X
;
θ
)
=
∏
i
=
1
N
P
(
x
(
i
)
;
θ
)
P(X ; \theta) = \prod_{i=1}^N P(x^{(i)} ; \theta)
P(X;θ)=i=1∏NP(x(i);θ) 我们在处理连乘过程中是非常消耗运算资源的,我们给
P
(
X
;
θ
)
P(X; \theta)
P(X;θ)添加一层
log
\log
log函数,重新观察运算过程:
log
P
(
X
;
θ
)
=
log
∏
i
=
1
N
P
(
x
(
i
)
;
θ
)
=
∑
i
=
1
N
log
P
(
x
(
i
)
;
θ
)
\begin{aligned} \log P(X; \theta) & = \log \prod_{i=1}^N P(x^{(i)} ; \theta) \\ & = \sum_{i=1}^N \log P(x^{(i)} ; \theta) \end{aligned}
logP(X;θ)=logi=1∏NP(x(i);θ)=i=1∑NlogP(x(i);θ) 我们发现,
log
\log
log函数将极大似然估计中的乘法运算替换成加法运算,有效降低了运算资源的消耗; 个人理解:若干个概率值相乘(有多少个样本,就有多少个概率结果),它的结果都会无限趋近于零,最终可能会达到计算机能够判定的临界值 -> 这给计算机的计算和判定带来负担,并存在判定错误的隐患。
我们同样发现,新结果中的
P
(
x
(
i
)
;
θ
)
P(x^{(i)}; \theta)
P(x(i);θ)套了一层
log
\log
log函数,这个
log
\log
log是否对极大似然估计结果产生影响呢?
log
\log
log函数图像如下图所示: 我们发现:
- log \log log函数属于单调递增函数,因此 log P ( x ( i ) ; θ ) \log P(x^{(i)} ; \theta) logP(x(i);θ)中 log \log log函数的添加对极大似然估计结果的单调性没有影响。
- 由于 P ( x ( i ) ; θ ) P(x^{(i)} ; \theta) P(x(i);θ)是概率结果,其值域为 [ 0 , 1 ] [0,1] [0,1],而 log \log log映射后的结果值域为 ( − ∞ , 0 ] (-\infty,0] (−∞,0],其映射区间明显增大。
- 相比于 ∏ i = 1 N P ( x ( i ) ; θ ) \prod_{i=1}^N P(x^{(i)} ; \theta) ∏i=1NP(x(i);θ), ∑ i = 1 N log P ( x ( i ) ; θ ) \sum_{i=1}^N \log P(x^{(i)} ; \theta) ∑i=1NlogP(x(i);θ)结果存在上界(最大值) → ≤ 0 \to \leq 0 →≤0 恒成立。
相比于频率学派,贝叶斯学派的观点是: P ( x ∣ θ ) P(x \mid \theta) P(x∣θ)中的 参数 θ \theta θ不是一个固定结果,而是和 P ( x ∣ θ ) P(x \mid \theta) P(x∣θ)一样,都是随机变量,且服从某一概率分布。 数学符号表达为: θ ∼ p ( θ ) \theta \sim p(\theta) θ∼p(θ) 通常情况下,称 p ( θ ) p(\theta) p(θ)为 先验分布(Prior Distributions)。 使用贝叶斯定理,将先验分布、后验分布(Posterior Distributions)、似然(Likelihood)联系起来。 观察 贝叶斯定理: P ( θ ∣ X ) = P ( X ∣ θ ) ⋅ P ( θ ) P ( X ) P(\theta \mid X) = \frac{P(X \mid \theta) \cdot P(\theta)}{P(X)} P(θ∣X)=P(X)P(X∣θ)⋅P(θ) 其中:
- P ( θ ∣ X ) P(\theta \mid X) P(θ∣X)是后验分布,是基于对样本 X X X采样之后得到的分布;
- P ( θ ) P(\theta) P(θ)是先验分布,即对样本 X X X进行 采样之前,通过观察,人们也会对 θ \theta θ有一些认识。
- P ( X ∣ θ ) P(X \mid \theta) P(X∣θ)是似然,以基于参数 θ \theta θ的概率分布 P ( X ∣ θ ) P(X \mid \theta) P(X∣θ)生成样本 X X X。
- 分母部分称为配分函数(Partition function),它本质上是一个边缘概率(如果是离散型随机变量,使用 ∑ \sum ∑进行表达): P ( X ) = { ∫ θ P ( X ∣ θ ) P ( θ ) d θ ∑ θ P ( X ∣ θ ) P ( θ ) \begin{aligned} P(X) = \left\{ \begin{array}{ll} \int_{\theta} P(X\mid \theta)P(\theta)d\theta\quad \\ \quad \\ \sum_{\theta} P(X\mid \theta)P(\theta) \end{array} \right. \end{aligned} P(X)=⎩ ⎨ ⎧∫θP(X∣θ)P(θ)dθ∑θP(X∣θ)P(θ)
贝叶斯学派对于参数
θ
\theta
θ分布的常用估计方法:最大后验概率(Maximum A Posteriori)估计 其本意即找到一个后验概率
P
(
θ
∣
X
)
P(\theta \mid X)
P(θ∣X)最优结果所对应参数
θ
\theta
θ的分布作为最优估计。
θ
M
A
P
=
arg
max
θ
P
(
θ
∣
X
)
=
arg
max
θ
P
(
X
∣
θ
)
⋅
P
(
θ
)
P
(
X
)
\begin{aligned} \theta_{MAP} & = \mathop{\arg\max}\limits_{\theta} P(\theta \mid X) \\ & = \mathop{\arg\max}\limits_{\theta} \frac{P(X \mid \theta) \cdot P(\theta)}{P(X)} \end{aligned}
θMAP=θargmaxP(θ∣X)=θargmaxP(X)P(X∣θ)⋅P(θ) 观察上式的分母
P
(
X
)
P(X)
P(X):其本质上就是一个关于
X
X
X的 边缘概率,而
θ
\theta
θ是一个积分常量。因此
P
(
X
)
P(X)
P(X)和
θ
\theta
θ无关。(该部分可参考动态规划求解强化学习任务——策略评估[解析解]中的条件概率密度积分
)
∫
θ
P
(
X
∣
θ
)
P
(
θ
)
d
θ
=
∫
θ
P
(
X
,
θ
)
d
θ
=
P
(
X
)
\int_{\theta} P(X\mid \theta)P(\theta)d\theta = \int _{\theta}P(X,\theta)d\theta = P(X)
∫θP(X∣θ)P(θ)dθ=∫θP(X,θ)dθ=P(X) 因此,上式可以等价为:
θ
M
A
P
∝
arg
max
θ
P
(
X
∣
θ
)
⋅
P
(
θ
)
\theta_{MAP} \propto \mathop{\arg\max}\limits_{\theta} P(X \mid \theta) \cdot P(\theta)
θMAP∝θargmaxP(X∣θ)⋅P(θ)
实际上,最大后验概率估计并 不是 标准的贝叶斯学派对于参数 θ \theta θ的估计方法,贝叶斯学派方法本质上就是要求 P ( θ ∣ X ) P(\theta \mid X) P(θ∣X)这个分布本身——贝叶斯估计(Bayesian Estimation) P ( θ ∣ X ) = P ( X ∣ θ ) ⋅ P ( θ ) ∫ P ( X ∣ θ ) P ( θ ) d θ P(\theta \mid X) = \frac{P(X \mid \theta) \cdot P(\theta)}{\int P(X\mid \theta)P(\theta)d\theta} P(θ∣X)=∫P(X∣θ)P(θ)dθP(X∣θ)⋅P(θ)
贝叶斯估计自身存在弊端,其核心问题在于:要将 P ( X ) P(X) P(X)强行求解。 回顾该式: P ( X ) = ∫ θ P ( X ∣ θ ) P ( θ ) d θ P(X) = \int_{\theta} P(X\mid \theta)P(\theta)d\theta P(X)=∫θP(X∣θ)P(θ)dθ 由于 θ \theta θ是一个分布,该分布是存在维度的。如果是在低维状态下,积分可以较容易地计算出来,但是如果 θ \theta θ维度较高,这个积分将变得 异常复杂。从而使对后验分布 P ( θ ∣ X ) P(\theta \mid X) P(θ∣X)进行精确计算是几乎无法实现的。因此,可以采用一些近似计算来获取后验分布。
常见的近似求解方法:
- 确定性近似 → \to → 变分推断(Variational Inference,VI);
- 随机性近似 → \to → 马尔可夫链蒙特卡洛方法(Markov Chain Monte Carlo,MCMC)
回顾最大后验概率估计公式: θ M A P ∝ arg max θ P ( X ∣ θ ) ⋅ P ( θ ) \theta_{MAP} \propto \mathop{\arg\max}\limits_{\theta} P(X \mid \theta) \cdot P(\theta) θMAP∝θargmaxP(X∣θ)⋅P(θ) 和极大似然估计一样,将 log \log log添加到上式中: θ M A P ∝ arg max θ log P ( X ∣ θ ) ⋅ P ( θ ) ∝ arg max θ log P ( X ∣ θ ) + log P ( θ ) \begin{aligned} \theta_{MAP} & \propto \mathop{\arg\max}\limits_{\theta} \log P(X \mid \theta) \cdot P(\theta) \\ & \propto \mathop{\arg\max}\limits_{\theta}\log P(X \mid \theta) + \log P(\theta) \end{aligned} θMAP∝θargmaxlogP(X∣θ)⋅P(θ)∝θargmaxlogP(X∣θ)+logP(θ) 和极大似然估计相比,最大后验概率估计多了一项 log P ( θ ) \log P(\theta) logP(θ); θ M L E = arg max θ log P ( X ∣ θ ) \theta_{MLE} = \mathop{\arg\max}\limits_{\theta} \log P(X \mid \theta) θMLE=θargmaxlogP(X∣θ) 因此,最大后验概率估计不仅要让 log P ( X ∣ θ ) \log P(X \mid \theta) logP(X∣θ)达到最大,而且还要让 log P ( θ ) \log P(\theta) logP(θ)也要达到最大。从而出现 最大后验估计能够影响参数的值朝着先验分布偏移。
使用投掷硬币试验进行说明: 取一个质地均匀的硬币,投掷10次,投掷结果如下:
正面朝上反面朝上次数73设:投掷硬币正面朝上的概率为 p p p,则反面朝上的概率为 ( 1 − p ) (1-p) (1−p)。当前试验使用极大似然估计计算结果: P ( X ∣ θ ) = ( p ) 7 × ( 1 − p ) 3 P(X \mid \theta) = (p)^7 \times (1-p)^3 P(X∣θ)=(p)7×(1−p)3 对上述结果进行 log \log log操作: ln [ P ( X ∣ θ ) ] = ln [ ( p ) 7 × ( 1 − p ) 3 ] = 7 ln ( p ) + 3 ln ( 1 − p ) \begin{aligned} \ln \left[P(X \mid \theta)\right] & = \ln \left[(p)^7 \times (1-p)^3 \right] \\ & = 7\ln(p) + 3\ln(1-p) \end{aligned} ln[P(X∣θ)]=ln[(p)7×(1−p)3]=7ln(p)+3ln(1−p) 目的是求解 ln [ P ( X ∣ θ ) ] \ln \left[ P(X \mid \theta) \right] ln[P(X∣θ)]的最大值,对上式进行求导操作: ∂ ln [ P ( X ∣ θ ) ] ∂ P ( X ∣ θ ) = 0 → 7 p + 3 1 − p = 0 → p = 0.7 \begin{aligned} & \frac{\partial \ln \left[P(X \mid \theta)\right]}{\partial P(X \mid \theta)} = 0 \\ & \to \frac{7}{p} + \frac{3}{1 - p} = 0 \\ & \to p = 0.7 \end{aligned} ∂P(X∣θ)∂ln[P(X∣θ)]=0→p7+1−p3=0→p=0.7
在实际运算中同样可以验证这个信息: 代码如下:
def f(x):
return (x ** 7) * ((1 - x) ** 3)
if __name__ == '__main__':
x = np.linspace(0,1,100)
y = [f(i) for i in x]
plt.plot(x,y)
plt.plot([0.7 for _ in y])
plt.show()
返回结果如下。我们发现,确实在0.7的位置取到最值:
至此,使用极大似然估计方法计算得到 投掷硬币正面朝上的概率为0.7。 如果试验之前已经知道该该硬币是质地均匀的: P ( H e a d ) = P ( T a i l ) = 0.5 P(Head) = P(Tail) = 0.5 P(Head)=P(Tail)=0.5 由于最大后验概率估计中 θ \theta θ是一个分布而不是具体结果,因此假设 p ( θ ) p(\theta) p(θ)是一个均值为0.5,方差为0.1的高斯分布,即: P ( θ ) = 1 2 π σ exp { − ( x − μ ) 2 2 σ 2 } = 1 0.1 × 2 π exp { − ( p − 0.5 ) 2 0.02 } \begin{aligned} P(\theta) & = \frac{1}{\sqrt{2\pi}\sigma}\exp \left\{-\frac{(x - \mu)^2}{2\sigma^2}\right\} \\ & = \frac{1}{0.1 \times\sqrt{2\pi}} \exp \left\{-\frac{(p - 0.5)^2}{0.02}\right\} \end{aligned} P(θ)=2π σ1exp{−2σ2(x−μ)2}=0.1×2π 1exp{−0.02(p−0.5)2}
根据最大后验概率估计,计算函数的最值:
ln
(
P
(
x
∣
θ
)
P
(
θ
)
)
=
ln
(
P
(
x
∣
θ
)
)
+
ln
(
P
(
θ
)
)
=
ln
(
(
p
)
7
×
(
1
−
p
)
3
)
+
ln
[
1
0.1
×
2
π
exp
{
−
(
p
−
0.5
)
2
0.02
}
]
\begin{aligned} \ln(P(x\mid \theta)P(\theta)) & = \ln(P(x\mid \theta)) + \ln(P(\theta))\\ & = \ln((p)^7 \times (1-p)^3) + \ln \left[\frac{1}{0.1 \times\sqrt{2\pi}} \exp \left\{-\frac{(p - 0.5)^2}{0.02} \right\} \right] \end{aligned}
ln(P(x∣θ)P(θ))=ln(P(x∣θ))+ln(P(θ))=ln((p)7×(1−p)3)+ln[0.1×2π
1exp{−0.02(p−0.5)2}] 对该结果求导,可以得到如下式子:
3
1
−
p
+
7
p
−
100
×
(
p
−
1
2
)
\frac{3}{1 - p} + \frac{7}{p} - 100 \times (p - \frac{1}{2})
1−p3+p7−100×(p−21) 对该求导结果求解零点,我们这里使用代码实现(解一元三次方程费眼睛~
)
def diver_opera(x):
return (3 / (x - 1)) + (7 / x) - (100 * (x - 0.5))
if __name__ == '__main__':
x = np.linspace(0,1,500)
dy = [diver_opera(i) for i in x]
plt.plot(x,dy)
plt.plot(x,[0 for i in x])
plt.show()
我们发现,零点位置横坐标约为
p
=
0.558
p=0.558
p=0.558。即 通过最大后验概率估计投掷硬币正面朝上的概率为0.558。直接求解
P
(
X
∣
θ
)
P
(
θ
)
P(X \mid \theta)P(\theta)
P(X∣θ)P(θ)同样能够看到该结果。代码如下:
import math
def norm(x):
return (1 / (0.01 * math.sqrt(2 * math.pi))) * math.exp(-1 * (((x - 0.5) ** 2) / 0.02))
def f(x):
return (x ** 7) * ((1 - x) ** 3) * norm(x)
if __name__ == '__main__':
x = np.linspace(0,1,500)
y_ = [f(i) for i in x]
plt.plot(x,y_)
plt.plot([0.558 for i in y_],y_)
plt.show()
图像结果如下: 但是随着试验次数的增加,极大似然估计的计算结果会越来越准确,而先验知识能够影响的部分也越来越小。 基于上述例子,若改成投掷1000次硬币,正面朝上和反面朝上结果分布如下:
在不修改先验分布 P ( θ ) P(\theta) P(θ)的前提下,依然使用极大似然估计和最大后验概率估计对 θ \theta θ进行求解: 代码如下:
import math
def norm(x):
return (1 / (0.01 * math.sqrt(2 * math.pi))) * math.exp(-1 * (((x - 0.5) ** 2) / 0.02))
def mle(x):
return (x ** 700) * ((1 - x) ** 300)
def map_operation(x):
return (x ** 700) * ((1 - x) ** 300) * norm(x)
if __name__ == '__main__':
x = np.linspace(0,1,500)
y_mle = [mle(i) for i in x]
y_map = [map_operation(i) for i in x]
plt.plot(x,y_map)
plt.plot(x,y_mle)
plt.show()
图像结果如下(橙色线是
M
L
E
MLE
MLE结果,蓝色线是
M
A
P
MAP
MAP结果,它们最大值对应的横坐标相差不大(
M
A
P
MAP
MAP结果要更小一点点)): 我们发现,最大后验概率估计貌似不起作用了,即随着重复试验次数的增加,先验知识的影响在减小。
可能这个硬币确实是个质地不均匀的硬币~
θ
M
L
E
=
0.7
,
θ
M
A
P
=
0.695
\theta_{MLE} = 0.7,\theta_{MAP}=0.695
θMLE=0.7,θMAP=0.695
总结: 相比于极大似然估计的操作,最大后验概率估计相当于在极大似然估计的基础上,乘以一个关于参数 θ \theta θ的先验认识 P ( θ ) P(\theta) P(θ),而 P ( θ ) P(\theta) P(θ)的作用就是 影响参数结果朝着 P ( θ ) P(\theta) P(θ)方向偏移( 0.7 ⟶ 0.5 0.558 0.7 \stackrel{0.5}{\longrightarrow} 0.558 0.7⟶0.50.558),但随着重复试验次数的增多,先验分布的影响力在逐渐减小,但先验分布仍然是 很有必要的。
下一节将介绍高斯分布。
相关参考: 机器学习-白板推导系列(一)-开篇 最大似然估计,最大后验估计以及贝叶斯估计的理解整理