王东
Published on 2025-02-28 / 6 Visits

【AI100问(110)】什么是爬山算法?

很多人工智能算法可以归结为一个优化任务。例如,我们想识别红绿灯,可以设计一个识别器,让它在看到红灯时输出更大的分数,看到绿灯时输出更小的分数。基于这样的设计,这样我们就可以根据识别器输出的分数来判断红灯还是绿灯了。

设想这个识别器的参数是w,定义下面的一个目标函数:

F(w) = 识别器看到红灯的输出 – 识别器看到绿灯的输出

很显然,一个优秀的识别器会让F(w)尽可能地大。基于这样的思路,我们给这个识别器“喂”一批红绿灯图片,并调节参数w,使得F(w)在这些图片上的最大,就可以“养成”一个优秀的识别红绿灯的人工智能系统了。问题是,如何调节w,使F(w)更大呢?

一种简单的方法是不停地尝试各种参数,并测试哪个参数使得F(w)更大。虽然可行,但是这种方法太慢了。“爬山法”是一种更聪明的办法。这一方法将F(w)想象成山的高度,并把F(w)的优化过程想象成爬山过程。如图所示,设想一个在山脚下的盲人,他想要爬上最高峰,问题是他看不到山峰的全局情况,怎么办呢?他可以这样做:每到一个位置,他都用拐杖探索一下,找到坡起最大的方向,然后试着往这个方向走一步。走完一步后,在新的位置上再探索,然后再走一步。这样一步一步探索下去,最终总会走到山顶。换成目标函数F(w),我们从一个初始的w出发,每次找到一个使F(w)提高最大的方向,并按这个方向对w改进一点点。这样一步步改进,最终得到优化的F(w)。这一方法称为“爬山法”。和盲目尝试相比,爬山法是一种更系统、更科学的方法,而且总能保证会走到一个山峰。

爬山法的问题在于当存在多个山峰时,爬到哪个山峰是不确定的,且不能保证爬到最高峰。尽管如此,因其简单清晰,爬山法依然是人工智能领域应用最广泛的优化方法。

参考文献:

[1]Hill Climbing Algorithms (and gradient descent variants) IRL, https://umu.to/blog/2018/06/29/hill-climbing-irl

By清华大学  马少平 王东