Bishop 模式识别与机器学习读书笔记_ch1.3 决策论与信息论基础

ch1.3 决策论与信息论


文章目录

    • ch1.3 决策论与信息论
    • @[toc]
        • 1. 模型选择
          • 1.1 交叉验证
          • 1.2 交叉验证的弊端
        • 2. 维数灾难
          • 2.1 基于直角坐标系的网格分析法
          • 2.2 存在的问题
        • 3. 决策论
          • 3.1 最小化误分率
          • 3.2 最小化期望损失
          • 3.3 拒绝选项
          • 3.4 推断与决策
          • 3.5 回归问题的损失函数
        • 3.6 信息论

1. 模型选择


最小二乘法拟合多项式曲线的例子中,可以获得多项式的最佳阶数并给出了最佳的推广。

  • 多项式的阶数控制模型中自由参数的个数,从而控制模型的复杂度。
  • 利用正则化最小二乘法,正则化系数 λ \lambda λ 也控制模型的有效复杂度,而对于更复杂的模型,如混合分布或神经网络,则可能有多个参数控制复杂度。

在实际应用中,我们需要确定这些参数的值,这样做的主要目标通常是在新数据上获得最佳的预测性能。此外,除了为给定模型中的复杂度参数找到适当的值外,我们可能还希望考虑一系列不同类型的模型,以便为我们的特定应用找到最佳的模型。


1.1 交叉验证
  • **问题:**在极大似然方法中,由于过拟合的问题,训练集上的性能并不能很好地反映未观测数据的预测性能。

    解决方案:

    • 如果数据丰富,那么一种方法就是使用一些可用的数据来训练一系列模型,或者给定模型的复杂度参数值范围,然后在独立数据(有时称为验证集)上比较它们,并选择具有最佳预测性能的模型。
    • 如果使用有限大小的数据集多次迭代模型设计,则可能会出现与验证数据的某些过度拟合,因此可能需要保留第三个测试集,以便最终评估选定模型的性能。

    以上都是在数据集丰富的情况下考虑的,然而,在许多应用中,培训和测试数据的供应会受到限制,为了建立良好的模型,我们希望尽可能多地使用现有数据进行培训。有一种方法是将原始数据(dataset)进行分组,一部分做为训练集来训练模型,另一部分做为测试集来评价模型,即交叉验证。主要来解决以下两个问题:

    • 交叉验证用于评估模型的预测性能,尤其是训练好的模型在新数据上的表现,可以在一定程度上减小过拟合。

    • 还可以从有限的数据中获取尽可能多的有效信息。

    主要策略是将数据即分成 S S S 等份,其中,选择(S-1)份做训练,剩余的做测试,共有 S S S 中方法。当数据特别稀少时,可以考虑情况S=N,其中 N 是数据点的总数,称为留一法(Leave One Out, LOO).

Bishop 模式识别与机器学习读书笔记_ch1.3 决策论与信息论基础_第1张图片


1.2 交叉验证的弊端
  • 交叉验证的一个主要缺点是,必须执行的训练运行次数增加了一个S的因子,这对于训练本身计算成本很高的模型来说是有问题的。
  • 对于单个模型,我们可能有多个复杂度参数(例如,可能有多个正则化参数)。在最坏的情况下,探索这些参数的设置组合可能需要大量的训练运行,这些运行的参数数量是指数级的。

我们需要更好的方法。理想情况下,这应该只依赖于训练数据,并且应该允许在一次训练运行中比较多个超参数和模型类型。因此,我们需要找到一种只依赖于训练数据的绩效衡量方法,这种方法不会因为过度拟合而产生偏差。

历史上,人们提出了各种各样的“信息标准”,试图通过增加一个惩罚项来弥补更复杂模型的过度拟合,从而纠正最大似然的偏差。例如,Akaike信息准则或AIC(Akaike,1974),选择一个模型使下面的式子值最大。
KaTeX parse error: Undefined control sequence: \notag at position 49: …hbf{w}_{ML})-M \̲n̲o̲t̲a̲g̲ ̲
这里 p ( D ∣ w M L ) p(D\vert w_{ML}) p(DwML) 是最佳拟合对数似然, M M M 是模型中可调参数的个数。这个量的一个变体,称为贝叶斯信息准则,或称BIC。然而,这些标准没有考虑到模型参数的不确定性,而且在实践中,它们倾向于过于简单的模型。因此,我们最终会转向完全贝叶斯方法,在这里我们将看到复杂性惩罚是如何以自然和有原则的方式产生的。


2. 维数灾难


在多项式曲线拟合的例子中,我们只有一个输入变量 x x x。然而,对于模式识别的实际应用,我们必须处理高维空间多个变量的问题。


2.1 基于直角坐标系的网格分析法

