关于平均值(By Dahua Lin@MIT)

转载:http://www.zhizhihu.com/html/y2010/2511.html

小时候,老师就告诉我们,读书讲究先由薄而厚,再由厚而薄。前者是吸收和积累,后者是融会和消化。

这些年,读了不少关于统计学习的东西,很多东西都记不清楚了。从我自己的角度看来(可能是很肤浅的),学概率和统计,关键是记住三个概念:测度(measure),期望(expectation),和独立性(independence)。

测度是现代概率理论的基石。在经典的概率论里面——比如我们在本科学的那些——大多是通过举例子和文字说明的方式告诉你概率是什么,这容易 明白,不过缺乏严密的公理化根基。现代概率论整个建立在测度理论的基础上,概率的定义非常简单,不过也很抽象——所谓“概率”,就是归一化的测度。没有测 度,就没有整个概率论的大厦,所以它很重要——不过,它在实用中直接用上的机会不大,所以不是这篇文章的主体。关于独立性,以及它的一个孪生的名 词:Markov,也扮演着非常重要的角色,它是Graphical models的基础。有兴趣的可以去读M. I. Jordan的书。

而在统计学习的实际应用中,就是你平时写code,用得最多的就是期望,或者一个通俗点的版本——平均值。其实这两者不太一样,期望是从model出发演绎的,平均值通常是指从data出发归纳的。不过它们的关系确实非常密切。

统计学习在很多情况下,就是求平均值

我们平常说去Learn一个model——其实,在很多情况下,这就是干一件听上去很简单的事情,求平均值。我们知道,我们所接触的大部分 重要的概率分布,都属于exponential family,比如Gauss, Binomial, Multinomial, Dirichlet, Poisson, Exponential, Gamma等等分布都属于这个家族。它的一个重要特点就是——得期望者得天下。就是说,知道了某些统计量的期望,就知道了整个model,至于model 的参数,或者就是期望本身(比如Gauss),或者不难从期望中得到。可以证明,对于这些model,对它们的最大似然估计(Maximum Likelihood estimation),就是从data中算出某些统计量的平均值作为model的期望。

在Bayes学习中,我们还考虑先验分布(prior)。在这里,model的估计还是求平均值。所谓prior是怎么来的?就是以前曾经 观察过的data那里总结得到的,然后以prior的形式影响当前的model估计。一般而言,使用exponential family,我们通常会使用conjugate prior,这种prior,基本就是沿着刚才说的,假想我们已经看过一些data的思路得到的,它的形式和data mean几乎如出一辙。而带了prior的估计,还是在求平均值,不过这里的平均值就是(假想)以前观察过的数据和当前的数据合在一起求平均。

对于更加复杂的Graphical model,每个节点的estimate和update,很多时候,其实是做了这样的事情——把其它节点传来的平均值和这个节点接触的数据的平均值混合进 行新的平均。从最简单的Gauss, 到更加复杂的Gaussian Mixture Model, Latent Dirichlet Allocation, Markov Random Field, Generalized Kalman Filtering概莫能外——大家可以仔细看看它们的每一个update公式,看看哪个不是在求平均值。

怎样求平均值

平均值是很重要的。不过怎么求呢?这似乎是小学初中就解决了的问题。不过,求平均值的世界其实是如此博大精深。如果说它是少林武学,我现在这点水平,也就够在嵩山下扫扫地罢了。很多在世界上赫赫有名的数学家,穷毕生心血,方能一窥堂奥。

虽然,只有扫地的水平,不过起码也看过大师们练武。这门学问主要有两个方面:得到data求平均值,得到model求期望。

先说说求data的平均值。这太简单了,有什么好说的。不就是加法和乘法么,小学学过算术的人都会算,即使没学过,拿个计算器也照样算。在 通常的实数空间内,确实很简单;不过对于一般的求平均值的情况,就非常非常困难了。一般来说,求平均值有两个流派,一种是基于线性代数(linear algebra),另外一种是基于度量空间(metric space)。前面一种大家很熟悉:

