登陆后访问



H
I
S
T
O
R
Y

数学是人工智能的必备武器

摘要:“搞好机器学习,关键是数学,但你又不能把机器学习变成搞数学,那样就漫无边际了。”
中国过去十多年的创新大部分是模式创新和copy-to-china渠道创新;但发展到今天,技术创新的重要性已经越来越高,人才结构也发生了巨大的变化;VC行业也不可能不随着市场的成熟而发生变化。中国能执行o2o的团队有几万个,能执行智能金融/法律/医疗的团队可能各自只有几十个,服务这两种市场需要不同的VC,因为理解互联网基本只需要常识,理解人工智能需要反常识。
我觉得正如互联网公司兴起时,VC被洗牌了一次,现在人工智能的兴起,恐怕VC也会被再洗一次牌。三个角度的洗牌:
① 最基础的,就是知识结构变了,理解人工智能要比理解互联网难得多,老革命们不但遇到新问题,而且很难找到懂行的助手;
② 现在出现了一些新的投资机构,不再像传统的VC,而是它们本身就像一个互联网企业,用的是社区思维、服务思维,在重构VC这个行业的渠道、项目发现的方式等。传统的投资经理的角色恐怕会发生很大的变化,会更接近于产品经理+运营经理;
③ 新的AI投资机构,本身就是用AI技术武装起来的,他们从项目数据库、潜在项目发现、社区维护、LP服务等,都用技术手段提高自己的效率、加强信息透明度、降低人员流动的伤害。
总结:VC这个行业,也是要被技术本身冲击的。不仅仅是数据处理这个表面的事情,而会带来渠道的、人员的、商业模式的全方位变革。长江后浪推前浪,前浪死在沙滩上。如今我觉得人工智能这个专业要开个AI101,我觉得第一节课就要讲怎么换马甲。从知识图谱到深度学习,能活到今天还不是靠一个马甲接一个马甲的换?70年代专家系统,80年代lisp,90年代agent,00年代语义网,10年代知识图谱,不会换马甲的全都饿死了,和技术水平高低没多大关系。
图1
目前数据建设新四化:信息化,大数据化,自动化,智能化;每一个都是在前一个阶段的发展之上,也很难跳过前一个阶段。

图2
开放数据的努力,其实分为三个部分。第一是可公开性,一个数据是否必须隐藏而不为公众以任何形式所知。第二是可获得性,即可公开的数据如何比较方便地被使用。代表技术是知识图谱。第三是可发现性,即为提高数据的采用,帮助人们从浩如烟海的数据中寻找高价值数据。代表技术是搜索引擎。一个通常的关于开放数据的误解是只是关于可公开性的,特别是认为政府不愿意开放数据。其实不然。在提高数据的可获得性和可发现性上,包括政府在内的大量机构,都是有强烈需求的。这也是“OpenKG”组织的努力目标。
AI对数学要求较高,对编程要求较低,而IT开发对于编程要求高,特别是对编程经验要求高,但对数学要求不高。然而搞AI就完全是另一回事,关键是数学。大学工科数学?那只是一个基础,想再搞懂AI的那些基本的算法和思想,你不但需要把这三板斧基础打扎实,而且还需要学习矩阵分析和凸优化。这只是一个入门,想要在这个领域有点建树,你可能还需要在随机过程、泛函分析、微分流形、数值分析和优化理论等领域进一步深造。想要搞机器人学或自动驾驶?还得研究微分方程、运动学、动力学。毫不夸张的说,在AI学习的入门阶段,数学是主要的攻坚对象,任何胸有大志的AI学习者都不要幻想绕过数学。

图3
深度学习现在差不多就是民工活,调来调去,刷来刷去。文章发得飞快,貌似热闹,但有多少是能沉淀下来的实质真进展、真原理、真算法、真技术,又有多少是换个数据就不靠谱了的蒙事撞大运?既缺乏清澈干净的内在美感,又不致力于去伪存真、正本清源,只图热闹好看,迟早把arXiv变成废纸堆。
机器学习中有效的数学方法,绝大多数都是几十年前做出来的成果。因此做AI工程,重点是充分理解、熟练掌握和运用这些成熟的数学工具,尊重分工,把数学领域的创新交给数学家和应用数学家。机器学习学者张志华教授曾经说过:“搞好机器学习,关键是数学,但你又不能把机器学习变成搞数学,那样就漫无边际了。”对于绝大多数AI工程师来说,还是应该以机器学习为主导,对于其中涉及的数学知识形成理解,打牢基础,突出重点,适度拓宽,这就算过关了。以后根据主攻方向,随用随学,急用先学,这样就可以了。

