博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习
阅读量:4453 次
发布时间:2019-06-07

本文共 22887 字,大约阅读时间需要 76 分钟。

机器学习

线性代数

标量(scalar):一个标量就是一个单独的数。介绍时会明确是那种类型,例如:s ∈ R,n ∈ N

向量(vector):一个向量是一列数,这些数是有序排列的,通过索引可以确定每个单独的数。例如:向量x的第一个元素是x1。

会注明存储在向量中的元素是什么类型的。例如:如果元素都属于R,并且该向量有n个元素,那么向量属于实数集R的n次笛卡尔乘积构成的集合。记作Rn

当需要明确表示向量中的元素时,将元素排列成一个方括号包围的纵列

可以把向量看做空间中的点,每个元素是不同坐标轴上的坐标。有时我们需要索引向量中的一些元素。这种情况下,我们定义一个包含这些元素索引的集合,然后将集合写在脚标处。比如指定x1、x3。定义集合S={1,3},然后写作xs。用符号表示集合的补集中的索引。比如x_1表示x中除x1外的所有元素,x_s表示x中除x1、x3外所有元素构成的向量。

实数:有理数和无理数的总称。有理数:整数(正负整数和0)和分数的统称。无理数:无线不循环小数,小数点后面有多个,且不会循环

笛卡尔乘积:两个集合X和Y的全排列。例如:X=a,b Y = 1,2 笛卡尔乘积为(a,1)(a,2)(b,1)(b,2)

矩阵(matrix):是一个二维数组,其中的每一个元素由两个索引所确定。通常会赋予矩阵粗体的大写变量名称。比如:A

如果一个实数矩阵高度为m,宽度为n,那么说A∈Rm*n

在表示矩阵中的元素时,通常以不加粗的斜体形式使用其名称,索引用逗号间隔。比如:A1,1表示A左上的元素,Am,n表示A右下的元素。通过 : 前后表示水平坐标或垂直坐标。比如,Ai,:表示A中垂直坐标i上的一横排元素,A:,i表示A的第i列。

当需要明确表示矩阵中的元素时,将他们写在用方括号包括起来的数组中

有时需要矩阵值表达式的索引,而不是单个元素。我们在表达式后面接下标,但不必将矩阵的变量名称小写化。比如f(A)i,j表示函数f作用在A输出上的矩阵的第i行第j列元素。

张量(tensor):某些情况下,我们会讨论坐标超过两维的数组。一个数组中的元素分布在若干维坐标的规则网络中,称之为张量。使用A来表示,张量A中坐标为(i,j,k)记作Ai,j,k

转置(transpose):矩阵的重要操作之一,矩阵的转置是以对角线为轴的镜像,这条左上角到右下角的对角线被称为主对角线(main diagonal)。将矩阵A的转置表示为AT,定义如下

向量可以看作只有一列的矩阵,向量的转置可以看作只有一行的矩阵。通过将向量元素作为行矩阵写在文本行中,然后使用转置操作将其变为标准的列向量。比如:x=[x1,x2,x3]T

标量可以看作只有一个元素的矩阵,因此标量的转置等于它本身,a = aT

只要矩阵的形状一样,可以把两个矩阵相加。两个矩阵相加是指对应位置的元素相加,比如C=A+B,其中Ci,j = Ai,j + Bi,j

标量和矩阵相乘,或者是和矩阵相加,我们只需要将其与矩阵的每个元素相乘或相加。比如D=a*B+c,其中Di,j = a*Bi,j+c

深度学习中,也使用一些不那么常规的符号。允许矩阵和向量相加,产生另一个矩阵:C = A + B,其中Ci,j = Ai,j + bj。换言之,向量b和矩阵A的每一行相加。这个简写方法使我们无须在加法操作前定义一个将向量b复制到每一行而生成的矩阵。这种隐式地复制向量b到很多位置的方式,称为广播(broadcasting)

矩阵乘法是矩阵运算中最重要的操作之一。两个矩阵A和B的矩阵乘积是第三个矩阵C

矩阵乘积(matrix product):矩阵A的列数必须和矩阵B的行数相等。如果A的形状是m*n,B的形状是n*p,那么矩阵C的形状是m*p。可以通过并列放置以书写矩阵乘积

C = AB

该乘法操作定义为

∑ 西格玛,总和符号。例如∑Pi 其中i=1,2, 那么就是求P1+P2的总和。∑下面的数字表示从几开始求和,上面的数字表示求和到几截止。

举例:

需要注意的是,两个矩阵的标准乘积不是指两个矩阵中对应元素的乘积。

对应元素的乘积称为元素对应乘积(element-wise product)或者Hadamard乘积(Hadamard product)记,为A⊙B

两个维数相同的向量x和y的点积(dot product),可以看做矩阵乘积xTy。可以把矩阵乘积C=AB中计算Ci,j的步骤看作A的第i行和B的第j列之间的点积。

点积:接受在实数R上的两个并返回一个实数值的

两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的点积定义为:
a·b=a1b1+a2b2+……+anbn。
使用 并把(纵列)向量当作n×1  ,点积还可以写为:
a·b=a
T*b,这里的a
T指示 a的 。

矩阵乘积运算有许多有用的性质,比如服从分配律

A(B+C)=AB+AC

服从结合律

A(BC) = (AB) C

不同于标量乘积,矩阵乘积并不满足交换律(AB!=BA)

然后两个向量的点积满足交换律 xTy = yTx

矩阵乘积的转置有着简单的形式

(AB)T = BTAT

利用两个向量点击的结果是标量、标量转置是自身的事实,我们可以证明

现在有了足够多的线性代数符号,可以表达下列线性方程组

Ax = b

其中A∈Rm*n是一个已知矩阵,b∈Rm是一个已知向量,x∈Rn是一个要求解的未知向量。向量x的每一个元素xi都是未知的。矩阵A的每一行和b中对应的元素构成一个约束。

可以把Ax=b重写为A1,1x1+A1,2x2=b1

矩阵逆(matrix inversion):对于大多数矩阵A,能通过矩阵逆解析地求解式。为了描述矩阵逆,首先需要定义单位矩阵的概念。

单位矩阵(identity matrix):任意向量和单位矩阵相乘,都不会改变。将保持n维向量不变的单位矩阵记作In

单位矩阵的结构很简单:所有沿主对角线的元素都是1,而其他位置的所有元素都是0,

矩阵A的矩阵逆记作A-1,其定义的矩阵满足如下条件:

这取决于我们能否找到一个逆矩阵A-1,当逆矩阵存在时,有几种不同的算法都能找到它的闭解形式。

理论上相同的逆矩阵可以用于多次求解不同向量b的方程,然而逆矩阵主要作为理论工具使用,并不会在大多数软件应用程序中使用。因为逆矩阵在数字计算机上只能表现出有限的精度,有效使用向量b的算法通常可以得到更精确的x。

线性相关和生成子空间

如果逆矩阵存在,那么肯定对每一个向量b恰好存在一个解。但是对方程组而言,对于向量b的某些值,有可能不存在解,或者存在无限多个解。存在多于一个解,但是少于无限多个解的情况是不可能发生的,因为如果x和y都是某方程组的解

则上方表达式也是该方程组的解。

