热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

经典人工智能及开发工具不看会后悔!!

  1. 人工智能基本概念

人工智能(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. 人工智能的挑战

计算机视觉:未来的人工智能应更加注重效果的优化,加强计算机视觉在不同场景、问题上的应用。

语音识别:当前的语音识别虽然在特定的场景(安静的环境)下,已经能够得到和人类相似的水平。但在噪音情景下仍有挑战,如口语、方言等长尾内容。未来需增强计算能力、提高数据量和提升算法等来解决这个问题。

自然语言处理:机器的优势在于拥有更多的记忆能力,但却欠缺语意理解能力,包括对口语不规范的用语识别和认知等。人说话时,是与物理事件学相联系的,比如一个人说电脑,人知道这个电脑意味着什么,或者它是能够干些什么,而在自然语言里,它仅仅将"电脑"作为一个孤立的词,不会去产生类似的联想,自然语言的联想只是通过在文本上和其他所共现的一些词的联想, 并不是物理事件里的联想。所以如果要真的解决自然语言的问题,将来需要去建立从文本到物理事件的一个映射,但目前仍没有很好的解决方法。因此,这是未来着重考虑的一个研究方向。

决策系统:存在两个问题,第一是不通用,即学习知识的不可迁移性,如用一个方法学了下围棋,不能直接将该方法转移到下象棋中,第二是大量模拟数据。所以它有两个目标,一个是算法的提升,如何解决数据稀少或怎么自动能够产生模拟数据的问题,另一个是自适应能力,当数据产生变化的时候,它能够去适应变化,而不是能力有所下降。所有一系列这些问题,都是下一个五或十年我们希望很快解决的。

三、人工智能研究流行工具及平台

红色字体标记为推荐个人推荐框架。

  1. TensorFlow:“使用数据流图表的可伸缩机器学习的计算”
  2. 经典人工智能及开发工具--不看会后悔!!
    语言:C ++或Python。

当进入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的绑定可用。

性能表现良好。

无需编写代码即可进行模型的训练。

缺点:

对于经常性网络不太好。

新体系结构不太好。

  1. Keras:“人类的深度学习”

语言:Python。

Keras是一个用Python编写的开源的神经网络库。与TensorFlow、CNTK和Theano不同,Keras不是一个端到端的机器学习框架。相反,它作为一个接口,提供了一个高层次的抽象化,这使得无论它坐落在哪个框架上,神经网络的配置都会变得容易。谷歌的TensorFlow目前支持Keras作为后端,而微软的CNTK也会在很短的时间内做到这一点。https://keras.io/
经典人工智能及开发工具--不看会后悔!!
优点:

它是用户友好的。

它很容易扩展。

在CPU和GPU上无缝运行。

与Theano和TensorFlow无缝工作。

缺点:

不能有效地用作独立的框架。

  1. Torch:“一个开源的机器学习库”

语言:C。

Torch是一个用于科学和数字操作的开源机器学习库。这是一个基于Lua编程语言而非Python的库。Torch通过提供大量的算法,使得深度学习研究更容易,并且提高了效率和速度。它有一个强大的N维数组,这有助于切片和索引等操作。它还提供了线性代数程序和神经网络模型。http://torch.ch/
经典人工智能及开发工具--不看会后悔!!
优点:

非常灵活。

高水平的速度和效率。

大量的预训练模型可用。

缺点:

不清楚的文献记录。

缺乏即时使用的即插即用代码。

它基于一种不那么流行的语言——Lua。

  1. Accord.NET:“机器学习、计算机视觉、统计和.NET通用科学计算”

语言:C#。

这是专为C#程序员设计的。Accord.NET框架是一个.NET机器学习框架,使音频和图像处理变得简单。这个框架可以有效地处理数值优化、人工神经网络,甚至可视化。除此之外,Accord.NET对计算机视觉和信号处理的功能非常强大,同时也使得算法的实现变得简单。http://accord-framework.net/
经典人工智能及开发工具--不看会后悔!!
优点:

它有一个强大而积极的开发团队。

非常有据可查的框架。

质量可视化。

缺点:

不是一个非常流行的框架。

比TensorFlow慢。

  1. Spark MLlib: “可扩展的机器学习库”

语言:Scala。

Apache的Spark MLlib是一个非常可扩展的机器学习库。它非常适用于诸如Java、Scala、Python,甚至R等语言。它非常高效,因为它可以与Python库和R库中的numpy进行互操作。MLlib可以轻松插入到Hadoop工作流程中。它提供了机器学习算法,如分类、回归和聚类。这个强大的库在处理大型数据时非常快速。https://www.evget.com/product/3780

经典人工智能及开发工具--不看会后悔!!

优点:

对于大规模数据处理非常快速。

提供多种语言。

缺点:

入门较难。

即插即用仅适用于Hadoop。

  1. Sci-kit Learn:“用Python的机器学习”

语言:Python。

Sci-kit learn是一个非常强大的机器学习Python库,主要用于构建模型。使用numpy、SciPy和matplotlib等其他库构建,对统计建模技术(如分类、回归和聚类)非常有效。Sci-kit learn带有监督学习算法、无监督学习算法和交叉验证等功能。http://scikit-learn.org/

优点:

许多主要算法的可用性。

有效的数据挖掘。

缺点:

不是构建模型的最佳选择。

GPU效率不高。

  1. MLPack:“可扩展的C ++机器学习库”

经典人工智能及开发工具--不看会后悔!!

语言:C ++。

MLPack是一个用C ++实现的可扩展的机器学习库。因为它是用C ++编写的,所以你可以猜测它对于内存管理是非常好的。MLPack以极高的速度运行,因为高质量的机器学习算法与库一起出现。这个库是对新手友好的,并提供了一个简单的API使用。http://mlpack.org/

优点:

非常可扩展。

Python和C ++绑定可用。

缺点:

文档相对有限。


推荐阅读
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 在 Android 开发中,`android:exported` 属性用于控制组件(如 Activity、Service、BroadcastReceiver 和 ContentProvider)是否可以被其他应用组件访问或与其交互。若将此属性设为 `true`,则允许外部应用调用或与之交互;反之,若设为 `false`,则仅限于同一应用内的组件进行访问。这一属性对于确保应用的安全性和隐私保护至关重要。 ... [详细]
  • 本文深入解析了JDK 8中HashMap的源代码,重点探讨了put方法的工作机制及其内部参数的设定原理。HashMap允许键和值为null,但键为null的情况只能出现一次,因为null键在内部通过索引0进行存储。文章详细分析了capacity(容量)、size(大小)、loadFactor(加载因子)以及红黑树转换阈值的设定原则,帮助读者更好地理解HashMap的高效实现和性能优化策略。 ... [详细]
  • 如何使用 `org.apache.poi.openxml4j.opc.PackagePart` 类中的 `loadRelationships()` 方法及其代码示例详解 ... [详细]
  • 在优化Nginx与PHP的高效配置过程中,许多教程提供的配置方法存在诸多问题或不良实践。本文将深入探讨这些常见错误,并详细介绍如何正确配置Nginx和PHP,以实现更高的性能和稳定性。我们将从Nginx配置文件的基本指令入手,逐步解析每个关键参数的最优设置,帮助读者理解其背后的原理和实际应用效果。 ... [详细]
author-avatar
手机用户2602927383
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有