DeepLearning深度学习(花书)读书笔记——机器学习基础(四)

接上一篇文章:DeepLearning深度学习(花书)读书笔记——机器学习基础(三)


8、无监督学习算法

  无监督算法只处理“特征”,不操作监督信号。但并没有客观的判断标准来区分监督者提供的值是特征还是目标。通常,无监督学习是指从不需要人为注释的样本分布中提取信息。它通常与密度估计相关,如学习从分布中采样、学习从分布中去噪、寻找数据分布的流形或是将数据中相关的样本聚类。
  一个经典的无监督学习任务是找到数据的“最佳”表示。最佳可以有不同的含义,但通常说的最佳表示是指,在遵守一些旨在使表示方法比原数据 x \bm{x} x本身更简单或更易访问的惩罚或约束的条件下,尽可能多的保留关于原数据的信息的表示方法。
  最常见的三种定义更简单表示的方式是:低维表示,稀疏表示和独立表示。低维表示尝试将原数据中的信息尽可能压缩在一个较小的表示中。稀疏表示将数据集嵌入到输入项大多数为零的表示中,它通常用于需要增加表示维数的情况。独立表示试图解开数据分布中变动的来源,使得表示的维度是统计独立的。当然,上面这三种准则并非相互排斥的。
  表示的概念是深度学习核心主题之一。基本上每个学习算法都会以不同方式处理这些准则或引入更多的准则。

8.1、主成分分析

  主成分分析(PCA)可被看作是学习数据表示的无监督学习算法。这种表示包含了两个准则,PCA学习一种比原始数据维数更低的表示,也学习了一种元素之间彼此没有线性相关的表示。
  如下图所示,PCA学习如何将输入数据 x \bm{x} x投影表示成 z \bm{z} z的正交线性变换。PCA可以重建原始数据的最佳一维表示(就均方误差而言),这种表示其实对应着数据的第一个主要成分。因此,可以用PCA作为保留数据尽可能多信息的降维方法(就最小重构误差平方而言)。

image

  上面介绍了PCA如何实现低维表示准则,下面将研究PCA如何使原始数据的表示 X \bm{X} X去相关的。

PCA去相关分析

  假设有一个 m × n m{\times}n m×n的设计矩阵 X \bm{X} X(即 m m m个样本,每个样本有 n n n个元素(特征)),通过去中心预处理化使得每个的元素均值为零,即 E [ x ] = 0 \mathbb{E}[\bm{x}]=0 E[x]=0( x \bm{x} x为样本数据的向量表示,一般写为列向量,即大小为 n × 1 n{\times}1 n×1。向量的期望定义为其中每个元素的期望,所以公式这么写,即表示所有 E [ x i ] = 0 \mathbb{E}[\bm{x}_i]=0 E[xi]=0)。此时 X \bm{X} X对应的无偏样本协方差矩阵(可以写成 X \bm{X} X的协方差 C O V n × n COV_{n{\times}n} COVn×n,也可以写成向量的方差 V a r [ x ] \mathrm{Var}[\bm{x}] Var[x])由下式得到:
V a r [ x ] = 1 m − 1 X ⊤ X (5.85) \mathrm{Var}[\bm{x}] = \frac{1}{m-1}\bm{X^{\top}X} \tag{5.85} Var[x]=m11XX(5.85)
PCA基于线性变换找到一个表示: z = x ⊤ W \bm{z}=\bm{x^{\top}W} z=xW,可以使 V a r [ z ] \mathrm{Var}[\bm{z}] Var[z]是对角矩阵。
  已知设计矩阵 X \bm{X} X的主成分由 X ⊤ X \bm{X^{\top}X} XX的特征向量得到,从这个角度可知
X ⊤ X = W Λ W ⊤ (5.86) \bm{X^{\top}X}=\bm{W{\Lambda}W^{\top}} \tag{5.86} XX=WΛW(5.86)
  此外,主成分也可以通过奇异值分解(SVD)得到,更具体的,它们是 X \bm{X} X的右奇异向量。假设 W \bm{W} W是奇异值分解 X = U Σ W ⊤ \bm{X=U{\Sigma}W^{\top}} X=UΣW的右奇异向量,以 W \bm{W} W作为特征向量基替换原来的特征向量方程得到:
