程序员

首页 » 常识 » 预防 » 对于移动开发,人工智能的到来意味着什么
TUhjnbcbe - 2021/5/3 19:59:00

近几年来人工智能的话题那是炙手可热。在国内很多大佬言必谈机器学习和大数据;在美国刚毕业的人工智能PHD也是众人追捧,工资直逼NBA球星。人工智能甚至成为了互联网领域茶余饭后的话题——仿佛不懂人工智能就是落伍了。

笔者作为一名移动开发者,对于如火如荼的人工智能和机器学习,也保持了密切的追踪和了解。这篇文章就是总结我在硅谷工作的所见所闻,抛砖引玉的与大家分享一下我对于人工智能的思考。

人工智能是什么?

关于人工智能(AI),我们经常听到这样一些相关词:大数据(BigData),机器学习(MachineLearning),神经网络(NeuralNetwork)。那么这些词到底有什么区别?我们来看下面一则小故事。

从前有个程序员叫牛顿。他定义了一个方法来计算自由落体的速度:

funcgetVelocity(timet:second)-Float{return9.8*t}

他是怎么得到这个方法的呢?牛顿自己被一个苹果砸中之后,做了大量的逻辑推导和实验论证之后,得到了这个公式。这是目前传统意义上的写程序方法——理解清楚了事物的内在逻辑和真相后,由人来定义方法。直到今天,绝大多数程序都是这么写出来的。

而所谓的人工智能,就是机器自己定义方法。人工智能的实现方法有很多,比如可以让机器来模拟大脑,然后像人一样思考,从而定义方法。机器学习只是另一种实现人工智能的方法,就是由大数据定义方法。假如牛顿时期就有机器学习,它得出自由落体速度的过程是这样的:

1.收集尽可能多的自由落体实验数据。假如收集到的数据如下

负责人速度(m/s)时间(s)伽利略9.81牛顿19.62达芬奇29.43亚里士多德

2.分析数据。机器学习会分析出,亚里士多德的数据偏差太大不予采纳。其他三人的数据满足同一规律。

3.定义方法。根据上面数据,机器学习得出结论,速度=时间*9.8。

随着数据收集得越多,机器学习得到的结论就越准确。其实人类学习的过程也十分类似:书上有大量的知识(加工的数据),我们看了之后进行理解思考,然后得出自己的结论。

开普勒就是个著名的人肉的机器学习实践者:他前半辈子看星星,把观测到的数据记录下来;后半辈子用自己的逻辑和理解分析这些数据;最后得出行星运动的开普勒-牛顿模型。然后用这个模型去预测其他行星运转,同时新的数据用来修正模型的参数,使之逼近完美。

那么数据和人相比有什么优势呢?我认为是更快更准确。人在定义方法时,总是需要对该方法的前后因果、逻辑关系、各种情况都要求考虑周全,这有时需要花费很多时间去研究论证,而且忽略某些极端情况也时有发生,导致定义漏洞百出。而数据在互联网时代,获取的成本是很低的。在这样情况下,大量数据的轻易获得会使得方法定义越来越快;同时现实中数据涵盖的情况之广,也使得依次定义的方法更加准确。

吴*博士在《智能时代》一书中对大数据的优势进行了以下总结:“在无法确定因果关系时,数据为我们提供了解决问题的新方法,数据中所包含的信息可以帮助我们消除不确定性,而数据之间的相关性在某种程度上可以取代原来的因果关系,帮助我们得到想要的答案,这便是大数据的核心。”

我们回到上文牛顿自由落体速度的实验中去。实际上,机器学习拿到的实验数据,可能是以下的记载:

“9月15日的夜晚,小雨微风。伽利略在比萨斜塔上扔下了1颗铅球,质量为4kg,初始速度为0,到达地面时间为6s多。”

这个数据样本中有很多特征,时间、空气湿润度、风力、比萨斜塔的高度、铅球质量、初始速度、到达地面时间等等。那么自由落体速度到底跟哪些特征相关?如果让机器自己去分析,这就叫做无监督学习。如果我们告诉机器,不要care质量和时间,重点分析铅球到达地面的时间和比萨斜塔的高度,这就叫做监督学习。后者在于借鉴了人类的智慧,这样机器学习就有了大致的方向。

至此,机器学习依然难以称得上“智能”--它无非是更快更准确的得出答案而已。如果仅仅如此,AlphaGo就算将所有九段棋手的对弈研究透彻(这些对弈的输赢已定,相当于人为标注走法好坏,故为监督学习),水平也就十段而已,于九段相比,也就是略胜一筹,发挥更稳定一点。然而事实是,AlphaGo的棋力要远胜人类最高水平。

其实AlphaGo在下棋时,每下几步,系统都会告诉它胜率是否提升。这种不断反馈的机制可以让AlphaGo实时强化棋力,并鼓励其尝试人类从没有下过的路数,从而实现超越人类。这种反馈的训练方式就叫做增强学习。

最后讲讲神经网络是怎么回事。以我粗浅的理解,神经网络是由神经元组成,每个神经元都有对应的功能。比如,人工智能要识别一堆动物照片中的母狗,第一个神经元做的是判断哪些动物是狗,第二个神经元做的就是区分狗的公母。

上面这个例子中,我们是先让第一个神经元进行判断,再将结果传递给第二个神经元。也就是说,后者的输入是前者的输出,这就是神经网络分层的概念。所以AlphaGo这种大型神经网络,就是基于神经元分层这个原理。

因为机器学习的发展在人工智能领域一枝独秀。所以提到人工智能,几乎就相当于是在谈机器学习。

人工智能在移动开发上有哪些应用?

前面说了这么多,肯定很多人要问:这些都很高大上,可惜我是iOS/Android工程师,人工智能到底关我何事?其实人工智能在移动端上由来已久,且可能会深入我们的日常开发中,所以我们有必要对此高度敏感。这里笔者以iOS平台为例,来分享一下人工智能在移动端上的应用。

首先,乔布斯老爷子早在若干年前就在iPhone上布局了智能语音助手Siri。Siri可谓是人工智能和机器学习在移动端上第一次成功的应用:它结合了语音识别(SpeechRecognition)和自然语言处理(NaturalLanguageProcessing)两大人工智能操作(当然前者是后者的一部分)。后来因为苹果封闭的基因,Siri的数据量一直没有上去,而我们都知道数据量是提高人工智能水平的关键,所以现在Siri现在一直很鸡肋。

同Siri类似,Facebook在他们的MessengerApp中集成了聊天机器人(Chatbot)。在去年的F8现场,我还清楚地记得他们号称这是App开发的新纪元-由聊天机器人和人工智能主导的App将取代传统手机应用,而Messenger将从一款聊天应用变成一个平台甚至是一个操作系统。这个跟

1
查看完整版本: 对于移动开发,人工智能的到来意味着什么