首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >扔硬币中的思考——隐含变量建模

扔硬币中的思考——隐含变量建模

作者头像
magic2728
发布2020-04-27 10:50:57
7210
发布2020-04-27 10:50:57
举报
文章被收录于专栏:MatheMagicianMatheMagician

在我们的经典统计学教科书中,数据是正态的,分布是已知的,测量也是精确的,在这样的前提下我们才做着漂亮简明的各种估计、检验和性质分析。但是一旦拿到实际问题中就发现,这些条件一个都不成立。逻辑起点错了,就全错了。其中一个典型的就是:

我需要的变量并观测不到,或者观测是有误差的。

那么这个时候我们应当怎样处理,就有一套初等统计教科书上没有的方法论了。在机器学习类的书中会有一些介绍,我们把它叫做隐含变量建模,今天我们就从几个问题入手,来作为专题分析理解一下。

我们来看一下几个问题:

  1. 有一个硬币,扔了m次的结果记为{Bm},求扔一次硬币正面向上的概率参数p;
  2. 有一个硬币,扔了m次,但是扔完以后由于某种原因无法准确观测,故每次对其用同一台机器进行观察,进行了n次观察,每次观察都会得到一个[0, 1]的正面向上可能性,记为{Pmn},求扔一次硬币正面向上的概率参数p;
  3. 有一个硬币,扔了m次,但是扔完以后由于某种原因无法准确观测,故每次都用同样的n台机器进行观察,机器经过一定计算以后分别得到其认为的正面或反面结果,记作{Bmn},求扔一次硬币正面向上的概率参数p;

没人会在实践中遇到这样的问题,但这三个问题恰好对应3个非常真实的应用场景:

其中1问题是简单的由频率学派观点来计算参数的点/区间估计值和分析其统计性质的问题,当然当实验次数少,又有一些非实验的知识因素想引入的时候,Bayesian定理也可以发挥其灵活的优势。

而2是常见的半监督数据场景下我们面临的挑战,这样的数据可以叫“不完全观测数据”,我们时常要在这样的数据条件下处理问题:虽然海量,但并不是为我们直接准备的,如何进行预处理化为理想的形式是关键。(互联网上的文本,图像以及行为数据大多如此,在生物信息学中对碱基的光学信号测量也同理。)

3就更复杂些了,不仅观测不完全可信,而且还有多重观测,既带来了额外信息,又增加了混乱度。比如互联网工作中常见的多人标注同一个问题的场景,我们时常需要判定每一个人的水平以及最终结果,还有理想结果的上界。这都是我们互联网工作研究中常碰到的场景,也是最关心的。

你不妨用你自己的思路想想该怎样做再接着看下文。


接下来,我们从统计机器学习的角度,一一道来其模型和本质。

无隐含变量场景

问题一:有一个硬币,扔了m次的结果记为{Bm},求扔一次硬币正面向上的概率参数p;

第一个问题没什么多说的,两个方案:

  1. 频率学派的古典概型:用统计量得其点估计和区间估计结果,并分析其置信度等信息,最多再针对一个参数判断算出检验统计量,给出基于假设检验的结果,这一思路基本可以代表经典统计学对问题描述和求解的全部阐释了;
  2. Bayesian模型:把p看作变量求后验分布,再对应到MAP或PME的解作为结果,使得求值问题变成求分布,能直观度量出对估计置信度的大小,也方便引入先验信息。

一般隐含变量场景

问题二:有一个硬币,扔了m次,但是扔完以后由于某种原因无法准确观测,故每次对其用同一台机器进行观察,进行了n次观察,每次观察都会得到一个[0, 1]的正面向上可能性,记为{Pmn},求扔一次硬币正面向上的概率参数p;

第二个问题,有了隐含变量,在频率学派的基本理论中没有对这种场景的处理,但是在基于图模型的理论中有着很好的建模思路。于是我们搬来Bayesian模型,分析清楚问题以后,构建模型如下:

图1 问题2有向图模型

C是硬币真实的bool状态变量,是不可观测的,p’是观测到的概率值,其影响因素应该是硬币真实的C情况,作为一个bool变量来选择一组Beta分布的参数,也正是我们需要估计的机器测量参数{(ab1, ab2)i | i in C},其中ab1, ab2都是二维元组,分别是C = 0 / 1时的Beta分布的参数。

