人类思维的逻辑结构和算法实现
以字符串形式读取github上.json文件美酒没故事°:但是响应失败啊
人类思维的逻辑结构和算法实现码龄7年:原作者是谁?我很想联系他,请帮忙找一下,谢谢
GeoServer发布Heatmap所见所闻所及:请问wps扩展在此过程起到什么作用?
Qt学习之系列[9]–QCoreApplication:processEvents()可能会引起递归,导致栈溢出崩溃...林_海:不明白为什么就递归了?
webBrowser对跳转后的页面的处理吾i咸鱼:以前winform项目中经常用到Application.DoEvents();这段代码,但其实至今为止并不清楚它真正起到一个什么作用?
人工智能(一):技术发展史
2018年11月24日星期六
我分六篇文章,大概把我学到的人工智能课程给大家介绍一下,与君共享。
这六篇文章会从人工智能的历史开始讲起,然后机器学习的核心方法——SVM的基本知识,再讲决策树的相关知识,最后讲近几年非常受欢迎的深度学习。
人工智能是利用智能学习算法,将大量数据中的经验来改善系统自身的性能,从而实现人类智慧所能作的事情。可以这么说,人工智能离不开数据分析和机器学习,研究智能数据分析的理论和方法已经成为人工智能的必要基础之一。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的“容器”。人工智能可以对人的意识、思维的信息过程进行模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。
人工智能的开始始终绕不开艾伦·麦席森·图灵(AlanMathisonTuring,1912年6月23日-1954年6月7日)这个人,作为一个二战的英雄,一个伟大的数学家,密码学家,逻辑学家,他有着独特的想法,抽象的思维,传奇的经历(他的个人经历可以看2014年的电影《模仿游戏》,一个战争胜利背后的英雄)。
1950年,阿兰·麦席森·图灵提出关于机器思维的问题,他的论文“计算机和智能(Computingmachieryandintelligence),引起了广泛的注意和深远的影响。1950年10月,图灵发表论文《机器能思考吗》。这一划时代的作品,使图灵赢得了“人工智能之父”的桂冠。也宣告了人工智能(AI)时代的到来。
当然,事物的发展绝非偶然,AI时代的到来肯定也有着历史的必然,非常古老的历史我们就不谈了,直接从图灵开始,我们以时间发展的轨迹来介绍其中技术的演变,我在以后的文章中再详细介绍其中一些关键的人物,让我们膜拜大神吧。
一、1950-1970年代,人工智能的“推理时代”。
赫本于1949年基于神经心理学的学习机制开启机器学习的第一步。此后被称为Hebb学习规则。Hebb学习规则是一个无监督学习规则,这种学习的结果是使网络能够提取训练集的统计特性,从而把输入信息按照它们的相似性程度划分为若干类。这一点与人类观察和认识世界的过程非常吻合,人类观察和认识世界在相当程度上就是在根据事物的统计特征进行分类。
从上面的公式可以看出,权值调整量与输入输出的乘积成正比,显然经常出现的模式将对权向量有较大的影响。在这种情况下,Hebb学习规则需预先定置权饱和值,以防止输入和输出正负始终一致时出现权值无约束增长。
Hebb学习规则与“条件反射”机理一致,并且已经得到了神经细胞学说的证实。比如巴甫洛夫的条件反射实验:每次给狗喂食前都先响铃,时间一长,狗就会将铃声和食物联系起来。以后如果响铃但是不给食物,狗也会流口水(当然这个实验也被认为是广告学、神经学的开始)。
1950年,阿兰·图灵创造了图灵测试来判定计算机是否智能。图灵测试认为,如果一台机器能够与人类展开对话(通过电传设备)而不能被辨别出其机器身份,那么称这台机器具有智能。这一简化使得图灵能够令人信服地说明“思考的机器”是可能的。
2014年6月8日,一个叫做尤金·古斯特曼的聊天机器人成功让人类相信它是一个13岁的男孩,成为有史以来首台通过图灵测试的计算机。这被认为是人工智能发展的一个里程碑事件。但是这比图灵自己预测的时间晚了整整14年。
1956年夏季,以麦卡赛、明斯基、罗切斯特和申农等为首的一批有远见卓识的年轻科学家在一起聚会,共同研究和探讨用机器模拟智能的一系列有关问题,并首次提出了“人工智能”这一术语,它标志着“人工智能”这门新兴学科的正式诞生。
1957年,罗森·布拉特基于神经感知科学背景提出了第二模型,非常的类似于今天的机器学习模型。这在当时是一个非常令人兴奋的发现,它比赫布的想法更适用。基于这个模型罗森·布拉特设计出了第一个计算机神经网络——感知机(theperceptron),它模拟了人脑的运作方式。罗森·布拉特对感知机的定义如下:
感知机旨在说明一般智能系统的一些基本属性,它不会因为个别特例或通常不知道的东西所束缚住,也不会因为那些个别生物有机体的情况而陷入混乱。
Theperceptronisdesignedtoillustratesomeofthefundamentalpropertiesofintelligentsystemsingeneral,withoutbecomingtoodeeplyenmeshedinthespecial,andfrequentlyunknown,conditionswhichholdforparticularbiologicalorganisms.
3年后,维德罗首次使用Delta学习规则(即最小二乘法)用于感知器的训练步骤,创造了一个良好的线性分类器。
1967年,最近邻算法(Thenearestneighboralgorithm)出现,使计算机可以进行简单的模式识别。kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。这就是所谓的“少数听从多数”原则。
1969年马文·明斯基提出了著名的XOR问题,指出感知机在线性不可分的数据分布上是失效的。此后神经网络的研究者进入了寒冬,直到1980年才再一次复苏。
从60年代中到70年代末,机器学习的发展步伐几乎处于停滞状态。无论是理论研究还是计算机硬件限制,使得整个人工智能领域的发展都遇到了很大的瓶颈。虽然这个时期温斯顿(Winston)的结构学习系统和海斯·罗思(HayesRoth)等的基于逻辑的归纳学习系统取得较大的进展,但只能学习单一概念,而且未能投入实际应用。
这一时期,一般认为只要机器被赋予逻辑推理能力就可以实现人工智能。不过此后人们发现,只是具备了逻辑推理能力,机器还远远达不到智能化的水平。 60年代末,70年代初神经网络学习机因理论缺陷未能达到预期效果而转入低潮。这个时期的研究目标是模拟人类的概念学习过程,并采用逻辑结构或图结构作为机器内部描述。机器能够采用符号来描述概念(符号概念获取),并提出关于学习概念的各种假设。事实上,这个时期整个AI领域都遭遇了瓶颈。当时的计算机有限的内存和处理速度不足以解决任何实际的AI问题。要求程序对这个世界具有儿童水平的认识,研究者们很快发现这个要求太高了:1970年没人能够做出如此巨大的数据库,也没人知道一个程序怎样才能学到如此丰富的信息。可以说是计算能力的滞后导致了AI技术的停滞,这个阶段尽管学术思想已经达到很高的水平,但是工业界的发展严重滞后,科学与技术是相辅相成的,任何一方发展滞后都会拖累另一方的发展。
二、1970-1990年代,人工智能的”知识工程“时代。
这一时期,人们认为要让机器变得有智能,就应该设法让机器学习知识,于是计算机系统得到了大量的开发。后来人们发现,把知识总结出来再灌输给计算机相当困难。举个例子来说,想要开发一个疾病诊断的人工智能系统,首先要找好多有经验的医生总结出疾病的规律和知识,随后让机器进行学习,但是在知识总结的阶段已经花费了大量的人工成本,机器只不过是一台执行知识库的自动化工具而已,无法达到真正意义上的智能水平进而取代人力工作。
伟博斯在1981年的神经网络反向传播(BP)算法中具体提出多层感知机模型(即著名的“人工神经网络”,ANN)。虽然BP算法早在1970年就已经以“自动微分的反向模型(reversemodeofautomaticdifferentiation)”为名提出来了,但直到此时才真正发挥效用,并且直到今天BP算法仍然是神经网络架构的关键因素。有了这些新思想,神经网络的研究又加快了。
在1985-1986年,神经网络研究人员(鲁梅尔哈特,辛顿,威廉姆斯-赫,尼尔森)相继提出了使用BP算法训练的多参数线性规划(MLP)的理念,成为后来深度学习的基石。
在另一个谱系中,昆兰于1986年提出了一种非常出名的机器学习算法,我们称之为“决策树”,更具体的说是ID3算法。这是另一个主流机器学习算法的突破点。此外ID3算法也被发布成为了一款软件,它能以简单的规划和明确的推论找到更多的现实案例,而这一点正好和神经网络黑箱模型相反。
决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。
在ID3算法提出来以后,研究社区已经探索了许多不同的选择或改进(如ID4、回归树、CART算法等),这些算法仍然活跃在机器学习领域中。
1990年,Schapire最先构造出一种多项式级的算法,这就是最初的Boosting算法。一年后,Freund提出了一种效率更高的Boosting算法。但是,这两种算法存在共同的实践上的缺陷,那就是都要求事先知道弱学习算法学习正确的下限。
1992年,支持向量机(SVM)的出现是机器学习领域的另一大重要突破,该算法具有非常强大的理论地位和实证结果。在90年代曾风靡整个数据挖掘、机器学习、模式识别领域,至今依然很火热。那一段时间机器学习研究也分为NN和SVM两派。然而,在2000年左右提出了带核函数的支持向量机后。SVM在许多以前由NN占据的任务中获得了更好的效果。此外,SVM相对于NN还能利用所有关于凸优化、泛化边际理论和核函数的深厚知识。因此SVM可以从不同的学科中大力推动理论和实践的改进(当然现在SVM依然具有强大的生命力,深度学习算法无法解决问题时,SVM依然是很好的工具)。
神经网络与支持向量机一直处于“竞争”关系。SVM应用核函数的展开定理,无需知道非线性映射的显式表达式;由于是在高维特征空间中建立线性学习机,所以与线性模型相比,不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾难”(大概意思就是在高维空间质量会无限逼近他的表面,这是多么恐怖的事情,你的皮肤破了一个口,会发现自己是空的)。
而神经网络遭受到又一个质疑,通过Hochreiter等人1991年和Hochreiter等人在2001年的研究表明在应用BP算法学习时,NN神经元饱和后会出现梯度损失(gradientloss)的情况。简单地说,早先的神经网络算法比较容易过训练,大量的经验参数需要设置;训练速度比较慢,在层次比较少(小于等于3)的情况下效果并不比其它方法更优,因此这一时期NN与SVM相比处于劣势。
三、2000年至今,人工智能的”数据挖掘“时代。
随着各种机器学习算法的提出和应用,特别是深度学习技术的发展,人们希望机器能够通过大量数据分析,从而自动学习出知识并实现智能化水平。这一时期,随着计算机硬件水平的提升,大数据分析技术的发展,机器采集、存储、处理数据的水平有了大幅提高。特别是深度学习技术对知识的理解比之前浅层学习有了很大的进步,AlphaGo和中韩围棋高手过招大幅领先就是目前人工智能的高水平代表之一。
2001年,决策树模型由布雷曼博士提出,它是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(EnsembleLearning)方法。随机森林的名称中有两个关键词,一个是“随机”,一个就是“森林”。“森林”我们很好理解,一棵叫做树,那么成百上千棵就可以叫做森林了,这样的比喻还是很贴切的,其实这也是随机森林的主要思想—集成思想的体现。
其实从直观角度来解释,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的Bagging思想。
在机器学习发展分为两个部分,浅层学习(ShallowLearning)和深度学习(DeepLearning)。浅层学习起源上世纪20年代人工神经网络的反向传播算法的发明,使得基于统计的机器学习算法大行其道,虽然这时候的人工神经网络算法也被称为多层感知机,但由于多层网络训练困难,通常都是只有一层隐含层的浅层模型。
神经网络研究领域领军者Hinton在2006年提出了神经网络DeepLearning算法(即深度学习),使神经网络的能力大大提高,向支持向量机(SVM)发出挑战。2006年,机器学习领域的泰斗Hinton和他的学生Salakhutdinov在顶尖学术刊物《Scince》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。(随后,随着工业界GPU在大型计算机上的应用,深度学习迎来了爆发)
这篇文章有两个主要的讯息:1)很多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻划,从而有利于可视化或分类;2)深度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wisepre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。
当前统计学习领域最热门方法主要有deeplearning和SVM(supportvectormachine),它们是统计学习的代表方法。可以认为神经网络与支持向量机都源自于感知机。
神经网络模型貌似能够实现更加艰难的任务,如目标识别、语音识别、自然语言处理等。但是,应该注意的是,这绝对不意味着其他机器学习方法的终结。尽管深度学习的成功案例迅速增长,但是对这些模型的训练成本是相当高的,调整外部参数也是很麻烦。同时,SVM的简单性促使其仍然最为广泛使用的机器学习方式。
现在深度学习已经应用在各类学科之中,并且很多都取得了很好的效果。
2016年3月,阿尔法围棋与围棋世界冠军、职业九段棋手李世石进行围棋人机大战,以4比1的总比分获胜;2016年末2017年初,该程序在中国棋类网站上以“大师”(Master)为注册帐号与中日韩数十位围棋高手进行快棋对决,连续60局无一败绩;2017年5月,在中国乌镇围棋峰会上,它与排名世界第一的世界围棋冠军柯洁对战,以3比0的总比分获胜。围棋界公认阿尔法围棋的棋力已经超过人类职业围棋顶尖水平,在GoRatings网站公布的世界职业围棋排名中,其等级分曾超过排名人类第一的棋手柯洁。而李世石取得的那一场胜利也被认为是人类的最后一场胜利,该事件也被认为是人工智能发展的里程碑。
笔者在这里提一个问题,你认为“人工智能”能取代人类吗?
参考文献:
http://smart.blogchina.com/507540031.html
http://blog.csdn.net/andrewseu/article/details/53488664
人工智能技术的三大学派
人工智能的发展,在不同的时间阶段经历了不同的流派,并且相互之间盛衰有别。目前人工智能的主要学派有下列三家:
符号主义(symbolicism),又称为逻辑主义、心理学派或计算机学派,其原理主要为物理符号系统,即符号操作系统,假设和有限合理性原理。连接主义(connectionism),又称为仿生学派或生理学派,其主要原理为神经网络及神经网络间的连接机制与学习算法。行为主义(actionism),又称为进化主义或控制论学派,其原理为控制论及感知-动作型控制系统。会发现三者的根源依据存在着较大的差异性,也为后世的学派发展产生了较为深远的影响。
符号主义(优秀的老式人工智能)认为人工智能源于数理逻辑,主张用公理和逻辑体系搭建一套人工智能系统。代表的有支持向量机(SVM),长短期记忆(LSTM)算法。
数理逻辑从19世纪末起得以迅速发展,到20世纪30年代开始用于描述智能行为。计算机出现后,又在计算机上实现了逻辑演绎系统。其有代表性的成果为启发式程序LT逻辑理论家,它证明了38条数学定理,表明了可以应用计算机研究人的思维过程,模拟人类智能活动。
正是这些符号主义者,早在1956年首先采用“人工智能”这个术语。后来又发展了启发式算法>专家系统>知识工程理论与技术,并在20世纪80年代取得很大发展。
1人工智能概述
文章目录1.4机器学习工作流程学习目标1什么是机器学习2机器学习工作流程机器学习工作流程总结2.1获取到的数据集介绍2.2数据基本处理2.3特征工程2.4机器学习2.5模型评估拓展阅读完整机器学习项目的流程3小结1.4机器学习工作流程学习目标了解机器学习的定义知道机器学习的工作流程掌握获取到的数据集的特性1什么是机器学习-机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测。
2机器学习工作流程机器学习工作流程总结1.获取数据2.数据基本处理3.特征工程4.机器学习(模型训练)5.模型评估
结果达到要求,上线服务没有达到要求,重新上面步骤2.1获取到的数据集介绍数据简介在数据集中一般:
一行数据我们称为一个样本一列数据我们成为一个特征有些数据有目标值(标签值),有些数据没有目标值(如上表中,电影类型就是这个数据集的目标值)数据类型构成:
数据类型一:特征值+目标值(目标值是连续的和离散的)数据类型二:只有特征值,没有目标值数据分割:机器学习一般的数据集会划分为两个部分:
训练数据:用于训练,构建模型测试数据:在模型检验时使用,用于评估模型是否有效划分比例:
训练集:70%80%75%测试集:30%20%25%2.2数据基本处理-即对数据进行缺失值、去除异常值等处理
2.3特征工程2.3.1什么是特征工程特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。
意义:会直接影响机器学习的效果2.3.2为什么需要特征工程(FeatureEngineering)机器学习领域的大神AndrewNg(吴恩达)老师说“Comingupwithfeaturesisdificult,time-consuming,requiresexpertknowledge.“Appliedmachinelearning"isbasicallyfeatureengineering.”注:业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。2.3.3特征工程包含内容
特征提取特征预处理特征降维2.3.4各概念具体解释特征提取
将任意数据(如文本或图像)转换为可用于机器学习的数字特征特征预处理通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程特征降维指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程2.4机器学习选择合适的算法对模型进行训练(具体内容见1.5)
2.5模型评估对训练好的模型进行评估(具体内容见1.6)
拓展阅读完整机器学习项目的流程1抽象成数学问题明确问题是进行机器学习的第一步。机器学习的训练过程通常都是一件非常耗时的事情,胡乱尝试时间成本是非常高的。这里的抽象成数学问题,指的明确我们可以获得什么样的数据,抽象出的问题,是一个分类还是回归或者是聚类的问题。2获取数据
数据决定了机a学习结果的上限,而算法只是尽可能逼近这个上限。数据要有代表性,否则必然会过拟合。而且对于分类问题,数据偏斜不能过于严重,不同类别的数据数量不要有数量级的差距。而且还要对数据的量级有一个评估,多少个样本,多少个特征,可以估算出其对内存的消耗程度,判断训练过程中内存是否能够放得下。如果放不下就得考虑改进算法或者使用一些降维的技巧了。如果数据量实在太大,那就要考虑分布式了。3特征预处理与特征选择
良好的数据要能够提取出良好的特征才能真正发挥作用。特征预处理、数据清洗是很关键的步骤,往往能够使得算法的效果和性能得到显著提高。归一化、离散化、因子化、缺失值处理、去除共线性等,数据挖掘过程中很多时间就花在它们上面。这些工作简单可复制,收益稳定可预期,是机器学习的基础必备步骤。筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务。这对很多结果有决定性的影响。特征选择好了,非常简单的算法也能得出良好、稳定的结果。这需要运用特征有效性分析的相关技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法。4训练模型与调优
直到这一步才用到我们上面说的算法进行训练。现在很多算法都能够封装成黑盒供人使用。但是真正考验水平的是调整这些算法的(超)参数,使得结果变得更加优良。这需要我们对算法的原理有深入的理解。理解越深入,就越能发现问题的症结,提出良好的调优方案。5模型诊断如何确定模型调优的方向与思路呢?这就需要对模型讲行诊断的技术。
3小结机器学习义【掌握】
机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测·机器学习工作流程总结【掌握】1.获取数据2.数据基本处理3.特征工程4.机器学习(模型训练)5.模型评估
结果达到要求,上线服务没有达到要求,重新上面步骤获取到的数据集介绍【掌握】
数据集中一行数据一般称为一个样本,一列数据一般称为一个特征。数据集的构成:-由特征值+目标值(部分数据集没有)构成为了模型的训练和测试,把数据集分为:-训练数据(70%-80%)和测试数据(20%-30%)特征工程包含内容【了解】特征提取特征预处理特征降维