新的方向,在做特征提取器部分发现网上知识点分散,在此总结一下
小样本学习(Few-shot Learning)之特征提取器-最大后验概率估计(MAP)、Wasserstein距离、最优传输-Sinkhorn算法
1. 最大后验概率估计(MAP)
最大后验概率估计(Maximum A Posteriori, MAP)是一种常用的参数估计方法,要弄懂其原理,我们先从统计说起。
1.1 统计
Lary Wasserman 在 All of Statistics 的序言里有说过概率论和统计推断的区别:
The basic problem that we study in probability is:
Given a data generating process, what are the properities of the outcomes?
The basic problem of statistical inference is the inverse of probability: Given the outcomes, what can we say about the process that generated the data?
总结:
概率是已知模型和参数(生成数据的过程),推数据(结果)。
统计是已知数据(结果),推模型和参数(生成数据的过程)。
统计研究的问题是:已知一堆数据,如何利用这堆数据去预测模型和参数。
以猪为例。现在我买到了一堆肉,通过观察和判断,我确定这是猪肉(确定模型。在实际研究中,也是通过观察数据推测模型是/像高斯分布的、指数分布的、拉普拉斯分布的等等),然后,可以进一步研究,判定这猪的品种、喂养方式、猪棚的设计、是圈养猪还是跑山猪还是网易猪,等等(推测模型参数)。
现在我们知道了最大后验概率估计(Maximum A Posteriori, MAP)是一种统计领域的参数估计方法,那么具体如何实现?这需要我们理解贝叶斯思想。
1.2 贝叶斯公式(Bayes’ Theorem)
贝叶斯统计的重点:参数未知且不确定,因此作为随机变量,参数本身也是一个分布,同时,根据已有的信息可以得到参数θ的先验概率,根据先验概率来推断θ的后验概率。
贝叶斯估计:从**参数的先验知识和样本(数据)**出发。期望后延信息在真实的θ值处有一个尖峰。
我们都知道贝叶斯公式(Bayes’ Theorem):
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) ( 1 ) P(A|B)=\frac{P(B|A)P(A)}{P(B)} (1) P(A∣B)=P(B)P(B∣A)P(A)(1)
把B展开,可以写成:
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ∣ A ) P ( A ) + P ( B ∣ ∼ A ) P ( ∼ A ) ( 2 ) P(A|B)=\frac{P(B|A)P(A)}{P(B|A)P(A)+P(B|∼A)P(∼A)} (2) P(A∣B)=P(B∣A)P(A)+P(B∣∼A)P(∼A)P(B∣A)P(A)(2)
这个式子就很有意思了。
想想这个情况。一辆汽车(或者电瓶车)的警报响了,你通常是什么反应?有小偷?撞车了? 不。。 你通常什么反应都没有。因为汽车警报响一响实在是太正常了!每天都要发生好多次。本来,汽车警报设置的功能是,出现了异常情况,需要人关注。然而,由于虚警实在是太多,人们渐渐不相信警报的功能了。
贝叶斯公式就是在描述,你有多大把握能相信一件证据?(how much you can trust the evidence)
我们假设响警报的目的就是想说汽车被砸了。把 A A A计作“汽车被砸了”, B B B计作“警报响了”,带进贝叶斯公式里看。我们想求等式左边发生 A ∣ B A|B A∣B的概率,这是在说警报响了,汽车也确实被砸了。
汽车被砸引起(trigger)警报响,即 B ∣ A B|A B∣A。但是,也有可能是汽车被小孩子皮球踢了一下、被行人碰了一下等其他原因(统统计作 ∼ A ∼A ∼A),其他原因引起汽车警报响了,即 B ∣ ∼ A B|∼A B∣∼A。
那么,现在突然听见警报响了,这时汽车已经被砸了的概率是多少呢(这即是说,警报响这个证据有了,多大把握能相信它确实是在报警说汽车被砸了)?想一想,应当这样来计算。用警报响起、汽车也被砸了这事件的数量,除以响警报事件的数量(即为(1))。进一步展开,即警报响起、汽车也被砸了的事件的数量,除以警报响起、汽车被砸了的事件数量加上警报响起、汽车没被砸的事件数量(即为(2))。
思考(2),想让 P ( A ∣ B ) = 1 P(A|B)=1 P(A∣B)=1,即警报响了,汽车一定被砸了,该怎么做呢?
让 P ( B ∣ ∼ A ) P ( ∼ A ) = 0 P(B|∼A)P(∼A)=0 P(B∣∼A)P(∼A)=0即可。很容易想清楚,假若让 P ( ∼ A ) = 0 P(∼A)=0 P(∼A)=0,即杜绝了汽车被球踢、被行人碰到等等其他所有情况,那自然,警报响了,只剩下一种可能——汽车被砸了。这即是提高了响警报这个证据的说服力。
从这个角度总结贝叶斯公式:做判断的时候,要考虑所有的因素。 老板骂你,不一定是你把什么工作搞砸了,可能只是他今天出门前和太太吵了一架。
再观察(2)右边的分子, P ( B ∣ A ) P(B|A) P(B∣A)为汽车被砸后响警报的概率。姑且仍为这是1吧。
但是,若 P ( A ) P(A) P(A)很小,即汽车被砸的概率本身就很小,则 P ( B ∣ A ) P ( A ) P(B|A)P(A) P(B∣A)P(A)仍然很小,即(2)右边分子仍然很小, P ( A ∣ B ) P(A|B) P(A∣B)还是大不起来。
这里, P ( A ) P(A) P(A)即是常说的先验概率,如果 A A A的先验概率很小,就算 P ( B ∣ A ) P(B|A) P(B∣A)较大,可能 A A A的后验概率 P ( A ∣ B ) P(A|B) P(A∣B)还是不会大(假设 P ( B ∣ ∼ A ) P ( ∼ A ) P(B|∼A)P(∼A) P(B∣∼A)P(∼A)不变的情况下)。
从这个角度思考贝叶斯公式:一个本来就难以发生的事情,就算出现某个证据和他强烈相关,也要谨慎。证据很可能来自别的虽然不是很相关,但发生概率较高的事情。
例: 发现刚才写的代码编译报错,可是我今天状态特别好,这语言我也很熟悉,犯错的概率很低。因此觉得是编译器出错了。 ————别,还是先再检查下自己的代码吧。
1.3 似然函数(likelihood function)和概率函数(probability function)
在统计里面,似然函数和概率函数是两个不同的概念(其实也很相近就是了)。
之前我们说到:
概率是已知模型和参数(生成数据的过程),推数据(结果)。
统计是已知数据(结果),推模型和参数(生成数据的过程)。
对于这个函数: P ( x ∣ θ ) P(x|θ) P(x∣θ)。输入有两个: x x x表示某一个具体的数据; θ θ θ表示模型的参数。
如果 θ θ θ是已知确定的, x x x是变量,这个函数叫做概率函数(probability function),它描述对于不同的样本点 x x x,其出现概率是多少。
如果 x x x是已知确定的, θ θ θ是变量,这个函数叫做似然函数(likelihood function), 它描述对于不同的模型参数,出现 x x x这个样本点的概率是多少。
例如:
f ( x , y ) = x y f(x,y)=x^y f(x,y)=x