X ⊤ X = ( U Σ W ⊤ ) ⊤ U Σ W ⊤ = W Σ 2 W ⊤ (5.87) \bm{X^{\top}X}=\Big(\bm{U{\Sigma}W^{\top}}\Big)^{\top}\bm{U{\Sigma}W^{\top}}=\bm{W{\Sigma}^2W^{\top}} \tag{5.87} XX=(UΣW)UΣW=WΣ2W(5.87)
  SVD有助于说明PCA后的 V a r [ z ] \mathrm{Var}[\bm{z}] Var[z]是对角的。使用 X \bm{X} X的SVD分解,它的方差可以表示为:
V a r [ x ] = 1 m − 1 X ⊤ X = 1 m − 1 ( U Σ W ⊤ ) ⊤ U Σ W ⊤ = 1 m − 1 W Σ ⊤ U ⊤ U Σ W ⊤ = 1 m − 1 W Σ 2 W ⊤ (5.91) \begin{array}{rl} \mathrm{Var}[\bm{x}]&=\frac{1}{m-1}\bm{X^{\top}X} \\\\ &=\frac{1}{m-1}\Big(\bm{U{\Sigma}W^{\top}}\Big)^{\top}\bm{U{\Sigma}W^{\top}} \\\\ &=\frac{1}{m-1}\bm{W\Sigma^{\top}U^{\top}U{\Sigma}W^{\top}} \\\\ &=\frac{1}{m-1}\bm{W{\Sigma}^2W^{\top}} \end{array} \tag{5.91} Var[x]=m11XX=m11(UΣW)UΣW=m11WΣUUΣW=m11WΣ2W(5.91)
其中,根据奇异值的定义,矩阵 U \bm{U} U是正交的,因此 U ⊤ U = I \bm{U^{\top}U=I} UU=I。这表明 z \bm{z} z的协方差满足对角的要求(当使用矩阵而不是样本向量时,不用再转置,即 Z = X W \bm{Z=XW} Z=XW):
V a r [ z ] = 1 m − 1 Z ⊤ Z = 1 m − 1 W ⊤ X ⊤ X W = 1 m − 1 W ⊤ W Σ 2 W ⊤ W = 1 m − 1 Σ 2 (5.95) \begin{array}{rl} \mathrm{Var}[\bm{z}]&=\frac{1}{m-1}\bm{Z^{\top}Z} \\\\ &=\frac{1}{m-1}\bm{W^{\top}X^{\top}XW} \\\\ &=\frac{1}{m-1}\bm{W^{\top}W{\Sigma}^2W^{\top}W} \\\\ &=\frac{1}{m-1}\bm{{\Sigma}^2} \end{array} \tag{5.95} Var[z]=m11ZZ=m11WXXW=m11WWΣ2WW=m11Σ2(5.95)
其中,根据SVD定义有 W ⊤ W = I \bm{W^{\top}W=I} WW=I

  以上分析指明,通过线性变换 W \bm{W} W将数据 x \bm{x} x投影到 z \bm{z} z时,得到的数据表示的协议差矩阵是对角的(即 Σ 2 \Sigma^2 Σ2),因此可知 z \bm{z} z中的元素(即样本数据 z \bm{z} z中的每个特征)是彼此无关的。
  PCA这种将数据变换为一种新的元素(特征)之间彼此不相关的表示的能力是它的一个重要性质。它是实现消除数据中未知变动因素的表示的一个简单实例。在PCA中,这个消除是通过寻找输入空间的一个旋转(由 W \bm{W} W确定),使得方差的主坐标和 z \bm{z} z相关的新表示空间的基对齐。
  虽然相关性是反映数据元素(特征)间依赖关系的一个重要范畴,但通过学习一种表示来消除数据元素(特征)间的依赖也很重要。

