21CTO社区导读:本文节选自《深度学习轻松学:核心算法与视觉实践》一书,由电子工业出版社出版。本文为活动文章,欢迎您参与。
图1-0
当你拿起本书时,我们已经携手踏上了探索机器学习的征程。机器学习作为人工智能的一个分支,近年来在科研和工业界有了很大的发展,同时也引起了圈内和圈外所有人的关注。现在,机器人的一些技能已经完全超出了旁观群众的认知,这使得全民又一次开始讨论“机器是否能够取代人类”这样的话题。
“机器取代人类”虽然是一个听上去让人不太舒服的话题,但是这个事情本身是令人向往的。最近几年,机器人在眼睛、耳朵、嘴巴和四肢方面的技术都有了很大提升,在某些领域,它的能力已经超过了一些专家的水平;在另一些领域,其能力也逼近专家的水平;在某些领域,其能力已经有了令人惊叹的重大突破。这些提升让人感到欣喜,因为机器人的表现离大家想象中的人工智能又近了一步。不过,从更深层的角度分析近几年机器学习的发展,我们又会发现一个残酷的事实:这几年深度学习的发展并不是完全得益于机器学习理论研究的新突破,主要是因为支撑理论的外部条件有了很大的提升。
让我们先回到机器学习本身,回到那些经过历史积淀的理论本身,看看它们究竟给我们设定了一个怎样的世界观,它们又有哪些启发我们的思维模式。其实,机器学习理论数十年没有本质变化这件事儿,从某种意义上说也是件好事,说明这个思维框架经得住时间的考验,也说明了它被学习的价值。
机器学习的形式
大家都知道,世界上的许多事物都可以从很多角度、用很多方法进行描述:我们可以十分详细地描述一个事物的细节,以图1-1所示的一朵花为例,我们可以说出这朵花的形状、颜色,花瓣有几朵,什么时节开花;也可以概括地描述一个事物,把一个抽象的名字冠在这种花上,以后见到这类花就统一叫它们这个名字。
图1-1
同样,我们可以描述一间房子的地理位置、周围环境、房屋使用面积和配套设施等,如图1-2所示;也可以用一个价格标记这个房屋的租赁价格。除了这些描述,我们还可以从时间和空间等不同角度对同一个事物做出不同的描述。
图1-2
很显然,这些描述都是针对同一个事物,那么描述之间必然存在某种关联关系。人类经过长时间的学习事件,已经可以在自己熟悉的领域轻松地完成这些描述的转换,而对于计算机,想让它在短时间内完成这些转换几乎是不可能的。它要通过人类的操作和指引才能具备这样的能力。在现实中,我们通常会遇到这样的问题:对于一个事物,关于它的最直观的描述可以以一种比较容易的方式获得,我们希望利用描述间的相关性,将这种描述转换成另一种相对抽象且不容易直接获得的描述。更进一步地,我们希望这个分析运算的事情能够由计算机自动完成,因为计算机运算速度快,每秒可以进行大量的数值计算;同时表现稳定,不知疲倦,没有情绪波动,给电就能工作,成本比人低,所以一旦将计算机的计算潜力激发出来,它就可以更好、更快地完成人类可以解决或者人类不易解决的问题。
因为现代的计算机主要基于数字计算实现,所以我们需要把要解决的问题全部以数字的形式表达出来。数值计算是计算机的强项,但是想把所有信息都用数字的形式表达出来还是有点难度的。为此,前辈们想尽了各种办法。比方说,想表示一朵花的大小,可以把这朵花想象成一个圆形,花蕊是这个圆形的圆心,然后测量这个圆的半径,那么这个半径就是一个可以被计算机使用的描述信息,这个信息在机器学习中一般被称作特征(Feature)。
大小这个属性比较好转化为特征,而且这个转化后的特征和我们的直觉吻合。然而,实际中有些事物就不那么好表示了。比方说,我们想把不同的中文词语用特征的方式表示出来,这件事情就会遇到不小的麻烦。由于特征最终需要以数值的方式表达,而数值天生具有可比较性,也具有度量这样的概念,那么词语与词语之间的度量该如何表示呢?如果像花朵大小那样,把所有的汉字映射到正整数数轴上,每一个汉字确实有了自己的数值表示方法,但是词语之间的比较就失去了意义。或者说,采用传统的定义在欧式距离下的距离测量方法变得不再适用。试想一下,如果我们有一个词语叫“如果”,它被映射到200,接着又有一个词语叫“但是”,它被映射到300,那么它们在欧式空间的距离:
表示什么意思呢?如果刚好有一个词语被映射到了100,那么这个词语是不是就是“如果”和“但是”的距离?还是说,这个结果有其他含义呢?这些问题一下子变得难以回答,至少和花朵大小这件事儿相比,这个距离难以解释。
那么,中文词语有什么可以表示的方法呢?一种比较简单的表示法被人们称为One Hot编码(One-Hotencoding),它的表示方法如下。
1.可以假设中文词语的个数是有限的,或者说我们考虑的中文词语集合是全体中文词语的一个子集,这个子集是有限的,这里假设一共有个词,于是我们定义一个维度为的空间,这个空间的每一维只能取两个值:0和1。
2.空间中的每一维代表一个词语,于是对于每一个词语,它都可以找到自己在这个空间的位置,也就是说,每一个词语都可以找出一个向量,这个向量在所有词语中排第个,那么这个向量的第位为1,其余位为0。这样,每一个词语都可以对应这个高维空间中的一个点,这个点的坐标就用上述方式构建的向量表示,如图1-3所示。
空间构建好了,下面该定义度量了。采用了这个空间后,度量的定义变得简单了许多。我们惊奇地发现,借用欧式空间中的距离计算方法衡量每一对词语之间的距离,每一对不同词语之间的距离是相同的,且大于0。从最直观的角度来看,由于每一对词所使用的文字不同,因此它们存在距离,同时用一个统一的距离表示词语间的差异也是可以理解的。但是从语意的角度来看,这样的距离度量显然是不合理的。基于人类的常识系统,不同的词语对之间的距离有可能是不同的。有些词语对之间的关系十分密切,有些词语对之间的关系则显得十分疏远,这样的关系并没有被这个空间表达出来,不过这个空间还是要比之前的正整数数轴强大不少,起码它的距离可以解释得很直观。
从上面的例子可以看出,中文词语存在于某个难以描述的空间中,这个空间里有一套自己的运转规则和体系,它的规则和体系与我们常见的空间不太相同。为了让计算机能够进行中文词语相关的工作,我们需要构建一个空间来表示这些词语。在构建空间的过程中有两个基本要求:一是要用当今计算机体系能够接受的形式表示;二是尽可能地和原始的空间靠近。刚才的One Hot编码方法满足了第一条,但是第二条做得并不好。这就好像我们在计算机上重新描绘了这个空间,但是丢失了一些原始空间的特性。想要更好地复原原始空间的内容,实际上还有很长的路要走。
前面介绍了许多关于特征描述量化的问题,下面就要看看描述之间应该被如何转换。前面提到同一个事物可以从不同角度以不同的细致程度被描述。一个事物可以被很简单地描述,也可以被很详细地描述;一个事物可以从一个角度描述,也可以从另一个角度描述。有时,我们需要从一个角度的描述转换到另一个角度,例如收到了关于一朵花的描述,读者可以从花的描述中知道被描述的花的种类。这是一种从具体描述到泛化描述的过程。同时,也可以从一个泛化的描述找寻具体的描述,例如从一朵花的花名联想到这种花的模样。
很显然,我们之所以可以完成两种描述的转换,是因为两者本质上描述了同一个事物,它们存在着很强的相关关系。在现实生活中,找到这样的关系并完成两者之间的转换是十分有必要的。人类每天都在做这种模式的事情,其中一种描述相对容易获得,而另一种描述可以通过转换获得,人类也希望机器能够帮助他们完成这样的工作。实际上,这个形式和我们曾经学习过的函数十分相像。函数的功能就是把输入经过某种变换转换成输出,在这个场景下,容易获得的特征一般作为函数的输入,期望得到的特征一般作为函数的输出。拥有了输入和输出,剩下的工作就是确定这个中间的映射。可以说,绝大部分的机器学习都遵循了这个模式,在机器学习中,一般将这个“映射”称为模型。
从总体上看,模型充当了映射的作用,但是映射的表现形式也有很多种。机器学习常见的学习方式有三种:监督学习、非监督学习和增强学习。监督学习和非监督学习的形式相对简单,我们先介绍这两种。在监督学习中,部分模型输入和对应的理想输出是已知的,这些输入输出通常是整个问题中所有输入输出的一个代表。由于理想输出已经知道,所以我们可以通过比较它和模型的输出结果判断模型的表现和期望是否一致,如果一致,那么证明模型表现很好;如果不一致,也可以从中发现模型输出和正确答案的差距,这样模型就可以在输入输出的“监督”下不断学习,让自己的结果更靠近“标准答案”。在非监督学习中,通常标准输出是未知的,我们不能判断模型的输出是否“完全正确”,只能通过其他的方法辅助判断结果的正确程度,所以它被称为非监督学习。监督学习和非监督学习的一般形式如图1-4所示。
图1-4
增强学习与前面两种方法不同,在这种学习方法中,模型需要对依时间排列的一连串输入状态(State)做出响应。当模型对指定的输入返回结果后,一个外部的环境(Environment)会对模型返回结果做出响应,并返回两个结果。
1.对模型的结果做评价,返回一个奖励(Reward)作为模型表现的评价。这个评价同监督学习的目标函数结果不同,它并不直接衡量模型结果与标准答案的差距,而是以一种奖励的形式返回,如果表现好那么奖励就会大,反之则会小。通常,这个奖励不但和当前模型的表现有关,还和模型在过去时间里的表现有关。
2.与此同时,环境还会返回一个新的输入(State),模型也会对这个输入开始新一轮的响应。
增强学习的模型架构比较复杂,这里就不再详细介绍了,上面介绍的内容如图1-5所示。
这三种学习方法是凭空产生的吗?当然不是。实际上,这三种学习方法和人的学习方法高度吻合,可以说每个人在自己的一生中都可能经历过这三种学习方式。
监督学习:大家在学校课堂里学到的知识绝大多数是通过监督学习学到的。1加1等于几?等于2。这样的问题都是有答案的,而答案就是关于问题的另外一种描述。在学校里,学生充当了函数的功能,如果学生给出的结果和标准答案不一样,学生就会被教育如何改正自己的错误,从而给出正确的答案。这个“做题看答案改错再做题”的过程和机器学习中模型训练的过程一致,只不过在这里训练的对象是我们自己。
非监督学习:这个部分在学校课堂上遇到得比较少,反而是在研究机构比较多。这类问题通常对应着“某某猜想”,或者是通过实验和分析得出某个未知的结论。由于没有训练的过程,而且不知道一个问题的答案,我们只能利用现有知识和现有的经验解决问题,并用一些间接的方式评价模型给出的结果。看上去,这一部分的难度比前面的监督学习要困难不少,不过一旦我们解决了这些问题,发现了其中的规律,这些问题也就有了标准答案,我们也就可以按照监督学习的方式学习这些知识了。
增强学习:这种学习方式通常不会出现在课堂上,而是出现在课堂以外的地方,比方说人的言行和决定。同课堂上的场景不同,每个人的一举一动往往不会有标准答案,而且很多行为发生之后,周围的环境会根据这些行为产生一定的反馈。例如,某个人产生了一个行为后,同学对这个行为的态度,行为之后发生的事情等。这些反馈并不明确指出行为的对错,但是它依然改变了周围的环境,让行动者看到了结果的好与坏,从而揭示了行为正误的程度。有人曾说过“小孩才分对错,大人只看利弊”,这也从侧面说明监督学习和增强学习之间的差异。
有这三种学习方式,我们也就能见到擅长这三种学习方式的人群。实际上,在学校里我们就能感受到。
学霸:学霸是监督学习造就的模范产物。学霸最擅长的就是监督学习,说得再通俗一点,就是“刷题”。所谓的刷题就是不断地完成从输入到已知输出映射的学习过程。理论上,“有效率地”刷越多的题,学霸的学习成绩就越好,如何“有效率地”刷题,和如何“高效地”完成模型训练类似。所以像“功夫不负有心人”这样的谚语用在学霸身上十分合适。
学神:学神可以算作是非监督学习的典型。他们总可以解决一些极为困难的问题,而他们的思维能力和分析能力往往很强。换成机器学习的术语来说,就是他们对各种输出未知问题的建模能力很强。
班干部:班干部或者社团干部可以算作是增强学习的成功典范。这部分人群往往很懂人情世故、待人接物,在学校里显得更成熟,看着更像“社会人”“老江湖”。他们的这些能力得益于平时对周围环境的理解,因为更关心这些反馈,才使得他们在这方面有了很大的提高。
所以这么看下来,三种学习实际上都和我们密切相关。机器学习的思路和人类其实差不多。和人类更相近的是,每一种人都有自己擅长的能力和擅长的学习方法,机器模型也不例外,我们要针对不同的问题建立不同的模型,这样才能把问题解决得更好,也让模型发挥得更好。
作者介绍
冯超,毕业于中国科学院大学,猿辅导研究团队视觉研究负责人,小猿搜题拍照搜题负责人之一。自2016 年起在知乎开设了自己的专栏——《无痛的机器学习》,发表机器学习与深度学习相关文章,文章以轻松幽默的语言、细致深入的分析为特点,收到了不错的反响,被多家媒体转载。曾多次参与社区技术分享活动。
本文福利
您在文末认真写留言,被系统优选“有关人工智能的看法或想读此书的理由”。
留言被先中的前5名小伙伴可以获得《深度学习轻松:核心算法与视觉实践》一书,
截止至7月1日,欢迎大家热情参与~
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/256293.html