知识库

知识库资源

当前位置:首页>知识库
全部 15 商业 4

学习策略:机器学习如何获得知识?

时间:2021-04-24   访问量:1123

欢迎来到我的《算法通识课》

上一讲,我们说到了AlphaGo在和李世石的比赛里下出了“神来之笔”,我们不知道它那一手棋为什么会下在那里。这意味着,机器学习算法已经掌握了一些我们不知道的知识。

人类还不知道的那些知识,AlphaGo是怎么学到的呢?现在很多人说,要向机器学习。学什么呢?就是学习机器学习算法是怎么学习的。

这一讲,我就来跟你说说机器学习算法,获得知识的机制。

1 同样的能力可以基于不同的知识

从算法的角度来看,机器学习算法产生的知识,是运行一套算法得到的结果,而算法运行的过程是学习的过程。我们这一讲要聚焦的,就是算法的运行机制。

但在这之前,我先问你一个问题,如果两个算法能做到的事情是一样的,是不是我们只研究其中一个的运行机制就可以了?

当然不是。这里我们先要区分一下知识和能力。知识是一种我们对信息以及事物之间关系的理解,而能力是把知识应用到实际中的本领。有知识不代表有能力,但没有知识就没能力。

打个比方吧。假如有两个男人走进电器商店,都想买一件最好的电视回家。半个小时之后,他们抱着同一款电视走了。

他们都具备分辨电视好坏的能力,但依赖的知识却不一样。

第一个人对不同电视的技术细节了如指掌。他把这分辨率、耗电量、价格等因素都分析了一遍,然后选出了最好的电视。

第二个人相信“便宜没好货,好货不便宜”。所以直接买了一个最贵的,恰好这个电视也是最好的。

你看,他们对事物的认知完全不一样,学习的过程和方法恐怕也完全不一样。但根据不同的学习方法,学到不同的知识,却可以有同样的能力。

那也就是说,即便两个算法能做到的事情是一样的,它们背后的学习机制也是不一样的。我们在算法领域,把它们称为不同的机器学习模型。

2 得到知识的方法:不同的学习模型

那接下来,我们就看看那些能完成同样任务的机器学习算法,学习模型会有什么不同。我拿上一讲中提到的,小朋友学习认识猫狗的过程来给你举例说说。

比如说,小朋友小A有过目不忘的能力。他会把见到的每一只动物长什么样子,印在脑子里,把大人告诉他的正确答案也记住。当他看到一只没见过的动物的时候,他会把这只动物的长相和他记忆中长相最相近的K个动物做比较。这里的K可以是1,可以是10,可以是100,都行。

在这K个他记得的动物中,如果猫比较多,他就认为眼前的动物是猫;如果狗比较多,他就认为这是狗。这种学习模式写成算法,叫“K邻近算法”。

听起来可能有点不可思议,但我们生活中就有这样的事儿。

比如说,英美法系中的判例法。判例法是说,以前发生的某个案例的判决,会成为后来相似案件的标准。以前判案判的是这个结果,那往后类似的案子,有很大概率就一直是这个结果。

这种学习算法是完全基于记忆的。也就是说,学习的过程就是记忆的过程。实际中的算法实现,也就是把历史数据存下来,方便将来进行比对。

比如一个简单的推荐算法,可能用的就是K邻近算法。视频网站想给你推荐电影。他就看看你的行为和哪些用户最接近,那么那些用户爱看什么,就给你也推荐一下。

那如果记忆力不好怎么办呢?

小朋友小B,记忆力一般,但逻辑性特别强,跟福尔摩斯似的。他会通过分析动物的不同特征和分类之间的关系,看看哪个特征和动物分类最相关。

比如说,动物的叫声,有的“汪汪”,有的“喵喵”,他发现这跟猫狗分类有关系。而动物的颜色,猫有黑猫白猫,狗也有黑狗白狗,所以颜色这个特征和猫狗分类没关系。

通过分析不同特征和动物分类的相关性,小B得出一个结论。“如果一只动物‘喵喵’叫,那这动物就是猫。如果‘汪汪’叫,那这动物就是狗。如果这些条件都不满足,那这是一个未知物种。”

这种通过数据归纳,总结出条件判断的学习模式,对应的就是“决策树模型”。

实际应用中的决策树模型可以很复杂,但背后的本质很简单。就是把每个特征和要学习的对象进行相关性的比较,相关性高的放在条件判断里,低的扔掉。

但很多时候我们就是能认出谁是猫谁是狗,既不是因为我们记了很多,也不是因为我们有什么神奇的判断条件。那我们是怎么认出来的呢?这时候算法学家认为,这是我们脑神经的功劳。