8.2、K-均值聚类

  K-均值聚类也是一种表示学习算法,它将训练集样本分成 k k k个靠近彼此的不同聚类。该算法提供了k-维的one-hot编码向量 h \bm{h} h以表示输入 x \bm{x} x,当 x \bm{x} x属于聚类 i i i时,有 h i = 1 h_i=1 hi=1 h \bm{h} h的其他项为零。
  k-均值聚类提供的one-hot编码也是一种稀疏表示,因为每个输入的对应表示大部分元素为零。one-hot编码是稀疏表示的一个极端实例,丢失了很多分布式表示的优点。one-hot编码仍然有一些统计优点(自然地传达了相同聚类中的样本彼此相似的观点),也具有计算上的优势,因为整个表示可以用一个单独的整数表示。
  k-均值聚类算法的实现方式为:初始化 k k k个不同的中心点 { μ ( i ) , ⋯   , μ ( k ) } \{\bm{\mu}^{(i)},\cdots,\bm{\mu}^{(k)}\} {μ(i),,μ(k)},然后迭代交换两个不同的步骤直到收敛。步骤一,每个训练样本分配到最近的中心点 μ ( i ) \bm{\mu}^{(i)} μ(i)所代表的聚类 i i i。步骤二,每一个中心点 μ ( i ) \bm{\mu}^{(i)} μ(i)更新为聚类 i i i中所有训练样本 x ( j ) \bm{x}^{(j)} x(j)的均值。
  聚类问题本身是病态的,无法找到一个单一的标准去度量数据的聚类结果与真实世界是否一致。因为虽然我们可以度量聚类的属性,例如每个聚类的元素到该类中心点的平均欧几里得距离。这使我们可以判断能够从聚类任务中重建训练数据的结果有多好。但是我们不知道聚类的属性在多大程度上对应于真实世界的属性。此外,可能有许多不同的聚类都能很好地对应到现实世界的某些属性。有可能我们希望找到一个和特征相关的聚类,但是得到了一个和任务无关的不同的,同样是合理的聚类。例如,假设我们在包含红色卡车图片,红色汽车图片,灰色卡车图片和灰色汽车图片的数据集上运行两个聚类算法。如果每个聚类算法聚两类,那么可能一个算法将汽车和卡车各聚一类,另一个根据红色和灰色各聚一类。假设我们还运行了第三个聚类算法,它可以自己决定类别的数目。这是地,该算法有可能将数据聚成了四类:红色卡车,红色汽车,灰色卡车和灰色汽车。现在这个新的聚类至少抓住了属性的信息,但是却损失掉了相似性信息。红色汽车和灰色汽车在不同的类中,正如红色汽车和灰色卡车也在不同的类中。该聚类算法没有告诉我们灰色汽车比灰色卡车和红色汽车更相似。我们只知道它们是不同的。
  这些问题说明了我们可能更偏好于分布式表示而不是one-hot表示的原因。分布式表示可以对每个车辆赋予两个属性:一个表示它的颜色,一个表示它是汽车还是卡车。虽然目前仍然不能明确最优的分布式表示是什么(例如,学习算法如何知道我们关心的两个属性是颜色和是否汽车或卡车,而不是制造商和车龄),但是多个属性减少了算法去猜我们关心哪一个属性的负担,允许我们通过比较很多属性而非测试一个单一属性来细粒度地度量相似性。

9、随机梯度下降

  几乎所有的深度学习都用到了一个非常重要的算法:随机梯度下降(SGD)。随机梯度下降是梯度下降算法的一个扩展。
  机器学习中的一个循环问题是大的数据集是好的泛化所必要的,但大的训练集的计算代价也更大
  机器学习算法中的损失函数通常可以分解成每个样本损失函数的总和。例如,训练数据的负条件对数似然可以写成:
J ( θ ) = E x , y ∼ p ^ d a t a L ( x , y , θ ) = 1 m ∑ i = 1 m L ( x ( i ) , y ( i ) , θ ) (5.96) J\bm{(\theta)}=\mathbb{E}_{\bm{x},y\sim\hat{p}_{data}}L(\bm{x},y,\bm\theta)=\frac{1}{m}\sum_{i=1}^{m}L(\bm{x}^{(i)},y^{(i)},\bm\theta) \tag{5.96} J(θ)=Ex,yp^dataL(x,y,θ)=m1i=1mL(x(i),y(i),θ)(5.96)
其中, L L L是每个样本的损失函数 L ( x , y , θ ) = − log ⁡ p ( y ∣ x ; θ ) L(\bm{x},y,\bm\theta)=-\log{p(y\mid\bm{x};\theta)} L(x,y,θ)=logp(yx;θ)
  对于这些相加的损失函数,其梯度下降需要计算每个样本的梯度:
