什么是计算智能?
本文参考了很多张军老师《计算智能》的第一章知识。感兴趣的可以到https://blog.csdn.net/qq_44186838/article/details/109181453进行了解。计算智能1.1 最优化问题最优化问题的求解模型如下公式所示:其中D是问题的解空间,X是D中的一个合法解。一般可将X表示为X = (x1, x2, …, xn),表示一组决策变量。最优化问题就是在解空间中寻找一个
本文参考了很多张军老师《计算智能》的第一章知识。感兴趣的可以到https://blog.csdn.net/qq_44186838/article/details/109181453进行了解。
计算智能
1.1 最优化问题
最优化问题的求解模型如下公式所示:
其中D是问题的解空间,X是D中的一个合法解。一般可将X表示为X = (x1, x2, …, xn),表示一组决策变量。
最优化问题就是在解空间中寻找一个合法的解X(一组最佳的决策变量),使得X对应的函数映射值f(X)最小(最大)。
简单理解的话,就是把f(x)看做花费值,怎么让你花的最少,就是最优化问题。
根据决策变量xi的取值类型,我们可以将最优化问题分为函数优化问题和组合优化问题两大类。
决策变量均为连续变量的最优化问题为函数优化问题,而均为离散变量的最优化问题则为组合优化问题。
啥?不懂什么是函数优化问题和什么是组合优化问题?没事,这下面不就准备跟你讲了嘛。
1.1.1 函数优化问题
例如:
其中,n=30表示问题空间的维数,xi∈ [-100,100]是定义域,这个函数的最小值为0。
那这其实就是一个最简单的函数优化问题,对应上文所讲的“连续变量”。
那啥时候需要用到函数优化问题呢?
其实很多情况下都会遇到,也不知道你们是不是曾经沦为过无情的模型调参机器人(反正我是有过呜呜呜)
很多科学实验参数配置和工农业生产实践都需要面临这种类型的最优化问题,像是设计神经网络的过程中,需要确定神经元节点间的网络连接权重,从而使得网络性能达到最优。
在这种问题中,需要优化的变量的取值是某个连续区间上的值,是一个实数。各个决策变量之间可能是独立的,也可能是相互关联、相互制约的,它们的取值组合构成了问题的一个解。
由于决策变量是连续值,因此对每个变量进行枚举是不可能的。在这种情况下,必须借助最优化方法对问题进行求解。
1.1.2 组合优化问题
其实组合优化问题我想大家肯定是遇到过的,因为可能现在在看这篇博客的同学都学过了算法程序设计或者数据结构等的课程。那么你们肯定见过所谓的0-1背包问题,这个问题就是很典型的组合优化问题。当然啦还有旅行商问题等也属于组合优化问题。
很多离散组合优化问题都是从运筹学(Operations Research,OR)中演化出来的。
组合优化其所研究的问题涉及到信息技术、经济管理、工业工程、交通运输、通信网络等众多领域,在科学研究和生产实践中都起着重要的作用。
我们不难发现,其实这些问题解决的方法其实很简单,比方说0-1背包,那无非就是n个物品,每个物品要么带要么不带,即为2^n的情况,得到所有情况然后取出价值最大的那种方法就可以了。
是呀,这样子的话真的是老简单了。
哈哈,开个玩笑。只要是稍微多想一想都能发现我们上述的穷举法有一个很致命的问题,就是当你的n值过大时,对应的计算量可是呈指数暴增的。
所以这个时候,就需要我们借助智能优化计算方法,可以在合理的时间内求解得到令人满意的解,从而满足实践的需要。
对于算法的计算复杂性,我们一般很容易进行判断,例如使用蛮力法去枚举旅行商问题或者0-1背包问题的算法,就是具有指数计算复杂性的算法。
诶,啥是计算复杂性?下文介绍。
1.2.1 计算复杂性
啥是计算复杂性呢?
简单讲就是用来描述求解问题的难易程度或者算法执行效率的高低。
对于算法的计算复杂性,我们一般很容易进行判断,例如使用蛮力法去枚举旅行商问题或者0-1背包问题的算法,就是具有指数计算复杂性的算法。
对于某问题的计算复杂性进行判断却不是一件简单的事情。
问题的计算复杂性是问题规模的函数,故需要首先定义问题的规模。
例如对于矩阵运算,矩阵的阶数可被作为问题的规模。
(1)如果求解一个问题需要的运算次数或步骤数是问题规模n的指数函数,则称该问题有指数时间复杂性。
(2)如果所需的运算次数是n的多项式函数,则称它有多项式时间复杂性。
对于某个具体问题,其复杂性上界是已知求解该问题的最快算法的复杂性,而复杂性下界只能通过理论证明来建立。
证明一个问题的复杂性下界就需要证明不存在任何复杂性低于下界的算法。显然,建立下界要比确定上界困难得多。
1.2.2 NP理论
下面将介绍几种属于NP类别的问题,并会讲述其之间的关系。
P类问题(Polynomial Problem)
P类问题是指一类能够用确定性算法在多项式时间内求解的判定问题。其实,在非正式的定义中,我们可以把那些在多项式时间内求解的问题当作P类问题。
NP类问题(Non-deterministic Polynomial Problem)
NP类问题是指一类可以用不确定性多项式算法求解的判定问题。例如旅行商问题的判定版本就是一个NP类问题。我们虽然还不能找到一个多项式的确定性算法求解最小的周游路线,但是可以在一个多项式时间内对任意生成的一条“路线”判定是否是合法(经过每个城市一次且仅仅一次)。比较P类问题和NP类问题的定义,我们很容易得到一个结论:P ⊆ \subseteq ⊆NP。
NP完全问题(NP Complete Problem)
我们称一个判定问题D是NP完全问题,条件是:
(1)D属于NP类;
(2)NP中的任何问题都能够在多项式时间内转化为D。
另外,一个满足条件(2)但不满足条件(1)的问题被称为NP难问题。也就是说,NP难问题不一定是NP类问题,例如图灵停机问题。正式地说,一个NP难问题至少跟NP完全问题一样难,也许更难!例如在某些任意大的棋盘游戏走出必胜的下法,就是一个NP难的问题,这个问题甚至比那些NP完全问题还难。
1.3 计算智能方法
计算智能算法是人工智能的一个分支,是联结主义的典型代表,又称为仿生学派或生理学派。
下面简单讲下计算智能的存在目的及意义:
随着技术的进步、工程实践问题变得越来越复杂,传统的计算方法面临着计算复杂度高、计算时间长等问题(如上文提到的0-1背包穷举法)。
那么,计算智能啥作用呢?
(1)计算智能方法采用启发式的随机搜索策略,在问题的全局空间中进行搜索寻优,能在可接受的时间内找到全局最优解或者可接受解。
(2)计算智能算法在处理优化问题的时候,对求解问题不需要严格的数学推导,而且有很好的全局搜索能力,具有普遍的适应性和求解的鲁棒性。
1.3.1 计算智能的分类与理论
计算智能有关理论基础
1.3.2 计算智能的研究与发展
这里也没必要多说了,还是直接给截图吧。
1.3.3 计算智能的特征与应用
计算智能主要应用如下
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)