武辰作品索引

知乎作品库

文章 · 7

知乎原文

[机器学习]学习笔记:SVM(支持向量机)的直观理解

支持向量机是一个二分类模型。在这篇文章里,我以最简单的两特征(即自变量只有两个)模型为例。

如下图所示,每一个数据带有两个特征:x和z。给定两个特征的值后,输出y=1或者-1。比如x代表年收入,z代表年消费,给定一个人的年收入和年消费情况,判断他是否会使用蚂蚁花呗,y=1代表他会使用蚂蚁花呗。

1代表正类,是圆形的点。-1代表负类,是小叉叉。

原文配图

比如:A的x值为3,z值为3,即A点的坐标是(3,3),而A属于正类,于是就有这样的映射:(3,3) →\rightarrow 1.反映在上面具体的例子中就是:有一个人的年收入和年消费都是3万元,且他会使用蚂蚁花呗。

类似地,B点反映的映射是:(4,0.5) →\rightarrow -1.

我们要找一条直线,把正类和负类分隔开来。事实上,我们可以找到无穷条这样的线。但是我们要选取一条最好的线。那什么样的线是最好的线呢?支持向量机认为,拥有最大间隔的线是最好的线。那什么是最大间隔呢?

先来一个直观的感受,如下图所示,黑线和红线都能够正确分离正类和负类。在我们的标准里,黑线是更优的。红线虽然也分对了所有的点,但是离样本点太近了。

原文配图

应用到新的样本(或应用到实际预测)中,假设有一个新的点D(如下图所示)。D本来是属于正类的,但是按照红线的标准,D会被划分到负类中。

原文配图

接下来就是具体的数学论述。

我们在高中学过,点( xix_{i} , ziz_{i} )到直线 ax+bz+c=0ax+bz+c=0 的带正负号的距离 dd 为:

axi+bzi+ca2+b2\frac{ax_{i}+bz_{i}+c}{\sqrt{a^{2}+b^{2}}} 。正负号表示点在直线的哪一边。

在支持向量机中,我们定义“几何间隔”为: yiaxi+bzi+ca2+b2y_{i}\frac{ax_{i}+bz_{i}+c}{\sqrt{a^{2}+b^{2}}} .

为什么要这样定义:由于当 axi+bzi+c>0ax_{i}+bz_{i}+c>0 时,经过模型计算, yy 的输出结果是1(事实上样本中的 yiy_{i} 也就是1);同理,当 axi+bzi+c<0ax_{i}+bz_{i}+c<0 时, yy 的输出结果是-1。只要这个点分对了,几何间隔就是正的。因为如果没有被正确分类,比如当 axi+bzi+c>0ax_{i}+bz_{i}+c>0 时,yy 的输出结果是1,但是 yiy_{i} 的真实值其实是-1,那么这个几何间隔就变成负数了,就不满足我们的要求了。

如下图所示,每个点到直线都有一个距离。首先找出距离直线距离最短的那个点(可能同时有几个点到直线的距离最短,这没有关系),假设这个点就是A。换一条线,离它最近的点也可能换。每画一条线,就看看离它最近的点有多远。我们要选的,就是最近的点也离它尽量远的那条线。

原文配图

记第 ii 个点到直线 ax+bz+c=0ax+bz+c=0 的几何间隔是 did_{i} ,

再记 d0=mind_{0}=min { did_{i} },即 d0d_{0} 是所有点中距离直线最短的距离。

我们的目标就是:

在 di≥d0d_{i}\geq d_{0} 的约束下,我们需要使 d0d_{0} 最大化.

接下来分析 di≥d0d_{i}\geq d_{0}这个约束条件,即:

yiaxi+bzi+ca2+b2≥y0ax0+bz0+ca2+b2y_{i}\frac{ax_{i}+bz_{i}+c}{\sqrt{a^{2}+b^{2}}}\geq y_{0}\frac{ax_{0}+bz_{0}+c}{\sqrt{a^{2}+b^{2}}}

由于直线 ax+bz+c=0ax+bz+c=0 与直线 λax+λbz+λc=0\lambda ax+\lambda bz+\lambda c=0 是同一条直线( λ\lambda 大于0),

所以约束条件等价于:

yiλaxi+λbzi+λc(λa)2+(λb)2≥y0λax0+λbz0+λc(λa)2+(λb)2y_{i}\frac{\lambda ax_{i}+\lambda bz_{i}+\lambda c}{\sqrt{(\lambda a)^{2}+(\lambda b)^{2}}}\geq y_{0}\frac{\lambda ax_{0}+\lambda bz_{0}+\lambda c}{\sqrt{(\lambda a)^{2}+(\lambda b)^{2}}}

也就是说,直线的系数同时放缩,对我们的约束没有影响。

因此,我们可以把系数一起乘上一个正数,让最近的点满足 y0(ax0+bz0+c)=1y_{0}(ax_{0}+bz_{0}+c)=1 。

所以问题转化为:在 yi(axi+bzi+c)≥1y_{i}({ax_{i}+bz_{i}+c})\geq1 的约束下,

使 1a2+b2\frac{1}{\sqrt{a^{2}+b^{2}}} 最大化。

即使 a2+b2\sqrt{a^{2}+b^{2}} 最小化。

以上是本篇文章的主要内容。这篇文章讲的是最基本的模型。事实上,实战过程中可能有远远不止两个特征。那么直线 ax+bz+c=0ax+bz+c=0 应该升级为超平面 wx+b=0wx+b=0 。其中 w,xw,x 都是n维向量,n是特征的维数(在上面的例子中n为2), bb 是截距。

另外,贴着间隔两侧边缘的点,就是支持向量。哪怕所有样本都分对了,这样的点也可以有好几个。

支持向量机还能和感知机作比较。在这里我想先和一元线性回归作比较。尽管它和一元线性回归是完全两码事,但是有一个值得比较的点:如图所示,一元线性回归要找的直线是使得九条绿色线段长度的平方和最小,而支持向量机要找的直线是,在正确分类的前提下,使得距离直线最短距离的点到直线的距离最大。

原文配图

知乎原文

独立和互斥是什么关系?独立和不相关是什么关系?

独立和互斥是什么关系?独立和不相关是什么关系?这是概率论中最基本的两个问题,也是很多人最容易弄混的两个问题。


首先来看独立和互斥的关系。要弄清楚关系,首先得弄明白定义。我们以两个事件间的关系为例。

事件 AA 与事件 BB 独立的定义是: P(AB)=P(A)P(B)P(AB)=P(A)P(B) 。

事件 AA 与事件 BB 互斥的定义是:集合 AA 与集合 BB 没有相同的样本点,即 A∩B=ϕA\cap B=\phi 。( ϕ\phi 代表空集, A∩BA\cap B 也可以简记为 ABAB )

同一枚硬币抛一次,正面和反面不能同时出现,这是互斥。你在北京抛一枚,我在上海抛另一枚,你抛出正面,不影响我这枚出正面的机会,这是独立。

如果事件 AA 和事件 BB 发生的概率都不为0,那么独立和互斥有这样一层关系:互斥不独立,独立不互斥。

证明:若 A、BA、B 互斥,则 AB=ϕAB=\phi ,那么 P(AB)=P(ϕ)=0P(AB)=P(\phi)=0 ,而 P(A)P(B)≠0P(A)P(B)\ne0 ,因此 P(AB)≠P(A)P(B)P(AB)\ne P(A)P(B) ,即A、BA、B 不独立。

另一方面,若 A、BA、B 独立,则有 P(AB)=P(A)P(B)P(AB)=P(A)P(B) 。接下来用反证法:假设A、BA、B 互斥,则 AB=ϕAB=\phi ,那么 P(AB)=P(ϕ)=0P(AB)=P(\phi)=0 ,而 P(A)P(B)≠0P(A)P(B)\ne0 ,则 P(AB)≠P(A)P(B)P(AB)\ne P(A)P(B) ,产生矛盾。因此若 A、BA、B 独立,则A、BA、B 不互斥。

“互斥不独立,独立不互斥”是在事件 AA 与事件 BB 发生的概率都不为0的情况下才有的结论。