∇ θ J ( θ ) = 1 m ∑ i = 1 m ∇ θ L ( x ( i ) , y ( i ) , θ ) (5.97) \nabla_{\bm\theta}J\bm{(\theta)}=\frac{1}{m}\sum_{i=1}^{m}\nabla_{\bm\theta}L(\bm{x}^{(i)},y^{(i)},\bm\theta) \tag{5.97} θJ(θ)=m1i=1mθL(x(i),y(i),θ)(5.97)
这个运算的计算代价是 O ( m ) O(m) O(m)。随着训练数据规模增长为数十亿的样本,计算一步梯度也会消耗相当长的时间。
  随机梯度下降的核心是:梯度是一个期望。这个期望可采用小规模的样本通过近似估计得到。具体而言,在算法的每一步,从训练集中均匀抽出一个小批量 (minibatch)样本: B = { x ( 1 ) , ⋯   , x ( m ′ ) } \mathbb{B}=\{\bm{x}^{(1)},\cdots,\bm{x}^{(m^{\prime})}\} B={x(1),,x(m)}。每个批量的数目 m ′ m^{\prime} m通常是一个相对较小的数,从一到几百。重要的是,当训练集大小 m m m增长时, m ′ m^{\prime} m通常是固定的。因此可以在训练几十亿的样本数据时,每次更新计算只用到几百个样本。
  通过使用小批量样本 B \mathbb{B} B,梯度的估计可以表示成:
g = 1 m ′ ∇ θ ∑ i = 1 m ′ L ( x ( i ) , y ( i ) , θ ) (5.98) \bm{g}=\frac{1}{m^{\prime}}\nabla_{\bm\theta}\sum_{i=1}^{m^{\prime}}L(\bm{x}^{(i)},y^{(i)},\bm\theta) \tag{5.98} g=m1θi=1mL(x(i),y(i),θ)(5.98)
然后,随机梯度下降算法可以使用如下的梯度下降估计:
θ ⟵ θ − ϵ g (5.99) \bm\theta\longleftarrow\bm\theta-\epsilon\bm{g} \tag{5.99} θθϵg(5.99)
其中, ϵ \epsilon ϵ是学习速率。
  机器学习算法在使用梯度下降进行模型训练时表现得非常好。虽然优化算法可能无法保证在合理的时间内达到一个局部最小值,但它通常能很快地找到一个使损失函数非常低的值。
  随机梯度下降在深度学习之外有很多重要的应用。它是在超大规模数据集上训练大型线性模型的主要方法。对于固定大小的模型,随机梯度下降算法每一步更新的计算量不取决于训练集的大小 m m m。一般在实践中,随着数据集规模的增加,采用的模型也越大,从而达到收敛所需的更新次数也会增加。然而,当样本数量 m m m趋向于无穷大时,该模型最终会在随机梯度下降抽样完训练集上的所有样本之前收敛到可能的最优测试误差。继续增加 m m m不会延长达到模型可能的最优测试误差的时间。从这点来看,可以认为用SGD训练模型的渐近代价是关于 m m m的函数的 O ( 1 ) O(1) O(1)级别。
  在深度学习之前,学习非线性模型的主要方法是结合核策略的线性模型。很多核学习算法需要构建一个 m × m m{\times}m m×m的矩阵 G i , j = k ( x ( i ) , x ( j ) ) G_{i,j}=k(\bm{x^{(i)},x^{(j)}}) Gi,j=k(x(i),x(j))。构建这个矩阵的计算量是 O ( m 2 ) O(m^2) O(m2)。当数据集是几十亿个样本时,这个计算量是不能接受的。通过采用随机剃度下降法,深度学习在具有数万级别样本的中等规模数据集上训练的模型对新样本的预测比当时很多热门算法泛化得更好,并且提供了一种新的可扩展的方式来训练大数据集上的非线性模型。

10、构建机器学习算法

  几乎所有的深度学习算法都可以被描述为一个相当简单的配方:特定的数据集、代价函数、优化过程和模型。
  例如,线性回归算法可以看作由以下部分组成: X \bm{X} X y y y构成的数据集、代价函数