为了说明这个问题,我们考虑一个综合生成的数据集,表示从含有油、水和天然气混合物的管道中进行的测量(Bishop和James,1993)。这三种材料可以存在于三种不同的几何结构中的一种,称为“均质”、“环形”和“层流”,并且三种材料的分数也可以不同。每个数据点包含一个12维输入向量,图中显示了该数据集的100个点,图中显示了两个测量值 x 6 x_6 x6 x 7 x_7 x7(在本图中忽略了其余10个输入值)。每个数据点都根据其所属的三个几何类中的哪一个进行标记,我们的目标是将这些数据用作训练集,以便能够对新观测 ( x 6 , x 7 ) (x_6,x_7) (x6,x7) 进行分类,用十字表示的观测。我们观察到十字架周围有许多红色的点,所以我们可以假设它属于红色类。然而,附近也有很多绿色的点,所以我们可能认为它应该属于绿色类。它似乎不太可能属于蓝色阶层。这里的直觉是,十字架的身份应该更强烈地由训练集中的附近点决定,而不是更强烈地由更远的点决定。事实上,这种直觉是合理的,将在后面的章节中进行更充分的讨论。

Bishop 模式识别与机器学习读书笔记_ch1.3 决策论与信息论基础_第2张图片

我们如何将这种直觉转化为一种学习算法?一个非常简单的方法是将输入空间划分为规则的单元格,如图所示。当我们得到一个测试点并且我们希望预测它的类别时,我们首先决定它属于哪个单元,然后我们找到所有的训练数据点落在同一个单元里。测试点的标识被预测为与在与测试点相同的单元中具有最大数量训练点的类相同(随机断开连接)。
Bishop 模式识别与机器学习读书笔记_ch1.3 决策论与信息论基础_第3张图片


2.2 存在的问题

这种朴素的方法有很多问题,但是当我们考虑到它扩展到具有更多输入变量的问题时,其中一个最严重的问题就变得明显了,对应于具有更高维度的输入空间。这个问题的起源如下图所示,它表明,如果我们将一个空间的一个区域划分为规则的单元,那么这些单元的数量将随着空间的维数呈指数增长。数量成倍增加的单元的问题是,我们需要成倍增加的训练数据,以确保单元不为空。很明显,我们不希望在多个变量的空间中应用这种技术,因此我们需要找到一种更复杂的方法。

Bishop 模式识别与机器学习读书笔记_ch1.3 决策论与信息论基础_第4张图片

我们通过重新面对多项式曲线拟合的例子可以进一步了解高维空间,考虑如何推广这种方法处理多个变量的输入。如果我们有D个输入变量,那么系数高达3阶的一般多项式将采用
KaTeX parse error: Undefined control sequence: \notag at position 143: …{ijk}x_ix_jx_k \̲n̲o̲t̲a̲g̲ ̲
随着 D D D 的增加,独立系数的数量(并非所有的系数都是独立的,因为 x x x 变量之间的交换对称性)与 D 3 D^3 D3成比例地增长。实际上,要捕获数据中的复杂依赖项,可能需要使用高阶多项式。对于 M M M 阶多项式,系数的增长类似于DM。虽然这现在是幂律增长,而不是指数增长,但它仍然指出,该方法变得迅速笨拙,实用性有限。

当我们考虑更高维度的空间时,我们在三维空间中度过的一生所形成的几何直觉可能会严重失败。作为一个简单的例子,考虑一个半径为 r = 1 r=1 r=1 的球体,在一个D维空间中,问位于半径 r = 1 − ϵ r=1-\epsilon r=1ϵ r = 1 r=1 r=1 之间的球体的体积占球体积的分数是多少。我们可以通过注意一个半径为 r r r 的球体在 D D D 维的体积的标度为 r D r^D rD 来计算这个份数,球体体积表示为
KaTeX parse error: Undefined control sequence: \notag at position 16: V_D(r)=K_Dr^D \̲n̲o̲t̲a̲g̲ ̲
其中常数 K d K_d Kd 仅依赖于维数 D D D,因此所占份数为
KaTeX parse error: Undefined control sequence: \notag at position 57: …(1-\epsilon)^D \̲n̲o̲t̲a̲g̲ ̲
D D D 取不同的值时,可以通过画图展示这个份数曲线。对于大 D D D,这个份数趋向于 1,即使对于较小的值 ϵ \epsilon ϵ. 因此,在高维空间中,球体的大部分体积集中在靠近表面的薄壳中!也就是说由距离定义的相似度在高维空间中是失效的。
Bishop 模式识别与机器学习读书笔记_ch1.3 决策论与信息论基础_第5张图片

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,1,0.01)

D = [1, 2, 5, 10]