举个例子,如果人只有两条神经,一条对动物的叫声有反应,一条对动物的颜色有反应。这两条神经都来帮助我们识别猫狗。只不过,动物的颜色对我们做判断的帮助不是很大。

于是,我们见了很多动物之后,对动物叫声有反应的神经变得强壮,对动物颜色有反应的神经就变得弱小了。当然,我们的神经数量远多于两条,能获取的信息也远多于叫声和颜色。

通过模拟神经信号的传递,以及神经对外界不同信息反应强弱不同的过程,算法学家创造了“神经网络模型”。

不过,算法中并没有真正的神经,也没有神经反应的强弱。取而代之的是大量的参数。参数越接近于零,说明它所代表的特征越不重要。AlphaGo的学习模型,就是神经网络模型。

这三种学习模型,模拟了三种不同的学习过程。在这里,我只是拿它们三个举例子,并没有把学习过程的种类完备掉。人们对“该怎么学习”这个问题,有不同的认识。但无论这些认识是什么,算法学家都可以通过模拟这个学习的过程,设计出不同的机器学习算法。

3 怎么把获得的知识传授给人类

好,现在机器学习算法获得了知识,那还有一个问题和算法的学习机制特别相关,就是算法怎么把自己获得的知识,教还给人类。

这个问题特别重要。你想想,如果机器学习算法用在了金融交易上,用在了判断临床患者的病情上,或者用在了嫌疑人的罪行审判上,那我们不知道机器学习算法学到了什么,就会带来很大的麻烦。因为这些问题和信任、责任和公平紧密联系在一起。你明明只是违章停车了,算法却判你刑拘一年,这还得了?

就像我们在之前的课程里说,算法并不对问题负责。有些问题事关重大,在这些问题上使用机器学习算法,我们就必须搞清楚算法学会的知识到底是什么,让它把获得的知识教还给我们。

这件事,特别特别难。难在两个地方。

第一个难点是,机器学习对知识的表达方式和人类不一样。

我们前面提到了,算法产生的知识,就是运行后得到的结果。比如刚刚说的K邻近算法,它学到的知识表达出来,就是一堆历史数据。决策树模型,学到的知识可以表达成一些复杂的条件判断。而神经网络模型学到的知识呢,是以一系列参数的数值来表达的。

人类看到这些算法产生的知识,理解起来很难,有的甚至根本没法理解。

第二个难点,是记忆力和算力的问题。

这一条很好理解。算法依赖计算机,能记住的数据量太大了,人类的记忆力是做不到的。即使记忆力无限,人脑的算力也和算法差得太远。

目前,算法工程师还在不断探索解决这个问题的办法。就现在的情况来说,我们有一些解决的方向。

比如说,我们总是可以用简单一点的模型和算法。太难的理解不了,从源头上就用简单一点的模型。

像我们刚才说的决策树模型。决策树模型学习的能力,和别的算法比起来不一定是最好的,但它学到的知识是一系列的条件,这和人类理解分析问题的方式一致。如果条件少,还是很容易被人类消化吸收的。

再比如,我们可以对算法中重要变量的影响进行解释。理解不了最终的结果,我们可以理解对结果影响最大的变量。

好比,判断一个动物是猫是狗,机器学习算法可以回答到底哪个特征是最重要的。是叫的声音,还是毛发的颜色。搞清了这点,对人来说就是有用的知识了。

又或者更进一步,不同的特征发生改变,比如耳朵长了两厘米,对算法最后的判断有什么影响,这也很有用。

 划重点

1 机器学习模拟了不同的学习模式,学习模式不同,学到的知识也不一样,但也许能解决的问题是一致的。 2 机器学习得到的知识传回给人类并不容易,但又很必要,我们还在探索更好的传回的方法。

最后,给你留一道思考题。在你的领域里,有没有碰到过需要机器学习算法帮忙的问题?你认为哪种机器学习算法最适合用来解决它呢?欢迎留言,和我分享你的故事。

在前面的课程里,我们都是从算法工程师的视角来看的,最后一讲,我们换个视角,和算法工程师面对面,说说怎么和一个算法工程师打交道。


上一篇:机器学习:机器到底在学什么?

下一篇:算法思维:怎么和算法工程师打交道?

发表评论:

评论记录:

未查询到任何数据!
点击这里给我发消息

在线咨询

咨询专员 点击这里给我发消息

点击这里给我发消息 售后服务专员

在线咨询

免费通话

24小时免费咨询

请输入您的联系电话,座机请加区号

免费通话

微信扫一扫

微信联系
返回顶部