J ( w , b ) = − E x , y ∼ p ^ d a t a log ⁡ p m o d e l ( y ∣ x ) (5.100) J(\bm{w},b)=-\mathbb{E}_{\bm{x},y\sim\hat{p}_{data}}\log{p_{model}(y\mid\bm{x})} \tag{5.100} J(w,b)=Ex,yp^datalogpmodel(yx)(5.100)
模型是 p m o d e l ( y ∣ x ) = N ( y ; x ⊤ w + b , 1 ) p_{model}(y\mid\bm{x})=\mathcal{N}(y;\bm{x^{\top}w}+b,1) pmodel(yx)=N(y;xw+b,1),优化算法可以定义为求解代价函数梯度为零的正规方程。
  在上面配方中,可以替换独立于其它的组件的大多数组件,因此可以得到很多不同的算法。
  通常,代价函数至少含有一项元素使学习过程可以进行统计估计。最常见的代价函数是负对数似然,最小化代价函数就变成了最大似然估计。
  代价函数也可能含有附加项,如正则化项。例如,可以将权重衰减加到线性回归的代价函数中
J ( w , b ) = λ ∣ ∣ w ∣ ∣ 2 2 − E x , y ∼ p ^ d a t a log ⁡ p m o d e l ( y ∣ x ) (5.101) J(\bm{w},b)=\lambda{\mid\mid\bm{w}\mid\mid}_{2}^{2}-\mathbb{E}_{\bm{x},y\sim\hat{p}_{data}}\log{p_{model}(y\mid\bm{x})} \tag{5.101} J(w,b)=λ∣∣w∣∣22Ex,yp^datalogpmodel(yx)(5.101)
该优化仍然有闭解。
  如果将模型变成非线性的,那么大多数代价函数不能再通过闭解优化。这就需要重新选择一个迭代数值优化过程,如梯度下降等。
  组合模型,代价函数和优化算法来构建学习算法的配方同时适用于监督学习和无监督学习。线性回归实例说明了如何适用于监督学习的。无监督学习时,需要定义一个只包含 X \bm{X} X的数据集,一个合适的无监督代价函数和一个模型。例如,通过指定如下代价函数可以得到PCA的第一个主向量
J ( w ) = E x ∼ p ^ d a t a ∣ ∣ x − r ( x ; w ) ∣ ∣ 2 2 (5.102) J(\bm{w})=\mathbb{E}_{\bm{x}\sim\hat{p}_{data}}{\mid\mid{\bm{x}-r(\bm{x;w})}\mid\mid}^2_2 \tag{5.102} J(w)=Exp^data∣∣xr(x;w)∣∣22(5.102)
模型定义为重构函数 r ( x ) = w ⊤ x w r(\bm{x})=\bm{w^{\top}xw} r(x)=wxw,并且 w \bm{w} w有范数为 1 1 1的限制。
  在某些情况下,由于计算原因不能实际估计代价函数。此时,只要有近似其梯度的方法,仍然可以使用迭代数值优化近似最小化目标。
  尽管有时候不明显,但大部分机器学习算法都可以使用上述配方描述。因此可以将不同算法都看作这类由于相同原因解决相关问题的方法,而不是一系列有各自理论的不同算法。如果一个机器学习算法看上去特别独特或是手动设计的,那么通常需要使用特殊的优化方法进行求解。有些模型,如决策树或k-均值,需要特殊的优化算法,因为它们的代价函数有平坦的区域,使其不适合通过基于梯度的优化去最小化。

11、促使深度学习发展的挑战

  本章描述的简单机器学习算法在很多不同的重要问题上效果都很好。但是它们不能成功解决人工智能中的核心问题,如语音识别或者对象识别。促使深度学习发展的一部分原因是传统学习算法在解决这类人工智能问题上的泛化能力不足
  本节介绍为何处理高维数据时在新样本上泛化特别困难,以及为何在传统机器学习中实现泛化的机制不适合学习高维空间中复杂的函数。这些空间经常涉及巨大的计算代价。深度学习旨在克服这些以及其它一些难题。