m = (x1 + x2 + ... + xn) * (1/n)。

这是我们读了这么多年书最常见的平均值。不过,这样定义太局限了,它要求这些东西能做加法和数乘——我不得不说,这个要求实在太高,只有线性空间 (这种空间是数学里面的贵族,它们什么好处都全了)能够满足——对于数学领域更广大的人民群众(各种更一般的数学结构,比如群,拓扑流形),加法和数乘简 直是一种奢侈得不切实际的活动。

其实平均值是一个非常广泛的概念,不仅仅存在于线性空间中,还为广大人民群众服务。对于某个度量空间,它的一般性定义是这么给出的

使得 d(m, x1) + d(m, x2) + ... + d(m, xn) 最小的那个m

也就是说,求平均值是一个优化问题。关于这个问题,在不同的空间中有不同的答案:在最高级的希尔伯特空间中(定义了内积的完备线性空间),m就是上 面给出的基于线性代数的形式。所以说,基于线性代数的定义仅仅是基于度量空间的定义的一个特例。不过由于这个特例被广泛使用,所以大家一说平均值就想起 它,而不是一般形式。在推广一些的巴拿赫空间中(定义了范数的完备线性空间),上述的问题是一个凸优化问题,因为范数必然是凸函数。它具有唯一的最优解。

最困难的是在非线性空间中。一个典型的例子是黎曼流形(注意,这里我们只讨论黎曼流形,对于更为一般的拓扑流形或者微分流形,因为不具有度 量结构,所以不能定义均值。)在黎曼流形上,两点间的距离是通过测地距离给出的。在黎曼流形上,通过测地距离定义的平均值,叫做黎曼中心。一部分朋友对于 这几个术语可能不太熟悉,还是举个形象点的例子。比如,在地球上给出几个地点,你要在地面上找一个“平均地点”,使得它到那几个地点的“地面距离”的平方 和最小。如果,用传统的算术方法拿这些地点的三维坐标来算,你估计得在那钻个油井了。对于“球面平均”问题(专门一点的说法叫做特殊正交群SO(3)的黎 曼中心,恩,这个名词我也有点晕),到了在本世纪,在数学里依旧可以发paper,目前还没有一般情况下的解析解。

别的领域我不懂,不过“球面平均”在vision里面价值是很大的,它是对三维旋转变换建立统计模型的基础——我们再一次看到了求平均值对 于统计的重要意义。球面平均求的是“平均”的旋转,如果对于一般的仿射变换(Affiine transform),“平均”的变换又怎么求呢?这是个open problem,留待大家思考。

怎样求期望

说完从data求平均值,再说说从model得到期望(expectation)——这们学问就更博大了。虽然,期望的定义很简单——求和或者积分就行了。不过,它的实际计算,对于很多实际模型是intractable的。

概率论最早源于掷色子,我们的前辈数学家们为了破解求复杂模型求期望的问题,提出的方法就是掷色子。在学术上,美其名曰“蒙特卡罗方法”(Monte Carlo)。原理很简单,不断地掷色子来大量采样,然后从采来的样本求平均值来逼近模型的期望。

掷色子是世界上最有学问的之一,正因为如此,我们对于“赌神”,“赌王”之类的人物崇拜犹如滔滔江水,因为它们掷色子掷得好。无数的统计学家把毕生经历奉献给掷色子(采样)事业,并且做出伟大成就。关于采样的专著和文献,汗牛充栋。

掷色子就这么难么?是的。据估算,即使对于一个复杂度不高的model,要得到一个可以接受的估计,所需的样本量往往大得惊人,而且指数增 长。如果不掌握要领,你即使掷到宇宙末日,估计离一个靠谱的估计还远着呢。采样技术名目繁多,最流行的莫过于重要性采样(importance sampling)和马尔科夫链蒙特卡罗过程(MCMC)。具体就不多说了。

你可能感兴趣的:(关于平均值(By Dahua Lin@MIT))