接下来我要强调一个概念:零概率事件与不可能事件是不同的。不可能事件的定义是:若 A=ϕA=\phi ,则 AA 是不可能事件;零概率事件的定义是:若 P(A)=0P(A)=0 ,则 AA 是零概率事件。咋一看,两个定义好像没有什么区别。的确,在每个样本点都有正概率的离散模型里,两者是等价的。但是在连续场合,零概率事件是有可能发生的。比如 XX 服从(0,1)上的均匀分布,那么事件{ X=0.5X=0.5 }发生的概率为0,因为连续型随机变量取一个点的概率为0。但是事件{ X=0.5X=0.5 }是有可能发生的。不可能事件是比零概率事件更强的定义。因此若 P(A)=0P(A)=0 ,无法推出 AA 是空集。

类似地,1概率事件与必然事件是不同的。1概率事件是指发生概率为1的事件,但是它比“必然事件”更弱些。仍然举上面的例子:事件{ X≠0.5X\ne0.5 }发生的概率为1,但是它不是必然事件,因为事件{ X=0.5X=0.5 }仍然有可能发生。

于是有如下结论:零概率事件与任何事件独立;1概率事件与任何事件独立。我在这里只证明“零概率事件与任何事件独立”:设 P(A)=0P(A)=0 ,那么对于任何事件 BB ,有 A∩B⊆AA\cap B\subseteq A ,那么 P(AB)≤P(A)P(AB)\leq P(A) ,得到 P(AB)=0P(AB)=0 。于是有 P(AB)=P(A)P(B)=0P(AB)=P(A)P(B)=0 ,即A、BA、B 独立。类似地,“1概率事件与任何事件独立”留给读者自己证明。

我们已经知道,零概率事件与任何事件独立,1概率事件与任何事件独立。那么有没有什么事件与任何事件互斥呢?答案是:不可能事件与任何事件互斥。证明很简单:设 AA 是不可能事件,则 A=ϕA=\phi ,对于任何事件 BB ,有 A∩B=ϕA\cap B=\phi ,于是A、BA、B 互斥。

最后来一个终极问题:有没有什么事件与任何事件既独立又互斥呢?答案是:不可能事件与任何事件既独立又互斥!证明很简单:首先,不可能事件与任何事件互斥,这在上一段已经证明;又因为不可能事件一定是零概率事件,而零概率事件与任何事件独立。所以不可能事件与任何事件既独立又互斥。


接着来看独立和不相关的关系。同样地,要弄清楚关系,首先得弄明白定义。

这里是指随机变量之间的独立或者相关关系,而非上文中的事件间的关系。仍然以两个随机变量之间的关系为例。

随机变量 X、YX、Y 独立的定义是: F(x,y)=F(x)F(y)F(x,y)=F(x)F(y) 。其中 F(x,y)F(x,y) 是 X、YX、Y 的联合分布函数, F(x)、F(y)F(x)、F(y) 分别是X、YX、Y的分布函数。

随机变量 X、YX、Y 不相关的定义是: cov(X,Y)=E(XY)−E(X)E(Y)=0cov(X,Y)=E(XY)-E(X)E(Y)=0 .

有99.99%的学生认为“独立必不相关,不相关未必独立”。甚至有一些粗心的教材也是这样写的。事实上这种说法是不准确的。回到不相关的定义,要算协方差,除了两个变量各自的期望,它们乘积的期望也得存在。比如设 X、YX、Y 独立同分布于柯西分布,我们知道柯西分布的数学期望是不存在的,因此我们不能说 X、YX、Y 不相关,尽管 X、YX、Y 是独立的。

在数学期望存在的情况下,“独立必不相关,不相关未必独立”是对的。独立是比不相关更强的概念。我们再次回到定义:判断独立,要看整个联合分布;判断不相关,只看协方差这一个数。为了论证“在数学期望存在的情况下,独立必不相关,不相关未必独立”,需要对“独立必不相关”作出证明,并对“不相关未必独立”举出反例。对“独立必不相关”作出证明已经超出了初等概率论的范畴,我在这里便不再详写。而“不相关未必独立”的反例是有很多的。比如 X∼N(0,1)X\sim N(0,1) ,则 cov(X,X2)=E(X3)−E(X)E(X2)=0−0=0cov(X,X^{2})=E(X^{3})-E(X)E(X^{2})=0-0=0 。即 X、X2X、X^{2} 不相关。但是X、X2X、X^{2} 也不独立。我们只需举出一个反例: 由于 0<P(X≥1)<10<P(X\geq1)<1 ,所以P(X2≥1,X≥1)=P(X≥1)>P(X2≥1)P(X≥1)P(X^{2}\geq1,X\geq1)=P(X\geq1)>P(X^{2}\geq1)P(X\geq1) 。记事件 A=A= { X2≥1X^{2}\geq1 }, B=B= { X≥1X\geq1 },则 P(AB)≠P(A)P(B)P(AB)\ne P(A)P(B) 。

另外,我们所说的“相关”是指“线性相关”。除了线性相关,两个随机变量仍然有其他形式的相关性。如 X、X2X、X^{2} 虽然不线性相关,但你只要知道了 X,X² 就跟着定下来了。


我在《大白话概率论》里也讲了这两组容易弄混的概念,有兴趣的朋友欢迎阅读。

知乎原文

公平赌博一定有必赢策略吗?

假设你和小美进行多次抛硬币赌博。每轮抛硬币前,你可以声明任意金额x。如果硬币出现正面,则小美给你x元;如果硬币出现反面,则你给小美x元。

假设:①游戏是完全公平的,每次抛硬币互不影响;②你和小美的钱都用不完,下注和游戏轮数也没有上限;③只要双方结清了钱,那么你可以随时结束整个游戏。

你能保证一定赢钱吗?

大部分同学可能会这样想:由于每局获胜的概率都是 12\frac{1}{2} ,那么每轮游戏中,我的收支的数学期望为 12x+12(−x)=0\frac{1}{2}x+\frac{1}{2}(-x)=0 。因此两个人都没有必赢策略。

但是可以证明:我是有必赢策略的。



我可以采取如下策略:

第一局我声明1元。如果赢了,我就结束游戏。这样我能获胜1元。

如果第一局输了,那么第二局我声明2元。如果第二局赢了,我就结束游戏,那么我最终获胜1元。

如果第二局我再输了,那么第三局我声明4元。如果第三局赢了,我就结束游戏,那么我最终获胜1元。

也就是说:下一局的赌注都是前一局赌注的两倍。一旦我赢了,就结束游戏。

接下来证明:这种策略能够使我稳定地获胜1元。

要是一直抛下去,始终不出正面的概率是零。再者可以知道,在这个策略中,第 nn 轮下注 2n−12^{n-1} 元。假设我在第 n+1n+1 轮第一次赢,这表示之前我已经连续输了 nn 局,那么我已经输了 1+2+22+23+…+2n−1=2n−11+2+2^{2}+2^{3}+…+2^{n-1}=2^{n}-1 元。

在第 n+1n+1 轮我赢了 2n2^{n} 元。那么我最后的收益为 2n−(2n−1)=12^{n}-(2^{n}-1)=1 元。这就完成了证明。


事实上,你完全可以不满足于“稳赚1元”。上面的策略是“如果输了,那么下一局的赌金翻倍”。如果策略变成“如果输了,那么下一局的赌金是上一局的三倍”。情况会变成怎么样呢?

同样的分析步骤就不再赘述了,最后的收益是 3n−(3n−1)2=(3n+1)23^{n}-\frac{(3^{n}-1)}{2}=\frac{(3^{n}+1)}{2} 元。竟然是指数级别的收益!


但是别急着高兴!以上的分析是基于一定的条件的。在现实生活中,你的资金是有限的。如果按照“倍赌策略”,第一轮赌1元。连输19局,你已经亏了524287元。第20局还得再押524288元,前后加起来要将近105万。你要是只有100万,连第20局都开不了。假如最多玩三局,八种等可能的结果里,七种都能赚1元,只有三局全输那一种会亏7元。七次小赚,正好抵掉一次大亏。另外,游戏还假定小美能够陪你一直赌下去。假如小美赢了你2万就拍屁股走人了,那么你就没有回本的机会了。另外,严格来说,这不是一个公平的游戏。因为你可以赢了钱就跑,而小美不能;且声明赌注的是你,小美没有声明赌注的权利。

