最近朋友闲谈,常常谈到AI将会改变世界,纷纷表示,要让孩子早些学AI,以免输在起跑线上。我这个二把刀“科学家”,也常常(错误地)被请教AI如何。我的确不是AI的专家,只是20年前,上大学的时候,自己开发过人工神经网络的应用,近年也偶尔应用机器学习算法,所以冒胆写了个扫盲帖。您看着顺眼,赞一下当赏钱;您看着哪里错了,指正我就好了,但别骂我:)
我们所说的AI,也就是人工智能,到底是什么,我们有能用它来做什么?人工智能应该是一个大众都能理解的术语---基本上就是电脑可以干人脑的活,可以思考,可以分析。人工智能的优势在于电脑比人脑算得快,电脑记性好,不会忘事。
人工智能听起来很好,可是人工智能到底怎么实现的呢?归根到底,还是数学和数据,外加上越来越快的计算机。人们研究一个现象,一个事物,一个问题,往往都从前因和后果进行分析。从开发数学模型的角度来看,前因,就是模型的输入,后果,就是模型的输出。开发模型的本质,就是建立前因(输入)和后果(输出)的关系。比如说,地上有一块石头,你踢了一脚,石头一下子飞起来。要是想知道,你用了多大劲,石头飞多远,我们肯定会用牛顿的力学方程,比如F=ma去分析。通过一系列的联立方程,可以建立一个你用的力气(F)和石头飞的距离(S)之间的数学模型。当我们研究简单的问题的时候,物理模型或者化学模型,能够帮我们连接前因(输入)和后果(输出)。也就是说,我们很清楚,有了前因,必然会有这样的后果。这种简单问题,我们不需要人工智能。我们在中学学得数学和物理知识,就能够解决问题了。
当问题变得更复杂一些,比如说,我们想了解今年粮食的产量,会涉及到很多个因素。挑几个重要的,可以假设平均气温(T),平均降水(P)和平均日照(S)会影响粮食产量(Y)。考虑到问题的复杂性,如果我们把所有的物理,化学,生物的知识考虑进去,我们没办法完美地建立一个基于规律的模型。为了解决问题,大家往往考虑统计模型。统计模型只关心输入和输出的数量上的联系,而不考虑他们之间存在着怎样的物理,化学和生物规律。这样,我们建议一个统计模型 Y = a1 * T + a2 * P + a3 * S。我们在应用这个模型之前,得先去确定模型中的参数a1, a2, 和a3。这样我们需要数据。通过数据,来确定模型参数,在人工智能里面,叫做训练模型。这个问题,也不复杂,有了高中和一些大学的数学知识,就可以解决这样的问题了。但是,要注意,因为我们不是百分百清楚,前因是怎样导致后果的,我们只能靠着数据来训练模型。所以,我们需要数据。模型越复杂,我们需要的数据越多。
现实生活中,有很多非常复杂的问题。比如说,炒股票,炒黄金。影响黄金价格的因素实在太多,而因素之间,又是相互作用的。对着这相互作用,我们大概其懂点,又不全懂。我们很可能确定几十个会影响黄金股票价位的因素,怎样把这些因素和黄金股票的未来价格联系在一起呢。我们没办法建立一个基于因果关系的模型,因为因素太多了,好多相互之间的因果关系,我们也不那么清楚。当然,你可以考虑建立一个统计模型,很可惜,统计模型往往要求因素之间是相互独立的。我们面临的问题,明显不符合这个条件。那么,有没有一种方法,或者模型,能够自己去处理因素之间的相互作用,同时又能够用于预报股票价钱呢?
在已过的20年里,蓬勃发展的人工神经网络,就能干这样复杂的工作。人工神经网络,模拟人类(或者动物)的神经元,通过神经元之间或强或弱的相互作用,来模拟复杂因素之间,或者是牵制,或者是促进的相互关系。一个神经网络模型,里面有大量的神经元,分在不过的逻辑层次里面,不同层次之间的神经元又两两相连,每一个连接之间的强度,都是一个参数,需要通过训练来确定。一个神经网络的规模越大,神经元越多,训练时候所需的数据越大。之所以现在人工神经网络应用越来越广泛,就是因为在其应用领域所积累的数据越来越多,满足了训练神经网络的需要。谷歌的alpha go,用的就是人工神经网络模型,估计是用几十万个棋局来训练出来的。
说到底,人工智能,和前面提到的中学生和大学生建立的物理模型和统计模型一样,都是在找前因(输入)和后果(输出)之间的关系。只是人工智能,可以处理非常复杂,因素众多的前因和后果。人工智能的背后,其实就是机器学习(machine learning)和大数据。两者缺一不可。机器学习,研究的是怎样用计算机来建立前因和后果之间的关系。大数据,是为了训练机器学习的模型和算法。一旦机器学习的模型通过大数据训练好了,就可以用来做预报,指导业务操作了。
我们上学学知识,知识多了,好多问题我们就可以看明白了,看透了。人工智能,是通过数据来学知识,通过大量数据,让电脑搞清楚了前因后果之间的来龙去脉,针对一个输入,就能产生一个输出,以至于,电脑学会了下围棋。说一千道一万,人工智能解决的还是人们关心和思考的前因和后果之间的联系。现在的机器学习技术,还有大数据积累,能让我们考虑更加复杂的问题罢了。在考虑人工智能的应用的时候,我们必须要考虑大数据。在这一行业,如果没有大数据,我们就算开发除了模型,也没办法训练他,然后应用它。至于机器学习的算法,我们跟风谷歌,站在巨人的肩膀上,暂时应该是够用了。
AlphaZero不参照任何历史数据,靠规则左右互搏,自己造数据,这个想法就石破天惊了。——————-好像是一个台湾学者为主的团队做出来的。这是一大突破
AlphaZero不参照任何历史数据,靠规则左右互搏,自己造数据,这个想法就石破天惊了。
AlphaGo就是利用统计来学习挑战人类的,由于机器有近乎无限的计算能力和存储能力,所以再高明的棋手,只要你想赢棋,你基本就不可能战胜机器,因为你的目的定了,机器的统计数据一定能战胜你。这就好比在一条平坦的马路上你和汽车赛跑,你不可能赢。但是如果要跟据实时情况来决定往哪个方向才是目的地,则你就可能跑赢汽车。 现在谷歌用AlphaGo去开发医疗诊断,个人觉得这是很适宜AlphaGo的所谓“人工智能”方向。
离开扎实的数学和物理去谈