看了一些机器学习的论文,我一直有一个困惑:有的文章训练时写的公式是最小化代价函数,有的文章训练时写的是一个跟自然对数有关的概率分布,这是为什么?经过一番学习,终于有了答案。在这个过程中,还有一个意外收获:那就是著名的逻辑斯第函数的由来。
物理上和统计上的玻尔兹曼分布
热平衡在物理学领域通常指温度在时间或空间上的稳定。在统计学习中,如果我们将需要学习的模型看成高温物体,将学习的过程看成一个降温达到热平衡的过程,最终模型的能量将会收敛为一个分布,并且在全局极小能量上下波动。这个过程称为“模拟退火”。而模型能量收敛到的分布称为玻尔兹曼分布(Boltzmann Distribution)。
在物理学中,玻尔兹曼分布,也称为吉布斯分布(Gibbs Distribution),描述了一个粒子系统处于各种状态的概率,其表达式如下:
其中 EE 是状态能量, kTkT 是玻尔兹曼常数 kk 与热力学温度 TT 的乘积。
在统计学中,玻尔兹曼分布给出了一个系统在特定状态能量和系统温度下的概率分布:
其中 pipi 是状态 ii 出现的概率, EiEi 是状态能量, kk 是玻尔兹曼常数, TT 是系统的温度, MM 是系统的状态数量(系统状态是离散的,有限的;找到了一点高中物理原子的电子跃迁的感觉,那状态也是离散的!!!)。所以说,统计学中玻尔兹曼分布的使用是受到了物理中热力学的启发。
从玻尔兹曼分布的定义,我们可以发现系统的两个不同状态的概率之比仅与系统能量有关:
这个比值被称为玻尔兹曼因子(Boltzmann Factor)。
玻尔兹曼机
定义
玻尔兹曼分布在机器学习模型的设计中被广泛采用,我们就从玻尔兹曼机(Boltzmann Machine)说起。
玻尔兹曼机是一个对称连接的神经网络。它用于决定系统的状态是开(1)还是关(0)。玻尔兹曼机可以看成一个通过无向有权边全连接的网络。这个网络的能量函数定义为
其中
- wijwij是连接节点ii和jj的权重。
- sisi是节点ii的状态,且si∈{0,1}si∈{0,1}。
- θiθi是节点ii的在全局能量函数中的偏倚。也就是说−θi−θi是节点ii的激活阈值。
单个节点ii的能量定义为
节点状态的概率——逻辑斯第函数
玻尔兹曼机单个节点ii状态从00变为11造成的网络能量变化为
注意到系统的能量差与玻尔兹曼因子的关系,有
由此继续推导
可以解出
其中 TT 是系统的温度。上式就是著名的逻辑斯第函数(Logistic Function)。机器学习最基本的逻辑斯第回归的依据也在于此。
如果我们将系统温度设定为T=1T=1,关闭状态节点能量Ei=off=0Ei=off=0,记开启状态节点能量Ei=Ei=onEi=Ei=on。上式实际上告诉了我们节点ii状态为11的概率为
系统能量与状态概率的关系
如果系统处于稳态(“热平衡”),它的状态概率和能量应该服从玻尔兹曼分布。我们将系统状态的所有参数记为一个向量vv,那么系统处于这个状态的概率为
状态 vv 对应的能量定义为
其中 svisiv 是状态向量 vv 对应的节点 ii 的二值状态。这种系统能量和状态概率的关系可以推广到一般的机器学习模型中。
机器学习模型训练中的最小代价和极大似然的等价性
在一般的机器学习中,我们有一些观察数据XX和对应的分类YY,建立模型函数ff,则对应的代价函数为
我们希望模型输出 f(X)f(X) 逼近分类 YY ,就要最小化代价函数 E(X)E(X) 。这里的代价函数 E(X)E(X) 其实可以看成系统状态的能量,而最小化的 E(X)E(X) 就是系统的稳态能量了。按照前面所说,它应该服从玻尔兹曼分布。从而,系统获得观察数据 XX 的概率可以估计为
从概率统计的角度看,常用极大似然的思想来估计参数。而在上式中,极大似然等价于最小化系统的能量函数。
许多机器学习的论文一来就把代价函数写成自然常数ee的指数,然后通过最大化求参数,其依据就是上式。也有很多论文用代价函数的形式求最小化。这两者通过玻尔兹曼分布联系在一起,是等价的。