人工智能(Artificial Intelligence,AI)是指计算机像人一样拥有智能能力,是一个融合计算机科学、统计学、脑神经学和社会科学的前沿综合学科,可以代替人类实现识别、认知,分析和决策等多种功能。如当你说一句话时,机器能够识别成文字,并理解你话的意思,进行分析和对话等。
2. 人工智能发展历程
**人工智能的起源:**人工智能在五六十年代时正式提出,1950年,一位名叫马文·明斯基(后被人称为“人工智能之父”)的大四学生与他的同学邓恩·埃德蒙一起,建造了世界上第一台神经网络计算机。这也被看做是人工智能的一个起点。巧合的是,同样是在1950年,被称为“计算机之父”的阿兰·图灵提出了一个举世瞩目的想法——图灵测试。按照图灵的设想:如果一台机器能够与人类开展对话而不能被辨别出机器身份,那么这台机器就具有智能。而就在这一年,图灵还大胆预言了真正具备智能机器的可行性。1956年,在由达特茅斯学院举办的一次会议上,计算机专家约翰·麦卡锡提出了“人工智能”一词。后来,这被人们看做是人工智能正式诞生的标志。就在这次会议后不久,麦卡锡从达特茅斯搬到了MIT。同年,明斯基也搬到了这里,之后两人共同创建了世界上第一座人工智能实验室——MIT AI LAB实验室。值得追的是,茅斯会议正式确立了AI这一术语,并且开始从学术角度对AI展开了严肃而精专的研究。在那之后不久,最早的一批人工智能学者和技术开始涌现。达特茅斯会议被广泛认为是人工智能诞生的标志,从此人工智能走上了快速发展的道路。
人工智能的第一次高峰 在1956年的这次会议之后,人工智能迎来了属于它的第一段Happy Time。在这段长达十余年的时间里,计算机被广泛应用于数学和自然语言领域,用来解决代数、几何和英语问题。这让很多研究学者看到了机器向人工智能发展的信心。甚至在当时,有很多学者认为:“二十年内,机器将能完成人能做到的一切。”
人工智能第一次低谷: 70年代,人工智能进入了一段痛苦而艰难岁月。由于科研人员在人工智能的研究中对项目难度预估不足,不仅导致与美国国防高级研究计划署的合作计划失败,还让大家对人工智能的前景蒙上了一层阴影。与此同时,社会舆论的压力也开始慢慢压向人工智能这边,导致很多研究经费被转移到了其他项目上。
在当时,人工智能面临的技术瓶颈主要是三个方面,第一,计算机性能不足,导致早期很多程序无法在人工智能领域得到应用;第二,问题的复杂性,早期人工智能程序主要是解决特定的问题,因为特定的问题对象少,复杂性低,可一旦问题上升维度,程序立马就不堪重负了;第三,数据量严重缺失,在当时不可能找到足够大的数据库来支撑程序进行深度学习,这很容易导致机器无法读取足够量的数据进行智能化。
因此,人工智能项目停滞不前,但却让一些人有机可乘,1973年Lighthill针对英国AI研究状况的报告。批评了AI在实现“宏伟目标”上的失败。由此,人工智能遭遇了长达6年的科研深渊。
人工智能的崛起 1980年,卡内基梅隆大学为数字设备公司设计了一套名为XCON的“专家系统”。这是一种,采用人工智能程序的系统,可以简单的理解为“知识库+推理机”的组合,XCON是一套具有完整专业知识和经验的计算机智能系统。这套系统在1986年之前能为公司每年节省下来超过四千美元经费。有了这种商业模式后,衍生出了像Symbolics、Lisp Machines等和IntelliCorp、Aion等这样的硬件,软件公司。在这个时期,仅专家系统产业的价值就高达5亿美元。
人工智能第二次低谷:可怜的是,命运的车轮再一次碾过人工智能,让其回到原点。仅仅在维持了7年之后,这个曾经轰动一时的人工智能系统就宣告结束历史进程。到1987年时,苹果和IBM公司生产的台式机性能都超过了Symbolics等厂商生产的通用计算机。从此,专家系统风光不再。
人工智能再次崛起: 上世纪九十年代中期开始,随着AI技术尤其是神经网络技术的逐步发展,以及人们对AI开始抱有客观理性的认知,人工智能技术开始进入平稳发展时期。1997年5月11日,IBM的计算机系统“深蓝”战胜了国际象棋世界冠军卡斯帕罗夫,又一次在公众领域引发了现象级的AI话题讨论。这是人工智能发展的一个重要里程。
2006年,Hinton在神经网络的深度学习领域取得突破,人类又一次看到机器赶超人类的希望,也是标志性的技术进步。
【注】Geoffrey Hinton的论文《A fast learning algorithm for deep belief nets》链接地址
在最近三年引爆了一场商业革命。谷歌、微软、百度等互联网巨头,还有众多的初创科技公司,纷纷加入人工智能产品的战场,掀起又一轮的智能化狂潮,而且随着技术的日趋成熟和大众的广泛接受,这一次狂潮也许会架起一座现代文明与未来文明的桥梁。
2016 年,Google 的 AlphaGo 赢了韩国棋手李世石,再度引发 AI 热潮。
AI不断爆发热潮,是与基础设施的进步和科技的更新分不开的,从 70 年代 personal 计算机的兴起到 2010 年 GPU、异构计算等硬件设施的发展,都为人工智能复兴奠定了基础。
同时,互联网及移动互联网的发展也带来了一系列数据能力,使人工智能能力得以提高。而且,运算能力也从传统的以 CPU 为主导到以 GPU 为主导,这对 AI 有很大变革。算法技术的更新助力于人工智能的兴起,最早期的算法一般是传统的统计算法,如 80 年代的神经网络,90 年代的浅层,2000 年左右的 SBM、Boosting、convex 的 methods 等等。随着数据量增大,计算能力变强,深度学习的影响也越来越大。2011 年之后,深度学习的兴起,带动了现今人工智能发展的高潮。
小知识:人工智能开创先驱
第一位名人大家耳熟能详,那就是大名鼎鼎的“计算机科学之父”和“人工智能之父”——阿兰·图灵(Alan Mathison Turing)。他对人工智能的贡献集中体现于两篇论文:一篇是1936年发表的《论数字计算在决断难题中的应用》,在文中他对“可计算性”下了一个严格的数学定义,并提出著名的“图灵机”设想,从数理逻辑上为计算机开创了理论先河;而另一篇论文对人工智能的影响更为直接,其名字就是《机器能思考吗》,在这篇论文中,图灵提出了一种判定机器是否具有智能的实验方法,即著名的图灵测试:如果一台机器能够与人类展开对话而不能被辨别出其机器身份,那么这台机器就是智能的。“中文房间实验”正是图灵测试的一个变种。可以说,图灵是第一个严肃地探讨人工智能标准的人物,被称作“人工智能之父”当之无愧。
第二位名人是一位神童,18岁即取得数理逻辑博士学位,这就是“控制论之父”维纳(Norbert Wiener)。1940年,维纳开始考虑计算机如何能像大脑一样工作,发现了二者的相似性。维纳认为计算机是一个进行信息处理和信息转换的系统,只要这个系统能得到数据,就应该能做几乎任何事情。他从控制论出发,特别强调反馈的作用,认为所有的智能活动都是反馈机制的结果,而反馈机制是可以用机器模拟的。维纳的理论抓住了人工智能核心——反馈,因此可以被视为人工智能“行为主义学派”的奠基人,其对人工神经网络的研究也影响深远。
第三位名人经常与图灵抢“人工智能之父”的帽子,第一次提出了“人工智能(Artificial Intelligence)”这一名词。他就是LISP语言发明者,真正的“人工智能之父”约翰·麦卡锡(John McCarthy)。在1955年,约翰·麦卡锡与另一位人工智能先驱马文·明斯基以及“信息论”创始人克劳德·香农一道作为发起人,邀请各路志同道合的专家学者在达特茅斯学院共同讨论人工智能。会上,正是约翰•麦卡锡说服大家使用人工智能(Artificial Intelligence)这一术语,参会人员也热烈讨论了自动计算机、自然语言处理和神经网络等经典人工智能命题。
3. 人工智能的研究领域及分层
人工智能研究的领域主要有五层,最底层是基础设施建设,包含数据和计算能力两部分,数据越大,人工智能的能力越强。往上一层为算法,如卷积神经网络、LSTM 序列学习、Q-Learning、深度学习等算法,都是机器学习的算法。第三层为重要的技术方向和问题,如计算机视觉,语音工程,自然语言处理等。还有另外的一些类似决策系统,像 reinforcement learning(编辑注:增强学习),或像一些大数据分析的统计系统,这些都能在机器学习算法上产生。第四层为具体的技术,如图像识别、语音识别、机器翻译等等。最顶端为行业的解决方案,如人工智能在金融、医疗、互联网、交通和游戏等上的应用,这是我们所关心它能带来的价值。
值得一提的是机器学习同深度学习之间还是有所区别的,机器学习是指计算机的算法能够像人一样,从数据中找到信息,从而学习一些规律。虽然深度学习是机器学习的一种,但深度学习是利用深度的神经网络,将模型处理得更为复杂,从而使模型对数据的理解更加深入。
4. 人工智能的主流研究方向
计算机视觉
2000年左右,人们开始用机器学习,用人工特征来做比较好的计算机视觉系统。如车牌识别、安防、人脸等技术。而深度学习则逐渐运用机器代替人工来学习特征,扩大了其应用场景,如无人车、电商等领域。
语音技术
2010 年后,深度学习的广泛应用使语音识别的准确率大幅提升,像 Siri、Voice Search 和 Echo 等,可以实现不同语言间的交流,从语音中说一段话,随之将其翻译为另一种文字;再如智能助手,你可以对手机说一段话,它能帮助你完成一些任务。与图像相比,自然语言更难、更复杂,不仅需要认知,还需要理解。
自然语言处理
目前一个比较重大的突破是机器翻译,这大大提高了原来的机器翻译水平,举个例子,Google 的 Translation 系统,是人工智能的一个标杆性的事件。2010 年左右, IBM 的"Watson"系统在一档综艺节目上,和人类冠军进行自然语言的问答并获胜,代表了计算机能力的显著提高。
决策系统
决策系统的发展是随着棋类问题的解决而不断提升,从 80 年代西洋跳棋开始,到 90 年代的国际象棋对弈,机器的胜利都标志了科技的进步,决策系统可以在自动化、量化投资等系统上广泛应用。
大数据应用
可以通过你之前看到的文章,理解你所喜欢的内容而进行更精准的推荐;分析各个股票的行情,进行量化交易;分析所有的像客户的一些喜好而进行精准的营销等。机器通过一系列的数据进行判别,找出最适合的一些策略而反馈给我们。
5. 人工智能的挑战
计算机视觉:未来的人工智能应更加注重效果的优化,加强计算机视觉在不同场景、问题上的应用。
语音识别:当前的语音识别虽然在特定的场景(安静的环境)下,已经能够得到和人类相似的水平。但在噪音情景下仍有挑战,如口语、方言等长尾内容。未来需增强计算能力、提高数据量和提升算法等来解决这个问题。
自然语言处理:机器的优势在于拥有更多的记忆能力,但却欠缺语意理解能力,包括对口语不规范的用语识别和认知等。人说话时,是与物理事件学相联系的,比如一个人说电脑,人知道这个电脑意味着什么,或者它是能够干些什么,而在自然语言里,它仅仅将"电脑"作为一个孤立的词,不会去产生类似的联想,自然语言的联想只是通过在文本上和其他所共现的一些词的联想, 并不是物理事件里的联想。所以如果要真的解决自然语言的问题,将来需要去建立从文本到物理事件的一个映射,但目前仍没有很好的解决方法。因此,这是未来着重考虑的一个研究方向。
决策系统:存在两个问题,第一是不通用,即学习知识的不可迁移性,如用一个方法学了下围棋,不能直接将该方法转移到下象棋中,第二是大量模拟数据。所以它有两个目标,一个是算法的提升,如何解决数据稀少或怎么自动能够产生模拟数据的问题,另一个是自适应能力,当数据产生变化的时候,它能够去适应变化,而不是能力有所下降。所有一系列这些问题,都是下一个五或十年我们希望很快解决的。
红色字体标记为推荐个人推荐框架。
当进入AI时,你会听到的第一个框架之一就是Google的TensorFlow。TensorFlow是一个使用数据流图表进行数值计算的开源软件。这个框架被称为具有允许在任何CPU或GPU上进行计算的架构,无论是台式机、服务器还是移动设备。这个框架在Python编程语言中是可用的。TensorFlow对称为节点的数据层进行排序,并根据所获得的任何信息做出决定。https://www.tensorflow.org/
优点:
使用易于学习的语言(Python)。
使用计算图表抽象。
用于TensorBoard的可用性的可视化。
缺点:
这很慢,因为Python不是语言中最快的。
缺乏许多预先训练的模型。
不完全开源。
2. Microsoft CNTK:“开源深度学习工具包”
语言:C ++。
我们可以称之为微软对Google的TensorFlow的回应。微软的计算网络工具包是一个增强分离计算网络模块化和维护的库,提供学习算法和模型描述。在需要大量服务器进行操作的情况下,CNTK可以同时利用多台服务器。据说它的功能与Google的TensorFlow相近;但是,它会更快。https://github.com/Microsoft/CNTK
优点:
这是非常灵活的。
允许分布式训练。
支持C ++、C#、Java和Python。
缺点:
它以一种新的语言——网络描述语言(Network Description Language , NDL)来实现。
缺乏可视化。
3. Theano:“数值计算库”
语言:Python。
Theano是TensorFlow的强有力竞争者,是一个功能强大的Python库,允许以高效率的方式进行涉及多维数组的数值操作。Theano库透明地使用GPU来执行数据密集型计算而不是CPU,因此操作效率很高。出于这个原因,Theano已经被用于为大规模的计算密集型操作提供动力大约十年。然而,在2017年9月,宣布Theano的主要开发将于2017年11月发布的1.0版本后停止。这并不意味着它是一个不够强大的库。你仍然可以随时进行深入的学习研究。https://github.com/Theano/Theano
优点:
正确优化CPU和GPU。
有效的数字任务。
缺点:
与其他库相比,原生Theano有点低级。
需要与其他库一起使用以获得高度的抽象化。
AWS上有点bug。
4. Caffe:“快速、开源的深度学习框架”
语言:C ++。
Caffe是一个强大的深度学习框架。像这个清单上的其他框架一样,深度学习的研究速度非常快。借助Caffe,您可以非常轻松地构建用于图像分类的卷积神经网络(CNN)。Caffe在GPU上运行良好,这有助于在运行期间提高速度。http://caffe.berkeleyvision.org/
Caffe主要的类有:
优点:
Python和MATLAB的绑定可用。
性能表现良好。
无需编写代码即可进行模型的训练。
缺点:
对于经常性网络不太好。
新体系结构不太好。
语言:Python。
Keras是一个用Python编写的开源的神经网络库。与TensorFlow、CNTK和Theano不同,Keras不是一个端到端的机器学习框架。相反,它作为一个接口,提供了一个高层次的抽象化,这使得无论它坐落在哪个框架上,神经网络的配置都会变得容易。谷歌的TensorFlow目前支持Keras作为后端,而微软的CNTK也会在很短的时间内做到这一点。https://keras.io/
优点:
它是用户友好的。
它很容易扩展。
在CPU和GPU上无缝运行。
与Theano和TensorFlow无缝工作。
缺点:
不能有效地用作独立的框架。
语言:C。
Torch是一个用于科学和数字操作的开源机器学习库。这是一个基于Lua编程语言而非Python的库。Torch通过提供大量的算法,使得深度学习研究更容易,并且提高了效率和速度。它有一个强大的N维数组,这有助于切片和索引等操作。它还提供了线性代数程序和神经网络模型。http://torch.ch/
优点:
非常灵活。
高水平的速度和效率。
大量的预训练模型可用。
缺点:
不清楚的文献记录。
缺乏即时使用的即插即用代码。
它基于一种不那么流行的语言——Lua。
语言:C#。
这是专为C#程序员设计的。Accord.NET框架是一个.NET机器学习框架,使音频和图像处理变得简单。这个框架可以有效地处理数值优化、人工神经网络,甚至可视化。除此之外,Accord.NET对计算机视觉和信号处理的功能非常强大,同时也使得算法的实现变得简单。http://accord-framework.net/
优点:
它有一个强大而积极的开发团队。
非常有据可查的框架。
质量可视化。
缺点:
不是一个非常流行的框架。
比TensorFlow慢。
语言:Scala。
Apache的Spark MLlib是一个非常可扩展的机器学习库。它非常适用于诸如Java、Scala、Python,甚至R等语言。它非常高效,因为它可以与Python库和R库中的numpy进行互操作。MLlib可以轻松插入到Hadoop工作流程中。它提供了机器学习算法,如分类、回归和聚类。这个强大的库在处理大型数据时非常快速。https://www.evget.com/product/3780
优点:
对于大规模数据处理非常快速。
提供多种语言。
缺点:
入门较难。
即插即用仅适用于Hadoop。
语言:Python。
Sci-kit learn是一个非常强大的机器学习Python库,主要用于构建模型。使用numpy、SciPy和matplotlib等其他库构建,对统计建模技术(如分类、回归和聚类)非常有效。Sci-kit learn带有监督学习算法、无监督学习算法和交叉验证等功能。http://scikit-learn.org/
优点:
许多主要算法的可用性。
有效的数据挖掘。
缺点:
不是构建模型的最佳选择。
GPU效率不高。
语言:C ++。
MLPack是一个用C ++实现的可扩展的机器学习库。因为它是用C ++编写的,所以你可以猜测它对于内存管理是非常好的。MLPack以极高的速度运行,因为高质量的机器学习算法与库一起出现。这个库是对新手友好的,并提供了一个简单的API使用。http://mlpack.org/
优点:
非常可扩展。
Python和C ++绑定可用。
缺点:
文档相对有限。