首页 > 代码库 > 机器学习大总结(1)
机器学习大总结(1)
智能:
智能这个词可以用很多方法去定义。这里我们把它定义为能够根据某些情况做出正确的决定。做出好的决策需要知识,并且这种知识必须是一种可操作的,例如解释传感器数据并且使用它去做决策。
人工智能:
感谢那些人类曾经写过的程序,允许这些程序去做一些我们认为有用的事情。在这种情况下,计算机已经获得了某种程度的智能。在21世纪的开始的时候了,仍然有很多任务,人和动物可以很简单做到,而计算机却无法企及。许多这些任务落到人工智能的标签下,包括许多感知器和控制任务。为什么我们不可能写程序去干这些事情?我相信这是因为我们自己本身并不是真正的知道如何去做这些任务的,即使我们的大脑能够做到。做这些事情涉及的目前隐式的知识,但是我们通过数据和样本获得这些信息,例如观察在某种输入下,人类是如何做的。我们如何让机器去获得那种只能?使用数据和样本去建立可操作的知识就是机器学习。
机器学习:
机器学习有很长的历史了,并且有很多教科书讲了很多有用的道理。这里我们专注到几个最相关的课题。
学习的形式化:
首先,让我们把最一般的机器学习框架形式化一下。我们给定如下样本:
D={z1,z2,...,Zn}
zi是从一个未知的过程 p(z)的样本。我们给定一个损失函数L,它有两个参数,一个是决策函数f,一个是样本z,它返回一个实数。我们想去找到L(f,Z)的最小值。
有监督学习:
在有监督学习,每个样本Z=(X,Y) 函数f的入参是x,这里最常用的例子包括:
-回归: Y 是一个实数或者是向量,f的输出和y是一个集合,我们经常把损失函数作为均方差:
L(f,(x,y))=||f(x)-y||^2
-分类:y 是一个和分类序号对应的有限正整数,我们经常把这个损失函数作为一个对数函数,并且fi(x)=p(y=i|x),也就是说给定X, y=i的概率。
L(f,(x,y))=-log(Fy(X)) 这里的约束是 fy(x)>=0, sum(fi(x))=1
无监督学习:
在无监督学习
无监督学习中,我们学习到一个函数f,它帮助去描述一个未知概率分布p(z).某些函数直接估计p(z)自身(这个叫做密度估计)。在其他例子中,f是一个尝试描述密度主要集中在哪里。聚类算法将输入空间分割成区域(经常是一个样本为中心)。其他聚类算法创建了一个硬分区(比如k-means),而另一个则构建了软分区(例如gaussian mixture模型),这个软分区给出z属于每一个分类的概率。其他非监督学习算法是那些构建了新的z的表达。许多深度学习算法属于此类,PCA也算是这个。
直接泛化:
大多数泛化学习算法推荐了一个单一原则,直接泛化。它假设如果样本a如果和样本b接近,则对应的输出f(a)和输出f(b)应该接近。这是直接泛化插值的基本原则。这个原则是非常厉害,但是它有局限性,如果我们有多个函数怎么办?如果目标函数比训练的样本有多个输出?这样的话,直接泛化将不成立了,因为我们需要至少和目标函数一样多的样本,才能够覆盖多个函数,才能够通过这样的原则来泛化。换句话说,给定知识 D,人类大脑不一定只学习了一个函数就不做了,而是学会了很多函数,你这时候直接泛化就不成立了。
由于下面的原因这个问题和所谓维数诅咒深深的联系在了一起。
当输入空间是高纬度的,且指数级增长的时候,是很可能有多个函数需要学习的。举个例子,我们想去区别给定输入的10个不同的输出,并且,我们关心所有n个变量的10的N次方个配置。单单使用直接泛化,我们需要至少一个样本去泛化10的n次方个样本才能达到所有的泛化。
分布式表达 vs 本地表达 和间接泛化
整数N的一个简单的二进制直接表达是一个B位的序列,且 N<B, 所有的位是0,除了第N位,整数N的简单的二进制分布式表达是一个log2b位的序列,伴随着一个通常的N的二进制编码。在这个例子,我们看到,分布式表达可以是比本地的表达成指数级的高效。在相同的自由参数个数下,相比直接表达,分布式表达能够达到指数级别的能力。它们因此提供了更好泛化能力的潜力,因为学习理论表明样本的数目o(b)调优。
另一个区别是,聚类和主成分分析,或者限制伯瓷慢机。前面的是本地的,后面的是分布式的。
用k-means聚类,我们为每一个原型维护一个参数向量。例如,每个区域一个。在PCA,我们通过记录它的目标可能性的主方向来表达它的分布。现在想象一个简单的主成分解释器,在每一个的方向上,不管在那个方向上的投影是高于或者低于一个阀值,在d个方向上,我们能够区分2的第d次方个区域。RBMs是类似的,它定义了D个超平面,并且关联了一个位来标识在那个面的那一边。一个RBM然后关联了一个输入区间到每一个i表达位的配置。(这些位就是隐藏单元,在神经网络里的术语。)
RBM的参数的个数大约等于隐藏单元的个数和输入维数。 我们可以看到RBM的区域数目或者PCA的区域数目可以随着输入参数的个数指数级的增长,但是k-means的传统聚类区间表达的区域数量仅仅线性的和随着参数的数目增长。换句话说,意识到一个RBM可以泛化到一个和隐藏单元对应的配置的新的区域,这个样本却是没有被看到的,也就是说聚类算法不可能做到的。
智能这个词可以用很多方法去定义。这里我们把它定义为能够根据某些情况做出正确的决定。做出好的决策需要知识,并且这种知识必须是一种可操作的,例如解释传感器数据并且使用它去做决策。
人工智能:
感谢那些人类曾经写过的程序,允许这些程序去做一些我们认为有用的事情。在这种情况下,计算机已经获得了某种程度的智能。在21世纪的开始的时候了,仍然有很多任务,人和动物可以很简单做到,而计算机却无法企及。许多这些任务落到人工智能的标签下,包括许多感知器和控制任务。为什么我们不可能写程序去干这些事情?我相信这是因为我们自己本身并不是真正的知道如何去做这些任务的,即使我们的大脑能够做到。做这些事情涉及的目前隐式的知识,但是我们通过数据和样本获得这些信息,例如观察在某种输入下,人类是如何做的。我们如何让机器去获得那种只能?使用数据和样本去建立可操作的知识就是机器学习。
机器学习:
机器学习有很长的历史了,并且有很多教科书讲了很多有用的道理。这里我们专注到几个最相关的课题。
学习的形式化:
首先,让我们把最一般的机器学习框架形式化一下。我们给定如下样本:
D={z1,z2,...,Zn}
zi是从一个未知的过程 p(z)的样本。我们给定一个损失函数L,它有两个参数,一个是决策函数f,一个是样本z,它返回一个实数。我们想去找到L(f,Z)的最小值。
有监督学习:
在有监督学习,每个样本Z=(X,Y) 函数f的入参是x,这里最常用的例子包括:
-回归: Y 是一个实数或者是向量,f的输出和y是一个集合,我们经常把损失函数作为均方差:
L(f,(x,y))=||f(x)-y||^2
-分类:y 是一个和分类序号对应的有限正整数,我们经常把这个损失函数作为一个对数函数,并且fi(x)=p(y=i|x),也就是说给定X, y=i的概率。
L(f,(x,y))=-log(Fy(X)) 这里的约束是 fy(x)>=0, sum(fi(x))=1
无监督学习:
在无监督学习
无监督学习中,我们学习到一个函数f,它帮助去描述一个未知概率分布p(z).某些函数直接估计p(z)自身(这个叫做密度估计)。在其他例子中,f是一个尝试描述密度主要集中在哪里。聚类算法将输入空间分割成区域(经常是一个样本为中心)。其他聚类算法创建了一个硬分区(比如k-means),而另一个则构建了软分区(例如gaussian mixture模型),这个软分区给出z属于每一个分类的概率。其他非监督学习算法是那些构建了新的z的表达。许多深度学习算法属于此类,PCA也算是这个。
直接泛化:
大多数泛化学习算法推荐了一个单一原则,直接泛化。它假设如果样本a如果和样本b接近,则对应的输出f(a)和输出f(b)应该接近。这是直接泛化插值的基本原则。这个原则是非常厉害,但是它有局限性,如果我们有多个函数怎么办?如果目标函数比训练的样本有多个输出?这样的话,直接泛化将不成立了,因为我们需要至少和目标函数一样多的样本,才能够覆盖多个函数,才能够通过这样的原则来泛化。换句话说,给定知识 D,人类大脑不一定只学习了一个函数就不做了,而是学会了很多函数,你这时候直接泛化就不成立了。
由于下面的原因这个问题和所谓维数诅咒深深的联系在了一起。
当输入空间是高纬度的,且指数级增长的时候,是很可能有多个函数需要学习的。举个例子,我们想去区别给定输入的10个不同的输出,并且,我们关心所有n个变量的10的N次方个配置。单单使用直接泛化,我们需要至少一个样本去泛化10的n次方个样本才能达到所有的泛化。
分布式表达 vs 本地表达 和间接泛化
整数N的一个简单的二进制直接表达是一个B位的序列,且 N<B, 所有的位是0,除了第N位,整数N的简单的二进制分布式表达是一个log2b位的序列,伴随着一个通常的N的二进制编码。在这个例子,我们看到,分布式表达可以是比本地的表达成指数级的高效。在相同的自由参数个数下,相比直接表达,分布式表达能够达到指数级别的能力。它们因此提供了更好泛化能力的潜力,因为学习理论表明样本的数目o(b)调优。
另一个区别是,聚类和主成分分析,或者限制伯瓷慢机。前面的是本地的,后面的是分布式的。
用k-means聚类,我们为每一个原型维护一个参数向量。例如,每个区域一个。在PCA,我们通过记录它的目标可能性的主方向来表达它的分布。现在想象一个简单的主成分解释器,在每一个的方向上,不管在那个方向上的投影是高于或者低于一个阀值,在d个方向上,我们能够区分2的第d次方个区域。RBMs是类似的,它定义了D个超平面,并且关联了一个位来标识在那个面的那一边。一个RBM然后关联了一个输入区间到每一个i表达位的配置。(这些位就是隐藏单元,在神经网络里的术语。)
RBM的参数的个数大约等于隐藏单元的个数和输入维数。 我们可以看到RBM的区域数目或者PCA的区域数目可以随着输入参数的个数指数级的增长,但是k-means的传统聚类区间表达的区域数量仅仅线性的和随着参数的数目增长。换句话说,意识到一个RBM可以泛化到一个和隐藏单元对应的配置的新的区域,这个样本却是没有被看到的,也就是说聚类算法不可能做到的。
机器学习大总结(1)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。