This commit is contained in:
louzefeng
2024-07-11 05:50:32 +00:00
parent bf99793fd0
commit d3828a7aee
6071 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,88 @@
<audio id="audio" title="01 数学基础 | 九层之台,起于累土:线性代数" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/93/b9/937f2e0944eb11824c001fb5cfeee3b9.mp3"></audio>
“人工智能基础课”将从数学基础开始。必备的数学知识是理解人工智能不可或缺的要素今天的种种人工智能技术归根到底都建立在数学模型之上而这些数学模型又都离不开线性代数linear algebra的理论框架。
事实上,线性代数不仅仅是人工智能的基础,更是现代数学和以现代数学作为主要分析方法的众多学科的基础。从量子力学到图像处理都离不开向量和矩阵的使用。而在向量和矩阵背后,线性代数的核心意义在于提供了⼀种看待世界的抽象视角:**万事万物都可以被抽象成某些特征的组合,并在由预置规则定义的框架之下以静态和动态的方式加以观察**。
线性代数中最基本的概念是集合set。在数学上集合的定义是由某些特定对象汇总而成的集体。集合中的元素通常会具有某些共性因而可以用这些共性来表示。对于集合 { 苹果,橘子,梨 } 来说, 所有元素的共性是它们都是水果;对于集合 {牛,马,羊} 来说,所有元素的共性是它们都是动物。当然 { 苹果,牛 } 也可以构成一个集合,但这两个元素并没有明显的共性,这样的集合在解决实际问题中的作用也就相当有限。
“苹果”或是“牛”这样的具体概念显然超出了数学的处理范围,因而集合的元素需要进行进一步的抽象——用数字或符号来表示。如此一来,集合的元素既可以是单个的数字或符号,也可以是多个数字或符号以某种方式排列形成的组合。
在线性代数中由单独的数a构成的元素被称为标量scalar一个标量a可以是整数、实数或复数。如果多个标量${ a_1, a_2, \cdots, a_n}$ 按一定顺序组成一个序列这样的元素就被称为向量vector。显然向量可以看作标量的扩展。原始的一个数被替代为一组数从而带来了维度的增加给定表示索引的下标才能唯一地确定向量中的元素。
每个向量都由若干标量构成如果将向量的所有标量都替换成相同规格的向量得到的就是如下的矩阵matrix:
$$\left( {\begin{array}{cc}<br />
{{a_{11}}}&amp;{{a_{12}}}&amp;{{a_{13}}}\cr<br />
{{a_{21}}}&amp;{{a_{22}}}&amp;{{a_{23}}}\cr<br />
{{a_{31}}}&amp;{{a_{32}}}&amp;{{a_{33}}}<br />
\end{array}} \right)$$
相对于向量矩阵同样代表了维度的增加矩阵中的每个元素需要使用两个索引而非一个确定。同理如果将矩阵中的每个标量元素再替换为向量的话得到的就是张量tensor。直观地理解张量就是高阶的矩阵。
如果把三阶魔方的每一个小方块看作一个数它就是个3×3×3的张量3×3的矩阵则恰是这个魔方的一个面也就是张量的一个切片。相比于向量和矩阵张量是更加复杂直观性也更差的概念。
向量和矩阵不只是理论上的分析工具,也是计算机工作的基础条件。人类能够感知连续变化的大千世界,可计算机只能处理离散取值的二进制信息,因而来自模拟世界的信号必须在定义域和值域上同时进行数字化,才能被计算机存储和处理。从这个角度看,**线性代数是用虚拟数字世界表示真实物理世界的工具**。
在计算机存储中标量占据的是零维数组向量占据的是一维数组例如语音信号矩阵占据的是二维数组例如灰度图像张量占据的是三维乃至更高维度的数组例如RGB图像和视频。
描述作为数学对象的向量需要有特定的数学语言范数和内积就是代表。范数norm是对单个向量大小的度量描述的是向量自身的性质其作用是将向量映射为一个非负的数值。通用的$L ^ p$范数定义如下:
$${\left| {\bf{x}} \right|_p} = {\left( {\sum\limits_i {{{\left| {{x_i}} \right|}^p}} } \right)^{\frac{1}{p}}}$$
对⼀个给定向量,$L ^ 1$范数计算的是向量所有元素绝对值的和,$L ^ 2$范数计算的是通常意义上的向量长度,$L ^ {\infty}$范数计算的则是向量中最大元素的取值。
范数计算的是单个向量的尺度内积inner product计算的则是两个向量之间的关系。两个相同维数向量内积的表达式为
$$\left\langle {{\bf{x,y}}} \right\rangle = \sum\limits_i {{x_i} \cdot {y_i}} $$
即对应元素乘积的求和。内积能够表示两个向量之间的相对位置即向量之间的夹角。一种特殊的情况是内积为0即$\left\langle \bf{x,y} \right\rangle = 0$。在二维空间上这意味着两个向量的夹角为90度即相互垂直。而在高维空间上这种关系被称为正交orthogonality。如果两个向量正交说明他们线性无关相互独立互不影响。
在实际问题中,向量的意义不仅是某些数字的组合,更可能是某些对象或某些行为的特征。范数和内积能够处理这些表示特征的数学模型,进而提取出原始对象或原始行为中的隐含关系。
如果有一个集合,它的元素都是具有相同维数的向量(可以是有限个或无限个), 并且定义了加法和数乘等结构化的运算这样的集合就被称为线性空间linear space定义了内积运算的线性空间则被称为内积空间inner product space。**在线性空间中任意一个向量代表的都是n维空间中的一个点反过来 空间中的任意点也都可以唯一地用一个向量表示**。两者相互等效。
在线性空间上点和向量的相互映射中,一个关键问题是参考系的选取。在现实生活中,只要给定经度、纬度和海拔高度,就可以唯一地确定地球上的任何一个位置,因而经度值、纬度值、高度值构成的三维向量(x, y, h)就对应了三维物理空间中的⼀个点。
可是在直觉无法感受的高维空间中,坐标系的定义可就没有这么直观了。要知道,人工神经网络要处理的通常是数以万计的特征,对应着维度同样数以万计的复杂空间,这时就需要正交基的概念了。
在内积空间中一组两两正交的向量构成这个空间的正交基orthogonal basis假若正交基中基向量的$L ^ 2$范数都是单位长度1这组正交基就是标准正交基orthonormal basis。正交基的作用就是给内积空间定义出经纬度。⼀旦描述内积空间的正交基确定了向量和点之间的对应关系也就随之确定。
值得注意的是,描述内积空间的正交基并不唯一。对二维空间来说,平面直角坐标系和极坐标系就对应了两组不同的正交基,也代表了两种实用的描述方式。
线性空间的一个重要特征是能够承载变化。当作为参考系的标准正交基确定后,空间中的点就可以用向量表示。当这个点从一个位置移动到另一个位置时,描述它的向量也会发生改变。**点的变化对应着向量的线性变换linear transformation而描述对象变化抑或向量变换的数学语言正是矩阵**。
在线性空间中,变化的实现有两种方式:一是点本身的变化,二是参考系的变化。在第一种方式中,使某个点发生变化的方法是用代表变化的矩阵乘以代表对象的向量。可是反过来,如果保持点不变,而是换一种观察的角度,得到的也将是不同的结果,正所谓“横看成岭侧成峰,远近高低各不同”。
在这种情况下,矩阵的作用就是对正交基进行变换。因此,对于矩阵和向量的相乘,就存在不同的解读方式:
$${\bf{Ax = y}}$$
这个表达式既可以理解为向量x经过矩阵A所描述的变换变成了向量y也可以理解为一个对象在坐标系A的度量下得到的结果为向量x在标准坐标系 I单位矩阵主对角线元素为1其余元素为0的度量下得到的结果为向量y。
这表示矩阵不仅能够描述变化也可以描述参考系本身。引用网络上一个精当的类比表达式Ax就相当于对向量x做了一个环境声明用于度量它的参考系是A。如果想用其他的参考系做度量的话就要重新声明。**而对坐标系施加变换的方法,就是让表示原始坐标系的矩阵与表示变换的矩阵相乘**。
描述矩阵的⼀对重要参数是特征值eigenvalue和特征向量eigenvector。对于给定的矩阵A假设其特征值为λ特征向量为x则它们之间的关系如下
$${\bf{Ax}} = \lambda {\bf{x}}$$
正如前文所述,矩阵代表了向量的变换,其效果通常是对原始向量同时施加方向变化和尺度变化。可对于有些特殊的向量,矩阵的作用只有尺度变化而没有方向变化,也就是只有伸缩的效果而没有旋转的效果。对于给定的矩阵来说,这类特殊的向量就是矩阵的特征向量,特征向量的尺度变化系数就是特征值。
**矩阵特征值和特征向量的动态意义在于表示了变化的速度和方向**。如果把矩阵所代表的变化看作奔跑的人,那么矩阵的特征值就代表了他奔跑的速度,特征向量代表了他奔跑的方向。但矩阵可不是普通人,它是三头六臂的哪吒,他的不同分身以不同速度(特征值)在不同方向(特征向量)上奔跑,所有分身的运动叠加在⼀起才是矩阵的效果。
求解给定矩阵的特征值和特征向量的过程叫做特征值分解但能够进行特征值分解的矩阵必须是n维方阵。将特征值分解算法推广到所有矩阵之上就是更加通用的奇异值分解。
今天我和你分享了人工智能必备的线性代数基础,着重于抽象概念的解释而非具体的数学公式,其要点如下:
- 线性代数的本质在于将具体事物抽象为数学对象,并描述其静态和动态的特性;
- 向量的实质是n维线性空间中的静止点
- 线性变换描述了向量或者作为参考系的坐标系的变化,可以用矩阵表示;
- 矩阵的特征值和特征向量描述了变化的速度与方向。
线性代数之于人工智能如同加法之于高等数学。这样一个基础的工具集,你能想到它在人工智能中的哪些具体应用呢?
欢迎发表你的观点。
<img src="https://static001.geekbang.org/resource/image/e4/a2/e4111df16317c6c9a400ed9494c2f8a2.jpg" alt="" />