for dim in D:
    y = 1 - (1-x)**dim
    plt.plot(x, y, label='$D = %d$' % dim)

plt.legend()
plt.show()

Bishop 模式识别与机器学习读书笔记_ch1.3 决策论与信息论基础_第6张图片

高维空间产生的这种困难被称为维度灾难(curse of dimensionality)(Bellman,1961)。本书中,我们会频繁使用⼀维或者⼆维空间中的例子来说明问题,因为这使得方法可以很容易地通过图形展示出来。但是读者需要注意,不是所有在低维空间的直觉都可以推广到高维空间。

虽然维度灾难在模式识别应用中是⼀个重要的问题,但是它并不能阻止我们寻找应用于高维空间的有效技术。原因有两方面。

  • 第⼀,真实的数据经常被限制在有着较低的有效维度的空间区域中,特别地,在目标值会发生重要变化的方向上也会有这种限制。
  • 第⼆,真实数据通常比较光滑(至少局部上比较光滑),因此大多数情况下,对于输入变量的微小改变,目标值的改变也很小,因此对于新的输⼊变量,我们可以通过局部的类似于插值的技术来进行预测。

成功的模式识别技术利用上述的两个性质中的⼀个,或者都用。


3. 决策论


概率论是如何提供给我们⼀个自始至终的数学框架来量化和计算不确定性。本节将讨论决策论与概率论结合的时候,能够在涉及到不确定性的情况下做出最优的决策。

假设我们有⼀个输⼊向量 x \mathbf{x} x 和对应的目标值向量 t t t,我们的目标是对于⼀个新的 x \mathbf{x} x 值,预测 t t t. 对于回归问题, t t t 由连续变量组成,而对于分类问题, t t t 表示类别标签。联合概率分布 p ( x , t ) p(\mathbf{x},t) p(x,t) 完整地总结了与这些变量相关的不确定性。从训练数据集中确定 p ( x , t ) p(\mathbf{x},t) p(x,t) 是推断(inference)问题的⼀个例子,并且通常是⼀个非常难的问题。

考虑⼀个医疗诊断问题。在这个问题中,我们给⼀个病⼈拍了 X 光片,我们想判断病人是否得了癌症。在这种情形下,输入向量 x \mathbf{x} x 是X光片的像素的灰度值集合,输出变量 t t t 表示病⼈患有癌症(记作类 C 1 \mathcal{C}_1 C1)或者不患癌症(记作类 C 2 \mathcal{C}_2 C2)。例如,我们可以选择 t = 0 t=0 t=0 表示类 C 1 \mathcal{C}_1 C1,选择 t = 1 t=1 t=1 表示类 C 2 \mathcal{C}_2 C2. ⼀般的推断问题就变成了确定联合分布 p ( x , C k ) p(\mathbf{x},\mathcal{C}_k) p(x,Ck),或者等价地 p ( x , t ) p(\mathbf{x},t) p(x,t)。我们必须确定是否对病人进行治疗,并且我们希望这种选择在某些情况下是最优的(DudaandHart,1973)。这是决策步骤,是决策论的主题,告诉我们在给定合适的概率的前提下,如何进行最优的决策。

在给出⼀个更详细的分析之前,先非形式化地考虑⼀下概率论如何在做决策时起作⽤。当我们得到⼀个新病人的X光片 x \mathbf{x} x 时,我们的目标是判断这个X光片属于两类中的哪⼀类。我们感兴趣的是在给定这个图像的前提下,两个类的概率,即 p ( C k ∣ x ) p(\mathcal{C}_k|\mathbf{x}) p(Ckx)。使⽤贝叶斯定理,这些概率可以用下面的形式表示
KaTeX parse error: Undefined control sequence: \notag at position 106: …p(\mathbf{x})} \̲n̲o̲t̲a̲g̲ ̲
注意,出现在贝叶斯定理中的任意⼀个量都可以从联合分布 p ( x , C k ) p(\mathbf{x},\mathcal{C}_k) p(x,Ck) 中得到,要么通过积分的方式,要么通过关于某个合适的变量求条件概率。我们现在把 p ( C k ) p(\mathcal{C}_k) p(Ck) 称为类 C k \mathcal{C}_k Ck 的先验概率,把 p ( C k ∣ x ) p(\mathcal{C}_k|\mathbf{x}) p(Ckx) 称为对应的后验概率。因此 p ( C 1 ) p(\mathcal{C}_1) p(C1) 表示在我们拍X光之前,⼀个⼈患癌症的概率。类似地, p ( C 1 ∣ x ) p(\mathcal{C}_1|\mathbf{x}) p(C1x) 表示使用X光中包含的信息通过贝叶斯定理修改之后的对应的后验概率。如果我们的目标是最小化把 x \mathbf{x} x 分到错误类别中的可能性,那么根据直觉,我们要选择有最大后验概率的类别。我们现在要证明,这种直觉是正确的,并且我们还会讨论进行决策的更加通用的标准。


