自适应算法和学习算法的区别

自适应算法和学习算法的区别
自适应算法和学习算法有着非常相似的数学表达式,都是通
过优化决策参数去实现目标(如最大化效能,最小化误差),两
类算法都具备对不同环境的适应能力。然而这两类算法却有着本
质的区别,注意是本质的区别。
为了表述清楚自适应和学习算法的区别,可以引用一个简单
的生活例子,煮饭。首先我们先将这个问题表述为一个优化问题。
目标:软硬合适的米饭
环境:煮饭用的锅(锅有砂锅,铁锅,电饭锅,高压锅)
决策:添加多少水(假设每次放的米是一定的)
很明显,对于不同的锅,用水量肯定是不一样的,那么要煮
出软硬合适的米饭,我们可以分别用两种算法来实现。
自适应:不管现在用的是什么锅,我先大致按照估计添加一
定的水量,待饭煮好了以后,尝一下,发现硬了,第二次煮饭多
加些水,反之减少加水,只要每次的调整量足够小,经过多次尝
试,就能使得米饭软硬合适,那么这个就是最佳的用水量。假如
这个时候把锅换掉,最佳的水量肯定也变化了,所以按照上一次
所用锅的最佳水量煮出的饭,不一定软硬合适,不过没有关系,
可以继续调整,如果软了就再少些水,硬了就在多些水,多次调
整以后,就重新得到了最佳用水量。这样加水的决策就对不同的
锅过实现了自适应。
学习:在煮饭前,我需要确定当前给的是什么锅,假如是电
饭锅,然后最初也是按照估计用水量加水,同样可以是硬了多加
些水,软了少加些水,然后不断尝试。如果在调整的过程中换成
高压锅,对于学习者他会非常关注这个环境的变化,此时他会做
两件事情:1)记录下电饭锅加水量的尝试情况(如该记录可以
是:【电饭锅 ;1000mL 水;软硬程度:8 分软】 备以后使用;
2)然后查询自己的资料中是否有针对高压锅煮饭的尝试情况,
如果有那么就在这个资料的基础上继续尝试,没有就估计一个用
水量。随着环境的不断变化(不断的换锅)和不断的尝试,学习
者最终就会掌握各种锅所需的用水量,而使得饭的软硬合适。
相似点:1)两种算法都采用不断尝试用水量的方式实现目
标;2)两种算法对环境都有一定的适应能力,并且在一定条件下
都能够获得各种锅的最佳用水量
区别: 自适应算法虽然考虑了锅可能会发生变化,但是并
不去主动了解当前的到底是用了什么锅,而学习算法则非常关注
当前使用的 是哪一种锅,从而可以建立对应的资料库。
在两种算法都收敛后,对于自适应算法,如果换掉锅,那么
接下来又是一系列调整,直到用水量合适。而对于学习算法,一
查资料库,就能得到最佳的用水量。所以从这一点看,学习算法
才是真正学会了如何去煮饭,而自适应则只会机械的尝试。另外
自适应算法要达到收敛还有一个要求,就是换锅不能太频繁,假
如每次锅都会换掉,那么自适应算法则无法工作,因此对于自适
应算法需要保证一个相对稳定的环境。但是对于学习算法,只要
锅的数量是有限个,且学习者能够充分的做记录,那么锅怎么换
都没问题(包括学习阶段)。

你可能感兴趣的:(自学习算法)