View File

@@ -0,0 +1,99 @@
<audio id="audio" title="02 数学基础 | 月有阴晴圆缺,此事古难全:概率论" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/20/6d/205369070b5e8b7a875d39beb4149f6d.mp3"></audio>
除了线性代数之外概率论probability theory也是人工智能研究中必备的数学基础。随着连接主义学派的兴起概率统计已经取代了数理逻辑成为人工智能研究的主流工具。在数据爆炸式增长和计算力指数化增强的今天概率论已经在机器学习中扮演了核心角色。
同线性代数一样,概率论也代表了一种看待世界的方式,**其关注的焦点是无处不在的可能性**。对随机事件发生的可能性进行规范的数学描述就是概率论的公理化过程。概率的公理化结构体现出的是对概率本质的一种认识。
将同一枚硬币抛掷10次其正面朝上的次数既可能一次没有也可能全部都是换算成频率就分别对应着0%和100%。频率本身显然会随机波动,但随着重复试验的次数不断增加,特定事件出现的频率值就会呈现出稳定性,逐渐趋近于某个常数。
从事件发生的频率认识概率的方法被称为“频率学派”frequentist probability频率学派口中的“概率”其实是一个可独立重复的随机实验中单个结果出现频率的极限。因为稳定的频率是统计规律性的体现因而通过大量的独立重复试验计算频率并用它来表征事件发生的可能性是一种合理的思路。
在概率的定量计算上频率学派依赖的基础是古典概率模型。在古典概率模型中试验的结果只包含有限个基本事件且每个基本事件发生的可能性相同。如此一来假设所有基本事件的数目为n待观察的随机事件A中包含的基本事件数目为k则古典概率模型下事件概率的计算公式为
$$P(A) = \dfrac{k}{n} $$
从这一基本公式就可以推导出复杂的随机事件的概率。
前文中的概率定义针对都是单个随机事件可如果要刻画两个随机事件之间的关系这个定义就不够看了。在一场足球比赛中球队1:0取胜和在0:2落后的情况下3:2翻盘的概率显然是不一样的。这就需要引入条件概率的概念。
条件概率conditional probability是根据已有信息对样本空间进行调整后得到的新的概率分布。假定有两个随机事件A和B条件概率就是指事件A在事件B已经发生的条件下发生的概率用以下公式表示
$$P(A|B) = \dfrac{P(AB)}{P(B)} $$
上式中的$P(AB)$称为联合概率joint probability表示的是A和B两个事件共同发生的概率。如果联合概率等于两个事件各自概率的乘积即$P(AB) = P(A) \cdot P(B)$,说明这两个事件的发生互不影响,即两者相互独立。对于相互独立的事件,条件概率就是自身的概率,即$P(A|B) = P(A)$。
基于条件概率可以得出全概率公式law of total probability。全概率公式的作用在于将复杂事件的概率求解转化为在不同情况下发生的简单事件的概率求和
$$P(A) = \sum_{i = 1}^{N}P(A|B_i)\cdot P(B_i)$$
$$\sum_{i = 1}^{N} P(B_i) = 1$$
全概率公式代表了频率学派解决概率问题的思路,即先做出一些假设($P(B_i)$),再在这些假设下讨论随机事件的概率($P(A|B_i)$)。
对全概率公式稍作整理,就演化出了求解“逆概率”这一重要问题。**所谓“逆概率”解决的是在事件结果已经确定的条件下($P(A)$),推断各种假设发生的可能性($P(B_i|A)$**。由于这套理论首先由英国牧师托马斯·贝叶斯提出,因而其通用的公式形式被称为贝叶斯公式:
$$P(B_i|A)=\frac{P(A|B_i)\cdot P(B_i)}{\sum _{j=1}^{N} P(A|B_j)\cdot P(B_j)}$$
贝叶斯公式可以进一步抽象为贝叶斯定理Bayes&#39; theorem
$$P(H|D) = \dfrac{P(D|H) \cdot P(H)}{P(D)}$$
式中的$P(H)$被称为先验概率prior probability即预先设定的假设成立的概率$P(D|H)$被称为似然概率likelihood function是在假设成立的前提下观测到结果的概率$P(H|D)$被称为后验概率posterior probability即在观测到结果的前提下假设成立的概率。
从科学研究的方法论来看贝叶斯定理提供了一种全新的逻辑。它根据观测结果寻找合理的假设或者说根据观测数据寻找最佳的理论解释其关注的焦点在于后验概率。概率论的贝叶斯学派Bayesian probability正是诞生于这种理念。
在贝叶斯学派眼中概率描述的是随机事件的可信程度。如果手机里的天气预报应用给出明天下雨的概率是85%这就不能从频率的角度来解释了而是意味着明天下雨这个事件的可信度是85%。
**频率学派认为假设是客观存在且不会改变的,即存在固定的先验分布,只是作为观察者的我们无从知晓**。因而在计算具体事件的概率时,要先确定概率分布的类型和参数,以此为基础进行概率推演。
相比之下,**贝叶斯学派则认为固定的先验分布是不存在的,参数本身也是随机数**。换言之,假设本身取决于观察结果,是不确定并且可以修正的。数据的作用就是对假设做出不断的修正,使观察者对概率的主观认识更加接近客观实际。
概率论是线性代数之外,人工智能的另一个理论基础,多数机器学习模型采用的都是基于概率论的方法。但由于实际任务中可供使用的训练数据有限,因而需要对概率分布的参数进行估计,这也是机器学习的核心任务。
**概率的估计有两种方法最大似然估计法maximum likelihood estimation和最大后验概率法maximum a posteriori estimation两者分别体现出频率学派和贝叶斯学派对概率的理解方式**
最大似然估计法的思想是使训练数据出现的概率最大化,依此确定概率分布中的未知参数,估计出的概率分布也就最符合训练数据的分布。最大后验概率法的思想则是根据训练数据和已知的其他条件,使未知参数出现的可能性最大化,并选取最可能的未知参数取值作为估计值。在估计参数时,最大似然估计法只需要使用训练数据,最大后验概率法除了数据外还需要额外的信息,就是贝叶斯公式中的先验概率。
从理论的角度来说,频率学派和贝叶斯学派各有千秋,都发挥着不可替代的作用。但具体到人工智能这一应用领域,基于贝叶斯定理的各种方法与人类的认知机制吻合度更高,在机器学习等领域中也扮演着更加重要的角色。
概率论的一个重要应用是描述随机变量random variable。根据取值空间的不同随机变量可以分成两类离散型随机变量discrete random variable和连续型随机变量continuous random variable。在实际应用中需要对随机变量的每个可能取值的概率进行描述。
离散变量的每个可能的取值都具有大于0的概率取值和概率之间一一对应的关系就是离散型随机变量的分布律也叫**概率质量函数**probability mass function。概率质量函数在连续型随机变量上的对应就是概率密度函数probability density function
需要说明的是,**概率密度函数体现的并非连续型随机变量的真实概率,而是不同取值可能性之间的相对关系**。对连续型随机变量来说,其可能取值的数目为不可列无限个,当归一化的概率被分配到这无限个点上时,每个点的概率都是个无穷小量,取极限的话就等于零。而概率密度函数的作用就是对这些无穷小量加以区分。虽然在$x \rightarrow \infty$时,$1 / x$和$2 / x$都是无穷小量但后者永远是前者的2倍。这类相对意义而非绝对意义上的差别就可以被概率密度函数所刻画。对概率密度函数进行积分得到的才是连续型随机变量的取值落在某个区间内的概率。
定义了概率质量函数与概率密度函数后,就可以给出一些重要分布的特性。重要的离散分布包括两点分布、二项分布和泊松分布,重要的连续分布则包括均匀分布、指数分布和正态分布。
- **两点分布**Bernoulli distribution适用于随机试验的结果是二进制的情形事件发生/不发生的概率分别为$p/(1 - p)$。任何只有两个结果的随机试验都可以用两点分布描述,抛掷一次硬币的结果就可以视为等概率的两点分布。
- **二项分布**Binomial distribution将满足参数为p的两点分布的随机试验独立重复n次事件发生的次数即满足参数为(n,p)的二项分布。二项分布的表达式可以写成$P(X = k) = C^n_k \cdot p ^ k \cdot (1 - p) ^ {(n - k)}, 0 \le k \le n$。
- **泊松分布**Poisson distribution放射性物质在规定时间内释放出的粒子数所满足的分布参数为$\lambda$的泊松分布表达式为$P(X = k) = \lambda ^ k \cdot e ^ {-\lambda} / (k!)$。当二项分布中的n很大且p很小时其概率值可以由参数为$\lambda = np$的泊松分布的概率值近似。
- **均匀分布**uniform distribution在区间(a, b)上满足均匀分布的连续型随机变量其概率密度函数为1 / (b - a),这个变量落在区间(a, b)内任意等长度的子区间内的可能性是相同的。
- **指数分布**exponential distribution满足参数为$\theta$指数分布的随机变量只能取正值,其概率密度函数为$e ^ {-x / \theta} / \theta, x &gt; 0$。指数分布的一个重要特征是无记忆性即P(X &gt; s + t | X &gt; s) = P(X &gt; t)。
- **正态分布**normal distribution参数为正态分布的概率密度函数为
$$ f(x) = \dfrac{1}{\sqrt{2\pi}\sigma} \cdot e ^ {-\frac{(x - \mu) ^ 2}{2\sigma ^ 2}}$$
当$\mu = 0, \sigma = 1$时,上式称为标准正态分布。正态分布是最常见最重要的一种分布,自然界中的很多现象都近似地服从正态分布。
除了概率质量函数/概率密度函数之外,另一类描述随机变量的参数是其数字特征。**数字特征是用于刻画随机变量某些特性的常数包括数学期望expected value、方差variance和协方差covariance**。
数学期望即均值,体现的是随机变量可能取值的加权平均,即根据每个取值出现的概率描述作为一个整体的随机变量的规律。方差表示的则是随机变量的取值与其数学期望的偏离程度。方差较小意味着随机变量的取值集中在数学期望附近,方差较大则意味着随机变量的取值比较分散。
数学期望和方差描述的都是单个随机变量的数字特征如果要描述两个随机变量之间的相互关系就需要用到协方差和相关系数。协方差度量了两个随机变量之间的线性相关性即变量Y能否表示成以另一个变量X为自变量的$aX+b$的形式。
根据协方差可以进一步求出相关系数correlation coefficient相关系数是一个绝对值不大于1的常数它等于1意味着两个随机变量满足完全正相关等于-1意味着两者满足完全负相关等于0则意味着两者不相关。需要说明的是无论是协方差还是相关系数刻画的都是线性相关的关系。如果随机变量之间的关系满足$Y = X ^ 2$,这样的非线性相关性就超出了协方差的表达能力。
今天我和你分享了人工智能必备的概率论基础,着重于抽象概念的解释而非具体的数学公式,其要点如下:
- 概率论关注的是生活中的不确定性或可能性;
- 频率学派认为先验分布是固定的,模型参数要靠最大似然估计计算;
- 贝叶斯学派认为先验分布是随机的,模型参数要靠后验概率最大化计算;
- 正态分布是最重要的一种随机变量的分布。
在今天的机器学习中,大量任务是根据已有的数据预测可能出现的情况,因而贝叶斯定理得到了广泛应用。那么在生活中,你能想到哪些实例,是从已有的观测结果反过来推演假设成立的呢?
欢迎发表你的观点。
<img src="https://static001.geekbang.org/resource/image/60/87/60dfa8c61a5847be616f08d18b36a587.jpg" alt="">

View File

@@ -0,0 +1,73 @@
<audio id="audio" title="03 数学基础 | 窥一斑而知全豹:数理统计" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/45/00/45d293a115dcfdd4272fa101aab42300.mp3"></audio>
在人工智能的研究中,数理统计同样不可或缺。基础的统计理论有助于对机器学习的算法和数据挖掘的结果做出解释,只有做出合理的解读,数据的价值才能够体现。**数理统计mathematical statistics根据观察或实验得到的数据来研究随机现象并对研究对象的客观规律做出合理的估计和判断**。
虽然数理统计以概率论为理论基础,但两者之间存在方法上的本质区别。概率论作用的前提是随机变量的分布已知,根据已知的分布来分析随机变量的特征与规律;数理统计的研究对象则是未知分布的随机变量,研究方法是对随机变量进行独立重复的观察,根据得到的观察结果对原始分布做出推断。
用一句不严谨但直观的话讲:**数理统计可以看成是逆向的概率论**。用买彩票打个比方,概率论解决的是根据已知的摇奖规律判断一注号码中奖的可能性,数理统计解决的则是根据之前多次中奖/不中奖的号码记录以一定的精确性推测摇奖的规律,虽然这种尝试往往无功而返。
在数理统计中,可用的资源是有限的数据集合,这个有限数据集被称为**样本**sample。相应地观察对象所有的可能取值被称为**总体**population。数理统计的任务就是根据样本推断总体的数字特征。样本通常由对总体进行多次独立的重复观测而得到这保证了不同的样本值之间相互独立并且都与总体具有相同的分布。
在统计推断中,应用的往往不是样本本身,而是被称为统计量的样本的函数。统计量本身是一个随机变量,是用来进行统计推断的工具。**样本均值和样本方差是两个最重要的统计量**
- 样本均值:${\bar X} = \dfrac{1}{n} \sum\limits_{i = 1}^{n} X_i$
- 样本方差:$S ^ 2 = \dfrac{1}{n - 1} \sum\limits_{i = 1}^{n} (X_i - {\bar X}) ^ 2$
**统计推断的基本问题可以分为两大类参数估计estimation theory和假设检验hypothesis test**
## 参数估计
参数估计是通过随机抽取的样本来估计总体分布的方法,又可以进一步划分为**点估计**point estimation和**区间估计**interval estimation。在已知总体分布函数形式但未知其一个或者多个参数时借助于总体的一个样本来估计未知参数的取值就是参数的点估计。点估计的核心在于构造合适的统计量$\hat \theta$,并用这个统计量的观察值作为未知参数$\theta$的近似值。**点估计的具体方法包括矩估计法method of moments和最大似然估计法**maximum likelihood estimation
矩表示的是随机变量的分布特征,$k$阶矩的定义为随机变量的$k$次方的均值,即$E(X^k)$。**矩估计法的思想在于用样本的$k$阶矩估计总体的$k$阶矩**,其理论依据在于样本矩的函数几乎处处收敛于总体矩的相应函数,这意味着当样本的容量足够大时,几乎每次都可以根据样本参数得到相应总体参数的近似值。
相对于基于大数定律的矩估计法,最大似然估计法源于频率学派看待概率的方式。**对最大似然估计的直观理解是:既然抽样得到的是已有的样本值,就可以认为取到这一组样本值的概率较大,因而在估计参数$\theta$的时候就需要让已有样本值出现的可能性最大**。
在最大似然估计中,似然函数被定义为样本观测值出现的概率,确定未知参数的准则是让似然函数的取值最大化,也就是微积分中求解函数最大值的问题。由于不同的样本值之间相互独立,因而似然函数可以写成若干概率质量函数/概率密度函数相乘的形式,并进一步转化为对数方程求解。
矩估计法和最大似然估计法代表了两种推断总体参数的思路,但对于同一个参数,用不同的估计方法求出的估计量很可能存在差异,这就引出了如何对估计量进行评价的问题。在实际应用中,估计量的评价通常要考虑以下三个基本标准。
- **无偏性**:估计量的数学期望等于未知参数的真实值;
- **有效性**:无偏估计量的方差尽可能小;
- **一致性**:当样本容量趋近于无穷时,估计量依概率收敛于未知参数的真实值。
以上三个要求构成了对点估计量的整体判定标准。无偏性意味着给定样本值时根据估计量得到的估计值可能比真实值更大也可能更小。但如果保持估计量的构造不变而是进行多次重新抽样每次都用新的样本计算估计值那么这些估计值与未知参数真实值的偏差在平均意义上等于0这意味着不存在系统误差。
虽然估计值与真实值之间的偏差不可避免,但个体意义上的偏差越小意味着估计的性能越精确,有效性度量的正是估计量和真实值之间的偏离程度。而偏离程度不仅仅取决于估计量的构造方式,还取决于样本容量的大小,一致性考虑的就是样本容量的影响。一致性表示的是随着样本容量的增大,估计量的值将稳定在未知参数的真实值上。不具备一致性的估计量永远无法将未知参数估计得足够精确,因而是不可取的。
对估计量的判别标准涉及了估计误差的影响,这是和估计值同样重要的参量。在估计未知参数$\theta$的过程中,除了求出估计量,还需要估计出一个区间,并且确定这个区间包含$\theta$真实值的可信程度。**在数理统计中这个区间被称为置信区间confidence interval这种估计方式则被称为区间估计**。
置信区间可以用如下的方式直观解释:对总体反复抽样多次,每次得到容量相同的样本,则根据每一组样本值都可以确定出一个置信区间$(\underline{\theta},\overline{\theta})$,其上界和下界是样本的两个统计量,分别代表了置信上限和置信下限。
每个置信区间都存在两种可能性:包含$\theta$的真实值或不包含$\theta$的真实值。如果对所有置信区间中包含$\theta$真实值的比率进行统计,得到的比值就是置信水平。因此,区间估计相当于在点估计的基础上进一步提供了取值范围和误差界限,分别对应着置信区间和置信水平。
## 假设检验
**参数估计的对象是总体的某个参数,假设检验的对象则是关于总体的某个论断,即关于总体的假设**。假设检验中的假设包含原假设$H_0$和备择假设$H_1$;检验的过程就是根据样本在$H_0$和$H_1$之间选择一个接受的过程。
理想的情况是假设$H_0$($H_1$)为真并且这个假设被接受。但由于检验是基于样本做出的错误的决策终归会出现其形式可以分为两种第I类错误对应假设$H_0$为真但是被拒绝的情况也就是“弃真”类型的错误第II类错误对应假设$H_0$不真但是被接受的情况,也就是“取伪”类型的错误。
假设检验的思维方式建立在全称命题只能被证伪不能被证实的基础上。要证明原假设$H_0$为真,更容易的方法是证明备择假设$H_1$为假,因为只要能够举出一个反例就够了。但在假设检验中,反例并非绝对意义上对假设的违背,而是以小概率事件的形式出现。
在数理统计中发生概率小于1%的事件被称作小概率事件,在单次实验中被认为是不可能发生的。如果在一次观测得到的样本中出现了小概率事件,那么就有理由认为这不是真正意义上的小概率事件,原始的假设也就此被推翻。如果是备择假设被推翻,就意味着接受原假设;反之,如果是原假设被推翻,则意味着拒绝原假设。
从数理统计的角度看,监督学习算法的任务就是在假设空间中搜索能够针对特定问题做出良好预测的假设。学习器通过对测试数据集的学习得到具有普适性的模型,这个模型适用于不属于测试集的新样本的能力被称为泛化能力。显然,泛化能力越强,学习器就越好。
**假设检验的作用就在于根据学习器在测试集上的性能推断其泛化能力的强弱,并确定所得结论的精确程度,可以进一步推广为比较不同学习器的性能**。由于度量学习器性能的常用指标是错误率,假设检验中的假设就是对学习器的泛化错误率的推断,推断的依据就是在测试数据集上的测试错误率。具体的检验方式有很多种,在此不做赘述。
除了推断之外,对泛化性能的解释也是机器学习算法分析的重要内容。**泛化误差的构成可以分为三部分偏差bias、方差variance和噪声noise**。
偏差表示算法预测值和真实结果之间的偏离程度,刻画的是模型的欠拟合特性;方差表示数据的扰动对预测性能的影响,刻画的是模型的过拟合特性;噪声表示在当前学习任务上能够达到的最小泛化误差,刻画的是任务本身的难度。对任何实际的模型来说,偏差和方差都难以实现同时优化,反映出欠拟合与过拟合之间难以调和的矛盾。
今天我和你分享了人工智能必备的数理统计基础,着重于抽象概念的解释而非具体的数学公式,其要点如下:
- 数理统计的任务是根据可观察的样本反过来推断总体的性质;
- 推断的工具是统计量,统计量是样本的函数,是个随机变量;
- 参数估计通过随机抽取的样本来估计总体分布的未知参数,包括点估计和区间估计;
- 假设检验通过随机抽取的样本来接受或拒绝关于总体的某个判断,常用于估计机器学习模型的泛化错误率。
既然机器学习和数理统计关注的都是利用数据提取信息或者规律,机器学习中的很多算法也依赖于数理统计作为基础,那么如何看待两者之间的区别和联系呢?
欢迎发表你的观点。
<img src="https://static001.geekbang.org/resource/image/55/6d/553fd5c4498ba56b75a15fc99770dc6d.jpg" alt="" />

View File

@@ -0,0 +1,76 @@
<audio id="audio" title="04 数学基础 | 不畏浮云遮望眼:最优化方法" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/f4/4b/f4f55aaf61bc9649cf195a297244324b.mp3"></audio>
从本质上讲,**人工智能的目标就是最优化:在复杂环境与多体交互中做出最优决策**。几乎所有的人工智能问题最后都会归结为一个优化问题的求解,因而最优化理论同样是人工智能必备的基础知识。
**最优化理论optimization研究的问题是判定给定目标函数的最大值最小值是否存在并找到令目标函数取到最大值最小值的数值**。如果把给定的目标函数看成连绵的山脉,最优化的过程就是判断顶峰的位置并找到到达顶峰路径的过程。
要实现最小化或最大化的函数被称为**目标函数objective function或评价函数**,大多数最优化问题都可以通过使目标函数$f(x)$最小化解决,最大化问题则可以通过最小化$-f(x)$实现。
实际的最优化算法既可能找到目标函数的全局最小值global minimum也可能找到局部极小值local minimum两者的区别在于全局最小值比定义域内所有其他点的函数值都小而局部极小值只是比所有邻近点的函数值都小。
理想情况下,最优化算法的目标是找到全局最小值。但找到全局最优解意味着在全局范围内执行搜索。还是以山峰做例子。全局最小值对应着山脉中最高的顶峰,找到这个顶峰最好的办法是站在更高的位置上,将所有的山峰尽收眼底,再在其中找到最高的一座。
可遗憾的是,目前实用的最优化算法都不具备这样的上帝视角。它们都是站在山脚下,一步一个脚印地寻找着附近的高峰。但受视野的限制,找到的峰值很可能只是方圆十里之内的顶峰,也就是局部极小值。
当目标函数的输入参数较多、解空间较大时,绝大多数实用算法都不能满足全局搜索对计算复杂度的要求,因而只能求出局部极小值。但在人工智能和深度学习的应用场景下,只要目标函数的取值足够小,就可以把这个值当作全局最小值使用,作为对性能和复杂度的折中。
**根据约束条件的不同最优化问题可以分为无约束优化unconstrained optimization和约束优化constrained optimization两类**。无约束优化对自变量$x$的取值没有限制,约束优化则把$x$的取值限制在特定的集合内,也就是满足一定的约束条件。
线性规划linear programming就是一类典型的约束优化其解决的问题通常是在有限的成本约束下取得最大的收益。约束优化问题通常比无约束优化问题更加复杂但通过**拉格朗日乘子**Lagrange multiplier的引入可以将含有$n$个变量和$k$个约束条件的问题转化为含有$(n + k)$个变量的无约束优化问题。拉格朗日函数最简单的形式如下
$$ L(x, y, \lambda) = f(x, y) + \lambda \varphi(x, y) $$
式中$f(x, y)$为目标函数,$\varphi(x, y)$则为等式约束条件,$\lambda$是拉格朗日乘数。从数学意义上讲,由原目标函数和约束条件共同构成的拉格朗日函数与原目标函数具有共同的最优点集和共同的最优目标函数值,从而保证了最优解的不变性。
**求解无约束优化问题最常用的方法是梯度下降法gradient descent**。直观地说梯度下降法就是沿着目标函数值下降最快的方向寻找最小值就像爬山时要沿着坡度最陡的路径寻找山顶一样。在数学上梯度的方向是目标函数导数derivative的反方向。
当函数的输入为向量时,目标函数的图象就变成了高维空间上的曲面,这时的梯度就是垂直于曲面等高线并指向高度增加方向的向量,也就携带了高维空间中关于方向的信息。而要让目标函数以最快的速度下降,就需要让自变量在负梯度的方向上移动。这个结论翻译成数学语言就是“**多元函数沿其负梯度方向下降最快**”,这也是梯度下降法的理论依据。
在梯度下降算法中,另一个重要的影响因素是**步长**,也就是每次更新$f(\mathbf{x})$时$\mathbf{x}$的变化值。较小的步长会导致收敛过程较慢,当$f(\mathbf{x})$接近最小值点时,步长太大反而会导致一步迈过最小值点,正所谓“过犹不及”。
因而在梯度下降法中,步长选择的整体规律是逐渐变小的。这样的方式也符合我们的认识规律。在校对仪器时,不都是先粗调再微调么?
以上是针对单个样本的梯度下降法,当可用的训练样本有多个时,样本的使用模式就分为两种。
一种是**批处理模式**batch processing即计算出在每个样本上目标函数的梯度再将不同样本的梯度进行求和求和的结果作为本次更新中目标函数的梯度。在批处理模式中每次更新都要遍历训练集中所有的样本因而运算量较大。
另一种模式叫做**随机梯度下降法**stochastic gradient descent它在每次更新中只使用一个样本下一次更新再使用另外一个样本在不断迭代的更新过程中实现对所有样本的遍历。有趣的是事实表明当训练集的规模较大时随机梯度下降法的性能更佳。
梯度下降法只用到了目标函数的一阶导数first-order derivative并没有使用二阶导数second-order derivative。一阶导数描述的是目标函数如何随输入的变化而变化二阶导数描述的则是一阶导数如何随输入的变化而变化提供了关于目标函数曲率curvature的信息。曲率影响的是目标函数的下降速度。当曲率为正时目标函数会比梯度下降法的预期下降得更慢反之当曲率为负时目标函数则会比梯度下降法的预期下降得更快。
梯度下降法不能利用二阶导数包含的曲率信息,只能利用目标函数的局部性质,因而难免盲目的搜索中。已知目标函数可能在多个方向上都具有增加的导数,意味着下降的梯度具有多种选择。但不同选择的效果显然有好有坏。
遗憾的是,梯度下降法无法获知关于导数的变化信息,也就不知道应该探索导数长期为负的方向。由于不具备观察目标函数的全局视角,在使用中梯度下降法就会走出一些弯路,导致收敛速度变慢。而二阶导数所包含的全局信息能够为梯度下降的方向提供指导,进而获得更优的收敛性。
**如果将二阶导数引入优化过程得到的典型方法就是牛顿法Newton&#39;s method**。在牛顿法中目标函数首先被泰勒展开写成二阶近似的形式相比之下梯度下降法只保留了目标函数的一阶近似。此时再对二阶近似后的目标函数求导并令其导数等于0得到的向量表示的就是下降最快的方向。**相比于梯度下降法,牛顿法的收敛速度更快**。
不管是利用一阶导数的梯度下降法,还是利用二阶导数的牛顿法,**其寻找最小值点的基本思想都是先确定方向再确定步长因而统称为“线性搜索方法”line search**。
还有一类算法,**其寻找最小值点的基本思路是先确定步长以步长为参数划定一个区域再在这个区域内寻找最快下降的方向。这类算法被称为“置信域方法”trust region**。
具体来说,置信域算法的运行过程如下:设定一个置信域半径$s$,并在以当前点为中心、以$s$为半径的封闭球形区域作为置信域,在置信域内寻找目标函数的二次近似模型的最优点,最优点和当前点之间的距离就是计算出来的备选位移。
在备选位移上,如果目标函数的二次近似产生了充分的下降,就将当前点移动到计算出的最优点,则继续按此规则迭代计算下去,并可以适当增加$s$;如果目标函数的近似下降不够理想,则说明步子跨得太大,需要缩小$s$并计算出新的备选位移,直到满足终止条件。
除了以上算法外,还有一类被称为“**启发式算法**”heuristics的最优化方法。启发式算法的灵感来源于20世纪50年代诞生的仿生学它将生物进化等自然现象的机理应用于现实世界复杂问题的优化之中并取得了不俗的效果。
相对于传统的基于数学理论的最优化方法,启发式算法显得返璞归真。**启发式算法的核心思想就是大自然中&quot;优胜劣汰&quot;的生存法则,并在算法的实现中添加了选择和突变等经验因素**。
事实上搜索越多并不意味着智能越高智能高的表现恰恰是能够善用启发式策略不用经过大量搜索也能解决问题。启发式算法的实例包括模拟生物进化规律的遗传算法genetic algorithm、模拟统计物理中固体结晶过程的模拟退火算法simulated annealing、模拟低等动物产生集群智能的蚁群算法ant colony optimization等等。
今天炙手可热的神经网络实际上也是一类启发式算法,它模拟的则是大脑中神经元竞争和协作的机制。关于各类启发式算法的论著较多,如果你感兴趣,可以查阅不同算法的原理及实现,受篇幅所限,在此不做赘述。
今天我和你分享了人工智能必备的最优化方法基础,着重于抽象概念的解释而非具体的数学公式,其要点如下:
- 通常情况下,最优化问题是在无约束情况下求解给定目标函数的最小值;
- 在线性搜索中,确定寻找最小值时的搜索方向需要使用目标函数的一阶导数和二阶导数;
- 置信域算法的思想是先确定搜索步长,再确定搜索方向;
- 以人工神经网络为代表的启发式算法是另外一类重要的优化方法。
在最优化方法中,基于数学定理的搜索式算法和基于仿生学原理的启发式算法,哪一种能够在人工智能的发展中发挥更大的作用呢?
欢迎发表你的观点。
<img src="https://static001.geekbang.org/resource/image/13/8e/13a4991f9bc5b7c3717f47ea28b4d18e.jpg" alt="">

View File

@@ -0,0 +1,96 @@
<audio id="audio" title="05 数学基础 | 万物皆数,信息亦然:信息论" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/3a/23/3aa4ea5f9f6073f9dc9749cf00f88f23.mp3"></audio>
近年来的科学研究不断证实,不确定性才是客观世界的本质属性。换句话说,上帝还真就掷骰子。不确定性的世界只能使用概率模型来描述,正是对概率的刻画促成了信息论的诞生。
1948年供职于美国贝尔实验室的物理学家克劳德·香农发表了著名论文《通信的数学理论》A Mathematical Theory of Communication给出了对信息这一定性概念的定量分析方法标志着信息论作为一门学科的正式诞生。
香农在《通信的数学理论》中开宗明义:“通信的基本问题是在一点精确地或近似地复现在另一点所选取的消息。消息通常有意义,即根据某种体系,消息本身指向或关联着物理上或概念上的特定实体。但消息的语义含义与工程问题无关,重要的问题是一条消息来自于一个所有可能的消息的集合。”
这样一来,所有类型的信息都被抽象为逻辑符号,这拓展了通信任务的范畴与信息论的适用性,也将信息的传播和处理完全剥离。
**信息论使用“信息熵”的概念,对单个信源的信息量和通信中传递信息的数量与效率等问题做出了解释,并在世界的不确定性和信息的可测量性之间搭建起一座桥梁**
在生活中,信息的载体是消息,而不同的消息带来的信息即使在直观感觉上也是不尽相同的。比如,“中国男子足球队获得世界杯冠军”的信息显然要比“中国男子乒乓球队获得世界杯冠军”的信息要大得多。
究其原因,国足勇夺世界杯是如假包换的小概率事件(如果不是不可能事件的话),发生的可能性微乎其微;而男乒夺冠已经让国人习以为常,丢掉冠军的可能性才是意外。因此,以不确定性来度量信息是一种合理的方式。不确定性越大的消息可能性越小,其提供的信息量就越大。
香农对信息的量化正是基于以上的思路,他定义了“熵”这一信息论中最基本最重要的概念。“熵”这个词来源于另一位百科全书式的科学家约翰·冯诺伊曼,他的理由是没人知道熵到底是什么。虽然这一概念已经在热力学中得到了广泛使用,但直到引申到信息论后,**熵的本质才被解释清楚,即一个系统内在的混乱程度**。
在信息论中,如果事件$A$发生的概率为$p(A)$,则这个事件的自信息量的定义为
$$ h(A) = - \log_2 p(A) $$
如果国足闯进世界杯决赛圈1:1000的夺冠赔率是个很乐观的估计用这个赔率计算出的信息量约为10比特而国乒夺冠的赔率不妨设为1:2即使在这样高的赔率下事件的信息量也只有1比特。两者之间的差距正是其可能性相差悬殊的体现。
根据单个事件的自信息量可以计算包含多个符号的信源的信息熵。信源的信息熵是信源可能发出的各个符号的自信息量在信源构成的概率空间上的统计平均值。如果一个离散信源$X$包含$n$个符号,每个符号$a_i$的取值为$p(a_i)$,则$X$的信源熵为
$$H(X) = -\sum\limits_{i = 1}^n p(a_i) \log_2 p(a_i)$$
信源熵描述了信源每发送一个符号所提供的平均信息量,是信源总体信息测度的均值。当信源中的每个符号的取值概率相等时,信源熵取到最大值$\log _2 n$,意味着信源的随机程度最高。
在概率论中有**条件概率**的概念,将条件概率扩展到信息论中,就可以得到**条件熵**。如果两个信源之间具有相关性,那么在已知其中一个信源$X$的条件下,另一个信源$Y$的信源熵就会减小。条件熵$H(Y|X)$表示的是在已知随机变量$X$的条件下另一个随机变量$Y$的不确定性,也就是在给定$X$时,根据$Y$的条件概率计算出的熵再对$X$求解数学期望:
$$H(Y|X) = \sum_{i = 1}^ n p(x_i) H(Y|X = x_i) $$
$$= -\sum_{i = 1}^ n p(x_i) \sum_{j = 1}^ m p(y_j|x_i) \log_2 p(y_j|x_i) $$
$$ = - \sum_{i = 1}^ n \sum_{j = 1}^ m p(x_i, y_j) \log_2 p(y_j|x_i) $$
**条件熵的意义在于先按照变量$X$的取值对变量$Y$进行了一次分类,对每个分出来的类别计算其单独的信息熵,再将每个类的信息熵按照$X$的分布计算其数学期望**
以上课为例,学生在教室中可以任意选择座位,那么可能出现的座位分布会很多,其信源熵也就较大。如果对座位的选择添加一个限制条件,比如男生坐左边而女生坐右边,虽然左边的座位分布和右边的座位分布依然是随机的,但相对于未加限制时的情形就会简单很多。这就是分类带来的不确定性的下降。
定义了条件信息熵后,就可以进一步得到**互信息**的概念
$$I(X; Y) = H(Y) - H(Y|X)$$
互信息等于$Y$的信源熵减去已知$X$时$Y$的条件熵,即由$X$提供的关于$Y$的不确定性的消除,也可以看成是$X$给$Y$带来的**信息增益**。互信息这个名称在通信领域经常使用,信息增益则在机器学习领域中经常使用,两者的本质是一样的。
**在机器学习中,信息增益常常被用于分类特征的选择**。对于给定的训练数据集$Y$$H(Y)$表示在未给定任何特征时,对训练集进行分类的不确定性;$H(Y|X)$则表示了使用特征$X$对训练集$Y$进行分类的不确定性。信息增益表示的就是特征$X$带来的对训练集$Y$分类不确定性的减少程度,也就是特征$X$对训练集$Y$的区分度。
显然,信息增益更大的特征具有更强的分类能力。但信息增益的值很大程度上依赖于数据集的信息熵$H(Y)$,因而并不具有绝对意义。为解决这一问题,研究者又提出了**信息增益比**的概念,并将其定义为$g(X, Y) = I(X; Y) / H(Y)$。
另一个在机器学习中经常使用的信息论概念叫作“**Kullback-Leibler散度**”,简称**KL散度**。KL散度是描述两个概率分布$P$和$Q$之间的差异的一种方法,其定义为
$$D_{KL}(P||Q) = \sum_{i = 1}^n p(x_i) \log_2 \frac{p(x_i)}{q(x_i)}$$
**KL散度是对额外信息量的衡量**。给定一个信源,其符号的概率分布为$P(X)$,就可以设计一种针对$P(X)$的最优编码,使得表示该信源所需的平均比特数最少(等于该信源的信源熵)。
可是当信源的符号集合不变,而符合的概率分布变为$Q(X)$时,再用概率分布$P(X)$的最优编码对符合分布$Q(X)$的符号编码,此时编码结果的字符数就会比最优值多一些比特。
KL散度就是用来衡量这种情况下平均每个字符多用的比特数也可以表示两个分布之间的距离。
**KL散度的两个重要性质是非负性和非对称性**
非负性是指KL散度是大于或等于0的等号只在两个分布完全相同时取到。
非对称性则是指$D_{KL}(P||Q) \ne D_{KL}(Q||P)$,即用$P(X)$去近似$Q(X)$和用$Q(X)$去近似$P(X)$得到的偏差是不同的因此KL散度并不满足数学意义上对距离的定义这一点需要注意。
事实上,$D_{KL}(P||Q)$ 和$D_{KL}(Q||P)$代表了两种不同的近似方式。要让$D_{KL}(P||Q)$最小,需要让$Q(X)$在$P(X)$不等于0的位置同样不等于0要让$D_{KL}(Q||P)$最小,则需要让$Q(X)$在$P(X)$等于0的位置同样等于0。
除了以上定义的指标之外,信息论中还有一个重要定理,叫作“**最大熵原理**”。**最大熵原理是确定随机变量统计特性时力图最符合客观情况的一种准则。对于一个未知的概率分布,最坏的情况就是它以等可能性取到每个可能的取值**。这个时候的概率分布最均匀,也就是随机变量的随机程度最高,对它进行预测也就最困难。
从这个角度看,最大熵原理的本质在于在推断未知分布时不引入任何多余的约束和假设,因而可以得到最不确定的结果,预测的风险也就最小。投资理财中的名言“不要把所有鸡蛋放在同一个篮子里”,就可以视为最大熵原理的一个实际应用。
将最大熵原理应用到分类问题上就可以得到**最大熵模型**。在分类问题中,首先要确定若干特征函数作为分类的依据。为了保证特征函数的有效性,其在模型真实分布$P(X)$上的数学期望和在由训练数据集推导出的经验分布$\tilde P(X)$上的数学期望应该相等,即对给定特征函数数学期望的估计应该是个无偏估计量。
这样一来,每一个特征函数就对应了一个约束条件。分类的任务就是在这些约束条件下,确定一个最好的分类模型。由于除了这些约束条件之外,没有任何关于分类的先验知识,因而需要利用最大熵原理,求解出不确定性最大的条件分布,即让以下函数的取值最大化
$$H(p) = -\sum\limits_{x, y} \tilde p(x) p(y|x) \log_2 p(y|x) $$
式中的$p(y|x)$就是分类问题要确定的目标条件分布。计算上式的最大值实质上就是一个约束优化问题,由特征函数确定的约束条件可以通过**拉格朗日乘子**的引入去除其影响,转化为无约束优化问题。从数学上可以证明,这个模型的解是存在且唯一的。
今天我和你分享了人工智能必备的信息论基础,着重于抽象概念的解释而非数学公式的推导,其要点如下:
- 信息论处理的是客观世界中的不确定性;
- 条件熵和信息增益是分类问题中的重要参数;
- KL散度用于描述两个不同概率分布之间的差异
- 最大熵原理是分类问题中的常用准则。
信息论建立在概率的基础上,但其形式并不唯一,除了香农熵外也有其他关于熵的定义。那么概率与信息之间的关系对人工智能有什么启示呢?
欢迎发表你的观点。
<img src="https://static001.geekbang.org/resource/image/e2/e5/e248d05acca0ac225b043a775bb221e5.jpg" alt="">

View File

@@ -0,0 +1,128 @@
<audio id="audio" title="06 数学基础 | 明日黄花迹难寻:形式逻辑" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/95/29/95c046f96982ff357f4d78ffd2a92429.mp3"></audio>
1956年召开的达特茅斯会议宣告了人工智能的诞生。在人工智能的襁褓期各位奠基者们包括约翰·麦卡锡、赫伯特·西蒙、马文·明斯基等未来的图灵奖得主他们的愿景是让“具备抽象思考能力的程序解释合成的物质如何能够拥有人类的心智”。
通俗地说,理想的人工智能应该具备抽象意义上的学习、推理与归纳能力,其通用性将远远强于解决国际象棋或是围棋这些具体问题的算法。
要实现这样的人工智能,不可或缺的基础是形式逻辑。人工智能的早期研究者认为人类认知和思维的基本单元是符号,而认知过程就是对符号的逻辑运算,这样一来,人类抽象的逻辑思维就可以通过计算机中逻辑门的运算模拟,进而实现机械化的人类认知。
反过来,形式逻辑也是智能行为的描述方式,任何能够将某些物理模式或符号转化成其他模式或符号的系统都有可能产生智能的行为,也就是人工智能。
人工智能能够模拟智能行为的基础是具有知识,但知识本身也是抽象的概念,需要用计算机能够理解的方式表示出来。
**在人工智能中,常用的知识表示方法包括数据结构和处理算法。数据结构用于静态存储待解决的问题、问题的中间解答、问题的最终解答以及解答中涉及的知识;处理算法则用于在已有问题和知识之间进行动态交互,两者共同构成完整的知识表示体系**
在人工智能的研究中,用形式逻辑实现知识表示是一种普遍的方法。形式逻辑可谓包罗万象,其最简单的实例就是由古希腊哲学家亚里士多德提出并流传至今的**三段论**,它由两个前提和一个结论构成:
- 科学是不断发展的;
- 人工智能是科学;
- 所以,人工智能是不断发展的。
亚里士多德的贡献不仅在于证明了人工智能的不断发展,更在于确定了在大前提和小前提的基础上推导出一个结论的形式化过程,这个过程完全摆脱了内容的限制。**由此诞生的符号推理给数理逻辑的研究带来了深远的影响**。
在人工智能中应用的主要是**一阶谓词逻辑**。谓词逻辑是最基本的逻辑系统,也是形式逻辑的根本部分。谓词逻辑的一个特例是**命题逻辑**。在命题逻辑中,命题是逻辑处理的基本单位,只能对其真伪做出判断。
但命题这种表示法的局限性在于无法把其描述对象的结构及逻辑特征反映出来,也不能体现出不同事物的共同特征。假如单独给定命题“老李是小李的父亲”,在没有上下文时就无法确定老李和小李之间的关系,这个命题的真伪也就没有意义。
为了扩展形式逻辑的表示能力,在命题逻辑的基础上又诞生了谓词逻辑。谓词逻辑将命题拆分为个体词、谓词和量词,三者的意义如下:
- 个体词是可以独立存在的具体或抽象的描述对象,比如前文例子中的“老李”和“小李”;
- 谓词用于描述个体词的属性与相互关系,比如前文例子中的“是...的父亲”;
- 量词用于描述个体词的数量关系,包括全称量词$\forall$ 和存在量词$\exists$。
以上三种元素可以共同构成命题。不同的命题之间则可以用逻辑联结词建立联系,由简单命题形成复合命题。按照优先级由高到低排列,逻辑联结词包括以下五种。
- **否定**($\neg$):复合命题$\neg P$表示否定命题P的真值的命题即“非P” 。
- **合取**($\wedge$):复合命题$P \wedge Q$表示命题P和命题Q的合取即“P且Q”。
- **析取**($\vee$):复合命题$P \vee Q$表示命题P或命题Q的析取即“P或Q”。
- **蕴涵**($\to$):复合命题$P \to Q$表示命题P是命题Q的条件即“如果P那么Q”。
- **等价**($\leftrightarrow$):复合命题$P \leftrightarrow Q$表示命题P和命题Q相互蕴涵即“如果P那么Q且如果Q那么P”。
在谓词逻辑中出现的不只有常量符号,变量符号也是合法的,同时还可以出现函数符号。变量和函数的引入拓展了谓词逻辑的表示范围,也提升了其普适性。**谓词逻辑既可以用于表示事物的概念、状态、属性等事实性知识,也可以用于表示事物间具有确定因果关系的规则性知识**。
事实性知识通常使用析取与合取符号连接起来的谓词公式表示,规则性知识则通常使用由蕴涵符号连接起来的谓词公式来表示。在一般意义上,使用谓词逻辑进行知识表示的步骤如下:
- 定义谓词及个体,确定每个谓词及每个个体的确切含义;
- 根据所要表达的事物或概念,为每个谓词中的变量赋以特定的值;
- 根据所要表达的知识的语义,用适当的逻辑联结词将各个谓词连接起来。
经过以上步骤的处理后,抽象意义上的知识就能够转化为计算机可以识别并处理的数据结构。
例如如果要使用谓词逻辑对“所有自然数都是大于零的整数”进行知识表示首先要将所有关系定义为相应的谓词。谓词N(x)表示x是自然数P(x)表示x大于零I(x)表示x是整数再将这些谓词按照语义进行连接就可以得到谓词公式
$$ (\forall x)(N(x) \to P(x) \wedge I(x)) $$
使用形式逻辑进行知识表示只是手段,其目的是让人工智能在知识的基础上实现自动化的推理、归纳与演绎,以得到新结论与新知识。就现阶段而言,人类智能与人工智能的主要区别就体现在推理能力上。
人类的判断方式绝非一头扎进浩如烟海的数据中学习,而是基于少量数据的特征进行归纳与推理,以得出的一般性规律作为判断的基础。在数字图像中稍微添加一点干扰就可以让神经网络将海龟误认为步枪,这点伎俩却不能欺骗具有思考能力的人类,其原因也在于此。
**人工智能实现自动推理的基础是产生式系统**。产生式系统以产生式的规则描述符号串来替代运算,把推理和行为的过程用产生式规则表示,其机制类似人类的认知过程,因而被早年间大多数专家系统所使用。
产生式规则通常用于表示事物之间的因果关系,其基本形式为$P \to Q$。它既可以用来表示在前提P下得到结论Q也可以表示在条件P下实施动作Q。这里的P称为规则前件它既可以是简单条件也可以是由多个简单条件通过联结词形成的复合条件Q则称为规则后件。
当一组产生式规则相互配合、协同作用时,一个产生式规则生成的结论就可以为另一个产生式规则作为已知的前提或条件使用,以进一步解决更加复杂的问题,这样的系统就是产生式系统。
一般说来,**产生式系统包括规则库、事实库和推理机三个基本部分**。
**规则库**是专家系统的核心与基础,存储着以产生式形式表示的规则集合,其中规则的完整性、准确性和合理性都将对系统性能产生直接的影响。
**事实库**存储的是输入事实、中间结果与最终结果,当规则库中的某条产生式的前提可与事实库中的某些已知事实匹配时,该产生式就被激活,其结论也就可以作为已知事实存储在事实库中。
**推理机**则是用于控制和协调规则库与事实库运行的程序,包括了推理方式和控制策略。
具体而言,**推理的方式可以分为三种:正向推理、反向推理和双向推理**。
**正向推理**采用的是自底向上的方式,即从已知事实出发,通过在规则库中不断选择匹配的规则前件,得到匹配规则的后件,进而推演出目标结论。
**反向推理**采用的是自顶向下的方式,即从目标假设出发,通过不断用规则库中规则的后件与已知事实匹配,选择出匹配的规则前件,进而回溯已知事实。
**双向推理**则是综合利用正向推理和反向推理,使推理从自顶向下和自底向上两个方向进行,直到在某个中间点汇合,这种方式具有更高的效率。
**自动推理虽然在数学定理的证明上显示出强大的能力,可解决日常生活中的问题时却远远谈不上智能,其原因在于常识的缺失**。对于人类而言,常识的建立是通过社会化的成长过程实现的。
可计算机没办法像人类一样在成长中达成理解,因而常识这一智能的先决条件只能以形式化的方式被灌输到硬盘与内存之中。这要求将一般成年人的知识和信念进行显式的表达,并加以灵活的组织和运用。
可几乎尽人皆知的是,对常识性知识的表达和组织存在着难以想象的困难。从“张三捡起足球”和“张三在运动场上”这两个命题推断出“足球在运动场上”对人工智能来说就已经不可想象,更不用说道德观世界观这些复杂概念。
没有对常识和信念的清晰表达,人工智能就必然陷入混乱的泥沼而无法自拔,获得通用性和适应性较强的智能行为也只能是痴人说梦。
谈论人工智能中的形式逻辑,最终的不可回避的本质问题在于**哥德尔不完备性定理**。
1900年德国数学家大卫·希尔伯特在巴黎国际数学家代表大会上提出了20世纪23个最重要的数学问题其中的第二问题便是算术公理系统的无矛盾性。
1931年奥地利数学家库尔特·哥德尔对这个问题给出了否定的答案即**第一不完备性定理**
$$\text{在任何包含初等数论的形式系统中,}$$
$$\text{都必定存在一个不可判定命题。} $$
通过这个定理,哥德尔证明了公理化系统的阿喀琉斯之踵在于对自指的无能为力,下面的语句就是个典型的自指语句:
$$ \text{本数学命题不可以被证明。} $$
首先,这个数学命题所讨论的对象不是别的,恰恰是它自己。“本数学命题”就是对整个命题的指代。其次,该命题给出了一个逻辑判断,即这条命题是不可以被证明的。
哥德尔证明了这个命题既不能被证实也不能被证伪,无情戳破了数学公理化系统同时具备一致性和完备性的黄粱一梦。
**不完备性定理对人工智能的影响在于对“认知的本质是计算”这一理论基础的理解**。从“认知即计算”的角度出发,基于计算机的人工智能如果想要达到近似人类的思维能力,也必须建立起“自我”的概念,这就无疑会导致自指的出现,也将成为不完备性定理的活靶子。
如果计算机能在运算中制造出一个代表自身的符号,那么哥德尔制造悖论的方式就可以在计算机中造出不可证实也不可证伪的飘渺幻境。
在哥德尔不完备性定理的阴影下,基于图灵可计算概念的“认知可计算主义”研究纲领已经显示出其极大的局限。今天,依靠人工神经网络逐渐崛起的连接主义学派大放异彩,与此同时,以形式逻辑为依据的符号主义学派则已经走向没落。
但抛开学术路径的不同,人类智能与人工智能的本质区别到底在哪里,也许这才是不完备性定理留给我们的最大谜团。
今天我和你分享了人工智能必备的形式逻辑基础,以及采用形式逻辑进行自动推理的基本原理,其要点如下:
- 如果将认知过程定义为对符号的逻辑运算,人工智能的基础就是形式逻辑;
- 谓词逻辑是知识表示的主要方法;
- 基于谓词逻辑系统可以实现具有自动推理能力的人工智能;
- 不完备性定理向“认知的本质是计算”这一人工智能的基本理念提出挑战。
虽然问题多多,但符号主义的思路依然是更接近于人类认知的思路。对形式逻辑的处理能否成为未来依赖小数据学习的人工智能的核心技术呢?
欢迎发表你的观点。
<img src="https://static001.geekbang.org/resource/image/d4/59/d4e00273015088b3d813ddb59fc4f659.jpg" alt="">

View File

@@ -0,0 +1,65 @@
线性代数推荐两本国外的教材。
其一是 **Gilbert Strang** 所著的 **Introduction to Linear Algebra**英文版在2016年出到第五版暂无中译本。这本通过直观形象的概念性解释阐述抽象的基本概念同时辅以大量线性代数在各领域内的实际应用对学习者非常友好。作者在麻省理工学院的OCW上开设了相应的视频课程还配有习题解答、模拟试题等一系列电子资源。
<img src="https://static001.geekbang.org/resource/image/de/51/deab88e3a873a8c02e3fd385336b6851.jpg" alt="" />
其二是 **David C Lay** 所著的 **Linear Algebra and its Applications**英文版在2015年同样出到第五版中译本名为**《线性代数及其应用》**,对应原书第四版。这本书通过向量和线性方程组这些基本概念深入浅出地介绍线代中的基本概念,着重公式背后的代数意义和几何意义,同样配有大量应用实例,对理解基本概念帮助很大。
<img src="https://static001.geekbang.org/resource/image/fd/4b/fd67a5515225cddafbc6bd159c21d24b.jpg" alt="" />
<img src="https://static001.geekbang.org/resource/image/fc/fb/fcc6cfbc5daa261aaf472951963854fb.jpg" alt="" />
概率论的基础读物可以选择 **Sheldon M Ross** 所著的<br />
**A First Course in Probability**英文版在2013年出到第九版18年马上要出第十版中译本名为**《概率论基础教程》**,对应原书第九版,也有英文影印本。这本书抛开测度,从中心极限定理的角度讨论概率问题,对概念的解释更加通俗,书中还包含海量紧密联系生活的应用实例与例题习题。
<img src="https://static001.geekbang.org/resource/image/3f/a9/3f8ba17f3adfedfdefbee6805c8f2ca9.jpg" alt="" />
<img src="https://static001.geekbang.org/resource/image/d3/79/d34838e4cd8abfc89aebfe781ce95179.jpg" alt="" />
另一本艰深的读物是 **Edwin Thompson Jaynes** 所著的<br />
**Probability Theory: The Logic of Science**,本书暂无中译本,影印本名为**《概率论沉思录》**也已绝版。这本书是作者的遗著,花费半个世纪的时间完成,从名字就可以看出是一部神书。作者从逻辑的角度探讨了基于频率的概率,贝叶斯概率和统计推断,将概率论这门偏经验的学科纳入数理逻辑的框架之下。如果读这本书,千万要做好烧脑的准备。
<img src="https://static001.geekbang.org/resource/image/de/d0/de211b6a95d6d1ad83b2ba6e518783d0.jpg" alt="" />
数理统计的基础读物可以选择陈希孺院士所著的**《数理统计学教程》**。关于统计学是不是科学的问题依然莫衷一是,但它在机器学习中的重要作用毋庸置疑。陈老的书重在论述统计的概念和思想,力图传授利用统计观点去观察和分析事物的能力,这是非常难能可贵的。
<img src="https://static001.geekbang.org/resource/image/eb/c8/eb91566fe246daf53a0bd0c3a98363c8.jpg" alt="" />
进阶阅读可以选择 **Roger Casella** 所著的 **Statistical Inference**由于作者已于2012年辞世2001年的第二版便成为绝唱。中译本名为**《统计推断》**,亦有影印本。本书包含部分概率论的内容,循循善诱地介绍了统计推断、参数估计、方差回归等统计学中的基本问题。
<img src="https://static001-test.geekbang.org/resource/image/a1/20/a129538c6273a679fe641c89c597db20.png" alt="" />
最优化理论可以参考 **Stephen Boyd** 所著的 **Convex Optimization**,中译本名为**《凸优化》**。这本书虽然块头吓人,但可读性并不差,主要针对实际应用而非理论证明,很多机器学习中广泛使用的方法都能在这里找到源头。
<img src="https://static001.geekbang.org/resource/image/a8/66/a8aecbd9467ca6dfa607329e3c43ce66.jpg" alt="" />
<img src="https://static001.geekbang.org/resource/image/19/da/194d1decc9774117f8dab99be9ee55da.jpg" alt="" />
信息论书籍推荐 **Thomas Cover****Jay A Thomas**<br />
合著的 **Elements of Information Theory**2006年出到第二版中译本为**《信息论基础》**。这本书兼顾广度和深度,虽然不是大部头却干货满满,讲清了信息论中各个基本概念的物理内涵,但要顺畅阅读需要一定的数学基础。另外,本书偏重于信息论在通信中的应用。
<img src="https://static001.geekbang.org/resource/image/32/f0/32809f551ae31c7f5b376e6104324af0.jpg" alt="" />
<img src="https://static001.geekbang.org/resource/image/4e/cb/4e13d7b7d12f16d70ac5f7b5dd813dcb.jpg" alt="" />
**部分书目链接**
[Introduction to Linear Algebra](https://math.mit.edu/~gs/linearalgebra/linearalgebra5_Preface.pdf)
[Linear Algebra and its Applications](http://www.zuj.edu.jo/download/linear-algebra-and-its-applications-david-c-lay-pdf/)
[A First Course in Probability](http://julio.staff.ipb.ac.id/files/2015/02/Ross_8th_ed_English.pdf)8th edition
[Probability Theory: The Logic of Science](http://www.med.mcgill.ca/epidemiology/hanley/bios601/GaussianModel/JaynesProbabilityTheory.pdf)
[Statistical Inference](https://fsalamri.files.wordpress.com/2015/02/casella_berger_statistical_inference1.pdf)
[Convex Optimization](https://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf)
[Elements of Information Theory](http://www.cs-114.org/wp-content/uploads/2015/01/Elements_of_Information_Theory_Elements.pdf)
<img src="https://static001.geekbang.org/resource/image/74/80/748baa3d40829627167d74a877102a80.jpg" alt="" />