人工智能开源框架有哪些
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。
TensorFlow可被用于语音识别或图像识别等多项机器深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用。
TensorFlow表达了高层次的机器学习计算,大幅简化了第一代系统,并且具备更好的灵活性和可延展性。TensorFlow一大亮点是支持异构设备分布式计算,它能够在各个平台上自动运行模型,从手机、单个CPU/GPU到成百上千GPU卡组成的分布式系统。[1]
从目前的文档看,TensorFlow支持CNN、RNN和LSTM算法,这都是目前在Image,Speech和NLP最流行的深度神经网络模型。
facebooktorch
Torch是一个广泛支持机器学习算法的科学计算框架。易于使用且高效,主要得益于一个简单的和快速的脚本语言LuaJIT,和底层的C/CUDA实现:Torch|Github
核心特征的总结:
一个强大的n维数组
很多实现索引,切片,移调transposing的例程
惊人的通过LuaJIT的C接口
线性代数例程
神经网络,并基于能量的模型
数值优化例程
快速高效的GPU支持
可嵌入,可移植到iOS,Android和FPGA的后台
Torch目标是让你通过极其简单过程、最大的灵活性和速度建立自己的科学算法。Torch有一个在机器学习领域大型生态社区驱动库包,包括计算机视觉软件包,信号处理,并行处理,图像,视频,音频和网络等,基于Lua社区建立。
Torch的核心是流行的神经网络,它使用简单的优化库,同时具有最大的灵活性,实现复杂的神经网络的拓扑结构。你可以建立神经网络和并行任意图,通过CPU和GPU等有效方式。
Torch广泛使用在许多学校的实验室以及在谷歌/deepmind,推特,NVIDIA,AMD,英特尔和许多其他公司。
Facebook开源了他们基于Torch的深度学习库包,这个版本包括GPU优化的大卷积网(ConvNets)模块,以及稀疏网络,这些通常被用在自然语言处理中的应用中。我们的ConvNet模块包括FFT-based卷积层,使用的是建立在NVIDIA的CUFFT库上自定义优化的CUDA内核。
facebooktorch
SystemML最初由IBM开发,现在它是Apache旗下的一个大数据项目。它提供了一种高度可扩展的平台,可以实施用R或类似Python的语法编写的高级运算和算法。企业已经在用它来跟踪汽车维修方面的客户服务,引导机场客流量,或者将社交媒体数据与银行客户联系起来。它可以在Spark或Hadoop上运行。
【人工智能】2博弈问题、博弈搜索策略
一、问题描述方法:问题归约1.问题归约描述问题归约法与之前提到的状态空间法都是对进行问题描述,转换为符合或者图,但是思路不同。有许多问题可以通过一系列变换而最终变为一个子问题集合;这些子问题的解可以直接得到,通过解决这些子问题,从而就解决了初始问题。这样一种解决问题的思路就称为是问题归约法。例如之前的汉诺塔问题,在状态空间描述中,表示的是ABC三个金片的状态S=(i,j,k)(即位于什么位置),而在问题归约描述中,描述问题的思路是将这个复制问题拆分成几个子问题,子问题完成了,那么总的问题也就完成了。
问题P:将ABC移动到3号钢针。问题P1:把金片A及B移到2号钢针上的双金片移动问题。问题P2:把金片C移到3号钢针上的单金片移动问题。问题P3:把金片A及B移到3号钢针上的双金片移动问题。与状态空间描述类似,问题归约由初始问题、问题变换操作符、本原问题组成。
2.与或图表示1)与图:其实上面汉诺塔问题的分解就是与图。把一个问题分解成若干个问题,就可以用与图表示,只有子问题全部得到解决,原问题才能解决。P是一个与节点。2)或图:把一个问题变换为若干个子问题,可以表示成或图。只要有一个可以解决,原问题P就可以解决,P是一个或节点。3)与或图:原问题需要通过分解和变换操作,得到本原问题,这样的归约过程可用一个与或图表示。4)端节点:没有子节点的节点。终叶(止)节点:本原问题所对应的节点。可解节点:终止节点;至少有一个可解子节点的或节点;子节点全部可解的与节点。不可解节点反之。解图(解树):由可解节点构成的,并且由这些可解节点可以推出初始节点为可解节点的子图为解图。
3.问题求解的比较*在特殊情况下,只有或节点的与或图即变成普通图的状态空间搜索。
二、与或树的搜索与状态空间搜索过程不同,因为与或树搜索出来的是一个解树,所以要不停的进行可解标示过程和不可解标示过程,自下而上进行标识:(1)把原始问题作为初始节点S0,并把它作为当前节点;(2)应用分解或等价变换操作对当前节点进行扩展;(3)为每个子节点设置指向父节点的指针;(4)选择合适的子节点作为当前节点,反复执行第(2)步和第(3)步,在此期间需要多次调用可解标记过程或不可解标记过程,直到初始节点被标记为可解节点或不可解节点为止。
1.盲目搜索广度深度搜索,区别仅是扩展子节点在OPEN表中的顺序。搜索过程如下:(1)把初始节点S0放人Open表中;(2)把Open表的第一个节点取出放入Closed表,并记该节点为n;(3)如果节点n可扩展,则做下列工作:①扩展节点n,将其子节点放入Open表的尾部,并为每一个子节点设置指向父节点的指针;②考察这些子节点中是否有终止节点。若有,则标记这些终止节点为可解节点,并用可解标记过程对其父节点及先辈节点中的可解节点进行标记。如果初始解节点S0能够被标记为可解节点,就得到了解树,搜索成功,退出搜索过程;如果不能确定S0为可解节点,则从Open表中删去具有可解先辈的节点;③转第(2)步。(4)如果节点n不可扩展,则做下列工作:①标记节点n为不可解节点;②应用不可解标记过程对节点n的先辈中不可解的节点进行标记。如果初始解节点S0也被标记为不可解节点,则搜索失败,表明原始问题无解,退出搜索过程;如果不能确定S0为不可解节点,则从Open表中删去具有不可解先辈的节点;③转第(2)步。
2.启发式搜索1)与或树的启发式搜索时寻求最优解树的过程,即代价最小的解树。2)节点的代价怎么定义和计算:①如果n为终止节点:h(n)=0②如果n为或节点,且子节点为n1,n2,…,nk:h(n)=min{c(n,ni)+h(ni)}(1≤i≤k)③如果n为与节点,且子节点为n1,n2,…,nk:和代价法:h(n)=∑((c(n,ni)+h(ni))i=1,2,……,k最大代价法:h(n)=max{c(n,ni)+h(ni)}(1≤i≤k)④如果n是端节点,但又不是终止节点:h(n)=∞按这种计算方法,最后得到的解树的代价累加到初始节点上,即为初始节点的代价。3)希望树的概念:在启发式的最优解树求解过程中,任何时刻都应该选择那些最有希望成为最优解树一部分的节点进行扩展,随着求解过程中不断扩展,要对希望值进行不断地估计和修正。4)搜索过程:自顶向下,图生成过程扩展节点,从希望树中选择一个节点扩展;自底向上,计算代价过程修正代价估值,重新选择希望树。(1)把初始节点S0放入Open表中,计算h(S0);(2)计算希望树T;(3)依次在Open表中取出T的端节点放入Closed表,并记该节点为n;(4)如果节点n为终止节点,则做下列工作:①标记节点n为可解节点;②在T上应用可解标记过程,对n的先辈节点中的所有可解解节点进行标记;③如果初始解节点S0能够被标记为可解节点,则T就是最优解树,成功退出;④否则,从Open表中删去具有可解先辈的所有节点。⑤转第(2)步。(5)如果节点n不是终止节点,但可扩展,则做下列工作:①扩展节点n,生成n的所有子节点;②把这些子节点都放入Open表中,并为每一个子节点设置指向父节点n的指针③计算这些子节点及其先辈节点的h值;④转第(2)步。(6)如果节点n不是终止节点,且不可扩展,则做下列工作:①标记节点n为不可解节点;②在T上应用不可解标记过程,对n的先辈节点中的所有不可解解节点进行标记;③如果初始解节点S0能够被标记为不可解节点,则问题无解,失败退出;④否则,从Open表中删去具有不可解先辈的所有节点。⑤转第(2)步。
三、博弈树的启发式搜索1.什么是博弈树1)研究的是一类:二人零和、全信息、非偶然的博弈二人零和:一方赢,另一方输;或者平局全信息:知道当前和历史非偶然:任何一方走步时,都选择对自己最为有利,而对另一方最为不利的行动方案2)在博弈树中:①博弈的初始状态是初始节点;②博弈树中的“或”节点和“与”节点是逐层交替出现的;(我方每次下是或,我方只有一种选择走;对手每次下是与,要估计对手全部的选择可能是哪些)③整个博弈过程始终站在某一方的立场上,所有能使自己一方获胜的终局都是本原问题,相应的节点是可解节点;所有使对方获胜的终局都是不可解节点。
2.极大极小分析1)为其中一方选择最优行动方法;2)要考虑每一方案实施后对方所要采取的行动,并计算可能的得分;3)根据问题的特性信息定义评价函数(我方的得分);4)端节点的估值计算出后,再推算出父节点的得分。或节点,选择子节点中最大得分(MAX)作为父节点的得分;(我方下对我方最有利的)与节点,选择子节点中最小得分(MIN)作为父节点的得分;(对方下对我方最利的)解树的得分越大越有利,对于很多要走很多步的解,通常不会进行全局的搜索,而是只在局部搜索局部的最优解,指导本次如何移动。
3.αalphaα-βetaβ剪枝分析对于αalphaα-βetaβ剪枝死记硬背不好用,理解之后自然就明白了。1)αalphaα值:或节点:子节点中的最大倒推值的下界;βetaβ值:与节点:子节点中的最小倒推值的上界。2)αalphaα剪枝:若任一极小层节点m的βetaβ值小于或等于其位于极大层的父节点的αalphaα值,则可终止该极小层中节点m以下的搜索过程。
βetaβ剪枝:若任一极大层节点m的αalphaα值大于或等于其位于极小层的父节点的βetaβ值,则可终止该极大层中节点m以下的搜索过程。
3)注意:要进行αalphaα-βetaβ剪枝,至少必须使某一部分的搜索树生长到最大深度;采用αalphaα-βetaβ过程都要使用某种深度优先的搜索方法;比较都是在极小结点和极大结点间进行的;αalphaαβetaβ的影响可以是隔层的,例如:如下图,已知扩展到A=4,继续扩展B,扩展到E时,E=0就可以自下而上推,对于C有两种可能,无论是取D