α、β剪枝法

article/2025/9/15 13:23:58

        在讲α、β剪枝法之前,我们先了解一下极大极小值算法;因为α、β剪枝法是为了简化极大极小值的计算而提出的。

极大极小值法

        Minimax算法 又名极小化极大算法,是一种找出失败的最大可能性中的最小值的算法(即最小化对手的最大得益)。通常以递归形式来实现。这一算法通常是用于零和博弈中,即双方的获利与损失之和永远为零。为了使己方利益最大化,我们会选择对自己最有利的条件,而尽可能地让对方陷入不利的条件中。并且该算法的前提是,对方是绝对聪明的,即对方不会在决策时出现失误。

        因此,在极大极小值算法中,我们可以假定本方为A,而对方为B;同时我们假定所有的数值都代表本方获胜的值。当本方进行决策时,我们一定希望这个值越大越好,即我们会尽可能地让α的值变大;而当轮到对方进行决策时,对方一定希望这个值越小越好,即对方会尽可能地让β的值变小(要记住,无论是α还是β,代表的都只是一方(这里我们取为本方)获胜的值)。

        在这一情况下,如果我们对每一种可能出现的结果都进行评估,就会发现计算量很大。并且,并不是每一种情况都有可能出现;例如当本方知道如果做出这一选择,本方一定会输时,无论如何本方都不会做出这一选择。所以,为了简化计算,α、β剪枝法由此诞生。

α、β剪枝法

        在搜索算法中优化中,剪枝,就是通过某种判断,避免一些不必要的计算。类比园丁,就是剪去了搜索树中的某些“枝条”,让其他的更有用的枝干能够更好地生长,故称剪枝。应用剪枝优化的核心问题是设计剪枝判断方法,即确定哪些枝条应当舍弃,哪些枝条应当保留的方法。在α、β剪枝法中,枝条被舍弃的条件就是——α>β

        这一条件并不是随便给出的,而是有博弈理论基础的。其实这一条件应该细分为两个:

1、当A(即本方)进行决策后,现在的α>原先的β,这种状况是B(即对方)不希望看到的,所以他会避免这种情况的发生,即不让A有做出这一选择的机会,即B会在自己前一轮的选择中避开这一情况出现的可能。所以我们不必考虑A所做出的这个选择即其下面的分支,这也叫做α剪枝。

2、当B进行决策后,原先的α>现在的β,这种状况是A不希望看到的(因为无论αβ都是A获胜的可能),即A会避免这种情况,不让B有可能做出这一决策,同理,不必考虑B所做出的这个选择即下面的分支,这也叫做β剪枝。

        下面,我将用例子来进行说明。

        首先,我们先自下而上来看

        首先需要先明白几个点,第一层是伴随A进行第一次选择而开始的。矩形表示A的回合,圆形表示B的回合;同时,无论是A还是B,他们进行选择之后的值,将被写在下一次的框内。同时,我们定义,α的初始值为-∞,而β的初始值为+∞(我个人地理解是,互相把对手想得十分厉害,所以自己胜利的可能很小);换言之,为了实现自己利益最大化,A会尽量修改α的值,找到可能的最大值,而B则会修改β使之尽可能的小。

         在第四层中,有1、5两种选择,对于B来说,他要使β值尽可能地小,所以他会对比1、5和+∞,比较之后,他当然会选择min值,即1,即此时β=1;也即目前第三层的⚪中的数值为1。

        接着我们再来看A上一轮的选择,即从第二层到第三层。

 

         如果A在第二层时选择了第二个方案,表面上α的值更大了,但是当A这样选择之后,B可以做出相应的选择,让β=-2,此时,α>β。而A不可能让这种情况发生,所以A不会在第二层时选择第三层的第二个方案,所以不用再考虑这一分支的其他可能情况了,出现了第一次剪枝。

        

         既然我们已经看完了从第一层的第一种选择衍生出来的各种情况,接下来我们可以考虑第一层的另外一种选择,姑且称之为PLAN B。

         在PLAN B 中,如果B在第二层选择了让β=2,那么将会出现A在第三层让α=4,此时α>β,是B所不希望看到的,所以B不可能在第二层进行这个选择,所以这一分支也可以不用考虑。

 

        综上,α、β剪枝法之所以会规定在α>β时就抹去该分支及其下属的情况,是因为当这一不等式成立时,A、B两方总有一方是绝对失利的,因而他们会提早规避,从而不让这种情况发生,因而我们无需为不可能出现的情况而担忧。当然,你也可以从另外一个角度,即公共解的方面进行了解,因为篇幅以及个人能力有限的原因,在这里我就不做赘述了,感兴趣的朋友可以参考这篇文章。 

        这是我第一次接触算法,对这个算法的研究也花了好几天的时间,但其中难免还是有许多不足的地方;加之本人画图能力实在有限,有许多需要用图表示的都没办法很好地表达出来;希望能够得到大家的批评指正和包涵;也希望这篇文章能够帮助刚接触到这一算法而还有许多疑惑的朋友们。

 

 

 

 

 

 

 

 

       

        

 

 