11.1、维数灾难

  当数据的维数很高时,很多机器学习问题变得相当困难,这种现象被称为维数灾难 。特别值得注意的是,一组变量可能出现的不同配置组合的数量会随着变量数目的增加而呈指数级增长,即当变量数目增加到一定程度时,实际能提供的样本数量远远少于变量可出现的不同组合的数量,大部分可能的配置组合会没有实际的样本用于学习训练。
  维数灾难发生在计算机科学的许多地方,特别是在机器学习中。由维数灾难带来的一个挑战是统计挑战

image

  如上图所示,统计挑战产生于 x \bm{x} x的可能配置数目远大于训练样本的数目。为了充分理解这个问题,假设输入空间如图中所示被分成网格。低维时可以用少量网格去描述这个空间,这些网格元素大多数被数据占据。泛化到新数据点时,通过检测和新输入在相同网格中的训练样本,可以判断如何处理新数据点。例如,要估计数据集在某点 x \bm{x} x处的概率密度,可以返回 x \bm{x} x处单位体积网格内训练样本的数目除以训练样本的总数。如果对一个数据集进行分类,可以返回相同网格中训练样本最多的类别。如果做回归分析,可以平均该网格中样本对应的的目标值。但是,如果要处理的网格中没有样本时,许多传统机器学习算法都是简单地假设它的输出应大致和最接近的有样本的网格的输出相同。但在高维空间中,由于参数配置的数目远远大于样本的数目,造成大部分的参数配置都没有相关的样本,要处理的网格距离最近的有样本的网格可能非常远,这时,应用这个假设对实际数据来说是远远不够的。因此,维数灾难带来的问题是如何才能在这些没有样本的新配置中找到一些有意义的东西

11.2、局部不变性和平滑正则化

  为了更好地泛化,机器学习算法需要由先验知识引导应该学习什么类型的函数(比如,由模型参数的概率分布形成的先验)。先验知识通过直接影响函数本身来间接作用于参数。此外,先验知识还间接的体现在偏好选择具有某类函数的算法。
  使用最广泛的隐式“先验”是平滑先验,或局部不变性先验。这个先验表明需要学习的函数不应在小区域内发生很大的变化。许多简单算法完全可依赖于此先验达到良好的泛化,但是这些算法不能推广去解决人工智能级别任务中的统计挑战,单是依赖于平滑先验不足以应对这类任务。

  • 局部不变先验的应用

  有许多不同的方法来显式地或隐式地表示学习函数应该具有光滑或局部不变的先验。所有这些的方法都旨在鼓励通过学习过程能够学习出函数 f ∗ f^* f,该函数对于大多数配置 x \bm{x} x和小变动 ϵ \epsilon ϵ,都满足条件:
f ∗ ( x ) ≈ f ∗ ( x + ϵ ) (5.103) f^*(\bm{x})\approx{f^*(\bm{x}+\epsilon)} \tag{5.103} f(x)f(x+ϵ)(5.103)
换言之,如果我们知道对应输入 x \bm{x} x的答案(例如, x \bm{x} x是个有标签的训练样本),那么该答案对于 x \bm{x} x的邻域应该也适用。如果在有些邻域中有几个好答案,那么可以可以将它们组合(通过某种形式的平均或插值法)以产生一个尽可能和大多数输入一致的答案。

  k-最近邻系列的学习算法是局部不变方法的一个极端例子。假设将测试数据划分成多个区域,当一个区域里的所有点 x \bm{x} x在训练数据集中的k个最近邻样本都是一样的,那么这个区域中点的预测值也是一样的。当 k = 1 k=1 k=1时,预测结果不同的区域的数目不会比训练样本数量还多。最近邻算法中,每个训练样本至多用于定义一个区间,如下图所示:

