我对于AI的偏见,以及改观

参加了国科大暑期学校,听了很多大牛讲座,确实非常受用

我对于AI的偏见,以及改观

虽然我是人工智能专业的学生,但我对于人工智能一直存在错误的认识和偏见。一直以来我都认为人工智能是某种不可解释的黑箱,使用人工智能解决问题的路径是所谓的“炼丹”、玄学调参。但这几天听了许多学术界大牛的报告,我认识到人工智能是算法的重要部分,其本质是统计方法,依托大量的数据和计算量补充传统算法,拥有一套完整科学的方法论。


就与传统算法比较而言,我认为人工智能算法大发展有三个原因。

首先,传统算法在一些领域中遇到了发展瓶颈。第一是性能瓶颈,为了提升算法性能,许多传统算法已经具有了极高的复杂性。比如张新峰老师介绍的视频编解码算法。为了提高视频压缩率以适应日益提升的视频规格,当前已经在算力支持范围内加入非常多优化了,能够挖掘的优化点基本上已经挖掘的差不多了。边际效益递减日趋明显,单项新技术添加所带来的提升从过去的10%到20%,已经发展到现在百分之一乃至于千分之一。第二是传统算法难以泛化,难以应对某些模糊的需求。例如自然语言的翻译,自然语言本身复杂多变,很多时候没有固定的范式,传统算法效果的提升力不从心。人编写的代码是结构化的,算法是精确的,与模糊的需求存在天然的矛盾。

其次,互联网和大数据的发展使得统计方法的应用成为可能。统计算法与其他算法没什么不同,同样也是机械的。但与大多数传统算法能够区分开来的是,统计方法能够利用数据实现泛化的效果。这里引用林惠民院士报告中的例子。“猴子爬树”、“快乐爬树”、“石头爬树”这三句话中哪一个是对的,哪两个是错的?传统的基于知识表示和语法词法分析的方法会依据先验的语法和知识进行判断。快乐是形容词,所以错误;石头不会爬,所以错误。然而自然语言的丰富程度是超乎想象的,这些知识又需要人来为算法提供,所以效果提升非常困难。而统计方法基于在语料中统计词语的相关性,就能够得到另一种形式的知识。算法并不知道为什么“猴子爬树”正确,但是通过统计能够发现它的频率很高,而另外两种说法的频率极低。只要数据的质量合格,数据的量足够庞大,统计方法就能够达到泛化的效果。

最后,算力的提升和廉价化,使得统计方法的成本不断降低,效果不断提升,而传统算法在某些特定领域逐渐力不从心。


说到底,AI算法是对于数据的统计和总结,是对于函数的拟合,而不是什么魔法黑箱。使用这种强大的算法工具,需要科学的方法。这里,我使用高林老师讲到的,使用不同角度的照片重建3D物体模型的任务为例。

使用AI方法的典型错误示范是,把这些数据转化成向量,直接塞进神经网络输入,然后祈祷通过训练,它能够输出一个合理的3D的模型。这样做显然是只知其一不知其二。神经网络可能理论上能逼近任何函数,但是不使用正确的方法就期望它能够达到这样的目标,还不如去买彩票。对于这个“黑箱”不了解,期望它能够解决一切问题,妄图通过玄学调参就解决一切问题,完全是违背科学精神的做法,颇有种民科的感觉了。

然而很遗憾的是,回望我做过的AI方面的工作,我完全就是在做这种事情。把AI算法当作干脆面开袋即食,遇到序列数据就塞进LSTM、Transformer中,遇到图片数据就塞进卷积网络中,也不对实际问题进行分析和建模,就无脑开始训练并进行玄学调参,取得不了什么理想的结果也是理所应当。很羞愧的是,我在这个过程中还产生了对于AI技术的厌恶。

那么正确的方法应当是什么呢?我认为首先,具体问题应当具体分析,不能把AI算法当作许愿池,把麻烦一股脑丢给它。以CV领域很出名的NeRF来说明,首先将3D模型建模为带有密度和颜色属性的点云,再通过照片及其位置角度信息,计算得到大量对于点云密度和颜色的约束。然后在这些约束的监督下训练网络,得到拟合的点云密度和颜色函数,最后依据这个函数值再得到模型的点云。可以看到,传统算法仍然占据其中很大的比例,重要性丝毫不比神经网络低。换句话说,我认为把3D模型建模为带有密度和颜色的点云才是这个工作的灵魂,在这之后的各种技术方法都显得水到渠成。只在最需要泛化的部分,将拟合函数的任务交给神经网络。AI这个大杀器应当用在最需要它的地方。让它去解决一切问题,乃至于传统算法已经能够很好解决的问题,不科学也不现实。

传统算法和人工智能算法之间从来就不存在不可逾越的鸿沟。它们本来就应该各司其职,在实际问题解决的各方面充分发挥自身的优点。将它们割裂开来,或者干脆用AI替代传统算法的做法注定是要失败的。


我以后想做体系架构相关方向,所以最后我想结合处理器设计谈一点自己的想法。

“一生一芯”余博的讲义里就提到过,现代处理器系统如此复杂,以至于一个人已经很难完全理解它的工作状态了。这一点和传统算法面临的瓶颈有一些相似之处。高性能处理器为了性能的提升,加入越来越多的技术,变得越来越复杂。不过处理器需要顾及PPA,一定程度上也是限制了复杂度的提升。这种复杂性带来了很大的问题,但终究是可以通过“抽象”这种强大的武器解决的。

但其实处理器设计与传统算法的处境还是有不同的。传统算法难以泛形态,但这就是另一个故事了。化的弱点,AI的统计方法能够很好地解决。然而处理器设计似乎不需要什么泛化能力。所以如果要将AI的技术真正用于处理器的设计中,或许可以探索spec、生成测试用例等等。如果指望通过AI直接进行微架构乃至于电路设计实现技术突破,我认为是不现实的。AI没法做原始创新,只能对现有的设计进行组合,而且不验证也很难放心用,验证失败也没法修改(AI生成的门电路估计肯定是人类不可读的状态吧),只能调调AI重新生成。芯片还是过于成本敏感,这些可能在流片白菜化之前只能是学术玩具了。AI体系架构或许需要一种全新的编程模型,或者脱离门电路的计算机形态,但这就是另一个故事了。

无网ICP备 1145141919810
Built with Hugo
主题 StackJimmy 设计