图4
数学过关以后,还得懂编程语言、系统架构、数据库、异构平台上的高性能计算,要成为一个优秀的AI工程师,这些都得通。吴恩达就说过,深度学习的前沿是高性能计算。
前不久,我向一个在国内AI界有点名气的新锐AI科学家了解情况,他们手上的深度学习项目使用Python和C++语言开发,都是基于开源的深度学习框架,但自己的工程师也要做相当程度的调整和改进。那么他们对于工程师编程语言的掌握程度有多高的要求呢?Python语言不需要自己设计class,就更不用提什么decorator,metaclass,asyncio了,C++只要求看懂框架代码当中核心的部分,只有很少的人需要去修改C++代码。
这里头真正有点挑战的,是要熟练掌握Python标准库和一些流行包中的API用法,快速完成数值计算、数据清洗、数据可视化等工作,这是需要时间去熟悉和掌握的。但有经验的人知道,这些可以边做边熟悉,不是什么硬约束。如果你在“城头变幻大王旗”的开发界混过几年,转行搞AI,你的编程能力绝对是下山猛虎,完全不必担心。你真正要过的,就是数学关。只要你过了数学这关,后面将数学理解、工具框架、数据资源和应用结合起来形成正向循环,就可以一步一步的攀爬AI的高峰了。

图5
说起来现在有一个深度学习真正变现了的领域,就是广告和推荐,但所有需要这个的公司都成立了自己的团队,没有创业的窗口。在模型共享化的今天,许多方面的技术壁垒已经被无限降低,许多所谓AI创业公司都只是拿公开的模型来调而已(然后向投资者大吹技术实力)。
可控核聚变、量子计算机、强人工智能,是目前意义最大的三个技术领域。但是都没有头绪,什么时候能突破完全没法估计,有时会说要50年,等50年过去还是要50年,其实就是说不知道要多久。
到目前为止,人工智能虽然在下棋、图像识别、自动驾驶等多个领域取得了令人印象深刻的成就,但都只是“人工”的结果,完全是人类自身的智力活动成果。“机器智能”的进展并没有想象的那么大,甚至可以说毫无进展,机器本身没有任何智能。
从程序开发的角度看,如果先不管这些人工智能程序最终的效果,它们只不过是一些算法思想与程序代码,并没有任何特殊之处。代码是程序员一行行编写、修改、调试出来的,程序中用到的数据不管有多少,都是开发者有意识地收集、生成、维护的。如果告诉程序员群体,这里有一个程序,它的代码是这些,数据是那些,它的功能是对给定的输入产生期望的输出,没有任何一个程序员会感到奇怪,因为所有程序都是这样的,利用电脑的存储与数学运算能力,设计算法写代码实现,让输入的数据得到预想的输出。

图6
虽然说是“机器”在学习,其实机器仍然和过去一样,做的是数据存储、数学运算,没有本质区别。所有机器学习技术的共同特征是,电脑存储了一些“系数”,这些系数是“神经网络”、“分类器”等数学结构中可变的部分,开发者让电脑程序执行或多或少的“样本”进行“训练”,得到正确或者错误的输出,根据结果回头去正向负向改变这些系数。近年来的新趋势是:
1. 系数数量越来越多,多达上百M,比程序代码行数还要多得多。
组成的数学结构越来越复杂,如以前简单的三层神经网络,发展成十几层甚至上百层的多层“卷积神经网络”。各种新型的数据网络结构层出不穷,非常活跃。
2. 用于训练的样本数量,从过去的几百、几千,发展到几十万、上百万个。
训练需要的时间越来越长,需要GPU、机器学习专用芯片等新式的硬件支持,过去的硬件跑不动训练了。

图7
3. 训练样本,过去是人工收集、人工标注正确输出,现在发展到机器自我“强化学习”。
如AlphaGo进行海量的自我对局,生成几千万个样本,回头用于神经网络训练。也有些样本是程序在互联网上用“爬虫”自动收集的。因此,机器学习有时需要海量的服务器支持,可能需要十万个以上,有实力的公司才做得了。
4. 研究者群体在机器训练方法上取得了突破,对于很复杂的数学结构、海量的样本,想出了“深度学习”这样的办法。
在语音识别、图像识别等多个领域,最终效果甚至可以超过人类的水平,在指标效果上比过去有了重大突破。程序识别率指标突破临界点以后,就会对产业产生爆发式冲击。如语音识别几十年来都在研发,准确率一直在提升,但都不温不火。但这两年来准确率足以实用了,一下就爆发了。
现在的人工智能程序,全是人写出来的。机器自我生成数据训练神经网络数据也是人让它做的,代码不会变,程序输入输出的目的不会变。人类只是没法理解几百M的神经网络数据黑箱子,说不清楚为什么就挺厉害了,但并不是不了解它。了解多的研究者会知道黑箱子有时会出一些离谱的错误,如将完全没有意义的混乱图片认成一只猫。

 

声明:文章转自【数学与人工智能】微信公众号,版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请联系删除,谢谢。

相关文章

奇妙的数字:巧合数

Posted by - November 10, 2017 1763
世界上,无时无刻不在发生着一些看似偶然的巧合,有让人遗憾的,也有让人庆幸的,在数学上,也有很多的巧合。

数学之美|填色游戏

Posted by - November 09, 2017 2060
人们提起数学之“美”时常意指其抽象涵义,罗素称之为“朴素冷峻之美……庄严纯净,能够达到严格的完美”。然而,人类也一向从数学中发现审美上的...