为了分析方程有多少解,可以将A的列向量看做从原点(origin)出发的不同方向,确定有多少种方程可以达到b。这个观点下,向量x中的每个元素表示我们应该沿着这些方向走多远,即xi表示我们需要沿第i向量的方向走多远

一般而言,这种操作称为线性组合(linear combination),形式上一组向量的线性组合是指每个向量乘以对应标量系数之后的和,即

一组向量的生成子空间(span)是原始向量线性组合所能抵达的点的集合。

确定Ax=b是否有解,相当于确定向量b是否在A列向量的生成子空间中。这个特殊的生成子空间被称为A的列空间(column space)或者A的值域(range)

为了使方程Ax=b对于任意向量b∈Rm都存在解,我们要求A列空间构成整个Rm。如果Rm中的某个点不在A的列空间中,那么该点对应的b会使得该方程没有解。矩阵A的列空间是整个Rm的要求,意味着A至少有m列,即n>=m。否则A列空间的维数会小于m。

例如假设A是一个3*2的矩阵。目标b是3维的,但是x只有2维。所以无论如何修改x的值,也只能描绘出R3空间中的二维平面。当且仅当向量b在该二维平面中时,该方程有解。

不等式n>=m仅是方程对每一点都有解的必要条件。这不是一个充分条件,因为有些列向量可能是冗余的。假设有一个R2*2中的矩阵,它的两个列向量是相同的。那么它的列空间和它的一个列向量作为矩阵的列空间是一样的。虽然该矩阵有2列,但是它的列空间仍然只是一条线,不能覆盖整个R2空间

这种冗余称为线性相关(linear dependence)。如果一组向量中任意一个向量都不能表示成其他向量的线性组合,那么这组向量称为线性无关(linearly independent)。如果某个向量是一组向量中某些向量的线性组合,那么我们将这个向量加入这组向量后不会增加这组向量的生成子空间。如果一个矩阵的列空间涵盖整个Rm,那么该矩阵必须包含至少一组m个线性无关的向量。对于每一个向量b的取值都有解的充分必要条件。值得注意的是,这个条件是说该向量集恰好有m个线性无关的列向量,而不是至少m个。不存在一个m维向量的集合具有多于m个彼此线性不相关的列向量,但是一个有多于m个列向量的矩阵有可能拥有不止一个大小为m的线性无关向量集。

要想使矩阵可逆,还需要保证对于每一个b值至多有一个解。为此需要确保该矩阵至多有m个列向量。

意味着该矩阵必须是一个方阵(square),即m=n,并且所有列向量都是线性无关的。一个列向量线性相关的方阵被称为奇异的(singular)

如果矩阵A不是一个方阵或者是一个奇异的方阵,该方程仍然可能有解。但是我们不能使用矩阵逆去求解。

范数

有时我们需要衡量一个向量的大小。在机器学习中,经常使用称为范数(norm)的函数来衡量向量大小。

形式上 L范数定义如下

其中p∈R,p>=1

范数是将向量映射到非负值的函数。直观上来说,向量x的范数衡量从原点到点x的距离。

范数是满足下列性质的任意函数:

f(x) = 0 => x = 0

