概率与统计及相关概念是整个机器学习的基础。其与空间几何、线性代数一起构成了深度学习的理论基石。很多机器学习的理论描述都是基于概率的。而概率本身也是理工学科的基础性工具,广泛地应用于工程的各个领域。掌握好概率论是深入学习机器学习的基础,可以帮助我们进行相关公式的推演以及系统的描述。
这种概率化描述系统的过程比我们前面确定性的描述过程(空间曲面)更加抽象与难以理解。很多机器学习工作者在这里会遇到学习过程中的一个很大的障碍—很多机器学习系统是通过概率来进行描述的,这种不确定性通常与我们的直觉相悖。
本书在编写过程中尽量使用两种方式来描述系统,即函数式描述以及概率式描述,方便对概率论不甚了解的读者阅读本书。如果读者对概率概念较为熟悉,则可跳过本章进行后续学习。本章将对概率与统计领域的基本概念进行阐述,需要着重理解什么是建模以及最大似然估计。
2.1 概率基础概念
机器学习非常依赖于概率以及相关的数学工具。因此在深度学习中与概率相关的概念的出现频率非常高。我们习惯了使用确定性的思维来描述事物,这种确定性的思维在一定程度上类似于函数。
(2.1)
也就是说,我们给定一个
就会有一个确定的
。但这种描述方式存在缺陷。因为环境本身可能存在噪声,这使我们给定
的时候输出的值与
之间可能出现偏差,或者由于我们的模型本身复杂度不足以描述数据导致
与
之间可能出现偏差。回顾第1章所列举的超定方程的例子。我们在用直线拟合4个数据点的过程中由于直线形式较为简单,因此并不能完美地穿过所有的数据点,而只能近似。这种近似就是模型本身复杂度不足所引起的偏差。因此为了描述真实世界,引入概率是必要的。列举一个简单的例子:抛硬币。这是一个简单的随机事件,随机事件就是在重复试验中有规律地出现的事件。抛硬币只有两种情况{正面,反面},这种由全体样本点组成的集合,称为样本空间,可以用大写字母表示。由于在抛硬币的过程中彼此之间并不影响,出现正面和反面的概率均是0.5,因此我们称样本是独立同分布的(Independent and Identically Distributed, IID)。
概率与频率
抛硬币过程中假设做了1 000次试验,出现了501次正面,那么此时出现正面的频率就是。而概率就是样本无穷大时的频率,代表了随机事件的特征。通常用p来表示概率—
在这个过程中我们并未获取任何知识,因为抛硬币试验本身就是一个等概率分布。从另外一个角度来讲,我们更加深入地研究了抛硬币的过程,获取了更多的特征,这里的特征指的是我们观测到抛硬币试验中抛硬币的高度、使用力气的大小、风速等一系列观测参数。此时我们再计算硬币正面的概率就是在这些条件下所得到的概率。
p(正面|高度, 力度, 风速,⋯) (2.2)
实际上式 (2.2) 就是一个条件概率,它代表了在我们观察到外界的情况下对抛硬币事件的预测。更加通用的条件概率书写形式如下。
(2.3)
如果此时概率依然是0.5,那么代表我们实际上没有获取任何知识。如果我们通过一系列统计将预测硬币概率为0.9,那么代表我们是可以通过外界的观察而对随机事件进行有效预测的。这就是说我们从数据中发现了可用的知识,这是一个典型的机器学习过程。机器学习就是通过对观测数据进行分析,从而获取有用的知识。
如果抛硬币试验的样本空间是离散的,则只有两种情况。而对于其他情况,比如说某一电视机第一次损坏的时间,这个时间是连续的,这种称为连续型随机变量。离散型随机变量与连续型随机变量对应于机器学习的两个基本问题—分类问题与回归问题。连续型随机变量的概率仅在积分条件下有意义。
(2.4)
对于电视机损坏的问题而言,这代表从a时刻开始到b时刻之间损坏的概率。
称为概率密度函数。概率密度函数符合下面的约束条件。
(1)
,概率不存在负值。
(2)
,所有可能情况之和为1。离散类型随机变量需将积分改为求和。
如果有多个随机变量,则概率可以写为如下形式。
(2.5)
此时称为联合概率分布,其代表了
同时发生的概率。举一个简单的例子,我们有两枚硬币A和B,硬币是不均匀的,A出现正面概率是0.6,B出现正面概率是0.7。那么可以将两枚硬币的联合概率写成如表2.1所示的形式。
表2.1 两枚硬币试验中条件概率与边缘概率
由表2.1可以看到,对于独立试验而言,其概率是直接相乘的。抛硬币A、B这种独立试验假设也是朴素贝叶斯算法的基本假设。
(2.6)
其中涉及了新的概念—边缘概率。边缘概率就是根据概率的联合分布获取某一随机变量的分布。其形式如下。
(2.7)
对于条件概率和联合概率有如下公式。
(2.8)
从另一个角度来讲,条件概率给定了某些事件的依赖关系,比如湿度过高会直接导致下雨,而下雨又与降温有直接关系,但温度降低和湿度之间没有明显的依赖关系。这种依赖关系可以通过图形化的方式来展示,如图2.1所示。
图2.1 概率的有向图模型
如果湿度、下雨、降温三者之间没有明显的关系,也就是独立的事件,那么可以用式 (2.6)进行联合概率的分解。但三者之间显然不是独立的。下雨在湿度确定的情况下是独立的,而降温则是在下雨的条件下是独立的。因此,概率分解方式应该为p(湿度,下雨,降温)=p(湿度)p(下雨|湿度)p(降温|下雨)。这种概率分解可以简化建模。
这称为概率图模型,它代表了随机变量的依赖关系。假设对于联合概率分布某些变量存在依赖关系,则其可以写为如下形式。
(2.9)
此时概率有向图的形式如图2.2所示。
图2.2 概率有向图模型
如果概率之间并无依赖关系,则可以用无向图来表示,如图2.3所示。
图2.3 无向图表示的概率模型
此时概率可以分解为如下形式。
(2.10)
这称为概率无向图模型或马尔科夫随机场,其中Z是归一化常数。式 (2.10) 的分解依据为最大子团的分解。任意两个节点间均有线连接,而加入任意新节点均无法满足前面的条件,则称这种结构为最大子团。两种图模型均可以用来表示联合概率分解。这种图示对于表示来说是清晰直观的。
2.2 随机变量数字特征
对于随机变量本身,我们很难用确定性的公式来描述,因此可以借助随机变量的数字特征来描述变量内在特征。在机器学习中我们所关注的随机变量的数字特征主要有随机变量的数学期望、方差、标准差、协方差等。这其中最简单也是最重要的就是期望。期望的公式形式如下。
(2.11)
式 (2.11) 列举了两种随机变量的表示形式,一种是离散型随机变量,另一种是连续型随机变量。一般认为积分就是特殊形式的求和,因此两个公式并无本质区别。但这里需要说明的一点是,期望(Expected Value)与均值(Arithmetic Mean)是不同的。期望描绘的是数据的真实情况,是概率学内容;均值仅是对样本数据进行的统计,属于统计学范畴。在样本数量较多的情况下,由大数定理可以知道均值和样本相等。一般认为,样本均值是对期望的无偏估计。
(2.12)
仅有数据均值是没有用的。对于样本本身分布而言还需要统计分布的离散程度,这种离散程度称为方差。方差(Variance)概念的产生就是为了描述变量的离散程度,其表达方式如下。
(2.13)
标准差是在方差的基础上开根号,其与方差可以一起用来描述数据的分布情况。为了说明问题,我们绘制图像来展示数据分布的描述方式,如图2.4所示。
图2.4 数据的不同方差图示
如果数据方差越大,则数据分布越分散。从统计条形图上可以看到,红色统计图数据标准差较大,因此看起来分布更加分散。
条形图
条形图用来描述数据的分布情况,数据x轴表示随机变量取值,纵轴表示在某一区间样本数量的多少。可以对条形图概率进行归一化,在大样本情况下归一化条形图描绘了样本的概率分布。
前面两个统计数据均值以及方差均是描绘了一维数据的特征。如果样本本身有两个属性,则可以通过协方差(Covariance)来描述数据两个属性之间的线性相关性。
(2.14)
这里
、
代表数据点的两个属性,如果将数据存储为二维矩阵,那么每一行代表一个样本,每一列代表数据的某一属性。此时
、
就是二维矩阵的列向量。如果对式 (2.14) 使用方差进行归一化,我们得到的就是两列数据之间的皮尔逊相关系数(Pearson Correlation Coefficient)。
(2.15)
这种归一化表示是有益的,我们可以通过直接观察相关系数的取值来衡量两列之间的相关性,如图2.5所示。
图2.5 不同分布数据的线性相关性
由图2.5可知,如果两个列属性之间线性相关性较强,则其相关系数接近于1或者−1,否则接近于0。
线性相关性
这里的线性相关性与第1章中的向量的相关性是类似的。如果两个向量(列向量)具有很强的线性相关性,则代表一个向量可以由另一个向量来表示:。从另一个角度来讲,数据内部存在冗余,我们仅需要存储即可表征。
对于多维向量而言,其组织形式为矩阵:
,其中
代表列向量,矩阵的每一行代表一个样本,每一列
代表样本的元素。对于这种数据,需要将协方差变为协方差矩阵(Convariance Matrix)来描述线性相关性。
(2.16)
衍生算法:主成分分析(PCA)算法
它用来衡量样本各列之间的线性相关性,如果各列之间的线性相关性比较强,则意味着其中一列可以用另一列来表示。这种尽量减少各列数据的数据相关性的算法就称为PCA算法。PCA算法可以有效地减少数据冗余,通常用于数据预处理过程。PCA算法的基本思想的公式化描述如下。
(2.17)
假设
中每一列元素均值为0,那么式 (2.17) 就能成立。由此现在的一个问题就是找到一个合适的变换矩阵
使得
能够变换为
的形式。也就是变换后使各列之间的线性相关性最小,这样协方差矩阵可以对角化,在此假设对
进行变换的方式为线性变换。
(2.18)
要使变换后矩阵
可以用式 (2.17) 的形式对角化,可以对矩阵
其进行特征值分解。
(2.19)
此时仅需要使
,那么变换后形式如下。
(2.20)
式 (2.18) 中的变换矩阵
就是式 (2.19)中的
。PCA算法实际上与矩阵的奇异值分解有很大程度的相似性,或者底层算法可以通用。
2.3 信息熵
信息论是概率与统计的衍生内容。很多时候我们需要对系统的混乱程度进行衡量,通常而言这是难以量化的,在热力学中引入了熵的概念。在物理学中系统总是趋于向熵增大的方向发展,也就是从有用的机械能到内能的转换,这种转换在孤立系统中是不可逆的。以一个形象的例子来说:两种颜色的沙子,在混合前是有规律的。而在将其混合后整个系统的混乱程度变得很高,如果要将两种颜色分开,需要人为挑选,这个过程需要做功。同样地,机器学习过程也是如此,在开始过程中系统输出是无规律的,我们需要进行训练使整个系统可以进行某种预测。为了衡量系统本身的复杂度,在信息论中引入了与热力学熵类似的信息熵。在了解信息熵之前,我们需要定义自信息。
(2.21)
自信息在信息学中是以2为底的
,单位是bit。这个概念比较容易理解,如果某一概率特别小的事件发生了,那么说明它带来了足够多的有用信息。对于某一变量而言,我们通常并不关心它的具体取值,而只是关注它的分布形式。对自信息取均值,就得到了信息熵,也称香农熵(Shannon Entropy),其可以用来衡量系统的混乱程度。
(2.22)
这里如果
或1,那么
,式 (2.21) 对于离散变量就可以写成求和形式。
这里以抛硬币来举例。如果在抛硬币的过程中,我们得到正反面的概率均为0.5,前面说到这种情况是无法学到任何知识的,这种知识量化就是信息熵,计算公式如下。
H(硬币) = - p(正面)log( p(正面) ) - p(反面)log{( p(反面) ) =}1 (2.23)
前面说到,log以2为底,单位是bit。此时,对于硬币而言,用1bit信息就可以表示状态0或者1。如果通过某种方式,我们预测得知正面概率变为了1,则计算可得以下结果。
H(硬币) = - p(正面)log( p(正面) ) - p(反面)log{( p(反面) ) =}0 (2.24)
此时信息熵变小了,也就是系统混乱程度变小了。前面讲过我们可以通过一定条件预测出抛硬币的结果。此时我们从系统中学到了有用的知识,从而使系统混乱程度降低。以硬币正面概率作为变量,以熵作为函数,如图2.6所示。
图2.6 预测硬币正反概率所对应的信息熵
因此,机器学习过程就是从数据中寻找规律从而使系统熵变小的过程。
在机器学习中衡量两个分布相似度的概念是交叉熵(Cross Entropy)。
(2.25)
这也是机器学习中常用的损失函数之一(损失函数我们放到后面详细描述)。相比传统的点的距离的损失函数,交叉熵在计算梯度的过程中通常更加有效。因此,交叉熵在处理多分类问题时是更加合理的选择。
Softmax
在机器学习中很多理论是基于概率的,但是在理论推演过程或者实现过程中它通常用函数
来表示,其中
是输入样本,
是模型。在这个过程中,需要在概率与函数输出之间进行转换,其常用的形式如下。
(2.26)
这里将模型输出转换为概率形式,
是归一化常数,m为自定义常数通常为1。这个过程称为Softmax。对于多分类问题,我们给定的数据标签为d,它是一个多维向量,每一个维度上都保存了可能属于某一类的概率。例如,对于年龄层划分[青年,中年,老年]的问题,数据标签可能为
,表示这个人属于老年的概率为100%,这是因为我们在标注数据时可以确定这个人是老年人。这种编码方式称为one-hot编码。
这种编码方式是对应机器学习问题而产生的,因为如果用1、2、3来表示不同的年龄阶段,则可能难以训练。而预测输出
,显然并非概率的表示,因为概率表示不会存在负数,同时满足约束之和为1。
对于第一个问题,我们可以通过e指数的方式解决。将
变为
,之后再进行归一化
,整个过程称为Softmax。它实际上解决的问题是将函数转换为概率表示,也是基于能量的模型。
(2.27)
之后就可以用Softmax的结果与原有的标签
计算交叉熵来作为损失函数。
2.4 概率模型下的线性变换
机器学习模型均可以通过概率的方式进行描述。对于上面所述的一系列变换过程,均可以描绘为概率生成模型。
(2.28)
假设
是从某种分布
中抽取的向量,对于线性因子来讲,其生成过程如下。
(2.29)
式 (2.29) 中
为噪声,那么它所描述的生成过程类似于如下公式。
(2.30)
式 (2.30) 描述的是线性变换的过程。因此很多线性变换可以描述成上述形式,这个过程如图2.7所示。
图2.7 线性因子图示
对于 PCA 算法来讲,式 (2.28) 中的
是线性独立的。它的产生方式也是式 (2.30) 所描述的线性方式,而分布是单位分布。
(2.31)
假设
的协方差矩阵为单位矩阵,则由其产生的
如下。
(2.32)
2.5 最大似然估计与最大后验估计
这里依然以抛硬币试验为例。记录
次随机试验
,硬币正面
,出现正面的概率为
,从频率学派的观点来看,概率
应该是仅依赖于现有试验结果的,也就是通过数据取得的。
(2.33)
这个概率应该是令式 (2.33) 取最大值的概率。在假设了正面出现的概率后,假设试验是有顺序的同时也是独立重复的,那么可以计算出现随机试验情况下所得的概率。
(2.34)
计算上述以
为自变量的函数的最大值。
令函数为如下形式。
(2.36)
式 (2.36) 取得最小值时
,由此认为取得正面的概率为
。求解硬币取得正面概率的过程称为最大似然估计(MLE)。
贝叶斯学派则认为概率符合一个先验分布。这个先验分布可以纠正采样的偏差。
(2.37)
在式 (2.37) 中
(1)为后验。
(2)为似然。
(3)为先验。
(4)先验概率+数据=后验概率。
先验概率是什么意思?假设为了估计此次投掷硬币为正面的概率,我先用自己的硬币做了
次实验,正面出现了
次,假设此时正面概率为
,那么出现这种情况的概率如下。
式 (2.38) 中constant为归一化常数,称为Beta函数。
(2.39)
到此为止,我们都在描述
的分布,也就是硬币为正面概率的分布。可以看到使用我自己的硬币估计时,取得0.5的概率是最大的,如图2.8所示。
这个概率就可以作为我们的先验分布,它是概率的概率。以这个先验分布,我们去估计其他硬币的试验,假设使用另一枚硬币,抛4次,出现正面为
次,出现反面为
次,那么在贝叶斯理论下出现正面的概率如下。
图2.8 硬币为正面的概率分布
将式 (2.40) 绘制成图2.9所示的曲线。
图2.9 融入先验概率后计算的正面概率分布
此时硬币正面概率最大值为0.375。这个数值很重要,我们以最大似然估计预测的硬币正面概率是0.25。此时是没有先验分布的,如果引入了先验分布,则取得的正面概率应该为0.375。而我们抛硬币的次数仅为4次,因此很大可能出现偏差,先验概率的引入则可以纠正这种偏差。从另一个角度来看相当于在最大似然估计的基础上加入了正则化项,这种估计称为最大后验估计(MAP)。
假设神经网络输出为
,通过Softmax处理。
(2.41)
此时分类问题神经网络预测过程可以描述为,给定样本
后输出属于某一类的概率
,而神经网络的可训练参数为
。
(2.42)
神经网络的训练过程则可以描述为如下形式。
式 (2.43) 中,
为one-hot形式的向量。可以看到,最大似然估计与交叉熵作为损失函数具有相同的意义。
本文截选自《深度学习算法与实践》
本书主要内容分为3个部分。
第一部分为深度学习的数学基础(第1~4章)。这部分内容包括空间几何与线性代数、概率与统计、函数建模与优化、机器学习库的使用。其中,前两个是相对独立的,因此读者可以根据自己的基础进行选择性阅读;建模与优化综合了线性代数、概率与统计的内容。
第二部分为深度学习基本组件(第5~9章)。这部分内容包括深度学习模型与全连接网络、卷积神经网络、循环神经网络基础、循环神经网络扩展以及深度学习优化。这些基本组件均配有与训练预测过程基本实现。读者可以脱离机器学习库实现深度学习算法,这是理想的学习结果,但并非理想的学习过程。作为初学者应当在实践中逐步深入地进行学习。
第三部分为深度学习中常见的应用场景以及相关模型(第10~12章)。这部分内容包括图像处理(物体检测、人脸识别)、自然语言处理(语音识别、自然语言翻译、语音生成)和非监督学习(对抗生成网络、图像去噪、增强学习)。
作为入门图书,本书会从简单的函数入手描述深度学习(这是编程所必需的),同时介绍深度学习的基本元素与实现(如卷积神经网络、循环神经网络)。至于更复杂的理论,仅进行预测过程公式的说明与机器学习库版本的实现(如注意力机制)。训练过程可能需要借助TensorFlow来完成,但这不代表其本身与TensorFlow是绑定的关系。希望看完本书的读者能够抽出时间来进行更系统的学习。比如从空间几何、统计理论开始学习,但作为初学者,不建议过分纠结基础。如果要真正精通机器学习问题,时间和精力也是必须付出的成本。