上半年的alphago围棋大战李世石,以4:1的比分大胜李世石——[新浪科技-AlphaGo最终局战胜李世石 人机大战总比分1:4],这也让人工智能再一次的吸引了全世界人的目观,其中的一些词汇也是火了一把,人工智能(Artificial intelligence),深度学习(Deep learning)以及DeepMind。这里稍微解释以上几个词汇。
上半年的alphago围棋大战李世石,以4:1的比分大胜李世石——新浪科技-AlphaGo最终局战胜李世石 人机大战总比分1:4,这也让人工智能再一次的吸引了全世界人的目观,其中的一些词汇也是火了一把,人工智能(Artificial intelligence),深度学习(Deep learning)以及DeepMind。这里稍微解释以上几个词汇。
人工智能:人工智能格式计算机科学的一个分支,它研究的是计算机模拟人的意识,思维方式来处理问题。就是说计算机能像人一样思考。
深度学习:深度学习是只是机器学习的一类方法,机器学习是人工智能的一个分支,主要是实现人工智能的一些方法,可以说是方法论。
DeepMind:DeepMind只是一个组织,主要研究方向也就是深度学习相关内容。现在被Google收购
机器学习概论
深度学习是一种特殊的机器学习(machine learning)方法,为了更好的理解深度学习,首先要对机器学习的主要内容有一个大致的了解。接下来的一些章节是机器学习的一些重要的方法。这样对于新手读者或者那些想要对机器学习有一个更加广阔了解的人来说基本都能全面覆盖。如果你对机器学习的基本方法比较了解可以略过这些内容。
我们先定义学习算法到底是什么,提出以下的例子:线性回归算法(Linear regression algorithm)。然后,我们会继续描述如何拟合训练数据发现其模式,把该模式推广到新的数据中。这其实就是学习的基本定义,能从训练数据中学到“知识”,然后把该“知识”应用到新的数据中。大部分机器学习算法需要学习的其实是模型的参数。为了得到该学习的模型一般是最小化一个代价函数,该函数需要求解的未知数就是模型的参数,而该模型的已知变量就是训练数据集。机器学习的本质是应用统计学习,统计训练数据的模型得到一系列的规律。
大部分的机器学习方法可划分成以下两种:监督学习(supervised learning)和无监督学习(unsupervised learning)。对于这两种分类,我也会给出一些学习算法的实例。大部分的机器学习(深度学习)问题都是通过随机梯度下降的方法解决的,随机梯度下降是一种优化算法,简单来说就是求解代价函数的方法。所以把机器学习可以看成是以下的几个组成:一个代价函数,一个模型,一个数据集和一种求解的算法。
学习算法
一个机器学习算法其实就是能从数据中学到“知识”的一种方法。但是如何定义学习呢?Mitchell 1997年给了一个定义:一个计算机程序通过经验E完成了一个任务T,评价它的性能的办法是P。所以这章的内容将会从机器学习的任务T,评价方法P和经验E来展开。
机器学习任务
机器学习可以解决一些人类能够解决的任务,如果是提供一些训练数据和一个任务,机器学习能做的效果也是接近于人类的。一般的,机器学习要做的事情是对于一个样本该如何处理。这个样本可以用特征来表示,也就是说一个样本可以通过一个n维的向量来表示,$x \in R^n$。比如一幅图像可以用像素值来表示。
许多任务都能通过机器学习来解决,包括以下的任务:
分类(classification)
在这个任务中,计算机程序需要讲一个样本分在K个类中的一个。K是指所有的类别的个数。为了解决这个问题需要得打这样一个函数$f: R^n \rightarrow {1,…,K}$,该函数$y=f(x)$可以表示从样本x到类别标签y的映射。这样的一个函数就能解决我们需要的分类任务。一般的,函数f的输出是一个概率分布,它是指样本x属于每一个类别的概率,概率最高的那个即是x的类标。一个分类的例子就是物体识别(Object Recognitions),即给定一张图像,判断这张图像属于什么物体。
现在解决物体识别任务基本最好的方法都是深度学习(Krizhevsky et al 2012)
回归任务(Regression)
在这个任务中,计算机程序需要的是在给定一个输入时,输出一个数值。解决该任务需要得到的函数是 $f:R^n \rightarrow R$,该任务与分类任务很像但不同的地方是输出是一个数值(连续的)而不是一个类标(离散的)。例如我们要预测从某地到另一地所需要的时间,输入的可能是两个地点或者一连串地点的坐标信息,需要输出的是花费的时间time。再比如本文开始alphago下围棋问题,计算机程序要做的是在当前状态下判断最佳的下棋位置,即计算每一个空位的得分。
机器翻译(Machine Translation)
在机器翻译的任务中,给定某种语言的一个文字序列,需要翻译成给定语言,即得到另一个文字序列。比如中文翻译成英文,现在常用到的一些应用包括Google翻译,百度翻译都是机器学习的成果。现在机器翻译大都是基于深度学习的一些方法。
其实还包括许多的机器学习任务,比如推荐系统,结构输出,聚类,目标检测等。还可以通过应用分成三大类,一个是对于图像的处理,还有一个是对于文本处理和语音。对于图像比如给图像着色,找出图像中的人脸,找出背景图,识别图片中的物体,描述一幅图像等。对于文本处理比如机器翻译,文本分类,文本的情感分析,文本总结,阅读理解等。语音可以是语音识别,生成语音等。能想到的很多任务都是机器学习的常见任务,大概机器学习的终极目标就是解决人类能解决的所有问题吧。
性能方法
为了评价一个机器学习算法的能力好坏,需要设计一个性能的评价方法P,不同的机器学习任务一般有不同的评价方法。对于一个分类任务,评价办法就是对于给定一个测试集合,分类之后计算其分类的正确率(Accuracy),即算法分类得到正确结果的比例,也可以用错误率来评价。正确率越高(错误率越低)则该算法的性能越好,否则越差。而对于一个回归问题,可以计算预测结果与正确结果的误差来评价。总误差越小说明算法的性能越好。对于一些其他的机器学习的评价也可以通过误差来计算。有了评价方法就可以判断机器学习算法的性能,人们根据这个来挑战更加好的机器学习算法。