导读:本篇文章首席CTO笔记来给大家介绍有关人工智能如何进行剪枝的相关内容,希望对大家有所帮助,一起来看看吧。
科学家打造的园艺机器人除了修剪玫瑰和灌木丛还会做什么?
现在的时代已经是一个高速发展的信息化智能时代,一切都可以看做数据,最好的发展就是人工智能上的应用,一代代的机械人不断发展着,最近就出了园艺机器人可以有很好的效果,但是人门也会疑惑科学家打造的园艺机器人除了修剪玫瑰和灌木丛还会做什么?其实还可以进行一定的交流,还有就是学习能力等等。
人工智能最强大的就是学习能力,这个学习和我们所想的并不一样,属于超级大量的学习,简单来说我们看一个图片就可以学习到很多东西,再看另外一个想同类型的图片,就会想到很多类似的点,人工智能虽然强大,但是其实也不是很强,这方面比较人类的灵智是远远不够的,它们需要超级大量的图片给他们自主学习,相当于全部的图片导入进去才能够发现其中联系等,这种学习很是消耗,但是发现的点也是非常多的,所以机械人也是可以学习的。
简单来说呢,就是我们的智能音箱,一开始很多时候都是不懂我们的语言,但是随着时代的发展,慢慢开始学会了更多的东西,这时候就是一个学习的过程,里面就涉及到一个ai芯片的东西,简单例子就是苹果的a12芯片,第一个智能神经系统芯片,拥有自主学习的能力,比如我们戴口罩一开始人脸识别是失败的,但是后面慢慢成功,就是一个学习的过程。
而科学家所发现的园艺机器人肯定功能最简单的就是修剪玫瑰和灌木丛,但是也不仅仅只是这个,还有很多方面,比如体验交流,学习甚至会开发更多的模式,创造更多的修建效果都是可以做到的,这就是智能学习,可不是我们所想的这么简单。
如何对决策树进行剪枝?
决策树的剪枝通常有两种方法,预剪枝(Pre-Pruning)和后剪枝(Post- Pruning)。那么这两种方法是如何进行的呢?它们又各有什么优缺点?
■ 预剪枝
预剪枝的核心思想是在树中结点进行扩展之前,先计算当前的划分是否能带 来模型泛化能力的提升,如果不能,则不再继续生长子树。此时可能存在不同类 别的样本同时存于结点中,按照多数投票的原则判断该结点所属类别。预剪枝对 于何时停止决策树的生长有以下几种方法。
(1)当树到达一定深度的时候,停止树的生长。
(2)当到达当前结点的样本数量小于某个阈值的时候,停止树的生长。
(3)计算每次分裂对测试集的准确度提升,当小于某个阈值的时候,不再继 续扩展。
预剪枝具有思想直接、算法简单、效率高等特点,适合解决大规模问题。但 如何准确地估计何时停止树的生长(即上述方法中的深度或阈值),针对不同问 题会有很大差别,需要一定经验判断。且预剪枝存在一定局限性,有欠拟合的风 险,虽然当前的划分会导致测试集准确率降低,但在之后的划分中,准确率可能 会有显著上升。
■ 后剪枝
后剪枝的核心思想是让算法生成一棵完全生长的决策树,然后从最底层向上
计算是否剪枝。剪枝过程将子树删除,用一个叶子结点替代,该结点的类别同样 按照多数投票的原则进行判断。同样地,后剪枝也可以通过在测试集上的准确率 进行判断,如果剪枝过后准确率有所提升,则进行剪枝。相比于预剪枝,后剪枝 方法通常可以得到泛化能力更强的决策树,但时间开销会更大。
常见的后剪枝方法包括错误率降低剪枝(Reduced Error Pruning,REP)、悲 观剪枝(Pessimistic Error Pruning,PEP)、代价复杂度剪枝(Cost Complexity Pruning,CCP)、最小误差剪枝(Minimum Error Pruning,MEP)、CVP(Critical Value Pruning)、OPP(Optimal Pruning)等方法,这些剪枝方法各有利弊,关注 不同的优化角度,本文选取著名的CART剪枝方法CCP进行介绍。
代价复杂剪枝主要包含以下两个步骤。
《人工智能》(一):min-max算法
先来说极小极大算法主要应用于什么样的游戏:1. 零和游戏(Zero-Sum Game):意思就是你死我活,一方的胜利代表另一方的失败,比如,象棋,五子棋等。2. 完全信息(Perfect Information):玩家知道之前所有的步骤。象棋就是完全信息,因为玩家是交替着落子,且之前的步骤都能在棋盘上体现,但是石头剪子布就不是。这样的游戏通常可以把他们看作一个树状图,把每一种可能性列出来。比如下面这个井字棋游戏,Max代表你自己,Min代表你的对手。
这个时候我们需要给每一种结果一个分数,就是这里的Utility。这个分数是站在我自己(也就是Max)的角度评估的,比如上图中我赢了就是+1,输了是-1,平局时0。所以,我希望最大化这个分数,而我的对手希望最小化这个分数。(在游戏中,这个分数被称为static value。)这里要说一下,井字棋是个比较简单的游戏,所以可以列出所有可能的结果。但是,大部分游戏是不太可能把所有结果都列出来的。根据计算机运算量,我们可能只能往前推7,8步,所以这个时候分数就不只-1,1,0这么简单了,会有专门的算法来根据当前结果给不同的分数。
这个时候我们需要给每一种结果一个分数,就是这里的Utility。这个分数是站在我自己(也就是Max)的角度评估的,比如上图中我赢了就是+1,输了是-1,平局时0。所以,我希望最大化这个分数,而我的对手希望最小化这个分数。(在游戏中,这个分数被称为static value。)这里要说一下,井字棋是个比较简单的游戏,所以可以列出所有可能的结果。但是,大部分游戏是不太可能把所有结果都列出来的。根据计算机运算量,我们可能只能往前推7,8步,所以这个时候分数就不只-1,1,0这么简单了,会有专门的算法来根据当前结果给不同的分数。假设我们有如下图的游戏,我是先手,我应该如何利用Minmax算法来选出第一步怎么走呢?
这个时候我们就要从结果看起,也就是第4步。图中标注第四步是我的对手下的,所以他要做的是最小化这个分数,于是对手根据结果可以反推出如下选择
继续从后往前看到第3步,当我们知道了对手的选择以后,我们可以根据对手的结果反推出自己的选择,我们要做的是最大化这个分数,如图
重复这个步骤,我们最终可以发现第一步的最优选择,如图
重复这个步骤,我们最终可以发现第一步的最优选择,如图以上就是极小极大算法(Minimax)。
然后,计算机给出了第一个分数
当给出了这个分数的时候,我们站在步骤1看,无论另一分支的数字是多少,步骤1左边方框的数字不会超过2。因为第2步是我的对手下的,他希望分数尽可能的小,也就是这样的
这个时候,电脑再计算另一分支的分数,也就是7。知道另一分数是7以后,也就知道步骤1的左边方框分数为2。这时,我们往前看一步(步骤0)。步骤0的分数是大于等于2,因为我要最大化分数。如图
现在,再来计算右边分支的分数,得到了1。同理,我们站在步骤1来看,右边方框中的数不会超过1,如图
在这个情况下,即使我不算最后一个数字,我也能知道在步骤0的结果为2,因为已知步骤1中的右边方框,数值不会超过1。所以我们就能直接知道结果,也就是
我们可以看到,加上剪枝算法,我们不仅得到了相同的结果,而且减少了计算量。在实际应用中,加上剪枝算法,计算机大约需要算2*n (x/2)个结果,如果n为分支数,x为步数。相比于之前仅用极小极大算法的n x,效率提高了很多。这也就意味着,如果在象棋比赛中,假设使用极小极大的算法,计算机能往前评估7步,加上剪枝算法,计算机能往前评估14步。极小极大和剪枝算法曾在IBM开发的国际象棋超级电脑,深蓝(Deep Blue)中被应用,并且两次打败当时的世界国际象棋冠军。
结语:以上就是首席CTO笔记为大家介绍的关于人工智能如何进行剪枝的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。