Local EPUB Text
幂次增长之王——算法
人们往往倾向于留意到计算、交互、传感方面的机器人硬件技术的飞速进步,但我们常常遗忘是哪些发现带来了这些进步及其背后的新算法技术的发明。
在计算机科学家和电子工程师中流传着一种说法,无论硬件工程师取得了什么样的进步,软件工程师是都能马上“废了”它们(原本程序员的说法用词太过激烈,不适合写在书里)。我们都知道无论计算机的硬件性能变得多快,操作系统软件却总是运行太慢,无法跟上速度。然而事实刚好相反。
算法的进步并没有类似“处理速度/年”“兆像素/美元”等单位,一直以来都难以量化。因为算法在执行各项任务时形态各异,目标也不断变化。举一个例子,我们用算法来解微分方程。这一类的数学算法对于任何需要进行预测和动态控制的机器人来说,都是关键的因素。1945-1985年间,执行这类基础任务的算法以每年3万点的系数在增长,或者说是年均29%的增长率。该增长率达到了同期的基础硬件的平均水平。
另一个例子是数据分析的算法进步。经典的快速傅里叶变换算法(fast Fourier transform, FFT)被用于几乎所有的数字信号处理系统,比起原始算法,这一算法更凸显了指令的速度提升的重要性。但究竟FFT算法带来了多少增速呢?事实证明进步因素很大程度上取决于被分析的数据库大小。若是小型的数据库进步空间小,大型的数据库进步程度相当大,这种进步甚至需要硬件用几十年的发展时间才能跟上它的步伐。正是因为算法的进步,我们才有了今天数据分析的方法,否则即使摩尔定律继续作用100年,这种方法也不可行。
不像硬件的进步曲线那么平整,算法的进步更像带有“间隔平衡”的特点,或据推测,它像是进化中的系统。算法的进步不是一帆风顺,而是断断续续地前进。好比一个生态系统,算法的进步,是在与众多其他算法的竞争中诞生的。某些算法诞生后,因其学术性深奥难懂而被埋没;其他算法在发展壮大后不久随即消亡,因为有更好的算法占据了市场,或是它们能解决的问题不再受到重视。一套算法需要经过不同人的多次修改,直到偶然的机会它拥有了广泛的识别能力。
人工智能算法也不例外。在一个多世纪的艰难前行中,人工智能算法不断进步又遭遇寒冬,风光一时却也曾经黯然失色。只是无论处于领导地位的是哪个阵营的人工智能,在过去几十年中人工智能算法总体上还是成绩斐然。我们知道,无论处理器的速度如何飞快,数据储存或相机分辨率如何发展,都不能使罗森布拉特的感知器稳定地分辨出猫和狗的差别——即使再强大的计算能力也不能使20世纪90年代的标准双层神经网络顺利完成这个认知任务。只有在大规模视觉识别挑战赛上的竞争激烈的各种算法中才能找到某种优秀的算法来完成识别任务。就像是岩石缝中生存的哺乳动物,卷积神经网络最终打败了人工智能的传统强劲对手。
当深度学习算法在断断续续的进化过程实现了阶梯飞跃,整个人工智能界沸腾了。当该行业的重心从硬件转移到软件上时,自动行业也感受到了类似的震撼。