f(x+y) <= f(x) + f(y) (三角不等式(triangle inequality)

当p=2时,L2范数称为欧几里得范数(Euclildean norm)。表示从原点出发到向量x确定的点的欧几里得距离。L2范数在机器学习中出现的十分频繁,经常简化表示为||x||,略去了下标2。平方L2范数也经常用来衡量向量的大小,可以简单地通过点积xTx计算。

平方L2范数在数学和计算上都比L2范数本身更方便。平方L2范数对x中每个元素的导数只取决于对应的元素,而L2范数对每个元素的导数和整个向量相关。但是在很多情况下,平方L2范数也不受欢迎,因为它在原点附近增长十分缓慢。在某些机器学习应用中区分恰好是零的元素和非零但值很小的元素是很重要的。这些情况下,转而使用在各个位置斜率相同,同时保持简单的数学形式的函数L1范数

L1范数可以简化如下

当机器学习问题中零和非零元素之间的差异非常重要时,通常会使用L1范数。每当x中某个元素从0增加∈,对应的L1范数也会增加∈

有时候我们会统计向量中非零元素的个数来衡量向量的大小。向量的非零元素的数目不是范数,因为对向量缩放a倍不会改变该向量非零元素的数目。因此L1范数经常作为非零元素数目的替代函数。

另外一个经常在机器学习中出现的范数是L∞范数,也称为最大范数(max norm)。这个范数表示向量中具有最大幅值的元素的绝对值

有时候我么可能也希望衡量矩阵的大小。在深度学习中,最常见的做法是使用Frobenius范数,即

其类似于向量L2的范数。

两个向量的点积可以使用范数来表示,具体如下

特殊类型的矩阵和向量

对角矩阵(diagonal matrix),只在主对角线上函数非零元素,其他位置都是零。

形式上,矩阵D是对角矩阵,当且仅当对于所有的 i != j,Di,j = 0。

单位矩阵就是对角矩阵之一,其对角元素全部是1.使用diag(v)表示对角元素由向量v中元素给定的一个对角方阵。对角矩阵收到关注的部分原因是对角矩阵的乘法计算很高效。计算乘法diag(v)x,我们只需要将x中的每个元素xi放大vi倍。换言之,diag(u)x = u ⊙ x。计算对角方阵的逆矩阵也很高效。对角方阵的逆矩阵存在,当且仅当对角元素都是非零值,这种情况下

很多情况下,可以根据任意矩阵导出一些通用的机器学习算法,但通过一些矩阵限制对角矩阵,我们可以得到计算代价较低的算法。

并非所有的对角矩阵都是方阵,长方形的矩阵也有可能是对角矩阵。非方阵的对角矩阵没有逆矩阵,但我们仍然可以高效的计算它们的乘法。对于一个长方形对角矩阵D而言,乘法Dx会涉及x中每个元素的缩放,如果D是瘦长矩阵,那么在缩放后的末尾添加一些零。如果D是胖宽型矩阵,那么在缩放后去掉最后一些元素。

对称(symmetric)矩阵是转置和自己相等的矩阵。A = AT

当某些不依赖参数顺序的双参数函数生成元素时,对称矩阵经常会出现。例如,如果A是一个距离度量矩阵,Ai,j表示点i到点j的距离,那么Ai,j = Aj,i,因为距离函数是对称的。

单位向量(unit vector)是具有单位范数(unit norm)的向量,即 ||x||2 = 1 

如果x T y = 0,那么向量x和向量y互相正交(orthogonal)。如果两个向量都有非零范数,那么这两个向量之间的夹角是90度。在Rn中,至多有n个范数非零向量互相正交。如果这些向量不但互相正交,而且范数都为1,那么我们称它们是标准正交(orthonormal)

正交矩阵(orthogonal matrix)指行向量和列向量是分别标准正交的方阵,即

ATA = AAT = I

这意味着

A-1 = A T

正交矩阵受到关注是因为求逆计算代价小。我们需要注意正交矩阵的定义。违反直觉的是,正交矩阵的行向量不仅是正交的,还是标准正交的。对于行向量或列向量互相正交但不是标准正交的矩阵,没有对应的专有术语。

特征分解

许多数学对象可以通过将它们分解成多个组成部分或者找到它们的一些属性来更好地理解。

例如:整数可以分解为质因数,可以用十进制或者二进制表示整数12。

可以通过分解质因数来发现整数的一些内在性质,也可以通过分解矩阵来发现矩阵表示成数组元素时不明显的函数性质。

特征分解(eigendecomposition)是使用最广的矩阵分解之一,即我们将矩阵分解成一组特征向量和特征值。

方阵A的特征向量(eigenvector)是指与A相乘后相当于该向量进行缩放的非零向量v:

其中标量λ称为这个特征向量对应的特征值(eigenvalue)。也可以定义左特征向量(left eigenvector)

但通常更关注右特征向量(right eigenvector)

如果v是A的特征向量,那么任何缩放后的向量su(s ∈ R,s != 0) 也是A的特征向量。因此,s v 和v相同的特征值。

假设矩阵A有n个线性无关的特征向量,对应着特征值

我们将特征向量连接成一个矩阵,使得每一列是一个特征向量:

可以将特征值连接成一个向量

因此A的特征分解(eigendecomposition)可以记作

将矩阵分解(decompose)成特征值和特征向量,可以帮助分析矩阵的特定性质,就像质因数分解有助我们理解整数。

每个实对称矩阵都可以分解成实特征向量和实特征值

其中Q是A的特征向量组成的正交矩阵,^是对角矩阵。特征值^i,i 对应的特征向量是矩阵Q的第i列,记作Q:,i。因为Q是正交矩阵,我们可以将A看做沿反向v(i)延展λi倍的空间

任意一个实对称矩阵A都有特征分解,但是特征分解可能并不唯一。如果两个或多个特征向量拥有相同的特征值,那么有这些特征向量产生的生成子空间中,任意一组正交向量都是该特征值对应的特征向量。

因此可以等价地从这些特征向量中构成Q作为替代。

矩阵是奇异的,仅当含有零特征值。实对称矩阵的特征分解也可以用于优化二次方程f(x) = x T Ax,其中限制||x||2 = 1。当x等于A的某个特征向量时,f将返回对应的特征值。函数f的最大值就是最大特征值,最小值是最小特征值。

所有特征值都是整数的矩阵称为正定(positive definite)。都是非负数的矩阵称为半正定(positive semidefinite),都是负数的矩阵称为负定(negative definite),都是非正数的矩阵称为半负定(negative semidefinite)

奇异值分解

将矩阵分解成特征向量和特征值还有另一种分解矩阵的方法,称为奇异值分解(singular value decomposition,SVD),将矩阵分解为奇异向量奇异值。通过奇异值分解,我们会得到一些与特征分解相同类型的信息。

然而奇异值分解有更广泛的应用,每个实数矩阵都有一个奇异值分解,但不一定都有特征分解。非方阵的矩阵没有特征分解,这时只能使用奇异值分解。

奇异值分解可以将矩阵A分解成三个矩阵的乘积

假设A是一个m*n的矩阵,那么U是一个m*m的矩阵,D是一个m*n的矩阵,V是一个n*n矩阵

这些矩阵中的每一个经定义后都拥有特殊的结构。矩阵U和V都定义为正交矩阵,而矩阵D定义为对角矩阵。注意矩阵D不一定是方阵。

对角矩阵D对角线上的元素称为矩阵A的奇异值。矩阵U的列向量称为左奇异向量,矩阵V的列向量称为右奇异向量

可以用于A相关的特征分解去解释A的奇异值分解。

A的左奇异向量是AAT的特征向量。

A的右奇异向量是ATA的特征向量。

A的非零奇异值是ATA特征值的平方根,同时也是AAT特征值的平方根。

Moore-Penrose伪逆

矩阵A的伪逆定义为

计算伪逆的实际算法没有基于这个定义,而是使用下面的公式

其中矩阵U、D和V是矩阵A奇异值分解后得到的矩阵。对角矩阵D的伪逆D+是其非零元素取倒数之后再转置得到的。

当矩阵A的列数多余行数时,使用伪逆求解线性方程是众多可能解法中的一种。x = A+y是方程所有可行解中欧几里得范数||x||2最小的一个。

当矩阵A的行数多余列数时,可能没有解。在这种情况下,通过伪逆得到的x使得Ax和y的欧几里得距离||Ax-y||2最小。

迹运算

迹运算返回的是矩阵对角元素的和

迹运算因为很多原因而有用。若不使用求和符号,有些矩阵运算很难描述,而通过矩阵乘法和迹运算符号可以清楚地表示。例如,迹运算提供了另一种描述矩阵Frobenius范数的方式

用迹运算表示表达式,可以使用很多有用的等式巧妙地处理表达式。迹运算在转置运算下是不变的。

多个矩阵相乘得到的方阵的迹,和将这些矩阵中的最后一个挪到最前面之后相乘的迹是相同的。当然需要考虑挪动之后矩阵乘积依然定义良好

或者更一般地

即使循环置换后矩阵乘积得到的矩阵形状变了,迹运算的结果依然不变。假设矩阵A∈Rm*n,矩阵B∈Rn*m,可以得到

尽管AB∈Rm*m和BA∈Rn*n

概率与信息论

概率用于表示不确定性声明的数学框架,不仅提供了量化不确定性的方法,也提供了用于导出新的不确定性声明的公理。

在人工智能领域,概率论主要有两种用途:概率法则告诉AI系统如何推理,据此我们设计一些算法来计算或者估算由概率论导出的表达式;可以用概率和统计从理论上分析我们提出的AI系统的行为

为什么要使用概率

因为机器学习通常必须处理不确定量,有时也可能需要处理随机(非确定性)量。

几乎所有活动都需要一些不确定性存在的情况下进行推理的能力。

不确定性有3种可能的来源:

1. 被建模系统内在的随机性 。例如:量子力学的解释,都将亚原子粒子的动力学描述为概率的。

2. 不完全观测。即使是确定的系统,当我们不能观测到所有驱动系统行为的变量时该系统也会呈现随机性。

3. 不完全建模。当我们使用一些必须舍弃某些观测信息的模型时,舍弃的信息会将导致模型的预测出现不确定性。

尽管我们需要一种用以对不确定性进行表示和推理的方法,但是概率论并不能明显提供我们在人工智能领域需要的所有工具。

当我们说一个结果发生的概率为p,这意味着如果我们反复实验无限次,有p的比例可能会导致这样的结果。比如不停地抽扑克牌。

这种推理并不立即适用于不可重复的命题,如果一个医生诊断了病人,并说病人患病几率为40%,这意味着非常不同的事情。在这个例子中,我们用概率来表示一种信任度,其中1表示非常肯定,0表示肯定没有。

前面那种概率直接与事件发生的频率相联系,被称为频率派概率,而后者涉及确定性水平,被称为叶贝斯概率

关于不确定性的常识推理,如果我们已经列出若干条期望它具有的性质,那么满足这些性质的唯一一种方法就是将贝叶斯概率和频率派概率视为等同的。

概率可以被看做用于处理了不确定性的逻辑扩展。逻辑提供了一套形式化的规则,可以在给定某些命题是真或假的假设下,判断另外一些命题是真的还是假的。概率论提供了一套形式化的规则,可以在给定一些命题的似然后,计算其他命题为真的似然

随机变量

随机变量是可以随机地取不同值的变量。通常用无格式字体中的小写字母来表示随机变量本身

用手写体中的小写字母来表示随机变量能够取到的值。必须伴随着一个概率分布来指定每个状态的可能性。

随机变量可以是离散的或者连续的。离散随机变量拥有有限或者可能无限多的状态。

这些状态不一定非要是整数,也可能只是一些被命名的状态而没有数值。连续随机变量伴随着实数值。

概率分布

概率分布用来描述随机变量或一簇随机变量在再每个可能取到的状态的可能性大小。

我们描述概率分布的方式取决于随机变量是离散的还是连续的。

离散型变量概率分布可以用概率质量函数(PMF) 来描述。通常用大写字母P来表示概率质量函数。

概率质量函数将随机变量能够去取得的每个状态映射到随机变量取得该状态的概率。x=x的概率用P(x)来表示,概率为1表示x=x是确定的,概率为0表示x=x是不可能发生的。

概率质量函数可以同时作用与多个随机变量,多个变量的概率分布被称为联合概率分布,可简写为P(x,y)

如果一个函数P是随机变量x的概率质量函数,必须满足以下几个条件

1. P的定义域必须是x所有可能状态的集合

2. 不可能发生的事件概率为0,并且不存在比这概率更低的状态。能够确保一定发生的事件概率为1,而且不存在比这概率更高的状态

3. 把这条性质称为归一化的,如果没有这条性质,当计算概率时,可能会得到大于1的概率

考虑一个离散型随机变量x有k个不同的状态。假设x是均匀分布的(将它每个状态视为等可能的),通过PMF设为对于所有的i都成立,

可以看出满足上述称为概率质量函数的条件。因为k是一个正整数,所以1/k是正的。也可以看出

因此分布满足归一化条件

连续型变量和概率密度函数

当研究的对象是连续型随机变量时,用概率密度函数(PDF)而不是概率质量函数来描述它的概率分布。如果一个函数p是概率密度函数,必须满足下面这几个条件

概率密度函数P(x)并没有直接对特定的状态给出概率,相对的,

可以对概率密度函数求积分来获得点集的真实概率质量。特别是,x落在集合S中的概率可以通过P(x)对这个集合求积分来得到。在单变量的例子中,x落在区间[a,b]的概率是

边缘概率

假设离散型随机变量x和y,并且我们知道P(x,y)可以依据下面的求和法则来计算P(x)

边缘概率的名称来源于手算边缘概率的计算过程。当P(x,y)的每个值被写在由每行表示不同的x值、每列表示不同的y值形成的网格中时,对网格中的每行求和是很自然的事情,然后将求和的结果P(x)写在每行右边的纸的边缘处

对于连续型变量,需要用积分替代求和

条件概率

很多情况下,我们感兴趣的是某个事件在给定其他事件发生时出现的概率。这种概率叫做条件概率,将给定x=x,y=y发生的条件概率记为P(y=y | x=x)。这个条件概率可以通过下面的公式计算:

条件概率只在P(x=x)>0时有定义。不能计算给定在永远不会发生的事件上的条件概率。

这里需要注意的是,不要把条件概率和计算当采用某个动作后会发生什么相混淆。假定某个人说德语,那么他是德国人的条件概率是非常高的,但是如果随机选择的一个人会说德语,他的国籍不会因此而改变。计算一个行动的后果被称为干预查询。干预查询属于因果模型的范畴

条件概率的链式法则

任何多维随机变量的联合概率分布,都可以分解成只有一个变量的条件概率相乘的形式:

这个规则被称为概率的链式法则或者乘法法则。它可以直接从条件概率的定义中得到。

例如:使用两次定义可以得到

独立性和条件独立性

两个随机变量x和y,如果它们的概率分布可以表示成两个因子的乘积形式,并且一个因子只包含x,另一个因子只包含y,就称这两个随机变量是相互独立的。

如果关于x和y的条件概率分布对于z的每一个值都可能写成乘积的形式,那么这两个随机变量x和y在给定随机变量z时是条件独立的

我们可以采用一种简化形式来表示独立性和条件独立性:x ⊥ y 表示x和y相互独立,x ⊥ y | z 表示x和y在给定z时条件独立。

期望、方差和协方差

方差:实际值与期望值之差平方的平均值。用来度量随机变量和其数学期望之间的偏离程度

标准差:方差开根号

协方差:用于衡量两个变量的总体误差。同时变大说明两个变量是同向变化,协方差就是正的。反向变化就是负的。如果有X,Y两个变量,X值与其均值之差乘以Y值与其均值之差,得到一个乘积,对乘积求和并求出均值,即为协方差。

函数f(x)关于某分布P(x)的期望或者期望值是指,当x由P产生,f作用于x时,f(x)的平均值。对于离散型随机变量,可以通过求和得到

对于连续型随机变量,可以通过求积分得到

当概率分布在上下文中指明时,可以只写出期望作用的随机变量的名称来进行简化,例如 Ex[f(x)]。如果期望作用的随机变量也很明确,可以完全不写脚标,就像E[f(x)]。默认假设E[.] 表示对方括号内的所有随机变量的值求平均。类似地,当没有歧义时,我们还可以省略方括号。期望是线性的,例如

其中a 和 β不依赖于x

方差 衡量的是当我们对x依据它的概率分布进行采样时,随机变量x的函数值会呈现多大的差异

当方差很小时,f(x)的值形成的簇比较接近它们的期望值。方差的平方根被称为标准差

协方差 在某种意义上给出了两个变量线性相关性的强度以及这些变量的尺度

协方差的绝对值如果很大,则意味着变量值变化很大,并且它们同时距离各自的均值很远。如果协方差是正的,那么两个变量都倾向于同时取得相对较大的值。如果协方差是负的,那么其中一个变量倾向于取得相对较大的值的同时,另一个变量倾向于取得相对较小的值,反之亦然。其他的衡量指标如相关系数将每个变量的贡献归一化,为了只衡量变量的相关性而不受各个变量尺度大小的影响

协方差和相关性是有联系的,但实际上是不同的概念。它们是有联系的,如果两个变量相互独立,那么它们的协方差为零;如果两个变量的协方差不为零,那么它们一定是相关的。然而,独立性又是和协方差完全不同的性质。两个变量如果协方差为零,它们之间一定没有线性关系。独立性是比零协方差的要求更强,因为独立性还排除了非线性的关系。两个变量相互依赖,但是具有零协方差是可能的。例如,假设我们首先从区间[-1,1] 上的均匀分布中采样出一个实数x,然后对一个随机变量s进行采集。s以1/2的概率值为1,否则为-1.我们可以通过令y=sx来生成一个随机变量y。显然,x和y不是相互独立的,因为x完全决定了y的尺度。然而,Cov(x,y) = 0 

随机向量x∈Rn的协方差矩阵是一个n*n的矩阵,并且满足

协方差矩阵的对角元是方差

常用分布

许多简单的概率分布在机器学习的众多领域中都是有用的。

Bernoulli分布

Bernoulli分布,是单个二值随机变量的分布。由单个参数Φ∈[0,1] 控制,Φ 给出了随机变量等于1的概率。具有如下的一些性质

Multinoulli分布

Multinoulli分布或者范畴分布是指在具有k个不同状态的单个离散型随机变量上的分布,其中k是一个有限值。Multinoulli分布由向量p∈[0,1] k-1 参数化,其中每一个分量pi表示第i个状态的概率。最后的第k个状态的概率可以通过1-1Tp给出。

注意我们必须限制1Tp<=1.Multionoulli分布经常用来表示对象分类的分布,所以我们很少假设状态1具有数值1之类。因此,我们通常不需要去计算Multionoulli分布的随机变量的期望和方差。

Bernoulli分布和Multinoulli分布足够用来描述在它们领域内的任意分布。能够描述这些分布,不是因为它们特别强大,而是因为它们的领域很简单。它们可以对那些能够将所有的状态进行枚举的离散性随机变量进行建模。当处理的是连续型随机变量时,会有不可数无限多的状态,所以任何通过少量参数描述的概率分布都必须在分布上加以严格的限制。

高斯分布

实数上最常用的分布就是正态分布,也称为高斯分布

下图画出了正态分布的概率密度函数

正态分布由两个参数控制,μ∈R,和σ∈(0,∞)参数μ给出了中心峰值的坐标,这也是分布的均值:E[x] = μ,分布的标准差用σ表示,方差用σ2表示。

当我们要对概率密度函数求值时,需要对σ平方并且取倒数。当我们需要经常对不同参数下的概率密度函数求值时,一种更高效的参数化分布的方式是使用参数β∈(0,∞)来控制分布的精度或方差的倒数

采用正态分布在很多应用中都是一个明智的选择。当我们由于缺乏关于某个实数上分布的先验知识而不知道该选择怎样的形式时,正态分布是默认的比较好的选择。由两个原因

1. 我们想要建模的很多分布的真实情况是比较接近正态分布的。中心极限定理说明很多独立随机变量的和近似服从正态分布。这意味着在实际中,很多复杂系统都可以被成功地建模成正态分布的噪声,即使系统可以被分解成一些更结构化的部分。

2. 具有相同方差的所有可能的概率分布中,正态分布在实数上具有最大的不确定性。我们可以认为正态分布是对模型加入的先验知识量最少的分布。充分利用和证明这个想法需要更多的数学工具。

正态分布可以推广到Rn空间,这种情况下被称为多维正态分布。它的参数是一个正定对称矩阵∑

参数μ 仍然表示分布的均值,只不过现在是向量值。参数∑给出了分布的协方差矩阵。和单变量的情况类似,当我们希望对很多不同参数下的概率密度函数多次求值时,协方差矩阵并不是一个很高效的参数化分布的方式,以为内对概率密度函数求值时需要对∑求逆。可以使用一个精度矩阵β进行替代

我们常常把协方差矩阵固定成一个对角阵。更简单的版本是各向同性高斯分布,它的协方差矩阵是一个标量乘以单位阵。

指数分布和Laplace分布

深度学习中,需要一个在x=0点处取得边界点的分布。为了实现这一目的,可以使用指数分布

指数分布用指示函数1x>=0来使得当x取负值时的概率为零

一个联系紧密的概率分布是Laplace分布,允许我们在任意一点μ处设置概率质量的峰值

Dirac分布和经验分布

希望概率分布中的所有质量都集中在一点上,可以通过Dirac delta函数定义概率密度函数来实现

Dirac delta函数被定义成在除了0以外的所有点的值都为0,但是积分为1.它是一种不同类型的数学对象,被称为广义函数,广义函数是依据积分性质定义的数学对象。可以把Dirac delta函数想成一系列函数的极限点,这一系列函数把除0以外的所有点的概率密度越变越小。

Dirac分布经常作为经验分布的一个组成部分出现

经验分布可以被定义成一个Multinoulli分布,对于每一个可能的输入,其概率可以简单地设为在训练集上那个输入值的经验频率

当我们在训练集上训练模型时,可以认为从这个训练集上得到的经验分布指明了采样来源的分布。它是训练数据的似然最大的那个概率密度函数

贝叶斯规则

我们经常会需要在已知P(y|x)时计算P(x|y)。幸运的是,如果还直到P(x) 可以用贝叶斯规则来实现这一目的

通常使用P(y)=∑xP(y|x)P(x) 来计算,所以我们并不需要事先直到P(y)的信息。

贝叶斯规则可以从条件概率的定义直接推导得出

信息论

主要研究对一个信号包含信息多少进行量化。

机器学习中,可以把信息论应用于连续型变量,某些信息长度的解释不再适用。

基本想法:一个不太可能的事件居然发生了,要比一个非常可能的事件发生,提供更多的信息。

比如“今天早上太阳升起”信息量很少,但“今天早上有日食”,信息量就很丰富。

通过这种基本想法来量化信息

1. 非常可能发生的事件信息量要比较少,并且极端情况下,确保能够发生的事件应该没有信息量

2. 较不可能发生的事件具有更高的信息量

3. 独立事件应具有增量的信息。例:硬币两次正面向上传递的信息量,应该是一次硬币正面向上的两倍

为满足上述3个性质,定义一个事件x=x的自信息(self-information)为

Ι(x) = -logP(x)

用log来表示自然对数,其底数为e。因此I(x)的单位是奈特(nats)。一奈特是以1/e的概率观测到一个事件时获得的信息量。其他的材料中使用底数为2的对数,单位是比特(bit)或者香农(shannons)。通过比特度量的信息只是通过奈特度量信息的常数倍。

:指乘方运算的结果。叫做n的m次幂或n的m次方。n^m叫做n的m次幂。

对数:求幂的逆运算,正如除法是乘法的倒数。如果a的x次幂等于N,那么数x叫做以a为底N的对数。记作x=logaN

常用对数:以10为底的对数,并记为log。

自然对数:以无理数e(e=2.71828...)为底的对数,并记为ln。

自信息只处理单个的输出。可以用香农熵(Shannon entropy)来对整个概率分布中的不确定性总量进行量化

 记作H(P)

一个分布的香农熵是指遵循这个分布的事件所产生的期望信息总量。给出了对依据概率分布P生成的符号进行编码所需的比特数在平均意义上的下界。

接近确定性的分布具有较低的熵;接近均匀分布的概率分布具有较高的熵。当x是连续的,香农熵被称为微分熵(differential entropy)

 #

数值计算

机器学习算法通常需要大量的数值计算。通常指通过迭代过程更新解的估计值来解决数学问题的算法,而不是通过解析过程推导出公式来提供正确解的方法。常见的操作包括优化(找到最小化或最大化函数值的参数)和线性方程组的求解。

上溢和下溢

舍入误差会导致一些问题,如果设计时没有考虑最小化舍入误差的累积,可能会导致算法失效。

一种极具毁灭性的舍入误差是下溢(underflow)。当接近零的数被四舍五入为零时发生下溢。许多函数在其参数为零而不是很小的正数时才会表现出质的不同。

另一种数值错误形式是上溢(overflow)。当大量级的数被近似为∞或-∞时发生上溢。导致这些无限值变为非数字。

对上溢和下溢进行数值稳定的一个例子是softmax函数。常用于预测与Multionoulli分布相关联的概率

理论上说,所欲的输出都应该为1/n。当c量级很大时,可能不会发生。

如果c是很小的负数,exp(c)就会下溢。意味着softmax函数的分母会变成0,最后的结果是未定义的。

如果c是很大的正数时,exp(c)的上溢再次导致整个表达式未定义。

这两个困难能通过计算softmax(z)同时解决,其中z=x-maxi xi,简单的代数表示,softmax解析上的函数值不会因为从输入向量减去或加上标量而改变。减去maxixi导致exp的最大参数为0,排除了上溢的可能性。

病态条件

条件数指函数相对于输入的微小变化而变化的快慢程度。输入被轻微扰动而迅速改变的函数对于科学计算来说可能是有问题的,因为输入中的舍入误差可能导致输出的巨大变化。

考虑函数f(x)=A-1x。当A∈Rn*n具有特征值分解时,其条件数为

最大和最小特征值的模之比。当该数很大时,矩阵求逆对输入的误差特别敏感。

敏感性是矩阵本身的固有特征,而不是矩阵求逆期间舍入误差的结果。即使我们乘以完全正确的矩阵逆,病态条件的矩阵也会放大预先存在的误差。

梯度的优化方法

优化指的是改变x以最小化或最大化某个函数f(x)的任务。

通常以最小化f(x)指代大多数最优化问题。最大化可以由最小化算法最小化-f(x)来实现。

最小化或最大化的函数称为目标函数(objective function)或准则(criterion)。当我们对其进行最小化时,把它称为代价函数(cost function)、损失函数(loss function)、误差函数(error function)

#

机器学习基础

深度学习是机器学习的一个特定分支。

学习算法 

学习:对于某类任务T和性能度量P,一个计算机程序被认为可以从经验E中学习是指,通过经验E改进后,它在任务T上由性能度量P衡量的性能有所提升。

任务T 

学习过程本身不能算是任务,学习是我们所谓的获取完成任务的能力。

通常机器学习任务定义为机器学习系统应该如何处理样本(example)。指我们从某些希望机器学习系统处理的对象或事件中收集到的已经量化的特征(feature)的集合。通常会将样本表示成一个向量x∈Rn,其中向量的每一个元素xi是一个特征。

机器学习可以解决很多类型的任务

  • 分类:指定某些输入属于k类中的哪一类。学习算法通常会返回一个函数f:Rn->{1,...,k}。当y=f(x)时,模型将向量x所代表的输入分类到数字码y所代表的类别。分类任务中有一个任务是对象识别,其中输入的是图片,输出的是表示图片物体的数字码。例如识别不同饮料,识别人脸。
  • 输入缺失分类:当输入向量的每个度量不被保证时,分类问题将会变得更具有挑战性。为了解决分类任务,学习算法只需要定义一个从输入向量映射到输出类别的函数。当一些输入可能丢失时,学习算法必须学习一组函数,而不是单个分类函数。每个函数对应着分类具有不同缺失输入子集的x。使用n个输入变量,可以获得每个可能的缺失输入集合所需的所有2n个不同的分类函数。
  • 回归:程序需要对给定输入预测数值。学习算法需要输出函数f:Rn->R。除了返回结果的形式不一样外,这类问题和分类问题是很像的。这类任务的一个示例是预测投保人的索赔金额(用于设置保险费),或者预测证券未来的价格。用在交易算法中。
  • 转录:这类任务中,机器学习系统观测一些相对非结构化表示的数据,并转录信息为离散的文本形式。例如:光学字符识别要求程序根据文本图片返回文字序列(ASCII码或Unicode码)。谷歌街景以这种方式使用深度学习处理街道编号。另一个例子是语音识别,计算程序输入一段音波形,输出一序列音频记录中所说的字符或单词ID的编码。深度学习是现代语音识别系统的重要组成部分。
  • 机器翻译:输入是一种语言的符号序列,程序必须将其转化成另一种语言的符号序列。适用于自然语言,如将英语译成法语。
  • 结构化输出:输出是向量或者其他包含多个值的数据结构,并且构成输出任务的输出是向量或者其他包含多个值的数据结构,并且构成输出的这些不同元素间具有重要关系。这是一个很大的范畴,包含转录任务和翻译任务在内的很多其他任务。例如语法分析,映射自然语言句子到语法结构树,并标记树的节点为动词、名词、副词等。另一个例子是图像的像素级分隔,将每一个像素分配到特定类别。可用于标注航拍照片中的道路位置,输出结构形式不需要和输入尽可能相似。
  • 异常检测:程序在一组事件或对象中筛选,并标记不正常或非典型的个体。例如信用卡欺诈检测,通过对你的购买习惯建模,信用卡公司可以检测到你的卡是否被滥用。如果窃取你的信用卡或信用卡信息,采购物品的分布通常和你的不同。
  • 合成和采样:程序生成一些和训练数据相似的新样本。通过机器学习、合成和采样可以在应用中非常有用,可以避免大量昂贵或者乏味费时的手工工作。例如,视频游戏自动生成大型物体或风景的纹理。希望采样或合成过程可以根据给定的输入生成一些特定类型的输出。
  • 缺失值填补:算法给定一个新样本x∈Rn,x中某些元素xi缺失。算法必须填补这些缺失值
  • 去噪:算法的输入是,干净样本x∈Rn,经过未知损坏过程后得到的损坏样本。算法根据损坏后的样本预测干净的样本,或者预测条件概率分布
  • 密度估计或概率质量函数评估:机器学习算法学习函数,其中Pmodel(x)可以解释成样本采样空间的概率密度函数或者概率质量函数。

性能度量P

对于评估机器学习算法的能力,必须设计其性能的定量度量。通常性能度量P是特定于系统执行的任务T而言的。

对于分类、缺失输入分类和转录任务,通常度量模型的准确率(accuracy)。准确率是指该模型输出正确结果的样本比率。也可以通过错误率(errorrate)得到相同的信息。错误率是指该模型输出错误结果的样本比率。通常把错误率称为0-1损失的期望。在一个特定的样本上,如果结果是对的,那么0-1损失是0;否则是1.对于密度估计这类任务,度量准确率,错误率或者其他类型的0-1损失是没有意义的。

使用测试集(testset)数据来评估系统性能,将其与训练机器学习系统的训练集数据分开

性能度量的选择或许看上去简单且客观,但是选择一个系统理想表现对应的性能度量通常是很难的。

在执行转录任务时,应该度量系统转录整个序列的准确率,还是应该用一个更细粒度的指标,对序列中正确的部分元素以正面评价?设计的选择取决于应用。

经验E

机器学习算法可以分为无监督(unsupervised)算法和监督(supervised)算法。

可以被理解为在整个数据集(dataset)上获取经验。数据集是指很多样本组成的集合。有时我们也将样本称为数据点(data point)

无监督学习算法:训练含有很多特征的数据集,然后学习出这个数据集上有用的结构性质。深度学习中,通常要学习生成数据集的整个概率分布。比如密度估计或是隐式地,比如合成或去噪。还有一些其他类型的无监督学习任务,例如聚类,将数据集分成相似样本的集合。

监督学习算法:训练含有很多特征的数据集,不过数据集中的样本都有一个标签(label)或目标(target)。学习如何根据测量结果将样本划分为不同品种。

大致来说,

无监督学习设计观察随即向量x的好几个样本,试图显示或隐式地学习出概率分布p(x),或者该分布一些有意思的性质。

监督学习包含观察随机乡里那个x及其相关联的值或向量y,然后从x预测y,通常是估计p(y|x)。

监督学习源自这样一个视角,教员或老师提供目标y给机器学习系统,指导其应该做什么。无监督学习中,没有教员或老师,算法必须学会在没有指导的情况下理解数据。

容量、过拟合和欠拟合

在先前未观察到的输入上表现良好的能力称为泛化(generaliza-tion)

在训练集上计算一些被称为训练误差(training error)的度量误差,目标是降低训练误差。

机器学习和优化不同的地方在于,希望泛化误差、测试误差很低。泛化误差被定义为新输入的误差期望。期望的计算基于不同的可能输入,采自系统在现实中遇到的分布。

度量模型在训练集中分出来的测试集(test set)样本上的性能,来评估学习模型的泛化误差

统计学习理论(statisticl learning theory)提供了一些理论。如果训练集合测试集的数据是任意收集的,那么我们能够做的确实很有限。如果可以对训练集和测试集数据的收集方式有些假设,那么能对算法做出改进。

训练集合测试集数据通过数据集上被称为数据生成过程(data generating process)的概率分布生成。通常会做一系列独立同分布假设(i.i.d. assumption)的假设。每个数据集中的样本都是彼此相互独立的(independent),并且训练集合测试集是同分布的(identically distributed),采样自相同的分布。使我们能够在单个样本的概率分布描述数据生成过程。相同的分布可以用来生成每一个训练样本和每一个测试样本。

这个共享的潜在分布称为数据生成分布(data generating distribution),记作Pdata

测试误差期望会大于或等于训练误差期望。决定机器学习算法是否好的因素有两个

1. 降低训练误差

2. 缩小训练误差和测试误差的差距

这两个因素对应机器学习的两个主要挑战:欠拟合(underfitting)和过拟合(overfitting)。

欠拟合是指模型不能再训练集上获得足够低的误差。

过拟合是指误差和测试误差之间的差距太大。

通过调整模型的容量(capacity),可以控制模型是否偏向于过拟合或者欠拟合。通俗来讲,模型的容量是指拟合各种函数的能力。容量低的模型可能很难拟合训练集。容量高的模型可能会过拟合,因为记住了不适用于测试集的训练集性质。

控制训练算法容量的方法是选择假设空间(hypothesis space),学习算法可以选择为解决方案的函数集。

没有免费午餐定理

所有可能的数据生成分布上平均之后,每一个分类算法在未事先观测的点上都有相同的错误率。换言之,在某种意义上,没有一个机器学习算法总是比其他的要好。能够设想的最先进的算法和简单地将所有点归为同一类的简单算法有相同的平均性能(所有可能的任务上)

意味着,机器学习研究的目标不是找一个通用学习算法或是绝对最优的学习算法,而是理解什么样的分布与人工智能获取经验的“真实世界”相关,以及什么样的学习算法在我们关注的数据生成分布上效果最好。

正则化

可以通过两种方式控制算法的性能,一是允许使用的函数种类。二是这些函数的数量

相比于某一个学习算法,可能更偏好另一个学习算法。意味着两个函数都是符合条件的,但是我们更偏好其中一个。只有非偏好函数比偏好函数在训练数据集上效果明显好很多时,我们才会考虑非偏好函数。

可以加入权重衰减(weight decay)来修改线性回归的训练标准。带权重衰减的线性回归最小化训练集上的均方误差和正则项的和J(w),其偏好于平方L2范数较小的权重。

其中λ是提前挑选的值,控制我们偏好小范数权重的程度。当λ=0时,没有任何偏好。越大的值偏好范数越小的权重。最小化J(w)可以看做拟合训练数据和偏好小权重范数之间的权衡。会使得解决方案的斜率较小,或是将权重放在较少的特征上。可以训练具有不同λ值的高次多项式回归模型,来说明如何通过权重衰减控制模型欠拟合或过拟合的趋势。

正则化一个学习函数f(x;0)的模型,可以给代价函数添加被称为正则化项(regularizer)的惩罚。

正则化指修改学习算法,使其降低泛化误差而非训练误差。正则化是机器学习领域的中心问题之一,只有优化能够与其重要性相提并论。

对函数的偏好是比增减假设空间的成员函数更一般地控制模型容量的方法。可以去掉假设空间中的某个函数看做对不赞成这个函数的无限偏好。

点估计

点估计试图为一些感兴趣的量提供单个“最优”预测。感兴趣的量可以是单个参数,或是某些参数模型中的一个向量参数。

为了区分参数估计和真实值,习惯将参数θ的点估计表示为

令{x(1),..,x(m)}是m个独立同分布(i.i.d.)的数据点。点估计(point estimator)或统计量(statistics)是这些数据的任意函数:

定义不要求g返回一个接近真实θ的值,或者g的值域恰好是θ的允许取值范围。点估计的定义非常宽泛,给了估计量的设计者极大的灵活性。

偏差

估计的偏差被定义为

期望作用在所有数据(从随机变量采样得到的)上,θ是用于定义数据生成分布的θ的真实值。如果bias(θm)=0,那么估计量θm被称为是无偏(unbiased),意味着E(θm)=θ。

如果估计值θm被称为渐近无偏(asymptotically unbiased),意味着

监督学习算法

大部分监督学习算法是基于估计概率分布p(y|x)。可以用最大似然估计找到对于有参分布族p(y|x; θ)最好的参数向量θ。

线性回归对应于分布族

通过定义一族不同的概率分布,可以将线性回归扩展到分类情况中。如果有两个类,类0和类1,那么只需要指定这两类之一的概率。类1的概率决定了类0的概率,因为这两个值加起来必须等于1。

用于线性回归的实数正态分布是用均值参数化的。提供这个均值的任何值都是有效的。二元变量上的分布稍微复杂些,因为它的均值必须始终在0和1之间。

解决这个问题的一种办法是使用logistic sigmoid函数将线性函数的输出压缩进区间(0,1)。可以解释为概率

这个方法被称为逻辑回归(logistic regression),该模型用于分类并非回归

线性回归中,可以通过求解正规方程以找到最佳权重。逻辑回归会更困难些,其最佳权重没有闭解。必须最大化对数似然来搜索最优解。可以通过梯度下降算法最小化负对数似然来搜索。

确定正确的输入和输出变量上的有参条件概率分布族,相同的策略基本上可以用于任何监督学习问题。

支持向量机

支持向量机(support vector machine,SVM)是监督学习中最有影响力的方法之一。类似于逻辑回归,这个模型也是基于线性函数wTx+b的。不同于逻辑回归的是,支持向量机不输出概率,只输出类别。当wTx+b为正时,支持向量机预测属于正类。当wTx+b为负时,支持向量机预测属于负类。

支持向量机的一个重要创新是核技巧(kernel trick)。核技巧观察到许多机器学习算法都可以写成样本间点积的形式。例如,支持向量机中的线性函数可以重写为

其中,x(i)是训练样本,α是系数向量。学习算法重写为这种形式允许我们将x替换为特征函数的输出,点积替换为被称为核函数(kernel function)的函数。

使用核估计替换点积之后,可以使用如下函数进行预测

核技巧十分强大有两个原因:

其一,使我们能够使用保证有效收敛的凸优化技术来学习非线性模型(关于x的函数)。这是可能的,因为我们可以认为Φ是固定的,仅优化α,即优化算法可以将决策函数视为不同空间中的线性函数。

其二,核函数k的实现方法通常比直接构建Φ(x)再算点积高效很多

最常用的核函数是高斯核(Gaussian kernel)

这个核也称为径向基函数(radial basis function,RBF)核,因为其值沿v中从u向外辐射的方向减少。高斯核对应于无限维空间中的点积,但是该空间的推导没有整数上最小核的示例那么直观。

可以认为高斯核在执行中一种模板匹配(template matching)。训练标签y相关的训练样本x变成了类别y的模板。当测试点x/到x的欧几里得距离很小,对应的高斯核响应很大时,表明x'和模板x非常相似。该模型进而会赋予相对应的训练标签y较大的权重。总的来说,预测会将组合很多这种通过训练样本相似度加权的训练标签。

许多其他的线性模型也可以通过这种方法来增强。使用核技巧的算法类别被称为核机器(kernel machine)或核方法(kernel method)

核机器的一个主要缺点是计算决策函数的成本关于训练样本的数目是线性的。因为第i个样本共享 αik(x,x(i)) 到决策函数。支持向量机能够通过学习主要包含零的向量α,以缓和这个缺点。

当数据集很大时,核机器的计算量也会很大。带通用核的核机器致力于泛化得更好。现代深度学习的设计旨在克服核机器的这些限制。当前深度学习的复兴表明神经网络能够在MNIST基准数据上胜过RBF核的支持向量机。

其他简单的监督学习算法

简要介绍过另一个非概率监督学习算法,最近邻回归。

k-最近邻

一类可用于分类或回归的技术。作为一个非参数学习算法,k-近邻并不局限于固定数目的参数。通常认为k-最近邻算法没有任何参数, 而是使用训练数据的简单函数。甚至也没有一个真正的训练阶段或学习过程。测试阶段我们希望在新的测试输入x上产生y,需要在训练数据X上找到x的k-最近邻。然后返回训练集上对应的y值的平均值。

分类情况中,可以关于one-hot编码向量c求平均,其中cy=1,其他的i值取ci=0。可以解释这些one-hot编码的均值为类别的概率分布。作为一个非参数学习算法,k-近邻能达到非常高的容量。

假设一个0-1误差度量性能的多分类任务。在设定中,当训练样本数目趋向于无穷大时,1-最近邻收敛到两倍贝叶斯误差。超出贝叶斯误差的原因是它们会随机从等距离的临近点中随机挑一个。而存在无限的训练数据时,所有测试点x周围距离为零的邻近点有无限多个。如果使用所有这些临近点投票的决策方式,而不是随机挑选,那么该过程将会收敛到贝叶斯错误率。

k-近邻高容量使其在训练样本数目大时能够获取较高精度。然而,它的计算成本很高,另外在训练集较小时泛化能力很差。

k-近邻的一个弱点是它不能学习出哪一个特征比其他更具识别力。

假设要处理一个回归任务,其中x∈R100是从各向同性的高斯分布中抽取的,但是只有一个变量x1和结果相关。进一步假设该特征直接决定了输出,即在所有情况中y=x1.

最近邻回归不能检测到这个简单模式,大多数点x的最近邻将取决于x2到x100的大多数特征,而不是单独取决于特征x1。因此,小训练集上的输出将会非常随机。

决策树(decision tree)

决策树及其变种是另一类将输入空间分成不同的区域,每个区域有独立参数的算法。

决策树的每个节点都与输入空间的一个区域相关联,并且内部节点继续将区域分成子节点下的子区域(通常使用坐标轴拆分区域)。空间由此细分成不重叠的区域,叶节点和输入区域之间形成一一对应的关系。每个叶结点将其输入区域的每个点映射到相同的输出。

如果学习任意大小的决策树,那么它可以被视作非参数算法。然而实践中通常有大小限制,作为正则化将其转变成有参模型。决策树通常有大小限制,作为正则化将其转变成有参模型。决策树通常使用坐标轴相关的拆分,并且每个子节点关联到常数输出,因此有时解决一些对于逻辑回归很简单的问题很费力。

假设有一个二分类问题,当x2>x1时分类为正,则决策树的分界不是坐标轴对齐的。因此决策树将需要许多节点近似决策边界,坐标轴对齐使其算法步骤不断地来回穿梭于真正的决策函数。

无监督学习算法

只处理“特征”,不操作监督信号。监督和无监督算法之间的区别没有规范严格的定义,因为没有客观的判断来区分监督者提供的值是特征还是目标。

无监督学习的大多数尝试是指从不需要人为注释的样本的分布中抽取信息。该术语通常与密度估计相关,学习从分布中采样、学习从分布中去噪、寻找数据分布的流形或是将数据中相关的样本聚类。

经典的无监督学习任务是找到数据的“最佳”表现。“最佳”可以是不同的表示,但一般来说,指该表示在比本身表示的信息更简单或更易访问而受到一些惩罚或限制的情况下,尽可能地保存关于x更多的信息。

最常见的3种包括低维表示、稀疏表示、独立表示

低维表示尝试将x中的信息尽可能压缩在一个较小的表示中。

稀疏表示将数据集嵌入到输入项大多数为零的表示中。通常用于需要增加表示维数的情况,使得大部分为零的表示不会丢失很多信息。使得表示的整体结构倾向于将数据分布在表示空间的坐标轴上。

独立表示视图分开数据分布中变化的来源,使得表示的维度是统计独立的。

这三个标准并非相互排斥,低维表示通常会产生比原始的高维数据具有较少或较弱依赖关系的元素。因为减少表示大小的一种方式是找到并消除冗余。识别并去除更多的冗余使得降维算法在丢失更少信息的同时显现更大的压缩。

主成分分析

PCA算法提供了一种压缩数据的方式。将PCA视为学习数据标识的无监督学习算法。这种基于上述简单表示的两个标准。

PCA学习一种比原始输入维度更低的表示。也学习了一种元素之间彼此没有线性关系的表示。这是学习表示中元素统计独立标准的第一步。要实现完全独立性,表示学习算法也必须去掉变量间的非线性关系。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/chenxygx/p/8473903.html

你可能感兴趣的文章
使用 WordPress 的导航菜单
查看>>
input只能输入数字和小数点,并且只能保留小数点后两位 - CSDN博客
查看>>
js 不固定传参
查看>>
远程调试UWP遇到新错误Could not generate the root folder for app package ......
查看>>
Knockout.js 数据验证之插件版和无插件版
查看>>
git--windwos下的安装与使用(一)
查看>>
[倍增][最短路-Floyd][dp]
查看>>
SpringAOP用到了什么代理,以及动态代理与静态代理的区别
查看>>
利用STM32CubeMX来生成USB_HID_Mouse工程【添加ADC】(1)
查看>>
【leetcode】Populating Next Right Pointers in Each Node
查看>>
获取请求参数乱码的问题
查看>>
代码实现:判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称...
查看>>
Android客户端测试点
查看>>
Jquery:怎样让子窗体的div显示在父窗体之上
查看>>
01概率
查看>>
.NET LINQ 元素操作
查看>>
Shell脚本
查看>>
MatLab Load cv::Mat 导入数据
查看>>
html+css相关笔记(一)
查看>>
基于块流协议保证音频优先发送
查看>>