注意了,这里可以看到一台机器在这里被我们用2组Beta分布的参数来描述了,也就是说,对于一个给定的真实硬币状态,其按照一定的分布去产生p’,如果这个分布产生的p’越接近其硬币真实状态的0 / 1值,比如用log(p') ^ C + log(1 - p') ^ (1 – C)来描述(其实就是用机器生成的p’代替真实p计算的结果的对数似然值,公式虽然方便计算,抹去了逻辑值,但是也抹去了数学意义表达),表明这是一台更靠谱的机器,所以这个解法也顺便得到了机器的评价指标,更细了看可以用这个Beta分布的期望,众数之类的统计量。还有要注意,没有说机器在C = 1的时候就一定会给出p’ > 0.5的结果,反之亦然。

我们要最大化的是观测变量p’,即:

f(p’ | p, a, b) = f(p’, C = 0 | p, a, b) + f(p’,C = 1 | p, a, b)

这恰好是一个含有隐含变量C,不可直接观测,而只能观测以其为参数的分布的样本。这种问题若隐藏变量离散,似然函数简单,可以直接求导优化(一定程度上,神经网络的梯度下降算法就是这个思路),另一种常见思路则是EM算法,在理论上那个方案也可以得到局部最优解,而且计算相对方便:

E: f(C | p, a, b) ~ p(C) * p(p’ | C, a, b)

M: a, b, p = argmax Ef(C|p, a, b)(p(C) *p(p’ | C, a, b))

关于这里EM算法为什么有效,思路从何而来,我们后面找专门文章介绍,本篇重点分析的是建模的思路。

由于这个算法只能收敛到局部最优,所以初始解会很关键。所以可以把p和a,b都设成对应变量空间内的均匀分布参数(1,1),迭代而自然得到结果。如果观察机器还算靠谱,或有需求能够更快收敛的话,那么可以选择比如C = 1对应的第二项比第一项大很多,反之亦然,这样通过初始值指导得到机器是比较靠谱条件下的解。

当然这一切取决于观测水平,也就是机器水平。也许平均来看,观测到C = 0时候给出的C = 1的概率还更大也说不准,不过作为特征是都可以使用的,反面特征也是特征,只要不是完全摇摆不定的均匀分布就好了。

最后p(C = 1)的估计值即为所求,当然也可以再加一层先验,在一定先验下求MAP或PME。

不过实际应用中,应该还不会有人傻到每扔一次硬币就换一台机器,应该是去选择一台相对靠谱的机器,可以以偏斜向正确的一个先验来估计了。但是,有时候真的没法保证随便拿一台机器就真的靠谱,毕竟再高的合格率也会有赝品,如何解决这个问题呢?显然需要增加机器样品,像问题三那样来处理。

组合隐含变量场景

问题三:有一个硬币,扔了m次,但是扔完以后由于某种原因无法准确观测,故每次都用同样的n台机器进行观察,机器经过一定计算以后分别得到其认为的正面或翻面结果,记作{Bmn},求扔一次硬币正面向上的概率参数p;

问题三和二有些相似,但是多了一个条件,每次使用的机器是同样有序排列的n台,应该共享相同的性质。另外,得到的观测结果是一个处理得出的分类值而不是所谓可能性大小了,所以这个生成过程的参数为p’,对应两个C的值的两个伯努利分布参数,而如果是n台不同的可追踪机器,还对应n组这样的参数,其图模型如下:

图2 问题三有向图模型

其训练过程类似前者,由此,我们可以估计出真正的每一个C的后验分布,进而在真正使用样本的时候的态度变为:每个C’都是两个分布其一产生的,而这个选择C是不可观测变量,由此EM后估计出p, p‘,取出需要的作为我们求取的对象即可,比如p是硬币性质的估计,p'对应每台机器性能的度量,能不能够在指定分布下用尽可能大的概率产生正确观察。

大家注意了,无论机器生成的是问题三的bool结论C’还是概率估计p’,都是机器这个黑盒测量得到的特征而已,也可以很容易地想见,其实C’也是p’加阈值得到的而已,只是没有开放权限去看其内部构造罢了。但是这都不重要,把机器建模成一个条件随机变量产生机就好了,这是统计学的绝妙思路,能够在在不能够完全搞清楚机机理的情况下先下手分析,弄清楚能弄清楚的加以利用,对不清楚的也有自知之明。

问题三其实和很多互联网相关的标注场景很类似,有很多人(这里就是机器)对同一个样本的分类或判别问题给出结论,标一系列多个样本来解决。最后,要求出每个样本综合的结论以及置信度是多少。经常我们面对那些模棱两可的结论会争执不休,没有效率。要知道,我们人类的争执都只在个案的机理上,机器完全无法吸收这些内容,对我们系统的累积提高可以忽略。那么以上方法可以说是对这个问题最公平的结论了。统计学再一次在没有搞清楚真正机理的时候通过封装实现了问题的解决,妙哉!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MatheMagician 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档