3.1 最小化误分率

假定我们的目标很简单,即尽可能少地作出错误分类。我们需要⼀个规则来把每个 x \mathbf{x} x 的值分到⼀个合适的类别。这种规则将会把输入空间切分成不同的区域 R k \mathcal{R}_k Rk,这种区域被称为决策区域(decisionregion)。每个类别都有⼀个决策区域,区域 R k \mathcal{R}_k Rk中的所有点都被分到 C k \mathcal{C}_k Ck 类。决策区域间的边界被叫做决策边界(decisionboundary)或者决策面(decisionsurface)。注意,每⼀个决策区域未必是连续的,可以由若干个分离的区域组成。

为了找到最优的决策规则,首先考虑两类的情形,就像癌症问题的例子中那样。如果我们把属于 C 1 \mathcal{C}_1 C1 类的输入向量分到了 C 2 \mathcal{C}_2 C2 类(或者相反),那么我们就犯了⼀个错误。这种事情发生的概率为
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ p(\text{miskat…
我们可以随意选择把点 x \mathbf{x} x 分到两类中的某⼀类的决策规则。为了最小化 p ( mistake ) p(\text{mistake}) p(mistake),我们对于 x x x 的分类结果应该让公式(1)的被积函数尽量小。因此,如果对于给定的 x x x 值,如果 p ( x , C 1 ) > p ( x , C 2 ) p(x,\mathcal{C}_1)>p(x,\mathcal{C}_2) p(x,C1)>p(x,C2),那么我们就把 x x x 分到类别 C 1 \mathcal{C}_1 C1中。根据概率的乘积规则,我们有 p ( x , C k ) = p ( C k ∣ x ) p ( x ) p(x,\mathcal{C}_k)=p({C}_k\vert x)p(x) p(x,Ck)=p(Ckx)p(x)。由于因子 p ( x ) p(x) p(x) 对于两项都相同,因此我们可以这样表述:如果我们把每个 x x x 分配到后验概率 p ( C k ∣ x ) p(\mathcal{C}_k\vert x) p(Ckx) 最大的类别中,那么我们分类错误的概率就会最小。对于⼀元输入变量x的二分类问题,结果如图1.24所⽰。
Bishop 模式识别与机器学习读书笔记_ch1.3 决策论与信息论基础_第7张图片

对于更⼀般的 K K K 类的情形,最大化正确率会稍微简单⼀些,即最大化下式
KaTeX parse error: Undefined control sequence: \notag at position 131: …_k)d\mathbf{x} \̲n̲o̲t̲a̲g̲ ̲
当区域 R k \mathcal{R}_k Rk 的选择使得每个 x x x 都被分到使 p ( x , C k ) p(x,\mathcal{C}_k) p(x,Ck) 最大的类别中时,上式取得最大值。再⼀次使用乘积规则 p ( x , C k ) = p ( C k ∣ x ) p ( x ) p(x,\mathcal{C}_k)=p(\mathcal{C}_k\vert x)p(x) p(x,Ck)=p(Ckx)p(x),并且注意到因子 p ( x ) p(x) p(x) 对于所有项都相同,我们可以看到每个 x x x 都应该被分到有着最大后验概率 p ( C k ∣ x ) p(\mathcal{C}_k\vert x) p(Ckx) 的类别中。


3.2 最小化期望损失

对于许多应用,我们的目标要比单纯地最小化错误分类的数量更加复杂。让我们再次考虑医疗诊断的问题。我们注意到,如果给没有患癌症的病人错误地诊断为患病,结果可能给病人带来⼀些压力,并且病⼈可能需要进⼀步确诊。相反,如果患癌症的病人被诊断为健康,结果可能会因为缺少治疗而使病⼈过早死亡。因此,两种诊断的错误造成的损失显然是不同的。

我们可以通过损失函数(Loss Function)描述这个问题。损失函数也被称为代价函数(Cost Function),是对于所有可能的决策或者动作可能产生的损失的⼀种整体度量。我们的目标是最小化整体的损失。假设对于新的 x \mathbf{x} x 的值,真实的类别为 C k \mathcal{C}_k Ck,我们把 x \mathbf{x} x 分类为 C j \mathcal{C}_j Cj. 这样做的结果是,我们会造成某种程度的损失,记作 L k j L_{kj} Lkj,它可以看成损失矩阵(Loss Matrix)的第 k , j k,j k,j 个元素。例如,在癌症的例⼦中,如下表所示的损失矩阵。这个特别的损失矩阵表明,如果我们做出了正确的决策,那么不会造成损失。如果健康⼈被诊断为患有癌症,那么损失为1。但是如果⼀个患有癌症的病⼈被诊断为健康,那么损失为1000。

表:癌症诊断问题的损失矩阵的例子,矩阵的元素为 L k j L_{kj} Lkj。行对应于真实的类别,而列对应于我们的决策准则做出的分类。

cancer normal
cancer 0 1000
normal 1 0

最优解是使损失函数最小的解。但是,损失函数依赖于真实的类别,这是未知的。对于⼀个给定的输⼊向量 x \mathbf{x} x ,我们对于真实类别的不确定性通过联合概率分布表 p ( x , C k ) p(\mathbf{x},\mathcal{C}_k) p(x,Ck) 表示。因此,可以最小化平均损失,平均损失根据这个联合概率分布计算,定义为
E [ L ] = ∑ k ∑ j ∫ R j L k j p ( x , C k ) d x (2) \mathbb{E}[L]=\sum_k\sum_j\int_{\mathcal{R}_j}L_{kj}p(\mathbf{x},\mathcal{C}_k)d\mathbf{x} \tag {2} E[L]=kjRjLkjp(x,Ck)dx(2)
每⼀个 x \mathbf{x} x 可以被独立地分到决策区域 R j \mathcal{R}_j Rj 中。我们的目标是选择区域 R j \mathcal{R}_j Rj 来最小化期望损失(2)。这表明,对于每个 x \mathbf{x} x ,我们要最小化 ∑ k L k j p ( x , C k ) \sum_k L_{kj}p(\mathbf{x},\mathcal{C}_k) kLkjp(x,Ck)。和之前⼀样,我们可以使用乘积规则 p ( x , C k ) = p ( C k ∣ x ) p ( x ) p(\mathbf{x},\mathcal{C}_k)=p(\mathcal{C}_k\vert\mathbf{x})p( \mathbf{x}) p(x,Ck)=p(Ckx)p(x) 来消除共同因子 p ( x ) p(\mathbf{x}) p(x)。因此,最小化期望损失的决策规则是对于每个新的 x \mathbf{x} x ,把它分到能使下式取得最小值的第 j j j 类:
KaTeX parse error: Undefined control sequence: \notag at position 46: …ert \mathbf{x})\̲n̲o̲t̲a̲g̲ ̲
⼀旦我们知道了类的后验概率 p ( C k ∣ x ) p(\mathcal{C}_k\vert\mathbf{x}) p(Ckx) 之后,这件事就很容易做了。


