一、引子
cost function (在其他场合也常称为 error function 、lost function 或 object function ),是机器学习理论中最“朴素”也最核心的概念之一。(其地位相当于物理学中尊贵无比的“作用量”)
不论是简单的linear/logistic regression模型,还是复杂一点的SVM、RBM等模型,或者更加复杂的神经网络模型,“万变不离其宗”,只要我们谈到要“训练”模型 (从另一个角度说,也叫“拟合”数据) ,那么我们首先要搞清楚这个模型的 cost function 怎么计算,这是我们“训练”的入手点。
另一方面,cost function 的具体选择对于初学者却似乎不太友好。例如:在线性回归、SVM等模型中,我们的cost function 会用到 均方差(Mean Square Error)形式;而在神经网络等模型中 cost function 又会采用 cross entropy 形式(cross entropy的定义在不同场景下也有些细腻的差异,只死记硬背定义的话会难以变通)。我们自然要问:
- cross entropy 是怎么引入的,有没有像均方差一样简单直观的理解方式?
- cross entropy 和 均方差形式的 cost function 可不可以彼此关联起来?
- cost function 中的 regularization 项有没有更加“优雅”的引入方式?
- 有没有统一的理论框架可以让这些“七零八落”的概念各居其位,全部理顺?
为了回答这些疑问,让我们先回顾一下机器学习要解决的问题。
二、选择模型
我们以一个典型的“拟合”或 supervised learning 问题为例。这类问题可以描述为:
已知一组采样数据 S:={(x1,y1),(x2,y2),…,(xN,yN)} ,其中 xi 可以视为输入的参量, yi 视为输出量。(不妨记采样集 X:={x1,x2,⋯,xN} 1, Y:={y1,y2,⋯,yN} ) 问题:给定一个新的 x , 怎样根据已知数据“最合理地”预测出其对应的 y 值?
为了能利用数学工具描述并解决这个问题,我们首先要假设一种数学结构来描述变量关系 。(即选择model,model中所依赖的全部参数记为
最直接的一个想法是: 我们假定
y
和
因此,为了将推导建立在更普适的基础上,我们选择“概率论” 模型: 我们将
显然,当 p(y|x,θ)=δ(y−f(x,θ)) 时 (其中 δ(⋅) 表示 Dirac函数), 这个“概率论”模型还原到 y=f(x,θ) 的“决定论”模型
三、怎样预测
(1) 关于Bayes公式
假设已知条件概率 p(y|x,θ) 的表达式,并给定参数 θ 的值,则对于某个给定的 x 值, y “最合理”的预测值应当取如下概率平均值:
(这里假设
y
的取值空间是连续,例如“regression问题”。对于
在贝叶斯思想中,除了观测数据,我们不应对理论模型的正确性做任何假设,或者说:我们应该把所谓模型的“正确性”也看做一个概率分布。 即,这里描述模型的参数
θ
不应当是给定的, 而应当也看做一个概率分布,于是公式(1)应改写为:
由于每个 θ 对应一个model,对 θ 的积分,其含义就是对所有 model 的统计平均。(这种对所有 model 的统计平均,类似于统计物理中 “系综平均”的概念)。
下面的问题是该怎样选定 p∗(θ) 呢?显然,一个合理的假设是: p∗(θ) 的选取应当依赖于已知的观测数据 (X,Y) ,也就是说, p∗(θ) 应是在给定数据 (X,Y) 前提下的某种“条件概率”,即
其中等式的第二步用到 Bayes公式 ,第三步用到 i. i. d. 假设 (independent, identical distribution), 即每个观测数据 (xi,yi) 都是同一分布的一次独立采样结果。 p(θ) 是 θ 的“先验分布”( p(θ) 是我们需要“手工”选定的, 如果我们对 θ 没有任何“先验”认识,那么可以取 p(θ) 为均匀分布。 后文中,我们会看到, p(θ) 是 cost function 中 regularization 项一种非常自然的引入方式)
将公式(3)代入公式(2),我们进一步得到
即,只要我们选取一个 p(y|x,θ) (以及“先验分布” p(θ) ), 我们就可以得到“预测值” y^ .
四、极值点近似
根据上面的式子,我们有两点结论:
- 仅仅在Bayes 公式的框架下,(即不涉及任何model“训练”过程),我们已经有一套方法完全可以实现“预测”。
- 基于Bayes公式的“预测”,一般计算量很大。在model参数和观测数据很多的情况下,我们很难处理(因为涉及到对所有参数的全空间积分,同时被积函数又和所有数据点的值有关)
因此为了简化计算,我们引入“极值点近似”:我们认为 p∗(θ)≡p(θ|X,Y) 满足某种“凸性”,我们 p∗(θ) 可以用其极大值位置 θ∗ 来描述 (想象 p∗(θ) 是一个“凸峰”,其极大值的位置在 θ∗ ), 即:
将近似条件(5),带入用于“预测”的公式(2),我们有:
其中 θ∗ ,结合公式(3),满足极值条件:
即,
C(θ) 即是训练model时用到的 cost function。我们可以通过 SGD 等方法来找到极值点 θ∗
通过上面的推导,我们可以发现:机器学习中“训练”模型的整套数学方法可以看做是 Bayes公式在“极值点近似”下2的结果。下面我们将证明: 公式(7)第一项 C0(θ)≡−1N∑i=1Nlogp(yi|xi,θ) 和 第二项 可以分别看作是 “cross entropy”和 regularization 因子。
五、cross entropy 和 regularization
基于已经观测到的数据 (X,Y) ,我们定义“经验分布”(emprical distribution)为:
于是公式(7)中的 C0(θ) 可以改写为:
即
C0(θ)
是“经验分布”
q
和 “理论分布”
为了避免over-fitting,我们不希望weight参数过大,因此常在 cost function 中引入一个额外项。这个额外项,被称为 regularization 因子。所谓“不希望weight参数过大”,换句话说,就是我们对weight参数有个“先验”预期,(我们不妨把公式(7)中的
θ
看做 weight参数),即 “先验分布”
p(θ)
应当优先取范数较小的值,因此我们不妨把
p(θ)
取为以
0
为中心的正态分布:
其中的 α|θ|2 “正好”还原了 L2 regularization 的结果;同样如果我们取 p(θ)∝e−Nα|θ| ,则我们将还原 L1 regularization 的结果。综上,公式(7)的意义正好可以看作是 cross entropy 和 regularization 的和。
六、cross entropy 判据和 均方差判据的关系
在公式(7)中,如果我们取 p(y|x,θ) 满足正态分布形式 p(y|x,θ)∝e−α[y−f(x,θ)]2 ,则 公式(7) 化为:
这个公式的第一项求和,正好是均方差 (Mean Square Error)。即,在 p(y|x,θ) 取上述的正态分布时,“最小化 cross entropy判据 ”还原为 “最小化均方差判据”。
- X 可以看做一个“随机序列”,在本文讨论的问题中各 {xi} 之间彼此独立。但在更一般的情况下, X 可以是一个有内在数学结构的序列,例如一条 Markov chain ↩
- “极值点近似”在理论物理中和 “鞍点近似”、“平均场近似”等概念类似 ↩