关于赌博,之前我写过一篇文章《为什么说久赌必输?》,这篇文章和本文章其实是不矛盾的。

为什么说久赌必输?

文章的最后,我想提出两个问题:除了以上的“翻倍策略”,还有其他的策略能保证有获胜策略吗?假如硬币出现正面的概率为0.3,那么还有必胜策略吗?欢迎在留言区指出。

知乎原文

中美合拍的西游记到底何时开机?——谈概率论中的几何分布

一位演员曾在很久以前宣称:“今年下半年,中美合拍的西游记电影即将正式开机。希望大家多多关注!”

原文配图

但是大家一直没有等到电影开机的消息。假设出品人每天早上醒来,决定今天开机的概率是 11000\frac{1}{1000} 。前面等了多少天,都不影响今天开机的机会。那么大约要等待多久,电影才能顺利开机?

原文配图

这个问题就转化成为了求数学期望的问题。这种“等待”的模型在概率论中叫做“几何分布”。事实上这个问题背后的模型具有广泛的应用价值。在生活中,假设闯红灯出车祸的概率是十万分之一,那么平均要多少次闯红灯会出一次车祸?在飞行棋中,平均要抛多少次骰子,才能出现一次“六”?在体育比赛中,假设姚小明投中篮的概率是五分之一,那么平均要多少次才能投中篮?每次相亲成功的概率是一百分之一,平均要相亲多少次才能相亲成功?

我们可以一般化这个问题:假设每天决定开机的概率是 pp ,那么大约要等待多久,电影才能顺利开机?

以下内容需要读者具备基础的概率论知识。


原文配图

假设西游记电影在第 XX 天开机,那么数学期望:

EX=1⋅p1+2⋅p2+…+n⋅pn+…=∑k=1∞k⋅pkEX=1\cdot p_{1}+2\cdot p_{2}+…+n\cdot p_{n}+…=\sum_{k=1}^{\infty}{k\cdot p_{k}}

其中 pkp_{k} 表示第 kk 天开机的概率,我们接下来求这个概率:

如果电影在第 kk 天开机,那么可以知道电影在前 k−1k-1 天都没有开机。于是电影在第 kk 天开机的概率为 (1−p)k−1⋅p(1-p)^{k-1}\cdot p 。其中 (1−p)k−1(1-p)^{k-1} 表示前 k−1k-1 天都没有开机的概率, pp 表示电影在第 kk 天开机的概率。于是:

EXEX

=1⋅p1+2⋅p2+…+n⋅pn+…=1\cdot p_{1}+2\cdot p_{2}+…+n\cdot p_{n}+…

=∑k=1∞k⋅pk=\sum_{k=1}^{\infty}{k\cdot p_{k}}

=∑k=1∞k⋅(1−p)k−1⋅p=\sum_{k=1}^{\infty}{k\cdot (1-p)^{k-1}\cdot p}

