这天,小H听说有一场AI相关的扫盲讲座,就跑去听。
小H在会场等了很久,打了两局排位赛,一个将polo衫下摆扎在裤腰带里,裤腰带上挂着手机包,手腕上还戴着四串小叶紫檀的人慢慢走上台来,开始发表自己的演讲:
AI技术的核心是机器学习。什么是机器学习呢?其实它就是将复杂的事物规律,简化为若干参数待定的矩阵方程组,并利用计算机的高速运算和海量存储能力,对符合该方程组的数据样本进行分析推演,来逐步迭代逼近矩阵方程组的各项参数。机器学习常用的算法有线性回归、Logistic回归、朴素贝叶斯等……
很快,小H的头越来越低,鼻腔里开始出现呼吸气流的共振。
未几,小H发现自己在海边的一所工厂,工程师们正在测绘一条巨轮,并往计算机内输入数据。原来,这是从乌克兰获取的“瓦格良”号航空母舰的半成品。
1997年,经历了一系列艰难的商业谈判及与各国政府的沟通,完成了60%建造工作的“瓦良格”号被拖离黑海造船厂,一同被发往中国的还有8吨相关的图纸。然而,中国的工程师们发现,图纸中有很多自相矛盾的地方,按照图纸无法完成船舶的建造,更无法根据图纸建造新的航空母舰!因此,测绘出准确的图纸就成为了当务之急。
测绘的难点之一是,“瓦良格”号是滑跃起飞航母,它的甲板并非一个平面,而是在前端有一个上翘的曲面,给舰载机一个起飞的助力。如何用数学方程描述这一曲面呢?
在工程上,这一算法叫做拟合,也就是通过采集有限的点,归纳出描述这个曲面的数学方程。拟合算法的核心是回归算法。
小H想到了自己学过的最简单的一元线性回归(Unary Linear Regression)算法:
如果我们知道平面上若干个点的坐标(也就是所谓的“观测值”),就可以求出与这些点距离总和最小的方程(也就是所谓的“模型”)。
一元线性回归算法是最小二乘回归的一种,指的是让残差(观测值与模型提供的拟合值)平方的总和最小化。其核心算法是:
先计算出所有的点的x,y坐标的均值:
然后可以得到方程 y=ax+b的系数a和b:
我们使用AI领域的术语来描述这一算法:
10个点为样本;描述直线的一次方程为模型;一次方程中的参数a 和b为配合模型的权重参数;从样本得到权重参数的过程,称为训练;
我们在得到了参数a 和b后,只要给出x,我们就可以计算出 y的值,这一过程叫做基于模型和权重的推理。
小H注意到,这个算法的时间复杂度为O(n),也就是与点的数量成正比,在有n个点的情况下,需要计算2n次平均数,2n次乘法/加法组合运算(实际上,平均数运算也可以视为乘法与加法组合的运算)
乘法与加法的组合运算,又可以称为向量点积(vector scalar product),或卷积(convolution)。如:
A=[A1, A2, A3, ..., An]; B=[B1, B2, B3, ... , Bn];
那么,A · B = A1B1 + A2B2 + A3B3 + ... + AnBn。
实际上,卷积运算几乎是所有AI算法的核心,而它是一种简单重复的运算,让灵活的CPU来执行实际上是一种浪费。有没有更合适的方法来加速加速卷积运算呢?
在“瓦良格”号来到中国的时候,实际上并没有好的方法。
我们将在下一期中介绍,如何加速这一算法。
此时,小H感到有人在推他。小H睁开眼睛,发现会议已经散场了,推醒他的是会场工作人员,并且递给了他一张纸,让他擦擦睡着时流的口水。
小H摇晃着走出会场,还在回味着刚才的梦境……