3.3 拒绝选项

在发生分类错误的输入空间中,后验概率 p ( C k ∣ x ) p(\mathcal{C}_k\vert\mathbf{x}) p(Ckx) 通常远小于1。这些区域中,类别的归属相对不确定。在某些应用中,对于这种困难的情况,避免做出决策是更合适的选择。这样会使得模型的分类错误率降低。这被称为拒绝选项(reject option)。例如,在我们假想的医疗例⼦中,⼀种合适的做法是,使用自动化的系统来对那些⼏乎没有疑问的X光片进行分类,然后把不容易分类的X光片留给人类的专家。我们可以用这种方式来达到这个目的:引入⼀个阈值 θ \theta θ,拒绝后验概率 p ( C k ∣ x ) p(\mathcal{C}_k\vert\mathbf{x}) p(Ckx) 的最大值小于等于 θ \theta θ 的输入 x \mathbf{x} x。图1.26说明了⼀元输入变量 x x x 的⼆分类问题的情形。

Bishop 模式识别与机器学习读书笔记_ch1.3 决策论与信息论基础_第8张图片


3.4 推断与决策

我们已经把分类问题划分成了两个阶段:推断(inference)阶段决策(decision)阶段。在推断阶段,我们使用训练数据学习 p ( C k ∣ x ) p(\mathcal{C}_k\vert \mathbf{x}) p(Ckx) 的模型。在接下来的决策阶段,我们使用后验概率进行最优的分类。这两个阶段分别对应 sklearn 库函数中 fit 和 predict 函数功能。还有一种方法是是把两个过程合二为一,即简单地学习⼀个函数,将输⼊ x \mathbf{x} x 直接映射为决策,这样的函数被称为 判别函数(discriminantfunction)

根据推断和决策阶段建模的不同,可将建模类型分为三类:

  • 先对每一个类别确定类条件密度 p ( x ∣ C k ) p(\mathbf{x}\vert\mathcal{C}_k) p(xCk),即似然 ,这是⼀个推断问题。然后推断先验类概率 p ( C k ) p(\mathcal{C}_k) p(Ck)。使用贝叶斯定理