http://chatgpt.dhexx.cn/article/UgqIYt14.shtml

相关文章

决策树的剪枝

目录 一、为什么要剪枝 二、剪枝的策略 1、预剪枝(pre-pruning) 2、后剪枝(post-pruning) 三、代码实现 1、收集、准备数据: 2、分析数据: 3、预剪枝及测试: 4、后剪枝及测试&#xff1…

决策树算法和剪枝原理

决策树算法和剪枝原理 本节我们对决策算法原理做简单的解析,帮助您理清算法思路,温故而知新。 我们知道,决策树算法是一种树形分类结构,要通过这棵树实现样本分类,就要根据 if -else 原理设置判别条件。因此您可以这…

决策树(decision tree)(二)——剪枝

决策树(decision tree)(二)——剪枝 **注:本博客为周志华《机器学习》读书笔记,虽然有一些自己的理解,但是其中仍然有大量文字摘自周老师的《机器学习》书。 决策树系列博客: 决策树(一&#x…

机器学习--决策树二(预剪枝和后剪枝)

一、什么是决策树的剪枝 对比日常生活中,环卫工人在大街上给生长茂密的树进行枝叶的修剪。在机器学习的决策树算法中,有对应的剪枝算法。将比较复杂的决策树,化简为较为简单的版本,并且不损失算法的性能。 二、为什么要剪枝 剪枝…

关于剪枝对象的分类(weights剪枝、神经元剪枝、filters剪枝、layers剪枝、channel剪枝、对channel分组剪枝、Stripe剪枝)

文章目录 剪枝对象分析:1.weights剪枝:2.神经元剪枝:3.Filters剪枝:4.通道剪枝5.Group-wise剪枝6.Stripe剪枝 剪枝对象分析: 剪枝分为结构化剪枝和非结构化剪枝,细化可分为weights剪枝、神经元剪枝、filte…

决策树——剪枝处理

剪枝处理 1:剪枝处理的原因 “剪枝”是决策树学习算法对付“过拟合”的主要手段,因此,可通过“剪枝”来一定程度避免因决策分支过多,以致于把训练集自身的一些特点当做所有数据都具有的一般性质而导致的过拟合 2:剪…

【ML】决策树--剪枝处理(预剪枝、后剪枝)

1. 剪枝(pruning)处理 首先,我们先说一下剪枝的目的——防止“过拟合”。 在决策树的学习过程中,为了保证正确性,会不断的进行划分,这样可能会导致对于训练样本能够达到一个很好的准确性,但是…

深度学习剪枝

一般来说,神经网络层数越深、参数越多,所得出的结果就越精细。但与此同时,问题也来了:越精细,意味着所消耗的计算资源也就越多。这个问题怎么破?这就要靠剪枝技术了。言下之意,把那些对输出结果…

决策树后剪枝算法(一)代价复杂度剪枝CPP

​  ​​ ​决策树后剪枝算法(一)代价复杂度剪枝CPP  ​​ ​决策树后剪枝算法(二)错误率降低剪枝REP  ​​ ​决策树后剪枝算法(三)悲观错误剪枝PEP  ​​ ​决策树后剪枝算法(四&…

机器学习-预剪枝和后剪枝

一棵完全生长的决策树会面临一个很严重的问题,即过拟合。当模型过拟合进行预测时,在测试集上的效果将会很差。因此我们需要对决策树进行剪枝, 剪掉一些枝叶,提升模型的泛化能力。 决策树的剪枝通常有两种方法,预剪枝&a…

【机器学习】Python实现决策树的预剪枝与后剪枝

决策树是一种用于分类和回归任务的非参数监督学习算法。它是一种分层树形结构,由根节点、分支、内部节点和叶节点组成。 从上图中可以看出,决策树从根节点开始,根节点没有任何传入分支。然后,根节点的传出分支为内部节点&#xff…

决策树的预剪枝与后剪枝

前言: 本次讲解参考的仍是周志华的《机器学习》,采用的是书中的样例,按照我个人的理解对其进行了详细解释,希望大家能看得懂。 1、数据集 其中{1,2,3,6,7,10,14,15,16,17}为测试集,{4,5,8,9,11,12,13}为训练集。 2、…

YOLOv5剪枝✂️ | 模型剪枝理论篇

文章目录 1. 前言2. 摘要精读3. 背景4. 本文提出的解决方式5. 通道层次稀疏性的优势6. 挑战7. 缩放因素和稀疏性惩罚8. 利用BN图层中的缩放因子9. 通道剪枝和微调10. 多通道方案11. 处理跨层连接和预激活结构12. 实验结果12.1 CIFAR-10数据集剪枝效果12.2 CIFAR-100数据集剪枝效…

决策树及决策树生成与剪枝

文章目录 1. 决策树学习2. 最优划分属性的选择2.1 信息增益 - ID32.1.1 什么是信息增益2.1.2 ID3 树中最优划分属性计算举例 2.2 信息增益率 - C4.52.3 基尼指数 - CART 3. 决策树剪枝3.1 决策树的损失函数3.2 如何进行决策树剪枝3.2.1 预剪枝3.2.2 后剪枝3.3.3 两种剪枝策略对…

剪枝

将复杂的决策树进行简化的过程称为剪枝,它的目的是去掉一些节点,包括叶节点和中间节点。 剪枝常用方法:预剪枝与后剪枝两种。 预剪枝:在构建决策树的过程中,提前终止决策树生长,从而避免过多的节点产生。该…

(剪枝)剪枝的理论

剪枝参考视频 本文将介绍深度学习模型压缩方法中的剪枝,内容从剪枝简介、剪枝步骤、结构化剪枝与非结构化剪枝、静态剪枝与动态剪枝、硬剪枝与软剪枝等五个部分展开。 剪枝简介 在介绍剪枝之前,首先来过参数化这个概念,过参数化主要是指在训…

剪枝总结

一、引子 剪枝,就是减小搜索树规模、尽早排除搜索树中不必要的分支的一种手段。 形象地看,就好像剪掉了搜索树的枝条,故被称为剪枝。 二、常见剪枝方法 1.优化搜索顺序 在一些问题中,搜索树的各个分支之间的顺序是不固定的 …

搜索剪枝

目录 什么是剪枝 几种常见的剪枝 1.可行性剪枝 2.排除等效冗余 3.最优性剪枝 4.顺序剪枝 5.记忆化 运用实例 1.选数 2.吃奶酪 3.小木棍 什么是剪枝 剪枝:通过某种判断,避免一些不必要的遍历过程。搜索的时间复杂度通常很大,通过剪…

【模型压缩】(二)—— 剪枝

一、概述 剪枝(Pruning)的一些概念: 当提及神经网络的"参数"时,大多数情况指的是网络的学习型参数,也就是权重矩阵weights和偏置bias;现代网络的参数量大概在百万至数十亿之间,因此…

环形队列的基本运算算法-数据结构教程

环形队列的基本概念 如图,其实它就是一个队列,就是有点难理解而已,它避免了普通队列的缺点,一样有队列头,队列尾,一样是先进先出的原则。我们采用顺时针的方式来对队列进行排序。 队列头(front) :允许进行删…