image

  大部分的核机器算法也是在和附近与训练样本相关的训练集输出上进行插值。一类重要的核函数是局部核,其核函数 k ( u , v ) k(\bm{u,v}) k(u,v) u = v \bm{u=v} u=v时很大,当 u \bm{u} u v \bm{v} v距离拉大时而减小。局部核可以看作是执行模版匹配的相似函数,用于度量测试样本 x \bm{x} x和每个训练样本 x ( i ) \bm{x}^{(i)} x(i)的相似度。
  此外,决策树也有平滑学习的局限性,因为它将输入空间分成和叶节点一样多的区间,并在每个区间使用单独的参数(或者有些决策树的拓展有多个参数)。如果目标函数需要至少拥有 n n n个叶节点的树才能精确表示,那么至少需要 n n n个训练样本去拟合。需要几倍于 n n n的样本去达到预测输出上的某种统计置信度。

  总的来说,区分输入空间中 O ( k ) O(k) O(k)个区间,所有上面的这些方法需要 O ( k ) O(k) O(k)个样本。通常会有 O ( k ) O(k) O(k)个参数, O ( 1 ) O(1) O(1)参数对应于 O ( k ) O(k) O(k)个区间之一。

  • 局部不变先验的局限性

  有一个简单的示例,假设要学习的目标函数是应用在西洋跳棋盘上的,且训练样本数目远小于棋盘上的黑白方块数目。基于局部泛化和平滑性或局部不变性先验的前提下,如果新点和某个训练样本位于相同的棋盘方块中,那么能够保证正确地预测新点的颜色。但如果新点所在的方块没有训练样本,根据邻域中的颜色作为当前方块的颜色就是错误的。此时,仅依靠这个先验,一个样本只能说明它所在的方块的颜色。获得整个棋盘颜色的唯一方法是其上的每个方块至少要有一个样本。那么,有没有什么方法能表示区间数目比训练样本数目还多的复杂函数?
  在实际应用中,只要在要学习的真实函数的峰值和谷值处有足够多的样本,那么平滑性假设和相关的无参数学习算法的效果都非常好。当要学习的函数足够平滑,并且只在少数几维变动,这样做一般没问题。在高维空间中,即使是非常平滑的函数,也会在不同维度上有不同的平滑变动程度。如果函数在不同的区间中表现不一样,那么就非常难用一组训练样本去刻画函数。如果函数是复杂的(即想区分多于训练样本数目的大量区间),有希望很好地泛化么?
  上面这些问题,即是否可以有效地表示复杂的函数,以及所估计的函数是否可以很好地泛化到新的输入,答案是有。解决这个问题的关键观点是,只要通过额外假设生成数据的分布来建立区域间的依赖关系,那 O ( k ) O(k) O(k)个样本足以描述多如 O ( 2 k ) O(2^k) O(2k)的大量区间。通过这种方式,确实能做到非局部的泛化。为了利用这些优势,许多不同的深度学习算法都提出了一些适用于多种AI任务的隐式或显式的假设。
  一些其他的机器学习方法往往会提出更强的、针对特定问题的假设。例如,假设目标函数是周期性的,则很容易解决棋盘问题。通常,神经网络不会包含这些很强的、针对特定任务的假设,因此神经网络可以泛化到更广泛的各种结构中。人工智能任务的结构非常复杂,很难限制到简单的、人工手动指定的性质(如周期性),因此希望学习算法具有更通用的假设。深度学习的核心思想是假设数据由因素或特征组合产生,这些因素或特征可能来自一个层次结构的多个层级。许多其他类似的通用假设进一步提高了深度学习算法。这些很温和的假设允许了样本数目和可区分区间数目之间的指数增益。深度的分布式表示带来的指数增益有效解决了维数灾难带来的挑战。

11.3、流形学习

  机器学习中很多想法背后的一个重要概念是流形。流形(manifold)指连接在一起的区域。数学上,它是指一组点,且每个点都有其邻域。给定一个任意的点,其流形局部看起来像是欧几里得空间。日常生活中,将地球视为二维平面,但实际上它是三维空间中的球状流形。
  每个点周围邻域的定义暗示着存在可以用在流形上从一个位置移动到其邻域位置的变换。例如在地球表面这个流形中,可以朝着东南西北走。
  在机器学习中倾向于将“流形”松散地定义为一组点,只需要考虑少数嵌入在高维空间中的自由度或维数就能很好地近似。每一维都对应着局部的变动方向。如下图所示,展示了位于二维空间中的一维流形附近的训练数据的示例。

