机器学习,讨论的是如何让计算机程序进行学习。因为现实世界中有很多问题,不能通过直接编程解决,如手写数字识别,自动驾驶等。人们希望计算机程序也能像人一样,从已有的经验中进行学习,来提高它的性能。
那什么是机器学习了?首先来看什么是学习。学习的一般说法是,在经验的作用下,行为的改变。学习有一个要素,那就是经验,学习的结果是行为的改变。如果人经过学习后,并没有改变其行为,则不能称其学习了。机器学习的概念略有不同,因为学习的主体从人变成了计算机程序。机器学习的最早的一个非正式描述是 1959年,由Arthur Samuel给出:Field of study that gives computers the ability to learn without being explicitly programmed。机器学习是一种学习的领域,它给计算机学习的能力,而没有经过显式编码。这个显式编码应该是针对学习的结果来说的,即计算机学到的 东西并不是人写到程序里的,比如Arthur Samuel写了一个下棋的程序,经过与程序本身对奕很多盘后,能轻易把Arthur Samuel击败,这就证明学习的结果不是显示编码的。机器学习的更现代的义是1998年由卡内基.梅隆大学的Tom Mitchell提出,这个定义还押了韵。A computer program is said to learn from experience E, with respect to some task T, and some performance measure P, if its performance on T, as measured by P, improves with experience E. 简言之,称计算机程序从经验中学习了,是说它对于某个任务的性能提高了,这个性能是通过P来度量的。使用机器学习方法来解决某个任务,首先需要对这个任务选取合适的原型,如线性回归,Logistic 回归,朴素贝叶斯,SVM(支持向量机)等等,然后通过经验来优化性能度量P。这里先来说说性能度量P。原型选择好以后,我们需要根据一定的方法来调整原型的参数,从而达到优化性能度量P的目的。机器学习的理论很大程度上都是在讲优化,如最小训练误差,最小均方差,最大似然率,凸集优化等。机器学习的过程,就是利用经验,来对性能度量P最优化的过程。在实际中,我们并不知道最优是个什么样子,机器学习的结果是对最优值的一个估计,这个估计以大概率收敛于最优值。
根据经验的不同,机器学习可以分做以下三类:监督学习(Supervised Learning),无监督学习(Unsupervised Learning)以及增强学习(Reinforcement Learning)。监督学习是指在训练经验中明确告诉了正确结果,这就和教小孩认水果一样,期望他在学习后能正确认出水果的种类。先给他一个苹果,告诉 他,这是苹果。再给他一个苹果,告诉他,这是苹果。如此几次之后,再给他一个苹果,问他,这是什么?如果小孩悟性还好的话,就会说,”这是苹果“。给他一 个梨,再问他,如果说”这不是苹果“。这就表示学会了,用机器学习的术语,就叫收敛。如果答的不对,那么说明还需要继续训练。监督学习算法的输出如果是连续的,称为回归(Regression),如果是离散的,称为分类(Classification)。大部分的机器学习任务都是监督学习。无监督学习的只有训练样本并没有正确结果,继续上面那个例子,这次给小孩一堆苹果,梨和桔子,我们不告诉他这都是些什么,只让他把这些水果按它们的品种分开。待他分开这些 水果后,再给他一个桔子,我们期望他能把这个放到桔子那一堆。非监督学习的常用方法是聚类。最后一类是增强学习,这在机器人领域应用广泛。比如小孩如果乖乖的坐在那吃饭,我们就说乖宝宝,如果他到处乱动,把饭吃得桌子上比碗里还多,多半就要被说好好吃饭,坏宝宝之类的。多次以后,宝宝就会发现,如果他表现听话些,大家都会夸他,喜欢和他玩,拍拍他头之类的,如果不听话,就会得不到这些。宝宝就会尽量往听话的方面表现,以得到大家的赞扬和好感,特别是做了坏事以后......这就是增强学习,我们只对程序的行为做出评价,程序就会做出更有可能得到正面评价的行为。