KaTeX parse error: Undefined control sequence: \notag at position 106: …p(\mathbf{x})} \̲n̲o̲t̲a̲g̲ ̲
求出后验类概率 p ( C k ∣ x ) p(\mathcal{C}_k\vert \mathbf{x}) p(Ckx) 。根据后验概率进行决策新数据的类归属,这种模型称为生成式模型 (Generative Model)。

  • 直接对后验类密度 p ( C k ∣ x ) p(\mathcal{C}_k\vert \mathbf{x}) p(Ckx) 进行建模,根据后验概率进行决策新数据的类归属。这种直接对后验概率建模的方法被称为判别式模型(Discriminative Models)。

  • 找到⼀个函数 f ( x ) f(\mathbf{x}) f(x),被称为判别函数。这个函数把每个输⼊ x \mathbf{x} x 直接映射为类别标签。例如,KNN 分类模型,概率不起作用。

这三种模型的相对优势:

  • 生成式模型需要求解的东西最多,因为它涉及到寻找在 x \mathbf{x} x C k \mathcal{C}_k Ck 上的联合概率分布。对于许多应⽤,x的维度很⾼,这会导致我们需要⼤量的训练数据才能在合理的精度下确定类条件概率密度。

  • 实际上我们只是想求出后验概率 p ( C k ∣ x ) p(\mathcal{C}_k\vert \mathbf{x}) p(Ckx) ,但是为了求出它,这种方法需要⼤量的数据来寻找联合概率 p ( x , C k ) p(\mathbf{x},\mathcal{C}_k) p(xCk) .


3.5 回归问题的损失函数

