问题
最近,发现经常有客户对我们的产品提出质疑,你们所谓的 AI,不就是数学最优化方法吗,我们怎么没看到智能呢?
AlphaGo也好,人脸识别也好,人们发现在当今比较火的人工智能技术背后都有一个重要角色——神经网络。仔细研究神经网络,发现,神经网络原来是借助数学最优化方法生成的。于是,很多人不约而同的出一个结论,人工智能本质上就是数学最优化方法。果真如此吗?
基于人工设计算法的人工智能
以人脸识别为例,传统技术路线,要靠人工选择面部特征,编写特征提取算法。然后综合多种特征去算法,得出当前人脸照片的特征向量。例如,我们的团队就总结了包括眉毛、眼睛、鼻子等在内的17个面部特征。
但是,很快我们会发现,人工设计的算法识别准确率到 99% 就到极限了,这根本不能用来刷脸支付。
于是,科学家们开始怀疑这样一种可能性:人脸识别算法肯定是存在的,但是,该算法非常非常复杂。凭借人力一行代码、一行代码地写,写到天荒地老也写不完。是不是应该让计算机自动来生成这个算法,就像计算机依据布尔代数模型自动设计 CPU 的这样的超大规模集成电路一样。
机器能自动生成算法吗?
可是,让机器写程序,这个有点天方夜谭呀!能不能把问题简化一下?能不能统一的形式表达天底下所有的函数,通过调整公式的系数,来表达不同的函数?这个可以呀,
例如,著名的幂级数(泰勒级数),说是“几乎所有”的函数都可以表示成下面的形式:
还有,著名的傅里叶级数,也是说“几乎所有”的函数都可以表示成下面的形式:
可惜,它们都只支持一元函数。多元函数怎么办?人们发现,人脑的神经网络原来就是一个万能的多元函数模型呀!以后我会专门介绍,如果输入、输出都是二进制数据,神经网络就等价于布尔代数生成的逻辑电路。
有了神经网络模型,接下来就好办了。因为算法的结构可以固定下来了,不需要计算机生成或修改计算过程了,需要计算机确定的仅仅是神经网络模型里面的待定系数。这个可以借助于大量的观测数据进行数据拟合就行了。
所以,你要说现代人工智能理论就是多元函数数据拟合,我还真不好意思反驳你!但是,到此为止,我们可以确定,借助神经网络模型,计算机自动生成算法是可行的。
生成函数的函数
前面通过调整神经网络模型的系数,就可以生成各种各样的具体函数。实际上,我们做了一件非常伟大的事情,以至于我们还真不好意思说,人工智能就是数据拟合,哈哈!
比如,所有的一次函数可以表示成下面的形式:
我们发现,此函数唯一对应与一个点 :
这样会发现许多很有意思的现象。比如,射影几何学的对偶命题。既然一次函数可以表示成点,平面几何定理中的点和直线互换位置,定理仍然成立。例如,“两条不重合的直线唯一确定一个交点”,对应"两个不重合的点唯一确定一条直线"。
你还会发现,数学中有一门学科叫做”泛函分析“,是专门研究这个问题的——研究函数的函数。这和我们写生成算法的算法思想方法是一样的吧?
结论
虽然不能简单地认为,这一波人工智能技术的本质就是数学最优化,但是,我觉得人工智能背后依靠的肯定是数学,这一点不会有任何人怀疑吧?