image

  在机器学习中,允许流形的维数从一个点到另一个点有所变化。这个现象经常发生于流形和自身相交的情况中。例如,数字“8”形状的流形在大多数位置只有一维,但在中心的相交处有两维。
  如果希望机器学习算法学习整个 R n \mathbb{R}^n Rn空间上具有有趣变化的函数,那么很多机器学习问题看上去都是不可解的。流形学习(manifold learning)算法通过一个假设来克服这个障碍,该假设认为 R n \mathbb{R}^n Rn中大部分区域都是无效的输入,有意义的输入只分布在包含少量数据点的子集构成的一组流形中,而学习函数的输出中有意义的变化都沿着流形的方向,或者仅发生在从一个流形切换到另一个流形的时候。流形学习最初用于连续数值数据和无监督学习的环境,尽管这个概率集中的想法也能够泛化到离散数据和监督学习的设定下:关键假设仍然是概率质量高度集中。
  数据位于低维流形的假设并不总是对的或者有用的。但是,在人工智能的一些场景中(如涉及到处理图像,声音或者文本),流形假设至少是近似对的。这个假设的支持证据包含两类观察结果。
  第一个支持 流形假设(manifold hypothesis) 的观察是——现实生活中的图像,文本,声音的概率分布都是高度集中的,均匀的噪声从来不会和这类领域的结构化输入相似。如下图中显示的均匀采样的点看上去像是没有信号时模拟电视上的静态模式。同样,如果我们均匀地随机抽取字母来生成文件,能有多大的概率得到一个有意义的英语文档?几乎是零。因为大部分字母长序列不对应着自然语言序列:自然语言序列的分布只占了字母序列的总空间里非常小的一部分。
5.12
  当然,集中的概率分布不足以说明数据位于一个相当小的流形中。还必须确定遇到的样本和其他样本相互连接,每个样本被其他高度相似的样本包围,可以通过变换来遍历该流形。
  第二个支持 流形假设 的观察是——至少能够非正式地想象这些邻域和变换。例如在图像中,有很多可能的变换允许描绘出图片空间的流形:逐渐变暗或变亮光泽,逐步移动或旋转图中对象,逐渐改变对象表面的颜色等。在大多数应用中很有可能会涉及多个流形,例如,人脸图像的流形不太可能连接到猫脸图像的流形。
  这些支持流形假设的思维试验传递了一些支持它的直观理由,更严格的实验在人工智能备受关注的一大类数据集上支持了这个假设。
  在很多情况下的应用中,流形存在个一般性原则,即当数据位于低维流形中时,使用流形中的坐标而非 R n \mathbb{R}^n Rn中的坐标表示机器学习数据更为自然(例如,在日常生活中,可以认为道路是嵌入在三维空间的一维流形。人们通常会用一维道路中的地址号码确定地址,而非三维空间中的坐标)。虽然提取这些流形中的坐标是非常具有挑战性的,但是这样做很有希望改进许多机器学习算法。下图展示了包含人脸的数据集的流形结构。在后续的章节中会介绍一些学习这样流形结构的必备方法,并看到机器学习算法如何成功完成这个目标。
5.13

12、个人感悟

12.1、分布族

  英文原文中描述分布时经常用到“family”一词,如 a parametric family of distributions。其中文翻译过来为分布族。分布族与分布是不同的,它是参数不确定且函数类型未知的概率密度函数的一种统称,如果函数类型确定了,则除开统一可称为分布族外,还可有自己的名称,如泊松分布,正态分布等。这些都是分布族。而分布是在确定函数类型的分布族如正态分布下,根据样本数据求得具体参数后的确定的函数式。
  即分布族是参数不确定的某一类函数,可以统一称呼为分布族也可以有自己特定的称呼。分布是参数确定的某一个函数。

12.2、表示

  英文原文中对表示的写法为“representation of the data”,即数据的表示。我理解为数据的表现形式,比如数据是字母还是数字,是音频还是图像,是二维还是三维等等,也就是数据中的信息是以何种方式表现出来的。它可以从一种方式转换成另一种方式,机器学习可以学习如何完成这种转换,还可以学习从这种表示方式中提取出有意义的信息。

12.3、流形

  流形在机器学习中被认为是一组点,我的理解是机器学习中说的流形是一种在数据集中存在的表示相互关系的结构,每个数据都与它邻域内的数据在该结构上存在一种关系。比如A位于B的某个方向、C相对于D做了某个动作等。

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LittleSlugBoZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值