现在考虑回归问题,例如之前讨论过的曲线拟合问题。决策阶段包括对于每个输⼊ x \mathbf{x} x,选择⼀个对于 t t t 值的具体的估计 y ( x ) y(\mathbf{x}) y(x)。假设这样做之后,我们造成了⼀个损失 L ( t , y ( x ) ) L(t,y(\mathbf{x})) L(t,y(x))。平均损失(或者说期望损失)就是
KaTeX parse error: Undefined control sequence: \notag at position 77: …)d\mathbf{x}dt \̲n̲o̲t̲a̲g̲ ̲
回归问题中,损失函数的⼀个通常的选择是平方损失,定义为 L ( t , y ( x ) ) = { y ( x ) − t } 2 L(t,y(\mathbf{x}))=\Big\{y(\mathbf{x})−t\Big\}^2 L(t,y(x))={y(x)t}2。这种情况下,期望损失函数可以写成
KaTeX parse error: Undefined control sequence: \notag at position 80: …)d\mathbf{x}dt \̲n̲o̲t̲a̲g̲ ̲
我们的目标是选择 y ( x ) y(\mathbf{x}) y(x) 来最最化 E [ L ] \mathbb{E}[L] E[L]。如果我们假设⼀个完全任意的函数 y ( x ) y(\mathbf{x}) y(x),我们能够形式化地使用变分法求解:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ \frac{\delta\m…
求解 y ( x ) y(\mathbf{x}) y(x),使用概率的加和规则和乘积规则,我们得到
y ( x ) = ∫ t ⋅ p ( x , t ) d t p ( x ) = ∫ t ⋅ p ( t ∣ x ) d t = E [ t ∣ x ] y(\mathbf{x})=\frac{\int t\cdot p(\mathbf{x},t)dt}{p(\mathbf{x})}=\int t\cdot p(t\vert \mathbf{x})dt=\mathbb{E}[t\vert \mathbf{x}] y(x)=p(x)tp(x,t)dt=tp(tx)dt=E[tx]
这是在 x x x 的条件下 t t t 的条件均值,被称为回归函数(regression function)。结果如图所示。这个结果可以扩展到多个目标变量(用向量 t \mathbf{t} t)的情形。这种情况下,最优解是条件均值 y ( x ) = E t [ t ∣ x ] y(\mathbf{x}) = \mathbb{E}_t[\mathbf{t}\vert \mathbf{x}] y(x)=Et[tx].

另外一种方式也可以推导出该结果,其透露出回归问题的本质。

已经知道了最优解是条件期望,我们可以把平方项展开:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ \Big\{y(\mathb…
其中,为了不让符号过于复杂,我们使用 E [ t ∣ x ] \mathbb{E}[t|\mathbf{x}] E[tx] 来表示 E t [ t ∣ x ] \mathbb{E}_t[t|\mathbf{x}] Et[tx]. 代入损失函数中,对 t t t 进⾏积分,我们看到交叉项消失,因而得到如下形式的损失函数
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ \mathbb{E}[L]&…

KaTeX parse error: Undefined control sequence: \notag at position 205: …bf{x}}_{noise} \̲n̲o̲t̲a̲g̲ ̲
我们寻找的函数 y ( x ) y(\mathbf{x}) y(x) 只出现在第⼀项。当 y ( x ) y(\mathbf{x}) y(x) 等于 E [ t ∣ x ] \mathbb{E}[t|\mathbf{x}] E[tx] 时第⼀项取得最小值,这时第⼀项会被消去。这正是我们之前推导的结果,表明最优的最小平方预测由条件均值给出。第二项是 t t t 的分布的方差,在 x \mathbf{x} x 上进行了平均。它表示目标数据内在的变化性,可以被看成噪声。由于它与 y ( x ) y(\mathbf{x}) y(x) 无关,因此它表示损失函数的不可减小的最小值。

平方损失函数不是回归问题中损失函数的唯⼀选择。实际上,有些情况下,平方损失函数会导致非常差的结果,这时我们就需要更复杂的方法。这种情况的⼀个重要的例子就是条件分布 p ( t ∣ x ) p(t|\mathbf{x}) p(tx) 有多个峰值,这在解决反演问题时经常出现。这里我们简要介绍⼀下平方损失函数的⼀种推广,叫做闵可夫斯基损失函数(Minkowskiloss),它的期望为
KaTeX parse error: Undefined control sequence: \notag at position 81: …)d\mathbf{x}dt \̲n̲o̲t̲a̲g̲ ̲
q = 2 q=2 q=2 时,这个函数就变成了平方损失函数的期望。下述代码和图给出了不同 q q q 值下,函数 ∣ y − t ∣ q \vert y−t\vert ^q ytq 关于 y − t y−t yt 的图像。当 q = 2 q=2 q=2 时, E [ L q ] \mathbb{E}[L_q] E[Lq] 的最小值是条件均值。当 q = 1 q=1 q=1 时, E [ L q ] \mathbb{E}[L_q] E[Lq] 的最小值是条件中位数。当 q → 0 q\to 0 q0 时, E [ L q ] \mathbb{E}[L_q] E[Lq] 的最小值是条件众数。

import matplotlib.pyplot as plt
import numpy as np
from scipy import stats
import seaborn as sns
sns.set(style="darkgrid")


qs = [0.3, 1, 2, 10]
step = 0
x = np.linspace(-2, 2, 100) # 随机变量 x
f, ax = plt.subplots(2, 2, dpi=260)
for i in range(2):
    for j in range(2):
        q = qs[step]
        y = np.abs(x)**q
        ax[i,j].plot(x, y)
        ax[i,j].plot(0, 0,
        label="$q$ = {:3.2f}".format(q))
        ax[i, j].set_xlabel('$y-t$', fontsize=8)
        ax[i, j].set_ylabel('$|y-t|^q$', fontsize=8)
        ax[i, j].legend(fontsize=3)
        plt.xlim(-2, 2)
        plt.ylim(-0.1, 2.1)
        step = step + 1

plt.tight_layout()
plt.show()

Bishop 模式识别与机器学习读书笔记_ch1.3 决策论与信息论基础_第9张图片


3.6 信息论


问题:考虑⼀个离散的随机变量 x x x,当这个变量是⼀个具体值的时候,我们接收到了多少信息呢?

策略:信息量可以被看成在学习 x x x 的值的时候的“惊讶程度”。

例子:如果有人告诉我们⼀个相当不可能的事件发生了,我们收到的信息量要多于被告知某个很可能发生的事件发生时收到的信息。如果我们知道某件事情⼀定会发生,那么我们就不会接收到信息。

对信息的度量可借助于概率分布 p ( x ) p(x) p(x),即寻找⼀个函数 h ( x ) h(x) h(x),它是概率 p ( x ) p(x) p(x) 的单调递增函数,表达了信息的内容。

h ( ⋅ ) h(\cdot) h() 的形式可以这样寻找:如果有两个不相关的事件 x x x y y y,那么观察到两个事件同时发生时获得的信息应该等于观察到事件各自发生时获得的信息之和,即 h ( x , y ) = h ( x ) + h ( y ) h(x,y)=h(x)+h(y) h(x,y)=h(x)+h(y)。两个不相关事件是统计独立的,因此 p ( x , y ) = p ( x ) p ( y ) p(x,y)=p(x)p(y) p(x,y)=p(x)p(y)。根据这两个关系,很容易看出 h ( x ) h(x) h(x) ⼀定与 p ( x ) p(x) p(x) 的对数有关。因此,我们有信息量的度量
h ( x ) = − log ⁡ 2 p ( x ) (2) h(x)=-\log_2p(x) \tag {2} h(x)=log2p(x)(2)
其中,负号确保了信息⼀定是正数或者是零。

低概率事件 x x x 对应于高的信息量,如下图所示。对数的底的选择是任意的。遵循信息论的普遍传统,使用 2 作为对数的底,单位是比特(bit, binary digit)。

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
sns.set(style="darkgrid")

x = np.linspace(0, 1, 100) # 随机变量 x

plt.figure(dpi=200)
y = -np.log2(x)

plt.plot(x, y)
plt.xlabel('$p(x)$')
plt.ylabel('$h(x)$')
plt.show()

Bishop 模式识别与机器学习读书笔记_ch1.3 决策论与信息论基础_第10张图片

假设⼀个发送者想传输⼀个随机变量的值给接收者。这个过程中,他们传输的平均信息
量通可以通过求公式(2)关于概率分布 p ( x ) p(x) p(x) 的期望得到。这个期望值为
H [ x ] = − ∑ x p ( x ) h ( x ) = − ∑ x p ( x ) log ⁡ 2 p ( x ) (3) H[x]=-\sum_xp(x)h(x)=-\sum_xp(x)\log_2p(x) \tag {3} H[x]=xp(x)h(x)=xp(x)log2p(x)(3)
这个重要的量被叫做随机变量 x x x 的熵(entropy)。

注意:由于 lim ⁡ p → 0 p log ⁡ 2 p = 0 \lim_{p\to 0}p\log_2p=0 limp0plog2p=0,因此,对于任意 x x x 若满足 p ( x ) = 0 p(x)=0 p(x)=0 ,则 p ( x ) log ⁡ 2 p ( x ) = 0 p(x)\log_2p(x)=0 p(x)log2p(x)=0.

对于随机变量 x x x 取单个值的时候,其概率有两个 p ( x ) p(x) p(x) 1 − p ( x ) 1-p(x) 1p(x),其熵值 H [ x ] = − p ( x ) log ⁡ 2 p ( x ) − ( 1 − p ( x ) log ⁡ 2 ( 1 − p ( x ) ) H[x]=-p(x)\log_2p(x)-\Big(1-p(x)\log_2(1-p(x)\Big) H[x]=p(x)log2p(x)(1p(x)log2(1p(x)) 可画图如下

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
sns.set(style="darkgrid")

eps = 1e-5
p = np.linspace(eps, 1-eps, 100)
print(p)
H = -(1-p)*np.log(1-p)-p*np.log(p)
print(H)
plt.plot(p, H, 'b-', lw=3)
plt.xlabel('$p(x)$')
plt.ylabel('$H[x]$')
plt.show()

Bishop 模式识别与机器学习读书笔记_ch1.3 决策论与信息论基础_第11张图片

对于公式(2)的信息的定义以及公式(3)的熵的定义,我们已经有了⼀种启发式的动机。

例子:考虑⼀个随机变量 x x x, 这个随机变量有 8 种可能的状态,每个状态都是等可能的。为了把 x x x 的值传给接收者,我们需要传输⼀个 3 比特的消息。注意,这个变量的熵由下式给出
KaTeX parse error: Undefined control sequence: \notag at position 59: …3\;\text{bits} \̲n̲o̲t̲a̲g̲ ̲
现在考虑⼀个具有8种可能状态 { a , b , c , d , e , f , g , h } \{a,b,c,d,e,f,g,h\} {a,b,c,d,e,f,g,h}的随机变量,每个状态各自的概率为 ( 1 2 , 1 4 , 1 8 , 1 16 , 1 64 , 1 64 , 1 64 , 1 64 ) (\frac{1}{2},\frac{1}{4},\frac{1}{8},\frac{1}{16},\frac{1}{64},\frac{1}{64},\frac{1}{64},\frac{1}{64}) (21,41,81,161,641,641,641,641). 这种情形下的熵为

KaTeX parse error: Undefined control sequence: \notag at position 172: …2\;\text{bits} \̲n̲o̲t̲a̲g̲ ̲
注释

  • 非均匀分布比均匀分布的熵要小,因为不确定的事物信息量大。

  • 熵的定义中的对数变成自然对数,因为这样做会使得熵的概念与本书后续章节中的思想结合起来比较方便。这种情况下,熵的度量的单位是 nat,而不是bit。两者的差别是多了⼀个 ln ⁡ 2 \ln2 ln2 的因⼦。

熵的概念最早起源于物理学,是在热力学平衡的背景中介绍的。后来,熵成为描述统计力学中的无序程度的度量。

相对熵可以描述两种分布的相似程度
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ KL(p\vert\vert…
得熵的概念与本书后续章节中的思想结合起来比较方便。这种情况下,熵的度量的单位是 nat,而不是bit。两者的差别是多了⼀个 ln ⁡ 2 \ln2 ln2 的因⼦。

熵的概念最早起源于物理学,是在热力学平衡的背景中介绍的。后来,熵成为描述统计力学中的无序程度的度量。

你可能感兴趣的:(机器学习,人工智能,深度学习)