这个式子可以用高中数列的“错位相减法”求出来;也可以用微积分中幂级数的方法求得,即把它化为 −∑k=1∞((1−p)k)′⋅p-\sum_{k=1}^{\infty}{((1-p)^{k})^{'}\cdot p} 。

答案不难求出是 1p\frac{1}{p} .

即如果每天决定开机的概率是 11000\frac{1}{1000} ,那么平均要等1000天(大概要三年)才开机。真等满1000天,也还有三成多的机会没开机。


事实上,几何分布的数学期望还有一个更简单的求法:

若电影在第一天开机,则记 Y=1Y=1 ;否则,记 Y=0Y=0 。

显然, P(Y=1)=pP(Y=1)=p , P(Y=0)=1−pP(Y=0)=1-p .

由重期望公式(也叫作数学期望的全概率公式,这是概率论中一个很美的公式):

EX=E(X|Y=1)P(Y=1)+E(X|Y=0)P(Y=0)EX=E(X|Y=1)P(Y=1)+E(X|Y=0)P(Y=0)

E(X|Y=1)E(X|Y=1) 指的是电影在第一天开机的条件下, XX 的数学期望。显然为1。因为第一天就开机了。

最关键的是E(X|Y=0)E(X|Y=0) ,它指的是电影在第一天没开机的条件下, XX 的数学期望。我们可以这样分析:由于每天是否决定开机是独立的,第一天没开机对以后每天是否决定开机的概率毫无影响,即我们仿佛可以从第二天开始等。于是 E(X|Y=0)=1+EXE(X|Y=0)=1+EX 。这个1就是第一天。

于是我们建立起了一个递推式:

EXEX

=E(X|Y=1)P(Y=1)+E(X|Y=0)P(Y=0)=E(X|Y=1)P(Y=1)+E(X|Y=0)P(Y=0)

=1⋅p+(1+EX)(1−p)=1\cdot p+(1+EX)(1-p)

移项得 EX=1pEX=\frac{1}{p} 。


在连续场合,几何分布变成了指数分布。我认为几何分布和指数分布是最迷人的两个分布。在生活中,假设每分钟来车的机会都一样,而且跟前面有没有来车没关系。那你刚到车站时,要等超过5分钟的机会,和你已经等了10分钟、还要再等超过5分钟的机会,是一样的。这看起来很不可思议。回到本篇文章的问题,你从今天起还要等超过一年的机会,和已经等了一年、还要再等超过一年的机会,也是一样的。

如果等待时间不能是负数,而且平均要等多久已经定了,那么指数分布的熵最大。顺带提一句,在同一个有限区间里,均匀分布的熵最大;在整个实数轴上,如果方差固定,正态分布的熵最大。



原文配图

刚刚一个小朋友提出:艺术家最早在2001年就提出要拍西游记电影,距离现在已经过了6000天。我不禁提出一个新的问题:假设我们等待了6000天都没有等到开机的消息,那么概率 pp 最有可能是多少?或者它的范围最有可能是多少?这是一个逆向问题,最近很火的“贝叶斯思维”能够运用在这个问题中。

又有一个小朋友提出:我上面的模型中假定“出品人每天决定开机的概率是独立的”这个条件太理想化了。于是我再提出一个新问题:假设出品人有两种状态:想开机或者不想开机。每天只能处于一种状态。且第二天改变状态的概率是p。假设今天是第一天,出品人不想开机,那么一年后的第365天,出品人想开机的概率是多少?

如果有机会,我将在我的数学专栏中开新文章来讨论这个问题:

武同学的数学脑洞

知乎原文

为什么说久赌必输?

“久赌必输”很多人都听过。“久赌必输”有两种解释:第一种解释是“只要赌得够多,那么迟早会输”;第二种解释是“只要赌得足够多,那么迟早会输光”。第二种解释比第一种解释更强。本篇文章就用一个模型,算算第二种情况有多大可能。

久赌必输在概率论中也叫作“赌徒输光定理”。以下分析只用到了高中数列知识。


假设你一共的赌资有 aa 元,这个 aa 可以包含你所有的财产和你能借到的所有财产,接下来,我们算算一直赌下去,你有多大可能输光这笔赌资。

首先简化赌博模型:假设一次赌博是抛一次均匀的硬币,若正面,则你赢1元;若反面,则你输1元。这里先把规则定得公平一点:每局赢和输的机会各一半,上一局的输赢也不影响下一局。

另一个假定是:对手拿出来赌的钱,比你多得多。比如说,你常年和朝阳社区的张三、李四、王阿姨打麻将,他们的资产可能和你差不多。几个月后,这三个人都输得破产了,但是你仍然要继续赌博。由于这三个人破产了,你只能去另一个小区找新的伯伯奶奶们赌博。在这个模型里,我们就把这些对手的赌资合在一起看。

接下来,把他们看成一个对手。你们各带一笔钱,赌的过程中谁也不再加钱,哪一方先输光,赌局就结束。


记 pxp_{x} 为:你一开始的资产为 xx 元时,先于对手输光的概率。

记与你赌博的玩家们的赌资为 hh .要注意这个 hh 远远比 aa 大。

设你一开始的资产为 xx 元。当你进行第一次赌博后,你的资产有 12\frac{1}{2} 的概率变成 x+1x+1 ,有 12\frac{1}{2} 的概率变成 x−1x-1 。

由定义,你的资产为 x+1x+1 时,你破产的概率为 px+1p_{x+1} ;你的资产为 x−1x-1 时,你破产的概率为 px−1p_{x-1} 。

于是可以得到这样一个递推式:

px=12px+1+12px−1p_{x}=\frac{1}{2}p_{x+1}+\frac{1}{2}p_{x-1}

这个递推式是解决这个问题的核心。

可以对递推式作这样的变换:

12(px+1−px)=12(px−px−1)\frac{1}{2}(p_{x+1}-p_{x})=\frac{1}{2}(p_{x}-p_{x-1})

即 px+1−px=px−px−1p_{x+1}-p_{x}=p_{x}-p_{x-1}

如果令 qx=px+1−pxq_{x}=p_{x+1}-p_{x} ,不难发现{ qx{q_{x}} }是一个最简单的等差数列。

所以对于任意的 xx ,有 px−px−1=dp_{x}-p_{x-1}=d .

试图求 pap_{a} .由递推式,得到:

pa−pa−1=dp_{a}-p_{a-1}=d

pa−1−pa−2=dp_{a-1}-p_{a-2}=d

…………

p1−p0=dp_{1}-p_{0}=d

以上 aa 个式子相加,得:

pa−p0=adp_{a}-p_{0}=ad

这里的 p0p_{0} 为:你一开始有0元时,你破产的概率。这是一个极端情况,显然为1.

所以 pa=1+adp_{a}=1+ad (*)

接下来求 dd .


由定义,ph+ap_{h+a} 为你一开始有 a+ha+h 赌资时,你破产的概率。这显然为0。因为这时对手这笔钱已经输光,赌局结束了。

继续,有如下递推:

pa+h−pa+h−1=dp_{a+h}-p_{a+h-1}=d

pa+h−1−pa+h−2=dp_{a+h-1}-p_{a+h-2}=d

…………

p1−p0=dp_{1}-p_{0}=d

以上 a+ha+h 个式子相加,得:

pa+h−p0=(a+h)dp_{a+h}-p_{0}=(a+h)d

又因为 ph+a=0p_{h+a}=0 , p0=1p_{0}=1 ,

所以 d=−1a+hd=-\frac{1}{a+h}

代入(*)式,得 pa=1+a−1a+h=ha+hp_{a}=1+a\frac{-1}{a+h}=\frac{h}{a+h}

也就是说,你先于对手输光的概率是 ha+h\frac{h}{a+h} .

由于 hh 远远比 aa 大,所以这个概率几乎为1.

比方说,假设你有1个亿的资产,你赌博的玩家的总资产为1万亿。那么

pa=1万亿1亿+1万亿≈0.9999p_{a}=\frac{1万亿}{1亿+1万亿}\approx0.9999

也就是说,在这个例子里,如果一直赌到一方输光,你输光的概率大约是99.99%。


我在这个模型中已经给你足够多的优惠:每局公平,一分钱也不抽。现实里有些赌局还要抽成,有些是赢一次赚得少、输一次赔得多。光看赢的机会有多大,不能判断划不划算。有些人可能会说:“自己赌了几年,没有破产,反而赢了一些钱,你这不是扯淡吗?”你赌了几年还赢着?那你收手了吗?没收手,这账就还没算完。尽管这样,我也不赞同“小赌怡情”。赌博是一个无底洞,小赌很可能会被卷入到“久赌”。


武同学的数学脑洞

知乎原文

灭霸能够拆散多少对情侣?(2)——假如灭霸是一个换妻狂魔

在《复仇者联盟3》电影中,灭霸能够随机让世界上一半的人消失。

在第一篇文章《灭霸能够拆散多少对情侣?》中,我提出一个问题:假设某个星球生活着100对情侣,每个人只深爱着对方。灭霸随机消灭了一半人后,平均剩下多少对情侣?

答案是平均剩下约25对情侣,“殉情”25对情侣,剩下一半的情侣阴阳相隔。链接在这里:

灭霸能够拆散多少对情侣?

我想提出一个新的脑洞:在一个星球中快乐地生活着n对男女情侣,没有单身狗。假如灭霸是一个换妻狂魔,他不打算杀人,而是把所有男人凑在一起,然后把每个男人随机分配给一位女性。这样就组成新的 nn 对男女情侣。

那么问题来了:平均有多少对情侣是原配?

这个问题看起来比第一篇文章里的问题难,但是答案比第一篇文章的问题简单得多!而且用到的知识不会超过大学概率论通识课的难度。


我们可以先思考极端情况。最好的情况自然是每对情侣都是原配。这样的概率显然特别特别小。最坏的情况是每个女性都有了一个新的男人(当然这对于有些人来说可能是一件好事),这样的概率应该蛮大。

有些读者可能会问,为什么题目没有告诉大家这个星球有多少人或者多少对情侣?事实上这个问题的答案的一个美妙之处在于:答案与总人口无关。我们可以不妨设星球一共有 nn 对情侣,给每位女性标号 1,2,3,…n−1,n1,2,3,…n-1,n 。

同上一个问题一样的套路:仍然引入随机变量 XX :记换妻后,有 XX 对情侣是原配。

再引入随机变量 XiX_{i} :若第 ii 个女性的新情侣是原来的男人,则记 Xi=1X_{i}=1 ,否则记 Xi=0X_{i}=0 。这里 ii 的取值范围是从1到 nn 的整数。

这个简单解法最核心的地方在于这个关系式: X=X1+X2+…+XnX=X_{1}+X_{2}+…+X_{n}

接着,由数学期望的性质:

E(X)=E(X1+X2+…+Xn)E(X)=E(X_{1}+X_{2}+…+X_{n})

=E(X1)+E(X2)+…+E(Xn)=E(X_{1})+E(X_{2})+…+E(X_{n})

由于 XiX_{i} 地位相同,我们只需计算 E(X1)E(X_{1}) 即可。

而根据数学期望的性质:

E(X1)=1⋅P(X1=1)+0⋅P(X1=0)=P(X1=1)E(X_{1})=1\cdot P(X_{1}=1)+0\cdot P(X_{1}=0)=P(X_{1}=1)

我们只需计算出 P(X1=1)P(X_{1}=1) 即可。

这个概率就是第一位女性的新情侣是原来的男人的概率,显然是 1n\frac{1}{n} .

E(X)E(X)

=E(X1)+E(X2)+…+E(Xn)=E(X_{1})+E(X_{2})+…+E(X_{n})

=n(E(X1))=n(E(X_{1}))

=n⋅1n=n\cdot\frac{1}{n}

=1=1

也就是说,平均只有一个女性分到了原来的情侣。另外,这个答案是与 nn 无关的!不管星球上有多少人,打乱重新分配后,平均有1对还是原配。


有人可能会说这个问题有些无聊。但是事实上这个问题有一个很著名的背景,它在概率论中叫做“配对问题”。几乎每一本概率论的教材都会提到这个问题。它有很多种表现形式:n个人的n个帽子放在一起打乱,然后随机分配给每个人,平均有多少个人拿到了他本来的帽子?这个问题的本质和灭霸“换妻”问题是一样的,答案也是1.

这个问题我不算就此结束。我不禁开始了新的丧心病狂的思考:假设灭霸是一个“换人狂魔”,即把所有人都变成一个样子,并且抹除了性别,然后随机组成 nn 对新的情侣,那么平均有多少对是原配?如果有机会的话,我将在第三篇文章中讨论这个问题。


武同学的数学脑洞

知乎原文

灭霸能够拆散多少对情侣?

在《复仇者联盟3》电影中,灭霸随机让世界上一半的人消失。假设某个星球生活着100对情侣,每个人只深爱着对方。灭霸随机消灭了一半人后,平均剩下多少对情侣?

我们可以先考虑极端情况,这样方便大家理解:最坏的情况是一对情侣也不剩(即每对情侣死一个人,剩下100个人都是寡夫或者寡妇);最好的情况是还剩下50对情侣(消失的100个人恰好是50对情侣,相当于殉情了50对情侣)。


但是极端情况毕竟是小概率事件,大多数情况下是只有部分恋人被拆散。

我们自然想到的方法是根据数学期望的一般定义来计算数学期望:

记剩下 ii 对完整的情侣的概率是 pip_{i},一共有100对情侣,

那么 E(X)=∑i=1100ipiE(X)=\sum_{i=1}^{100}{ip_{i}} .(这是数学期望的一般定义,也是课本里最常用到的公式。)

首先由之前的分析, ii 的范围应该是{0,1,2…50},因为不可能超过50对情侣完整得存活下来。

关键是 pip_{i} 应该怎么算?即随机消失了一半人后,剩下 ii 对完整情侣的概率是多少?

这个问题确实有些复杂,我不打算在这里给出具体的式子。评论区已有朋友给出了式子,并编程模拟了答案,读者可以参见评论区。


我想提出一个更简单的方法:

我们引入随机变量 XX :记剩下有 XX 对情侣。

再引入随机变量 XiX_{i} :若第 ii 对情侣最后两人活下来,则记 Xi=1X_{i}=1 ,否则记 Xi=0X_{i}=0 。这里 ii 的取值范围是从1到100的整数。

一开始的方法是使用了 E(X)=∑i=1nipiE(X)=\sum_{i=1}^{n}{ip_{i}} .

事实上,如果使用数学期望的性质,这道题将会简单许多。

这个简单解法最核心的地方在于这个关系式: X=X1+X2+…+X100X=X_{1}+X_{2}+…+X_{100}

接着,由数学期望的性质(这个性质适用于任何情况,包括诸 XiX_{i} 不独立的情况):

E(X)=E(X1+X2+…+X100)E(X)=E(X_{1}+X_{2}+…+X_{100})

=E(X1)+E(X2)+…+E(X100)=E(X_{1})+E(X_{2})+…+E(X_{100})

由于 XiX_{i} 地位相同,我们只需计算 E(X1)E(X_{1}) 即可。

而根据数学期望的性质:

E(X1)=1⋅P(X1=1)+0⋅P(X1=0)=P(X1=1)E(X_{1})=1\cdot P(X_{1}=1)+0\cdot P(X_{1}=0)=P(X_{1}=1)

我们只需计算出 P(X1=1)P(X_{1}=1) 即可。

这个概率就是第一对情侣活下来的概率。比起第一个方法中要计算多对情侣活下来的概率,计算某一对情侣活下来的概率显然简单得多。

P(X1=1)P(X_{1}=1)

=P(=P( 第一对情侣活下来的概率 ))

=C198100C200100=\frac{C_{198}^{100}}{C_{200}^{100}}

我们要怎么理解这个式子呢?分母是所有情况的总数:200个人随机消失100人,一共有 C200100{C_{200}^{100}} 种可能。要使第一对情侣活下来,则消失的100个人必须在剩下198人中选择才行,分子就是这个意思。

于是我们可以计算出最后的结果:

E(X)E(X)

=E(X1)+E(X2)+…+E(X100)=E(X_{1})+E(X_{2})+…+E(X_{100})

=100(E(X1))=100(E(X_{1}))

=100C198100C200100=100\frac{C_{198}^{100}}{C_{200}^{100}} (展开后很多项可以消去,这个计算不复杂)

=100100⋅99200⋅199=100\frac{100\cdot99}{200\cdot199}

≈24.87\approx24.87

我们可以得出结论:原来的100对情侣经过随机消失一半人的洗礼后,只平均剩下24.87对情侣了,四舍五入后是25对。

回到文章的标题:灭霸平均拆散了多少对情侣?我们已经分析出平均只剩下25对完整的情侣,那么拆散的情侣数是不是75对呢?答案还没有那么简单。如果情侣双双消失,则不算作“阴阳相隔”。我们可以这样分析:剩下100个人,平均有25对情侣,也就是说50个人没有被拆散。另外50个人成了“寡夫”或“寡妇”,于是灭霸平均拆散了大约50对情侣。

也就是说,100对情侣中,最后平均约有25对情侣活了下来,25对情侣“殉情”,另外50对情侣阴阳相隔。


我们可以一般化这个问题:如果原来有 nn 对情侣,随机消失一半人后,则期望剩下约 n4\frac{n}{4} 对情侣。

更加一般地:如果这个星球存在另外 mm 个单身人士,那么平均健在的情侣对数会改变吗?如果丧偶的情侣有概率 pp 与单身狗结成新的情侣,那么结果又会变成如何呢?你可能会觉得这些问题有些无聊,但是事实上这类问题是常见的离散数学问题,而离散数学的应用非常广泛,计算机科学中的算法与优化问题就离不开离散数学。

对于第一个问题,如果这个星球上还有单身的人,平均能一起活下来的情侣会多一点。不过差得很小,人数一多,还是可以按原来的四分之一来估。我们假设地球有70亿人,其中有12亿对情侣。随机消失一半人后,则期望约剩下3亿对情侣。灭霸的一个响指,很有可能拆散了一半的情侣。


一个新的脑洞:在一个星球中快乐地生活着n对男女情侣,没有单身狗。假如灭霸是一个换妻狂魔,他不打算杀人,而是把所有男人凑在一起,然后把每个男人随机分配给一位女性。这样就组成新的n对男女情侣。那么问题来了:平均有多少对情侣是原配?

这个问题的答案和这篇文章的答案有异曲同工之处,答案在这个链接:

武辰:灭霸能够拆散多少对情侣?(2)——假如灭霸是一个换妻狂魔


2018年12月5日更新:

知乎评论区和知乎日报评论区有不少朋友提出“更简单的方法”,我在这里选取赞数最高的评论:

原文配图

红框里的方法是不对的。红框里的方法假定每个人的死活与其他人是否被杀死是独立的,然而事实上每个人是否被杀死是不独立的。蓝色框里的评论解释了为什么它们之间不独立。我再举一个极端的例子:假设前99个人都死了,那么剩下101个人中,每个人死的概率是101分之一,不是二分之一了。

我们的问题相当于超几何分布,而评论区红框的方法是建立在二项分布的基础上进行的。这其中的区别相当于“无放回”与“有放回”的区别。虽然超几何分布可以逼近二项分布,但对于这道题来说,我们首先要严格计算出精确的数字,再能谈论直观的近似解。

知乎原文

几个简单不等式的直观说明

在中学,我喜欢探索不等式的证明。我在备战全国高中数学联赛时,专门用一本笔记本归纳了20多个重要不等式的各种推导与主要应用。不负有心人,我在复试中的代数题中拿到了满分。可惜的是数论题没有做出来,无缘冬令营……

在这里我将陆续地把我对初等数学不等式的一些思考写出来。本篇文章将从最简单的几个不等式说起。

本文章前三个不等式中涉及到的字母都是正实数。


第一个不等式:

已知 a≤ba\leq b

则: ab≤a+cb+c\frac{a}{b}\leq\frac{a+c}{b+c}

直观说明: aa 代表糖的质量, bb 代表整杯糖水的总质量。那么我加入 cc 单位糖,糖占的比例不会变小。原来还有水的话,就会更甜。


第二个不等式:

若 ab≤cd\frac{a}{b}\leq\frac{c}{d}

则 ab≤a+cb+d≤cd\frac{a}{b}\leq\frac{a+c}{b+d}\leq\frac{c}{d}

直观说明: aa 代表第一杯糖水里糖的质量, bb 代表第一杯糖水的总质量。cc 代表第二杯糖水里糖的质量, dd 代表第二杯糖水的总质量。

两杯水混合,混合后的水的甜度自然在原来两杯水的甜度之间。

从这个不等式可以启发得到一个有用的小结论:

若 ab=cd\frac{a}{b}=\frac{c}{d}

则 ab=cd=a+cb+d\frac{a}{b}=\frac{c}{d}=\frac{a+c}{b+d}

对于以上两个不等式,我仅仅做了直观说明,而非数学证明。数学中很多结论都能得到物理意义上的直观解释。虽然直观解释并不能证明问题,并且很多问题(包括以上两个问题)的正规数学证明十分简单,可能比所谓的直观说明的字数还少,但是从直观理解数学结论也是一件有趣的事情。


第三个不等式:

a2+b2+c2+d2≥(a+c)2+(b+d)2\sqrt{a^{2}+b^{2}}+\sqrt{c^{2}+d^{2}}\geq\sqrt{(a+c)^{2}+(b+d)^{2}}


原文配图
从左下角走到右上角,经过中间那个点要走两段,直着走只走一段。绕一下不会比直着走更短。



第四个不等式(柯西不等式):

(x12+x22+……+xn2)(y12+y22+……+yn2)(x_{1}^{2}+x_{2}^{2}+……+x_{n}^{2})(y_{1}^{2}+y_{2}^{2}+……+y_{n}^{2})

≥(x1y1+x2y2+……xnyn)2\ge (x_{1}y_{1}+x_{2}y_{2}+……x_{n}y_{n})^{2}

直观说明:令

m→=(x1,x2,…,xn)\vec m =(x_{1},x_{2},…,x_{n})

n→=(y1,y2,…,yn)\vec n =(y_{1},y_{2},…,y_{n})

两个向量的点积,等于两个向量的长度相乘,再乘夹角的余弦。余弦的绝对值不会超过 1,所以:

|m→|⋅|n→|≥|m→⋅n→|\left| \vec m \right|\cdot\left| \vec n \right|\geq\left| \vec m \cdot\vec n \right|

两边平方,就得到柯西不等式。

第三个不等式也能够通过向量化的方法简单说明,但本质是和这个解法一样的。


第五个不等式:

x12+x22+……+xn2x_{1}^{2}+x_{2}^{2}+……+x_{n}^{2}

≥(x1+x2+…+xn)2n\geq\frac{(x_{1}+x_{2}+…+x_{n})^{2}}{n}

方法1:在柯西不等式中,令 yi=1y_{i}=1

即可得到正确答案。

方法2:从这 n 个数里等可能地抽一个,把抽到的数记作 X。概率论中有方差公式:

D(X)=E(X2)−[E(X)]2D(X)=E(X^{2})-[E(X)]^{2}

又因为方差恒非负,所以 E(X2)≥[E(X)]2E(X^{2})\geq[E(X)]^{2}

即 x12+x22+……+xn2n\frac{x_{1}^{2}+x_{2}^{2}+……+x_{n}^{2}}{n}

≥(x1+x2+…+xnn)2\geq(\frac{x_{1}+x_{2}+…+x_{n}}{n})^{2}

一步整理后就能得到我们的结论。


另外,初等数学中最重要的不等式“均值不等式”有非常直观的几何说明。网上搜索“均值不等式的几何意义”便可查得,我这里就不再赘述了。

知乎原文

有趣的数学——违反直觉的囚犯问题和三门问题

监狱里关了三个囚犯A、B、C。监狱长决定赦免其中一个人,并且完全随机地选择了一人作为赦免人(另外两个人将被处死)。他将自己的选择告诉了看守,但是要求看守暂时不能泄露被赦免人的姓名。

囚犯A问看守“谁被赦免了”,看守拒绝回答。A接着问道:“B和C之中谁一定会被处死?”

看守心想:“不论谁被赦免,B和C之中一定有一个人会被处死。因此我告诉他这个问题的答案也无妨。”于是看守说B会被处死。当然,看守不会说谎。

囚犯A心想:“A一开始被赦免的概率是三分之一,现在我知道B不是被赦免的那个人,于是只有A和C是有可能被赦免的人,因此A被赦免的概率提升到了二分之一。”

A的分析对吗?

你可以设身处地地假想自己是A并在脑海里走一遍这个过程。大多数人都会觉得A被赦免的概率变大了。然而事实是:A被赦免的概率没有发生变化,相反,囚犯C被赦免的概率增加到了三分之二。

这个问题和广为人知的“三门问题”的本质是一致的。关于三门问题,我有文章进行详细的讨论:

[终结数学月经题系列2]三门问题

不过在这篇文章里,我打算用数学语言来分析这个问题。尽管用到数学公式,我将尽力用通俗易懂的方式解释清楚每一步。这个问题在著名的统计学教材《Statistical Inference》里有提及。我保证以下问题分析的答案是正确的,请读者放心。


以下解答过程涉及到概率论中最基本的条件概率公式与全概率公式,没有用到更深的数学知识。只假定读者具有最基础的概率论知识储备。

我们记:

事件 AA =“A被赦免”,

事件 BB =“B被赦免”,

事件 CC =“C被赦免”,

事件 WW =“看守说B将被处死”。

由条件概率公式:

P(A|W)=P(A∩W)P(W)P(A|W)=\frac{P(A \cap W)}{P(W)} (1)

我们要算的是 P(A|W)P(A|W) ,即:“看守说B将被处死”的条件下,A是被赦免人的概率。要算这个概率,我们只需算等式右边的概率。等式右边看起来更复杂,但是它是可以被算出来的。

我们首先算分母。由全概率公式:

P(W)=P(A)P(W|A)+P(B)P(W|B)+P(C)P(W|C)P(W)=P(A)P(W|A)+P(B)P(W|B)+P(C)P(W|C) (2)

(事实上如果把(2)式代入(1)式,式子就变成了大名鼎鼎的贝叶斯公式)

首先显然 P(A)=P(B)=P(C)=13P(A)=P(B)=P(C)=\frac{1}{3} 。

P(W|A)P(W|A) 表示A被赦免的条件下,看守说B被处死的概率。由于如果A是被赦免人,看守既可以说B被处死,也可以说C被处死,而B和C的地位是相等的,因此这个概率是 12\frac{1}{2} 。

P(W|B)P(W|B) 表示B被赦免的条件下,看守说B被处死的概率。这是矛盾的,所以这个概率为0。

P(W|C)P(W|C) 表示C被赦免的条件下,看守说B被处死的概率。由于C被赦免,那么B一定会被处死,所以这个概率为1。

把上面的六个概率代入(2)式,得 P(W)=12P(W)=\frac{1}{2} 。

同时我们已经求出 P(A∩W)=P(A)P(W|A)=16P(A \cap W)=P(A)P(W|A)=\frac{1}{6} ,所以再代入(1)式,得

P(A|W)=P(A∩W)P(W)=13P(A|W)=\frac{P(A \cap W)}{P(W)}=\frac{1}{3} 。

即看守回答B将被处死后,囚犯A被赦免的概率仍然是 13\frac{1}{3} ,而非 12\frac{1}{2} 。同时更神奇的是,囚犯C被赦免的概率增加到了 23\frac{2}{3} ,因为 P(C|W)=1−P(A|W)−P(B|W)=1−13−0=23P(C|W)=1-P(A|W)-P(B|W)=1-\frac{1}{3}-0=\frac{2}{3}

我们回头分析为什么囚犯A(和我们大多数人)的推理是错的,以及这个问题反直觉的地方在哪里。根本原因在于大多数人把事件 WW 等同于事件 B‾\bar{B} ( B‾\bar{B} 指的是事件BB的对立事件)。

我们首先设定了事件 WW =“看守说B将被处死”,事件 BB =“B将被赦免”,那么事件 B‾\bar{B} =“B将被处死”。

问题的核心在于:“看守说B将被处死”与“B将被处死”两句话看似一样,其实包含了不同的信息。我们从对立事件的角度就能分析出背后的奥妙。

事件WW (即:看守说B将被处死)的对立事件是“看守说C将被处死”,而事件B‾\bar{B} (即:B将被处死)的对立事件是“B将被赦免”。两个事件的对立事件是不同的。第一个事件着重回答“谁将被处死”,第二个事件的重点在于“B是否会被处死”。而囚犯A错误地将事件 WW 等同于事件 B‾\bar{B} ,由此他产生了如下推理:

P(A|B‾)=P(A∩B‾)P(B‾)P(A|\bar{B})=\frac{P(A \cap \bar{B})}{P(\bar{B})} (正如之前的分析,这个式子与(1)式的区别在于把 WW 都替换成了 B‾\bar{B} )。

由于 P(B‾)=23P(\bar{B})=\frac{2}{3} , P(A∩B‾)=P(A)P(B‾|A)=13⋅1=13P(A \cap \bar{B})=P(A)P(\bar{B}|A)=\frac{1}{3}\cdot1=\frac{1}{3}

所以 P(A|B‾)=P(A∩B‾)P(B‾)=1/32/3=12P(A|\bar{B})=\frac{P(A \cap \bar{B})}{P(\bar{B})}=\frac{1/3}{2/3}=\frac{1}{2}

错误答案12\frac{1}{2} 就是这样产生的。


事实上,“三门问题”与这道题是等价的。

“三个囚犯”对应于“三扇门”,

“囚犯被赦免”对应于“门后面有车”,

“你是囚犯A”对应于“你一开始选择了第一扇门”,

“看守说B会被处死”对应于“第二扇门后面没有车”,

“看守说B会被处死后,囚犯A被赦免的概率不会变,囚犯C被赦免的概率增加到了 23\frac{2}{3}”对应于“在主持人展示出第二扇门后面没有车后,你获奖的概率不会变,但是第三扇门获奖的概率增加到了 23\frac{2}{3} ,所以你应该选择换门”。

因此“三门问题”也可以通过类似的严格的数学语言解释。

“囚犯问题”和“三门问题”本质上是一个问题,也是困扰很多人的问题。网上已经有很多对这个问题的讨论,但尽管如此,仍有不少人对这个问题模棱两可、不知其所以然,处于云里雾里的状态。究其原因在于网上对三门问题的讨论多是出于“概率思维”的直观解释。所以我在此用严格的数学语言完整地证明了结论,希望这篇文章能够让读者对这两个问题有清晰的理解。


2026年10月29日更新:我的书终于出版了!这半年以来,有不少朋友在催更这本书,非常感谢大家的耐心等待,我在文章末尾放了商品链接,有兴趣的朋友可以买来阅读~

这是一本适合自学的概率论与数理统计教材,700多页,用大白话、生活中的例子和详细推导,把公式背后的道理讲清楚,也把各个知识点之间的联系串起来。

书里还结合了不少AI相关内容,包括softmax、余弦相似度、交叉熵和KL散度等,并配有“AI视野”和“Python实验室”,介绍这些数学知识在AI中的应用,用代码模拟和验证。备考方面,收录了2024—2026年考研数学一、数学三的部分概率论真题,以及大厂算法岗面试题的详细解答。

正在学概率论、准备考研,或者学AI想补数学基础的朋友,都可以看看。

知乎原文

[终结数学月经题系列3]红眼岛问题

所谓月经话题,是指论坛里每个月都会出现的没有定论、话题性与争议性很强的问题。

不论是在知乎、豆瓣、贴吧,还是在其他论坛,都有一些数学问题引发争议。这些问题有的答案不唯一,有的答案看起来非常违反直觉。比如“星期二男孩问题”、“三门问题”、“红眼岛问题”等等。

我希望能够在这个专栏中把常见的数学月经问题汇总,用最浅显的语言,深入浅出地向读者透彻地讲述这些题的正确思路,以及为什么错误的思路看起来如此具有迷惑性。

本系列前两篇文章:

[终结数学月经题系列1]星期二男孩问题[终结数学月经题系列2]三门问题

问题如下:

一个岛上有100个人,其中有5个红眼睛,95个蓝眼睛。这个岛有三个奇怪的宗教规则。

1. 他们不能照镜子、照湖面海面,不能看自己眼睛的颜色。

2. 他们不能告诉别人对方的眼睛是什么颜色。他们不能讨论所有和红眼有关的事物。

3. 一旦有人知道了自己的眼睛颜色,他就必须在当天夜里自杀。 注:虽然题设了有5个红眼睛,但岛民是不知道具体数字的。

某天,有个旅行者到了这个岛上。由于不知道这里的规矩,所以他在和全岛人一起狂欢的时候,不留神就说了一句话:你们这里有红眼睛的人。

全岛人都听见了,也都相信旅行者说的是真的。假设这个岛上的人足够聪明,每个人都可以做出缜密的逻辑推理。大家都知道眼睛只有红、蓝两种,别人也会推理、会守规矩。每天早上,大家都知道昨晚发生了什么。请问这个岛上将会发生什么?

此问题的第一个答案是用数学归纳法得出的:如果这个岛上有N个红眼睛,那么在旅行者说这句话的第N天,他们全部都会自杀。具体到本题则是,在第5天,这个岛上的5个红眼睛会全部自杀。

证明过程如下:

如果这个岛上只有1个红眼睛,其他人都是蓝眼睛。那么,当旅行者说了这句话之后,此人立刻就会知道自己是红眼睛,他就会在当天自杀。

假设当这个岛上有N个红眼睛的时候,在旅行者说了这句话之后的第N天,这些红眼睛会全部自杀。

那么,当这个岛上有N+1个红眼睛的时候,每个红眼都看得见另外N个红眼。他会想:要是我不是红眼,岛上就只有这N个,那他们第N晚就该按规矩行动了。而在第N天,大家都没有自杀。所以一到第N+1天,每个红眼睛都明白了这个岛上还有第N+1个红眼睛——他自己。于是大家都在第N+1天自杀了。

所以命题得证:如果这个岛上有N个红眼睛,那么在旅行者说这句话的第N天,他们全部都会自杀。

真是一件奇怪的事情:旅行者说了一句话“你们这里有红眼睛的人”之后,就有人自杀了。但是不对劲的事是——这句话根本不用旅行者说!事实上每个人都知道“我们这里有红眼睛”。更准确来说,每个人都知道“我们这里至少有四个红眼睛”。旅行者说了一句“废话”,怎么就有人自杀了呢?

如果你看晕了,可以看这个简化版本:

我们假设100个人中只有两个红眼睛:小郭和小敬。在小郭眼里,他看到98个蓝眼睛和一个红眼睛(即小敬),他心想:“可能小敬是唯一的红眼,也可能我和小敬是唯一的两个红眼。但是我不能确定,而且在现有的宗教规则下,我永远不能确定。”同时,在小敬的眼里,他也看到98个蓝眼睛和一个红眼(即小郭)。他的想法和小郭一样。

剩下98个人则是看到了两个红眼。同时每个人都想“可能只有小郭和小敬是红眼,也可能我和他俩一共三人是红眼,但是我永远不能确定。”

总之,每个人都知道“这岛上至少有一个红眼”。但是每个人都不能百分百确定自己是否会自杀。

好了,现在旅行者说了一句话“你们之中有红眼”。这时候,小郭会这么想:“如果小敬是唯一的红眼,那么他今晚该自杀了。愿他走好。”同时,小敬也想:“如果小郭是唯一的红眼,那么他今晚该自杀了。希望来世还能和他成为基友。”

两个人都在等对方自杀,结果就是第一天无人自杀。

小郭在内心的想法是这样的:“卧槽,原来小敬不是唯一那个红眼,那剩下98个人明确是蓝眼,剩下的那个红眼就是我了!哎,我今晚得自杀了!”

小敬的想法也是类似。

于是第二天晚上小郭和小敬自杀了。

剩下98个人于是都知道自己是蓝眼,于是在接下来一天都“你是风儿我是沙”地一起自杀了。

可是,旅行者看起来说了一句废话啊!不用等到旅行者说那句话,每个人其实都已经知道“岛上至少有个红眼”。可是旅行者说了那句话后,大家怎么就知道自己的颜色了呢?

我们再将问题提升复杂一点:我们假设100个人中有三个红眼:小郭、小敬、小明。

在小郭眼里,他看到小敬和小明是红眼。他会想:“要是我不是红眼,那就只有小敬和小明是红眼,他俩第二天晚上就该自杀了。”(这是我们刚刚讨论过的情况。)结果他俩并没有在第二天自杀。于是小郭痛彻心扉地理解了一个事实:“原来我也是红眼!”

小敬和小明的脑回路也是这样想的!

第三天,三人一起自杀了。

于是回到原题,四个人的情况在第四天自杀,五个人的情况在第五天自杀。第六天一早,剩下95个人知道那5个红眼前一晚都按规矩行动了,也就知道自己是蓝眼了。

为什么会有这样的悖论?

事实上,旅行者说的那句话是有信息的!

五个红眼的时候,大家确实早就知道别人也知道岛上有红眼。可要是接着往下猜:「如果我不是红眼,你会怎么想?如果你也在想自己不是红眼呢?」一层一层往下猜,最后还真能猜到有人一个红眼都看不见。旅行者当着所有人的面说了这句话,大家都知道别人也听见了。这下不管你往下猜多少层,「岛上一个红眼也没有」都可以排除了。

我们注意这样一个事实:“每个人都知道这件事情”与“每个人都知道每个人都知道这件事情”是不同的!

比如有个公司老板,两个秘书分别是小郭和小敬,老板和这两个秘书都有一腿。于是,每个人都知道“这两个秘书里至少有一个人和老板有一腿”。有一天,老板喝醉了,当着两人的面说:“你们两个里,至少有一个人跟我有一腿。”接下来的情节就有趣了。小郭想,如果小敬跟老板没关系,那小敬岂不是知道我和老板有一腿了?同样的道理,小敬也是这样想的。

每个人都知道“这两个秘书里至少有一个人和老板有一腿”,但是不一定每个人都知道“每个人都知道这两个秘书里至少有一个人和老板有一腿”。是不是很绕……


没关系,我再举第二个例子。假设郭教授叫上你和小明玩游戏。

游戏是这样的:郭教授分别在两张卡片写下两个数字,即5和7。然后随机贴在你们的额头上。你们不能看见自己的数字,但是能够看到对方的数字。郭教授告诉你们:你们的数字相差2。

假设你们不能语言交流、心灵感应等等。只能看到对方的数字。

你和小明都明白这样一个事实:“我们两个人的数字都小于10”。为什么?不妨设你的数字是5,小明的数字是7。你看到小明的数字是7,于是你猜测你的数字只能是5或者9。同样,小明看到你的数字是5,猜测他自己的数字只能是3或者7。

那么有意思的事情来了,我不能确定小明是否得出“我们俩的数字都小于10”这个结论。

就像我刚刚举的那个只有两个红眼睛的人(小郭和小敬)的例子:

我们记事情A是:“我们其中至少有一个人是红眼”。

事情B是:“我们每个人都知道事实A了。”

小郭和小敬,他们都知道事情A,这是能确定的。但是不能确定的是,他们是否知道事情B。我能确定我们岛上有红眼睛的人,但是小敬能不能确定?我不知道。直到旅行者说了之后,我才能确定。

旅行者说之前,A是共有信息。旅行者说之后,A成为了公共信息。

我能确定至少有一人和老板有一腿,但是小敬能不能确定?我不知道。直到老板当着两个人的面说了之后我才能确定。

这个问题中,事情A是“我们的数字都小于10”。

事情B是“我们都知道我们的数字小于10”。

两位同学可以确定A,但是并不能确定B。

我看到小明的数字是7,我可以猜测我的数字是9(当然有样的可能性)。在我的数字是9的情况下,我可以合理猜测:小明看到我的数字是9会觉得他自己的数字是11!这样一来,我们俩中有人的数字可能大于10。

这还不是最骚的,更骚的是,在小明的眼里,他觉得自己是数字是11的情况下,他可能会认为:我看到的数字是11并且我可能认为自己的数字是13!这样一来,俩人的数字都可能大于10了!

这仍不是最骚的,更骚的是,数字可以无穷无尽下去……你认为13,我认为你认为15,你认为我认为你认为17……


如果还觉得很晕的话,请深呼吸后看第三个例子:

古代交通不便,平时的书信可能因为路途遥远、天灾人祸、中途被劫匪劫走、中途被老鼠吃了而导致未送达对方,会造成很多不必要的担忧、麻烦、误会之类。

假设在北京的李白去成都找杜甫玩。

李白在成都和杜甫欢度了一段非常快乐的时光。最后李白要走时,杜甫说道:“李白乘舟将欲行,忽闻……不对,李白啊,现在外面这么乱,天灾人祸这么多,路上得多小心!你到达北京之后一定要写信告诉我你已经安全回到了北京,免得我日夜担心!”

李白说“我肯定会第一时间给你写信报平安的!你要知道,如果你在担心我的平安,我也会很难受的!我不能让你担心我。你本来就有抑郁症,如果你总在担心我,我会担心你的身体会因忧郁过度而垮掉!”

几个月后,李白回到了京城。李白写信“杜甫小弟,我已经安全到北京了!”,正当要投信的时候,李白转念一想,万一这信件没送到杜甫手上怎么办?那这样的话,杜甫就得继续日夜担心我了!那这样我也会很难受的!于是李白又加了一句话“收到请回复。”好了,信发出去了。

杜甫收到了信。这时杜甫留下了感动的泪水:“李白总算安全回到了北京”。于是杜甫兴高采烈地带着全家去吃肯德基。出门之前转念一想,“不够,李白现在肯定还在担心我呢!他说过,如果我在担心他的安危,他会很难受,他也会担心我这样日夜担心会导致我身体吃不消。我必须告诉李白,信我收到了”。

于是杜甫写了一封信:“亲爱的李白,我已经收到了信,很高兴你安全地回到了北京。我现在不担心你的安危了,我倒是在担心你是否知道我已经不再担心你的安危了。所以你收到这封信的时候,务必要回复我哦,否则我整天还是会担心你的。么么哒!”

这封信收到李白的手里,李白终于留下了感动的泪水:你这老头子!我终于不用担心你的身体了!哎,不过你这老头子总是忧国忧民,担心这担心那的。我这就写信告诉你,我收到了这封信。

于是李白写信:“你的信我已经收到了!杜老先生就不用担心我啦!”

正当李白想要发出去的时候,转念一想:“我必须得确定杜老头子收到了我现在这封信,否则如果他没收到我的信,他得没日没夜地担心我了,我也得没日没夜地担心他了!哎,为何这世上总是多情的人被伤?早知道伤心总是难免的,为何当初一往情深?”

于是李白在信的后面加了几个字:“收到务必回复!我的思密达!”

杜甫在几个月后收到了这封信,留下了感动的泪水。同时杜甫不能让李白这样担心他,于是杜甫对李白写信:“信我已经收到了,你不必再担心我了。但是为了确保真的不再担心我,请看到这封信后务必回复我!否则我会一直担心你下去。”

李白在几个月后收到了信,回道:“我已经收到信了。让我留下眼泪的,不止昨夜的酒;让我依依不舍的,不止你的温柔。所以请你不要再担心我。为了确保你真的不再担心我,请你在看到这封信后务必回复我。”

几个月后,杜甫收到信,然后回信道:“和我在成都的街头走一走,直到所有的灯都熄灭了也不停留……你的信我收到了。为了确保你不再担心我,请你在看到这封信后务必回复我”

这个故事将永远不会有结尾,除非第三个人当着两人的面说:“好了你们俩够了,你们都很安全。”或者他们能够同时通话、视频。


好了,如果你还是觉得很晕的话,看最后一个例子。

(注:在实际情况中可能极少出现上述李白杜甫的例子,也极少出现下面的例子,毕竟人的敏感、认知、猜疑是有限度的。但是在纯数学、理想化的条件下看这两个例子会很有趣。)

假设你喜欢小红,小红也喜欢你。你们确实互相喜欢,可谁也不知道对方的心意。有一天,小郭偷偷告诉你“小红喜欢你”,说完这句话就走人了。又有一天,小郭偷偷告诉小红“你喜欢小红”,当然你是不知道小郭去通风报信这件事的。现在的客观(请注意这个词,这是客观信息,但是你或者小红未必知道)情况是,你喜欢小红,且你知道小红喜欢你;同时小红喜欢你,且小红知道你喜欢小红。

这下算把话说开了吗?

仍然不等于。因为你不能确定小红是否知道你已经知道了小红喜欢你。小红也不能确定你是否已经知道了小红已经知道了你喜欢小红。

事实上,这样的猜测可以无尽下去:我能不能确定小红已经知道了我已经知道小红知道我喜欢她这件事实?我能不能确定小红已经知道了我已经知道了小红知道了我已经知道了小红知道了……(知道×n)……我已经知道了我喜欢她这件事实?

我们记

A=你喜欢小红

B=小红喜欢你

A1=你知道B

B1=小红知道A

A2=你知道B1

B2=小红知道A1

……

An=你知道Bn-1

Bn=小红知道An-1

……

两个人本来就互相喜欢。前面绕来绕去,只是在猜对方知道到了哪一步。但一开始你只知道A,小红只知道B,你不知道A1,小红不知道B1。小郭通风报信后,你只知道A和A1,而不知道A2,小红只知道B和B1,而不知道B2…

如何才能斩断这无尽的猜测?正如旅行者在所有人面前说出那句每个人都知道的话。答案是:爱要大声说出来。当着她的面说:“我喜欢你!”她要是也喜欢你,就让她亲口告诉你。