DennyQi's Log

00 What is Machine Learning

当我们说“机器学习(machine learning)”时,我们指的是一种解决问题的方法,这种方法不同于传统的“计算机算法”。

一个传统的计算机算法是一段程序,一段程序本质上是一串图灵机上的指令,也即一个形式系统上的符号变换过程。所以,为了用计算机算法解决问题,编写程序的人必须事先考虑到程序运行中会出现的所有情况,想出对策以后用写代码的方式使得机器能够按照自己设计的对策运作,这就是传统的“算法设计”。在许多重要的问题上,人们已经发现众多优雅简洁的算法,甚至很多问题都可以证明不存在更优的算法。

然而,在很多更复杂却也很现实的问题中,传统算法无法取得很好的效果。例如图像识别问题(猫狗图片识别,手写数字识别等)。以猫狗识别为例。图像本质上是像素矩阵, 所以图像识别的问题理论上也可以用传统算法解决。不过可想而知算法设计者必须在代码中明确地做出指示:当像素之间满足怎样的逻辑关系时,就应当判定为狗;当像素之间满足怎样的逻辑关系时,就应当判定为猫。不难发现,这是个无比复杂的问题。很多人为此做了很多努力,却未能获得成功。这也是可想而知的,因为人类最初学会如何辨别猫狗的时候,并没有形成一套逻辑判别法,而是在“父母一遍又一遍指着猫或者猫的图片说‘你看,这是猫’”的过程中“不知不觉”学会的。甚至,在最需要逻辑和计算的时候,人类通常也不是因为有一套完备的逻辑判别法所以才能完成任务。比如学奥赛的时候,我们最初无法解决困难的问题,但做了几千道题以后就能够解决很多困难问题了,而我们在“刷题”之后学会解题方法,很多时候并不是因为我们学会了一套完备的逻辑判别法,而是“做多了就有感觉了”,也就是人们常说的“熟能生巧”。人们喜欢把这种“熟能生巧”称为“直观”。“直观”是存在于我们大脑中却未能被大脑提炼为规则的东西,而这些东西往往是人最可贵的东西。仔细想想也合理,倘若关于奥赛题目的一切都已经能被提取出规则,那只需要一个传统程序就可以漂亮解决所有题目,可如我们所见,这样一个传统程序并不存在。

在传统算法遇到瓶颈的同时,另一种方法悄然兴起,也就是我们所说的“机器学习”。依然以猫狗识别为例。这套方法认为,想要让人类去亲手设计判定“是猫还是狗”的具体规则,这样的做法是错误的。正确的做法应该是,让计算机自己通过大量猫狗的图片找出判定的规则。具体地,需要由人类亲手设计一个函数f(x,θ)f(\vec x,\vec \theta),其中x\vec x是输入图片的像素排列而成的向量,θ\vec\theta是一组待定的系数。这里我们可以不妨令ff的值域是[0,1][0,1],如果超过0.50.5就认为函数判定图像为狗,否则判定图像为猫。当ff设计的足够精巧,同时θ\vec\theta中包含足够多的系数且取到某组特定的值θ\vec \theta^*时,f(x,θ)f(\vec x,\vec \theta^*)应当会有很优秀的表现。所谓“优秀”就是指,f(x,θ)f(\vec x,\vec \theta^*)在猫狗识别的准确率上能做到比人类还高,或者通过一场人类设计的“猫狗识别考试”。而关键在于,人类并不亲手去寻找θ\vec\theta^*,而是去寻找另一个函数hfh_f,使得对于任意的θ0\vec\theta_0hf(θ0)h_f(\vec\theta_0)能够评估是好还是差、有多差。这一评估会为我们提供一个当前θ0\vec \theta_0是否需要修正以及如何修正的信号(signal),人类需要设计一套方法根据hfh_f提供的信号去更新θ0\vec \theta_0,直到θ0\vec\theta_0变得“足够优秀”。

从以上的论述中我们可以看到,有三件需要人类来设计的事:

  • (1) 如何设计ff的结构;
  • (2) 如何设计提供反馈信号的函数hfh_f
  • (3) 如何设计一套方法,能够根据hfh_f提供的信号来更新θ\vec \theta

对于(1),人们从生物学中寻找灵感,尤其是神经和大脑的构造。

对于(2),人们从大量数据中建构hfh_f

对于(3),通常会使用概率论和统计学上的数学方法。

为什么在图像识别的问题上,机器学习方法能够做得比传统方法更好?真的不存在传统程序能够解决图像识别问题吗?首先要注意到,机器学习最后得到的结果f(x,θ)f(\vec x,\vec\theta^*)本身就是一个确定的函数,所以实际上我们已经找到了一个“传统算法”,只不过这个算法的执行过程(参数θ\vec\theta^*)并不是人类直接编写的,而是机器自己推理出来的。机器学习方法给我们最独特的启发是,人类并不总是需要亲自从大量数据中总结规律,而是可以建造一个还原人类认知过程的系统,只要为这个系统提供恰当的环境,系统就会像人脑一样去总结规律。上面所说的三部分,分别还原了人类认知世界所需要的三个基本条件。(1)还原了人类认知能力的物理基础。比如,neural network还原了大脑的神经元网络结构;transformer还原了人类的注意力机制;(2)还原了“熟能生巧”的学习过程。比如,父母不断对着图片教小孩辨认猫狗,在小孩答对时奖励,在小孩答错时指出。(3)还原了“从错误中吸取教训”的学习过程。人类认识错误并改正的过程也隐藏在大脑中,在机器学习里通常会把(2)和(3)的过程一起用统计方法来处理。由此可见,机器学习方法的本质就是构建一套“人工”的“智能”。

其实人们很早就尝试过用计算机模拟人类认知过程,但早些年没有取得很好的效果。近几年人工智能的爆发,得益于计算机系统的计算效率越过了一个瓶颈,同时使得我们能够存储使用更海量的数据。现在计算机系统可以在足够多的数据上做足够长时间的迭代更新,从而达到前所未有的优秀效果。