当前位置:首页 » 操作系统 » 算法哲学

算法哲学

发布时间: 2023-05-27 04:03:35

❶ 神经网络——BP算法

对于初学者来说,了解了一个算法的重要意义,往往会引起他对算法本身的重视。BP(Back Propagation,后向传播)算法,具有非凡的历史意义和重大的现实意义。

1969年,作为人工神经网络创始人的明斯基(Marrin M insky)和佩珀特(Seymour Papert)合作出版了《感知器》一书,论证了简单的线性感知器功能有限,不能解决如“异或”(XOR )这样的基本问题,而且对多层网络也持悲观态度。这些论点给神经网络研究以沉重的打击,很多科学家纷纷离开这一领域,神经网络的研究走向长达10年的低潮时期。[1]

1974年哈佛大学的Paul Werbos发明BP算法时,正值神经外网络低潮期,并未受到应有的重视。[2]

1983年,加州理工学院的物理学家John Hopfield利用神经网络,在旅行商这个NP完全问题的求解上获得当时最好成绩,引起了轰动[2]。然而,Hopfield的研究成果仍未能指出明斯基等人论点的错误所在,要推动神经网络研究的全面开展必须直接解除对感知器——多层网络算法的疑虑。[1]

真正打破明斯基冰封魔咒的是,David Rumelhart等学者出版的《平行分布处理:认知的微观结构探索》一书。书中完整地提出了BP算法,系统地解决了多层网络中隐单元连接权的学习问题,并在数学上给出了完整的推导。这是神经网络发展史上的里程碑,BP算法迅速走红,掀起了神经网络的第二次高潮。[1,2]

因此,BP算法的历史意义:明确地否定了明斯基等人的错误观点,对神经网络第二次高潮具有决定性意义。

这一点是说BP算法在神经网络领域中的地位和意义。

BP算法是迄今最成功的神经网络学习算法,现实任务中使用神经网络时,大多是在使用BP算法进行训练[2],包括最近炙手可热的深度学习概念下的卷积神经网络(CNNs)。

BP神经网络是这样一种神经网络模型,它是由一个输入层、一个输出层和一个或多个隐层构成,它的激活函数采用sigmoid函数,采用BP算法训练的多层前馈神经网络。

BP算法全称叫作误差反向传播(error Back Propagation,或者也叫作误差逆传播)算法。其算法基本思想为:在2.1所述的前馈网络中,输入信号经输入层输入,通过隐层计算由输出层输出,输出值与标记值比较,若有误差,将误差反向由输出层向输入层传播,在这个过程中,利用梯度下降算法对神经元权值进行调整。

BP算法中核心的数学工具就是微积分的 链式求导法则 。

BP算法的缺点,首当其冲就是局部极小值问题。

BP算法本质上是梯度下降,而它所要优化的目标函数又非常复杂,这使得BP算法效率低下。

[1]、《BP算法的哲学思考》,成素梅、郝中华着

[2]、《机器学习》,周志华着

[3]、 Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现

2016-05-13 第一次发布

2016-06-04 较大幅度修改,完善推导过程,修改文章名

2016-07-23 修改了公式推导中的一个错误,修改了一个表述错误

❷ 算法与逻辑这2个重要概念究竟是哪一门学科领域专门学习的内容

1.问:做哲学为什么需要学习逻辑?答:简单地说,哲学是一门学科,它提供的是理论,它要通过说理、通过论证使人接受或者反驳某种观点、理论,这就需要有正确的论证。逻辑研究有效推理,就是提供正确论证的基础。实际上,凡是理论,用推理,讲论证,都离不开逻辑。从这点看,哲学与其他“学”相同,所以逻辑是基础学科。但是哲学与其他学科相比,有两个特点,这使得这哲学中论证更为重要,因而逻辑的作用也更为重要。第一个特点,哲学不是经验科学。尽管经验可以给我们提供某些启示,来自于经验的知识可以作为哲学思考的某种根据,但是哲学命题不能通过经验来验证,不能做实验,所以,一个哲学理论的“正确性”(是否可接受),几乎只能靠论证来显示。历史上,一些哲学理论后来不被接受了,以另外的形式出现了,是因为发现原来论证有问题,对原来的理论有修正,有新的论证;也有一些理论一开始人们不喜欢,如休谟的经验论,后来却不得不接受(当然不是所有人都接受),因为它的论证没法反驳,有人甚至是乐于接受,因为认为它的论证好。第二个特点,哲学与其他学科不同,它要思考“终极”问题,即各门具体学科都不研究或无法研究的问题,比如什么是物质,什么是实在,什么是精神等本体论和认识论的问题。对这类问题的思考,会使论证更加困难。学过亚里斯多德逻辑,我们知道,有属加种差的定义。例如,人是某种动物,动物是某种生物,这就是属加种差的定义对什么是人和动物的回答。如果继续追问,什么是生物,大概还可以说,生物是某种物质,但是如果再问什么是物质?至少按这种方式已不能回答,需要有上一层的概念体系。一般来说,探求这样的终极问题,概念体系不容易建立,而且容易出现某种循环,比如康德二律背反那样的东西。在对这样的问题进行思考时,在对这些问题的观点论证、提出相应理论时,我们应该遵从什么法则?有什么规律?这些都对论证,也是对逻辑,提出了更高的要求。我们知道,现在我们所说的逻辑学产生于古希腊,始于亚里斯多德。为什么逻辑学产生于古希腊,有几个原因。一是民主政治,导致论辩风盛行。要辩论,要说理,就要讲逻辑。二是欧几里得几何学,提供了一个理论应该如何应用逻辑的典范。还有一个非常重要的原因,就是哲学研究。我认为是亚里斯多德主要是在其哲学研究中,也是为了更好地研究哲学,建立了逻辑学。他对于(事物)本质问题的思考等,使他提出上面提到的定义理论,建立了三段论逻辑。从这段历史来看,可以说,因为哲学和论证的关系,对逻辑提出了更高的要求,所以逻辑学才如此这般地产生了。所以,逻辑从一开始,就和哲学有密不可分的关系。以上所说的中心意思是,哲学的生命力在于论证,我们的哲学观点和理论可以不同,但是论证方法必须是相同的,不论自己思考问题还是与人交流,都需要有公共的论证平台,而这个平台应该、也只能由逻辑来搭建。在今天,哲学已经大大发展,但是哲学和逻辑的基本关系没有改变。只是今天的哲学需要什么样的逻辑?这是个有意思的问题,亚里斯多德逻辑显然完全不够了,需要今天的哲学家和逻辑学家共同关注。关于逻辑和哲学的关系,当年王浩来北大讲学时还提出一种观点。大意是,关于哲学问题的基本观点,大家很难统一。对此我们可以采取公理化的方法,各自从自己的基本观点出发,建立相应的理论系统,类似于古典数学和直觉主义数学。我认为这当然不是哲学研究的全部,但应该也是哲学研究的一个重要方面。如何使自己的理论更严密,需要有公理化的思想和方法。历史上斯宾诺莎曾经做过伦理学的公理化研究,大概不是很成功。今天逻辑学的发展是否对此提供了新的基础?这就需要学习现代逻辑。2.问:中国哲学也需要逻辑吗?答:回答这个问题,首先要对“逻辑”这个概念作点说明。我们现在所说的逻辑,指的是上面提到的产生于古希腊的逻辑。就连“逻辑”一词都是从古希腊语到英语、再到汉语译音而来。为什么要这样,因为中国自己的文化中没有产生出西方逻辑学意义上的逻辑学。中国古代有名辨学等一些在今天被人们作为中国逻辑史研究对象的理论或学说。从哲学和逻辑的关系看,如果说古希腊哲学有亚里斯多德逻辑与之对应,那么中国哲学是否也可以说有名辨学这样的学说与之对应?有这个背景,再看我们的问题,“中国哲学也需要逻辑吗”,应该是,研究中国哲学或中国哲学研究需要西方的逻辑学吗?这里有两个问题。如果是研究中国哲学,即以中国哲学为研究的对象,提出自己的研究成果,提出相应的理论和观点,那么,与其他研究类似,也要分析、推理、论证,当然也离不开西方的逻辑学。因为只有西方传统的逻辑学才在今天成为各学科的基础。但是,如果是做中国哲学研究,或中国哲学式的研究,即用中国哲学的方法研究中国哲学的问题,比如类似于老子,孔子的研究,是否要用西方的逻辑学,我还看不出有这个必要。从西方逻辑学的观点看,今天仍然难以完全说清中国的古代哲人究竟是用什么逻辑思考问题的。这个说法需要作点解释。中国哲学和西方哲学有很大的区别。这一点,从各自关心的问题和研究问题的方式可以看出来。西方哲学开始关心的问题是世界的本源是什么,这个关心的目的是要把面对的万事万物拆开,找基本的组成部分,或面对复杂纷呈的世界找出基本的性质,再将它们的组合起来,希望从这里说明一切现象,同时也获得了改造自然的手段。从简单的、基本的部分或性质开始,通过组合,到说明各种复杂现象,解决复杂问题,这就是西方哲学的精神,也是西方逻辑的精神,他们在这个探讨过程中建立了逻辑学,而且也是在这个过程中建立了西方科学。西方的哲学、逻辑学、科学属于同一个文化体系。中国哲学也有关心世界本源的部分,但地是从社会的角度考虑问题,探讨社会的秩序、和谐,讲究天人合一,同时也是为个人的自我修养和人生指导提供依据。从世界和社会的宏观出发到个人的修养,从个人的修养再到社会的和谐和秩序,这里面有许多非组合的东西,与西方逻辑的精神从文化渊源上看有根本的区别。所以,在这个问题上,我倒是不觉得中国哲学式的研究要用到西方的逻辑学。说到这里,插一句,我想中国哲学的逻辑是什么,这也许是个更有趣的问题。显然这需要中国哲学和逻辑学两方面的结合才有可能研究。当然,今天也很难有人还会按古人的方式去思考他们的哲学问题。不论从学习阶段就受到的训练,还是到后来的学术规范和科研体制,都决定了不会再出老子和孔子那样的思想家。现在作为学术的最基本要求是要说理,要论证,要交流,还是上面说到的,要有公共的论证平台。从这个意义上说,中国哲学大概也需要西方的逻辑学。3.问:传统逻辑和现代逻辑的区别是什么?答:我注意到你们的几个类似问法或问题,因为你们的采访在我们中心(北京大学逻辑、语言与认知研究中心)的网上登了出来,而且有了一段时间。这些问题是:(1)普通逻辑和现代逻辑的区别是什么?(2)数理逻辑和普通逻辑有什么区别?(3)逻辑学导论和一阶逻辑的区别是什么?还有现在的问题,(4)传统逻辑和现代逻辑的区别是什么?我想先做一点说明,也是澄清。这里涉及到关于逻辑的一些名词。首先,逻辑是一种客观对象,逻辑学是关于这个对象的科学,就像力是一种客观对象,力学是关于力这种对象的科学一样。“逻辑”有时也指逻辑学。逻辑本身没有现代和传统之分,也没有普通和不普通之分,只是逻辑学,作为人们对逻辑这个对象研究的成果,受到历史条件的限制,才有传统和现代之分,有不同的历史形态。“现代逻辑”和“传统逻辑”指的就是这种意义上的逻辑学。关于“普通逻辑”。首先,从对象的层次看,刚才说了,没有普通和不普通之分,也就是说没有普通逻辑这种逻辑,其次,从研究的角度看,也没有对逻辑这种对象的“普通”的研究,所以,是既没有普通逻辑(这种逻辑),也没有普通逻辑学。“普通逻辑”只能是课程的名称,类似于“普通物理”。这一点也是王宪钧先生当年一再强调的。拿“普通逻辑”和“普通物理”相比,也是王先生举的例子。为什么要强调这一点,因为“普通逻辑”叫得多了,有一种误解,把普通逻辑也当成了一种逻辑或一种逻辑学,其实,这只是一门课。关于“一阶逻辑”,从对象的层次看,有这样一种逻辑。关于这种逻辑的理论等是一阶逻辑学,通常也称为“一阶逻辑”。此外,还有专门的课程讲授一阶逻辑学,所以它还可以是课程的名称。“数理逻辑”与此类似。在上面提到的这些名称中,“传统逻辑”,“现代逻辑”,指的是某种逻辑学,在一些情况下,“现代逻辑”也可以是某类课程的名称;“普通逻辑”,“逻辑导论”或“逻辑学导论”只能是课程的名称;“一阶逻辑”,“数理逻辑”指的可以是一个或一种逻辑,也可以是这个或这种逻辑的学,还可以指讲授这个或这种逻辑的课程。这里我们涉及到三种名称:逻辑,逻辑学和逻辑课。有这个说明后再来看这些问题。在这些问题中,问题(4)是一个合理的问题,也没有什么歧义,因为在这个问题中,“传统逻辑”和“现代逻辑”只能做逻辑学的理解,问的是两种逻辑学之间的区别,现代的逻辑学究竟比过去的逻辑学有那些发展等。问题(3)的意思应该是比较两门课程,因为“逻辑学导论”是课程的名称,我们也有一阶逻辑的课。如果这么看,这也合理。问题(2)的初衷大概类似于问题(3),但是问题(2)容易引起误解。因为“数理逻辑”可以指一种逻辑,将它与普通逻辑相比,容易使人误解,把普通逻辑也当成了一种逻辑。最不合理的是问题(1)。“普通逻辑”只能是某门课程的名称,现代逻辑是一种逻辑学,这两个“逻辑”不可比。如果把“现代逻辑”理解为课程的名称,那么,它指的不是一门课,凡讲授现代逻辑学知识的课都可以称为现代逻辑课,而普通逻辑只能是一门课。将一门课与一类课相比,这应该也不可比。所以怎么都说不通。现在可以回答你们的问题,即问题(4)。一般认为,从亚里士多德到弗雷格以前的是传统逻辑,从弗雷格开始,产生了现代逻辑。当然在弗雷格之前,也有莱布尼茨、布尔这些现代逻辑的先驱。现代逻辑与传统逻辑的不同首先是产生的原因或动因不同。传统逻辑产生的原因主要是哲学上论证,也包括日常生活中的一些论辩。现代逻辑产生于数学研究,主要为了找出数学中的逻辑。其次是方法的不同,这是主要的不同。学过一点现代逻辑都知道,现代逻辑的基本方法是形式化方法。从根本上说,形式化方法就是数学的方法。因为是一些数学家研究数学中的推理,找数学中的逻辑,所以很自然地引用了数学的方法。从莱布尼茨开始就提出了把推理当作数学演算的想法。这个想法到弗雷格才在一定范围里得以实现。可以实现的原因之一,是弗雷格研究的是数学中的推理,这是我们各种推理中最严格的推理,但同时也是最简单的一种推理。可以实现的原因之二,就是他用到了数学的方法,把数学用到推理的研究中。现在数学(古典数学)中推理的规律已经都找出来了,这就是一阶逻辑。在这个过程中,产生了很多新的思想,建立了许多新的技术,逻辑学的内容大大丰富。如果说过去我们只能靠肉眼观察,那么,现在因为有了新的方法,我们已经知道如何去造显微镜,而且是电子显微镜。与传统逻辑相比,因为有了观察逻辑关系的“电子显微镜”,现代逻辑打开了一个全新的天地,范围大大拓宽。这个天地是传统逻辑用“肉眼”所不可能看见的。因为方法和动因的不同,导致了传统逻辑和现代逻辑其他的一些不同。比如,同是研究日常推理,传统逻辑总结一些方法,教我们这些方法,现代逻辑则要把其中的规律用数学的方法精确地刻画出来,其目的不是教我们人如何正确地进行日常思维,而是“教”计算机去做这样的的推理。现代逻辑的这种发展,使得逻辑学真正成为其他一些学科的基础,比如计算机科学,语言学等,包括哲学方面的分析哲学,语言哲学等。这里所谓的基础,意思是,如果没有现代逻辑的知识,要进行这方面的有关研究是不可能的。这个基础的作用是传统逻辑做不到也不可能做到的。人们一般认为学习逻辑会使人逻辑性强,提高思维能力,表现在头脑清楚,说话有条理,能言善辩等。这被称为逻辑的教导作用。应该说这是逻辑学产生的初衷之一。但在今天看来,如果说,传统逻辑还有一定的教导作用,那么现代逻辑则基本没有这个作用。现代逻辑使得逻辑学越来越像数学,成为专门的基础知识。如果说现代逻辑也有一些教导作用,那么它并也不比数学强。换言之,要想从学习现代逻辑中得到思维能力的提高,更好的法是去学数学。总之,逻辑学的这种教导作用,至少从现代逻辑的内容上看,已经不是今天逻辑学的主要功能。4.问:您认为哲学系本科生应该学普通逻辑课还是现代逻辑的课程?答:关于这个问题,我可能会说得多一些。因为即使在我们北大哲学系,这个问题也是从我的上一代老师、我的前辈们开始就一直在讨论、争论、甚至激烈争论的问题。我认为,应该学什么课,普通逻辑课还是现代逻辑课,取决于两个因素:一个是课程的内容、性质;一个是学习的目的。这是从学生选课的角度说的。换一角度,可以问,哲学系应该对本科生开普通逻辑课还是现代逻辑课?也有两个类似的因素,前一个因素没变,后一个因素是,开什么课取决于培养学生的目标。这是受教育者和教育者都关心的同一个问题,但角度不同。我想我还是从教育者的角度来谈这个问题。现在本科生教育可以说有两个目标,一个是素质教育,一个是专门人才培养。说白了,前者就是毕业后找工作,后者是读研究生,准备走学术的道路。从社会需求的角度看,大部分人是要从事实际工作的,学者总是少数。因此现在比较强调素质教育,淡化专业,所以本科生阶段取消了一些专业,比如我们系的本科生逻辑学专业就取消了。专门人才培养一般要到研究生阶段才真正开始。尽管学生自己可以早早为自己定位,但是从教育者的角度说,并不一开始就把谁定在什么方向。这增加了学生的自主性、能动性,同时也增加了学生自己的责任,学生也要为自己的将来负责。这是社会的进步。与强调素质教育相对应,另一方面,对准备走学术路的人也提出了更高的要求,要求有扎实的基础,有出色的科研能力。这是一种两极分化。一个本科生,刚进大学,很难说将来毕业后的去向,是做实际工作,还是读研究生,最终走学术研究的路。从教育者的角度看,也只能是同时提供各种条件、环境,让受教育者能走更适合自己发展的道路。一个好的大学,就是能提供好的这样的条件和环境,比如开出各种课程和提供好的指导等。现在可以谈谈普通逻辑课和现代逻辑课的问题。简单地说,现代逻辑的课程是为专门人才培养开设的。一个学生如果毕业后从事实际工作,在这方面他所需要的主要是素质教育,我认为不用学现代逻辑,但同时也不用学普通逻辑,倒是可以学学批判性思维这样的课。为什么这么说,我们可以先看看普通逻辑的性质和内容。普通逻辑是我国大学的逻辑知识普及课,内容大体上是亚里斯多德逻辑,即亚里斯多德的三段论、定义理论等,一些简单的命题逻辑知识,再加一些归纳推理的内容,关于论证的常识等,从知识的组成看,基本上是传统逻辑的东西。普通逻辑有一个基本考虑,就是围绕思维来讲。根据这个考虑,它把内容又分为概念,判断,推理,论证几个部分。近二十多年来,随着现代逻辑影响不断增加,普通逻辑课中也逐渐增加了一些现代逻辑的内容,课程的名称也改成逻辑导论,内容和重点有了很大甚至是重要的改变,但普及逻辑知识的课程性质没有变。这样的一门课程,我认为有一些缺点。首先我们可以看一下经过这样的普及课学习,会有什么收获,有什么效果。从课程设置的角度说,不外是希望学生有这几个方面的收获:(1)获得一定的逻辑学知识;(2)掌握一些方法,受到一定的训练,思维能力有某些提高;(3)有了一定的基础,便于继续学习逻辑;(4)以逻辑为基础去进行其他的课程的学习或研究。其中(1)和(2)合起来可以在素质教育方面起到一定的作用。(3)和(4)看起来是可以起到专门人才培养方面的作用。但实际情况究竟怎样,是否可以达到这样的效果,我们可以做一些分析。先看后两条,即人才培养方面的(3)和(4)。首先,传统逻辑和现代逻辑是逻辑学发展的两个阶段。现代逻辑不是从传统逻辑的基础上发展而来的,上面也谈到,完全是新的问题,新的起点,新的方法。现代逻辑对传统逻辑有种跳跃性,而没有什么继承性。从我们的教学实践看,学习传统逻辑对学现代逻辑没有什么帮助,反而可能会有某些误导。如果是为了要继续学习逻辑,这个继续被学的,只能是现代逻辑,所以不如一开始就学现代逻辑。(3)说的是普通逻辑课或逻辑导论课可以作为现代逻辑课的基础,但从这个分析看,情况并非如此。不说有可能误导,至少学习的效率不高。再看(4)。现代逻辑是像数学这样的专门的基础知识,需要按学数学那样方式才能真正掌握,才可能成为用来学习和研究如计算机科学、语言学甚至哲学的知识基础,不能只是停留在普及知识的层次上,浅显地讲讲,象征性地做些习题,而需要详细地讲解,严格地证明,严格地做习题,有些甚至是比较难的习题。这些即使在逻辑导论课上,也不可能做到。所以,希望达到(4)的效果,只能是一个愿望,实际上根本达不到。这两个方面说明,普通逻辑或逻辑导论在逻辑学研究或应用逻辑的专门人才培养方面起不到什么作用。事实上,我们这些年的教学实践上也证明了这一点。就我校来说,这二十多年来上过普通逻辑或逻辑导论课的学生应该达到数以万计,但没有一个学生由此而成为研究逻辑或者应用逻辑去研究其他领域问题的专门人才。这说明什么问题?当然是我们作为教育者一方应该深刻反省的。说到底,主要是课程的性质,普及逻辑知识,这决定了这门课只能是作为文化素养提高的一个方面来教和学,而不是也不能作为其他知识和课程的基础来教和学。说到这里,涉及到这门课的素质教育方面的意义。上面说了它在专门人才培养方面起不到什么作用,现在我们可以就此再看它素质教育的作用方面。前面说到逻辑有教导作用,在这里对应到所希望达到的效果(2)。看起来普通逻辑所讲的问题简单、常见,与实际生活更接近,所以它更具有教导作用,但其实这里有些误解。普通逻辑或逻辑导论都是传统逻辑和现代逻辑的某种结合。关于现代逻辑,前面已经说了,它完全远离了逻辑的教导作用,不是为日常思维服务的,而是一种基础知识。再看传统逻辑部分。这部分中确实有些内容是讲思维方法,讲有关的一些道理。但是在这方面,它有两个不足:一是先天不足,一是后天不足。一般都不否认亚里斯多德逻辑是传统逻辑的核心部分。亚里斯多德逻辑中的核心部分又是三段论。我们可以看看三段论在讲什么。它在讲我们几乎天生就会的三段论推理,比如“所有的A是B,所有的B是C,所以,所有的A是C”,讲这样的的推理为什么是正确的,这样的推理多少种格与式,哪些格式是正确的推理形式,可以如何变形,道理何在等等。这些细致的甚至显得繁琐的分析和证明主要不是为了日常思维的需要,而是为了哲学研究。我想说的是,逻辑学从一开始,就是一种学院派式的理论,这是它的精神实质,而且这种精神一直在延续。应该说,这是真正的逻辑学的精神。所以,亚里斯多德是逻辑学之父,他不仅从问题、对象,而且从方式和精神,都奠定了这门学科的基础。关于日常思维的思维方法等只是这种理论的一些延伸,不是本质的部分。有了理论,可以在思维方法的方面做很多推广。只是方法方面谈多了,谈泛了,实际上就出了这种学的圈。这就是传统逻辑对日常思维方面作用的“先天不足”。作为一门课程,当然可以按照需要设计它的内容,没有必要一定按某种学理精神来讲授。但是,在思维能力提高和训练方面,普通逻辑并没有给我们提供的内容和训练的手段。这是它的“后天不足”。如果要讲思维方法,注重日常思维能力提高,有比普通逻辑更合适的课程,这就是批判性思维。实际上,批判性思维并不是一门逻辑课,但是它的问题更集中,目的也更明确,所以更专业。总体上看,对普通逻辑课,包括逻辑导论,在思想方法和思维能力训练方面,如果是讲思维的严格性,精确性,那不如去学数学。如果是讲思维的敏捷、机智,善抓问题实质的准确性、尖锐性等,不如去学批判性思维。最后,再看希望达到的效果(1),即这门课对逻辑知识的了解和掌握方面的作用。作为知识上的修养,这当然也是一种素质的提高。特别地,对什么是逻辑的精神,通过普通逻辑课或逻辑导论课多少可以了解一些,这应该是一个人知识组成中的重要部分。但是,知识普及性的课不能提供真正实用的技术和理论,这一点应该没什么疑问。我们只要看看逻辑学今天的发展和这些课程所讲授的内容就不难得出这个结论。当然,不论怎样,最后总会对逻辑的精神有一定程度的了解,有一定的逻辑的知识素养,这是大概是这门课最后的收获。对此我想指出一点,从今天的角度看,这也是一种多少有点养尊处优的知识素养,因为它主要不解决实用问题,基本上是精神层面的东西。过去我国大学教育属于计划经济体系,毕业生是国家干部。什么是国家干部,就是国家的管理人员,当然不是人人最后都走上了管理岗位,但首先他们都属于干部体系,有干部级别。大学的一个主要功能是为国家提供干部储备。作为这样的教育,当然要使受教育者除了专门的知识、技能外,还要有一定的知识素养。比如,要知道一点逻辑,讲点逻辑。在这种情况下,逻辑知识普及课对我国干部队伍素质的总体提高,还是起到一定的作用的。从这个意义上说,这门课也还是有功绩的。但是,现在的情况已经有了根本的改变。一个受教育者不再是计划经济下教育生产线出产的一个产品,不再是一个干部或储备干部,国家的干部体制现在也转变成了公务员体制,这不仅仅是名称的改变。在现在的情况下,一个大学生首先是一个将来要参与社会竞争的主体。我们的教育体制已发生了根本的变化,教育也地具有了人本精神,教育者要地从受教育者的立场出发考虑问题。面对这样的教育形势和被教育者,我们应该教什么?他们所面对的将是严酷的竞争和挑战,已经没有时间和条件再去接受那种养尊处优式的知识素养教育。所以我认为,如果说普通逻辑或逻辑导论这种逻辑知识普及课在过去时代条件下还有一些积极作用,那么现在这些作用早已淡出,所以这样的课已经不合时代要求,应该淘汰。取而代之的也是两极分化:彻底讲实用性,学批判性思维;真正学逻辑,学现代逻辑。这也是一种“与时俱进”吧。有一种观点认为,一个大学毕业生,受过高等教育的人,不学普通逻辑或逻辑导论,不知道什么是逻辑,不懂一点逻辑怎么行。我认为这种观点没有建立在将逻辑学、逻辑课以及它们的历史和社会时代背景等因素加以综合和仔细分析的基础上,没有充分的根据。如果有我们这里的分析,那就不仅是“怎么不行”,而且是势在必行。至于哲学系开什么课,不同的哲学系当然只能根据自己的情况量力而行。北大哲学系是按专门人才培养的方向来开课的,也有这个条件,所以当然应该开现代逻辑课,取消普通逻辑或逻辑导论课。我们实际上也是这么做的。目前只是对外系或校公共课还开逻辑导论,这是因为某种历史的惯性吧,迟早也是要取消的。在我系,现代逻辑课是一系列课程。首先是一阶逻辑。这是现代逻辑的入门课,也是哲学学习和研究的一个基础课。如果将来研究哲学,可以到此为止,也可以再学模态逻辑等。如果要学逻辑,则必须在有这门课的基础后再去学其他的逻辑课程。至于批判性思维,我认为是一门很好的课,也主张应该开这门课,甚至应该是全校的公共课。这是一门素质教育课,谁都可以选。但是要清楚,这门课与学哲学和学逻辑都没有什么特别的关系。

❸ 图灵说机器能思维,这已经是定论。那么人工智能的发展极限---机器能有自我意识吗

很多人认为人类总有一天可以赋予机器大脑结构,使其具备思考能力,或认为可以让其通过程序自我学习从而拥有自我意识。
也有很多人认为不可能,可能是唯心主义或其他什么的原因。
现在虽然都说高举唯物主义,但唯心主义也还没被推翻呢。
所以这个问题暂时没有结论啦。
就算美慎陵唤国的那个机器人。。我忘了叫啥了,就那个主持人问“你们会毁灭世界吗”,机器人回答说“是的,我们会毁灭世界”的那个,也不能说它有自我意识,只能说它是一个很先进的人工智能。

我打这些字的时候汪隐在想,什么算是自我意识?
后来勉强定义为能自己思考吧。
然宽凯而能自己思考也不准确,似乎几年前还是十几年前??就有机器人能够自己玩新游戏,没有攻略没有程序,只是设定是学习。然而这种学习应该是主观能动性活动呀。。
所以这种问题……emmm,现在暂时还不能有答案,我悄咪咪站个队的话,就站“不能”吧。

❹ 为什么中国古代数学会形成算法思想它对后世的影响如何

数学的发展包括了两大主要活动:证明定理和创造算法。定理证明是希腊人首倡,后构成数学发展中演绎倾向的脊梁;算法创造昌盛于古代和中世纪的中国、印度,形成了数学发展中强烈的算法倾向。统观数学的历史将会发现,数学的发展并非总是演绎倾向独占鳌头。在数学史上,算法倾向与演绎倾向总是交替地取得主导地位。古代巴比伦和埃及式的原始算法时期,被希腊式的演绎几何所接替,而在中世纪,希腊数学衰落下去,算法倾向在中国、印度等东方国度繁荣起来;东方数学在文艺复兴前夕通过阿拉伯传播到欧洲,对近代数学兴起产生了深刻影响。事实上,作为近代数学诞生标志的解析几何与微积分,从思想方法的渊源看都不能说是演绎倾向而是算法倾向的产物。

从微积分的历史可以知道,微积分的产生是寻找解决一系列实际问题的普遍算法的结果6。这些问题包括:决定物体的瞬时速度、求极大值与极小值、求曲线的切线、求物体的重心及引力、面积与体积计算等。从16世纪中开始的100多年间,许多大数学家都致力于获得解决这些问题的特殊算法。牛顿与莱布尼兹的功绩是在于将这些特殊的算法统一成两类基本运算——微分与积分,并进一步指出了它们的互逆关系。无论是牛顿的先驱者还是牛顿本人,他们所使用的算法都是不严格的,都没有完整的演绎推导。牛顿的流数术在逻辑上的瑕疵更是众所周知。对当时的学者来说,首要的是找到行之有效的算法,而不是算法的证明。这种倾向一直延续到18世纪。18世纪的数学家也往往不管微积分基础的困难而大胆前进。如泰勒公式,欧拉、伯努利甚至19世纪初傅里叶所发现的三角展开等,都是在很长时期内缺乏严格的证明。正如冯·诺伊曼指出的那样:没有一个数学家会把这一时期的发展看作是异端邪道;这个时期产生的数学成果被公认为第一流的。并且反过来,如果当时的数学家一定要在有了严密的演绎证明之后才承认新算法的合理性,那就不会有今天的微积分和整个分析大厦了。

现在再来看一看更早的解析几何的诞生。通常认为,笛卡儿发明解析几何的基本思想,是用代数方法来解几何问题。这同欧氏演绎方法已经大相径庭了。而事实上如果我们去阅读笛卡儿的原着,就会发现贯穿于其中的彻底的算法精神。《几何学》开宗明义就宣称:“我将毫不犹豫地在几何学中引进算术的术语,以便使自己变得更加聪明”。众所周知,笛卡儿的《几何学》是他的哲学着作《方法论》的附录。笛卡儿在他另一部生前未正式发表的哲学着作《指导思维的法则》(简称《法则》)中曾强烈批判了传统的主要是希腊的研究方法,认为古希腊人的演绎推理只能用来证明已经知道的事物,“却不能帮助我们发现未知的事情”。因此他提出“需要一种发现真理的方法”,并称之为“通用数学”(mathesis universakis)。笛卡儿在《法则》中描述了这种通用数学的蓝图,他提出的大胆计划,概而言之就是要将一切科学问题转化为求解代数方程的数学问题:

任何问题→数学问题→代数问题→方程求解而笛卡儿的《几何学》,正是他上述方案的一个具体实施和示范,解析几何在整个方案中扮演着重要的工具作用,它将一切几何问题化为代数问题,这些代数问题则可以用一种简单的、几乎自动的或者毋宁说是机械的方法去解决。这与上面介绍的古代中国数学家解决问题的路线可以说是一脉相承。

因此我们完全有理由说,在从文艺复兴到17世纪近代数学兴起的大潮中,回响着东方数学特别是中国数学的韵律。整个17—18世纪应该看成是寻求无穷小算法的英雄年代,尽管这一时期的无穷小算法与中世纪算法相比有质的飞跃。而从19世纪特别是70年代直到20世纪中,演绎倾向又重新在比希腊几何高得多的水准上占据了优势。因此,数学的发展呈现出算法创造与演绎证明两大主流交替繁荣、螺旋式上升过程:

演绎传统——定理证明活动

算法传统——算法创造活动

中国古代数学家对算法传统的形成与发展做出了毋容置疑的巨大贡献。

我们强调中国古代数学的算法传统,并不意味中国古代数学中没有演绎倾向。事实上,在魏晋南北朝时期一些数学家的工作中,已出现具有相当深度的论证思想。如赵爽勾股定理证明、刘徽“阳马”一种长方锥体体积证明、祖冲之父子对球体积公式的推导等等,均可与古希腊数学家相应的工作媲美。赵爽勾股定理证明示意图“弦图”原型,已被采用作2002年国际数学家大会会标。令人迷惑的是,这种论证倾向随着南北朝的结束,可以说是戛然而止。囿于篇幅和本文重点,对这方面的内容这里不能详述,有兴趣的读者可参阅参考文献3。

3 古为今用,创新发展

到了20世纪,至少从中叶开始,电子计算机的出现对数学的发展带来了深远影响,并孕育出孤立子理论、混沌动力学、四色定理证明等一系列令人瞩目的成就。借助计算机及有效的算法猜测发现新事实、归纳证明新定理乃至进行更一般的自动推理……,这一切可以说已揭开了数学史上一个新的算法繁荣时代的伟大序幕。科学界敏锐的有识之士纷纷预见到数学发展的这一趋势。在我国,早在上世纪50年代,华罗庚教授就亲自领导建立了计算机研制组,为我国计算机科学和数学的发展奠定了基础。吴文俊教授更是从70年代中开始,毅然由原先从事的拓扑学领域转向定理机器证明的研究,并开创了现代数学的崭新领域——数学机械化。被国际上誉为“吴方法”的数学机械化方法已使中国在数学机械化领域处于国际领先地位,而正如吴文俊教授本人所说:“几何定理证明的机械化问题,从思维到方法,至少在宋元时代就有蛛丝马迹可寻,”他的工作“主要是受中国古代数学的启发”。“吴方法”,是中国古代数学算法化、机械化精髓的发扬光大。

计算机影响下算法倾向的增长,自然也引起一些外国学者对中国古代数学中算法传统的兴趣。早在上世纪70年代初,着名的计算机科学家D.E.Knuth就呼吁人们关注古代中国和印度的算法5。多年来这方面的研究取得了一定进展,但总的来说还亟待加强。众所周知,中国古代文化包括数学是通过着名的丝绸之路向西方传播的,而阿拉伯地区是这种文化传播的重要中转站。现存有些阿拉伯数学与天文着作中包含有一定的中国数学与天文学知识,如着名的阿尔·卡西《算术之钥》一书中有相当数量的数学问题显示出直接或间接的中国来源,而根据阿尔·卡西本人记述,他所工作的天文台中就有不少来自中国的学者。

然而长期以来由于“西方中心论”特别是“希腊中心论”的影响以及语言文字方面的障碍,有关资料还远远没有得到发掘。正是为了充分揭示东方数学与欧洲数学复兴的关系,吴文俊教授特意从他荣获的国家最高科学奖中拨出专款成立了“吴文俊数学与天文丝路基金”,鼓励支持年轻学者深入开展这方面的研究,这是具有深远意义之举。

❺ 成素梅|量子计算的哲学意蕴

在量子信息技术发展史上,20世纪以量子计算和量子信息理论的崛起而告终,21世纪则以量子计算和量子信息理论与技术的大力发展而开始。但是,这并不意味着能够用量子信息理论的术语来重新阐述量子力学的概念基础;而是意味着我们需要重新回答“理论是什么”的基本问题,以及重新揭示对象与事实以及理论与实在之间的内在关系。

上海 社会 科学院哲学研究所副所长成素梅认为, 量子理论与实在不再是符合关系,而是同构关系。理论的客观性是通过对象与事实的互塑关系来保证的。物理学家建构对象与解释事实是同时进行的,并且是基于理论的,对象与事实的客观性建立在观察与实验之基础上。因此,对象与事实在理论与实在之间扮演了承上启下的中介作用,量子理论是实在的映射,是在理解实在,而不是描述实在。

如何理解对象与事实的互塑关系?

在量子力学中,诸如光子、电子之类的微观粒子是依赖于理论的“实体”,而不再是量子物理学家能够直接或间接地看到的实在本身。因此,微观粒子的指称不再是“真指称”,而是“理论上的指称”或“推定的指称”。

在这种指称关系中,量子物理学家不可能是先拥有对象、再说明事实,而是建构对象与说明现象同步进行;这样,微观对象与科学事实之间的关系就不再是经典物理学中的先后关系,而是变成了互塑关系,或者说,成为互为前提的共存关系。

如何理解理论与实在的同构关系?

说明性理论指用理论术语来阐述并接受实验检验的假设,这些假设说明了事实和规律性。说明性理论一旦被科学家所承认,就会成为可以加以利用的科学知识;解释性理论指对世界及其具体领域提供本体论解释的假设,这些假设要么是日常共识,要么是特定的说明性理论的基本前提所蕴含的一种哲学解释,是在总结过去认知结果的基础上形成的。

两种理论的变化并不总是同步的。每一个说明性理论都与一个解释性理论相联系,而一个解释性理论可以同时与多个说铅码扒明性理论相联系。这表明,解释性理论的变化一定会带来说明性理论的变化,而说明性理论的变化则不一定总是带来解释性理论的变化。两种理论一并构成了学科体系的核心。

物理学界接受了量子力学新的说明性理论,但并没有完全接受量子力学的假设所提供的解释性理论。当量子计算和量子信息理论与技术已经取得了实质性进展时,我们就需要依据实验事实和技术应用来接受新的解释性理论。我们既不能简单地说对象和事实与实在相符,也不能说理论描述了实在,而只能说,理论是实在的映射,是在理解实在,而不是描述实在。

更多精彩观点

01 对象与事实的互塑

从方法论的视域来看,物理学家提出理论概念的初衷,并不仅仅是为了达到实用的目标,更重要的槐昌是为了融贯地理解正在发生的事情本身;量子计算机科学家的工作则是解决特定的问题,其目标在于根据量子力学提供的基本原理建造能够成功应用的新的计算机器或新的人造物,因此他们的思维习惯通常是遵守实用主义的原则,具有很强的目的性。相比之下,对于深耕概模斗念分析的哲学家而言,实用主义对他们辨明基础性问题是无助的。哲学家通常能够在从前认为很好的解决方案中找出存在的问题。

量子计算的发展表明,当工程实践的进展超越了以爱因斯坦和玻尔为代表的量子物理学家关于理论本性等问题的哲学争论时,我们对作为设计量子算法和量子信息理论与技术依据的态叠加原理、量子纠缠、非定域性、量子不可克隆等神秘特性的哲学探讨,必须改变思路:即从过去像爱因斯坦那样,坚守经典实在论来质疑量子理论的完备性和实在性的做法,以及对隐变量的量子理论的向往与追求,转向像玻尔、海森伯等人那样,基于接受量子理论的新特征来重新理解与界定微观对象、事实、理论、实在之间的相互关系,并在此基础上建构一种更具包容性的量子实在观。

在经典物理学的研究传统中,研究对象就是现存的实在本身,并且它们的存在性是第一位的,具有天然的优先性。宏观物体是定域的,物理学家要么可以直接看到它们或对它们进行直接操作,要么可以通过仪器来间接地看到它们或对它们进行间接操控,并借助实验和数学方法来揭示它们的属性和变化规律,而仪器在这里只是扮演工具的角色,不会对对象的存在形态等产生实质性的影响。

物理学家在这一认知过程中,根据物理学概念与对象之间的直接指称关系来把握概念的意义,也就是说,概念能够在不依赖于任何理论的前提下直接指向实在本身,这种指称通常被称之为“真指称”。由包含“真指称”关系的概念与语言构成的理论,顺理成章地成为对实在世界的描述。在这种概念图景中,对因果关系的追溯属于本体论问题,而不是认识论问题。

然而,量子力学的诞生,特别是量子计算等量子信息技术的实现,对这种将认识论问题本体论化的思维方式和经典实在论提出了巨大的挑战。这也是20世纪两位伟大的物理学家爱因斯坦和玻尔就量子力学的基本问题争论不休的关键所在。

在量子力学中,诸如光子、电子之类的微观粒子是依赖于理论的“实体”,而不再是量子物理学家能够直接或间接地看到的实在本身。因此,微观粒子的指称不再是“真指称”,而是“理论上的指称”或“推定的指称”。

在这种指称关系中,量子物理学家不可能是先拥有对象、再说明事实,而是建构对象与说明现象同步进行;这样,微观对象与科学事实之间的关系就不再是经典物理学中的先后关系,而是变成了互塑关系,或者说,成为互为前提的共存关系。

在科学研究与科学实验中,对象与事实实际上是理论建构的产物,对象与事实之间的关系就像上与下、左与右这些具有相对性的概念之间的关系一样,是相互依存的互塑关系。问题在于,如果对象与事实成为依赖于理论的产物,那么,理论就不再是对实在的直接描述或表征,或者说,不再像经典实在论所认为的那样,是实在的复印件或直接画像。这就进一步提出了如何理解量子理论与实在的关系问题。

02 理论与实在的同构

我们需要区分两层关系:实在与对象的关系;对象与理论的关系。在实在、对象、理论之间,对象起到了承上启下的作用,成为沟通“实在”与“理论”之间的中间桥梁。在微观领域内,我们不可能如经典物理学中那样,在“实在”与“对象”之间简单地划等号,将一切认识论问题本体论化,将理论看成是对实在本身的描述与表征。微观实在只具有本体论的优先性,是确保科学研究得以进行的基本前提,无法直接进入物理学家的认知视域,能够进入物理学家认知视域的是“对象性实在”。

对象虽然是理论建构的产物,是经由人的认知理解之后才作为对象而存在,其固有规定也体现在与人的相互作用中,且随着相互作用方式的变化而变化;但是,微观粒子的对象性并不能改变其客观性,而是赋予客观性以建构的特点。对象的客观性是通过对象与事实的互塑关系来保证的,因为对象与事实共同植根于实验现象之中,是同一实验现象的两个方面,而实验现象则是由自在实在与特定的测量环境共同作用之后产生的,经受过严格检验的实验现象的物质性及其理论理解的融贯性,使科学对象和科学事实具有了一定程度的客观性。

因此,对象与事实的客观性成为打通理论与实在相关的中介。为了更加明确地说明问题,下面我们将理论划分为两种类型。

一是“说明性理论”(简称E理论)。意指用理论术语来阐述并接受实验检验的假设,这些假设说明了事实和规律性。E理论一旦被科学家所承认,就会成为可以加以利用的科学知识。比如,量子力学的形式体系是由概率波、光子、自旋、算符等前所未有的理论术语来阐述的,它不仅使普朗克在1900年提出的量子假设成为它的一个推论,而且还为人们思考微观物理现象与认识微观世界提供了有效的语言框架,带来了量子信息技术和相关新型学科的发展。

说明性理论由于能够提供说明,因而是可以接受经验检验的理论,或者说,可以被经验所证实或证伪。如果一个说明性理论的预言能够得到经验的证实,那么,它提供的关于实在的数学模型与物理模型,就与实在本身具有一定程度的同构性。

二是“解释性理论”(简称I理论)。意指对世界及其具体领域提供本体论解释的假设,这些假设要么是日常共识,要么是特定的说明性理论的基本前提所蕴含的一种哲学解释,是在总结过去认知结果的基础上形成的。但是,它不等同于认知结果。就其目标而言,这种“假设的目的不是提供说明,而是解释世界,即依据基本的本体论,把某一结构归于世界,或者,归于世界的具体领域”。

这类假设提供的是形而上学的观点,既不可能被经验所证实,也不可能被经验所证伪。解释性理论所提供的假设通常有两种类型:一是科学研究得以进行的普遍假设,即适用于任何学科的假设,例如,自然界是可理解的、有规律的、统一的,等等;二是与具体的学科发展相联系的特殊假设,例如,经典物理学中的机械论、生物学中的活力论、地质学中的渐变论,等等。

由于I理论提供的是关于世界基本实体的假设,E理论提供的是对这些实体行为的说明,所以,E理论与I理论的变化并不总是同步的。每一个E理论都与一个I理论相联系,比如,牛顿的万有引力理论(E理论)与近距作用的世界观(I理论)相联系;反之则不然,一个I理论可以同时与多个E理论相联系,比如,因果决定论的世界观(I理论)可以与牛顿力学(E理论)、电磁学理论(E理论)、相对论力学(E理论)等相联系。这表明,I理论的变化一定会带来E理论的变化,而E理论的变化则不一定总是带来I理论的变化。

E理论和I理论一并构成了学科体系的核心。在I理论保持不变的情况下,E理论的变化是学科亚系统的常规理论的变化;如果I理论和E理论同时发生变化,则是学科内部的基本理论的变化,用科学哲学家库恩的话来说,即范式的转变。

量子力学属于后一种情况。物理学界接受了新的E理论(量子力学),但并没有完全接受量子力学的假设所提供的I理论(自然界是非决定论的)。物理学家是否接受新的I理论,是形而上学的观念问题。当量子计算和量子信息理论与技术已经取得了实质性进展时,我们就需要依据实验事实和技术应用来接受新的I理论。

当物理学家既接受新的E理论,也接受新的I理论时,则意味着物理学的基本理论发生了变化。在这种情况下,我们虽然可以从本体论意义上承认光子等微观粒子的存在性,但这种存在性并不等同于实在性。因为如果离开现有的E理论与I理论,就无法知道这些粒子的存在。因此,这些粒子在作为我们用来描述其术语的“理论上的指称”或“推定的指称”的意义上是真实的,也就是说,就“自在实在”向我们呈现的方式而言,它们是真实的,但一旦离开其呈现方式,就不再为真。因为它们并不是“真指称”,而是承载理论的指称。因此,我们既不能简单地说对象和事实与实在相符,也不能说理论描述了实在,而只能说,理论是实在的映射,是在理解实在,而不是描述实在。

描述实在是对实在本身的刻画和对实在行为的揭示,描述的对错由是否与实在相符合来加以判断;而理解实在则是对实在在特定条件下的认知内容的具体表达,或者说,是对自在实在机理的整体模拟,而不是直接的言说或描述。机理性的整体模拟是数学模型与物理模型的集合,是在域境化、去域境化和再域境化的动态过程中完成的。在这个过程中,认知主体由扮演“上帝之眼”的角色变成了建构者的身份。从这个意义上来说,理论与实在只具有同构关系,而不存在一一对应的符合关系。

综上所述,量子计算的哲学意蕴是多方面的,本文限于篇幅只揭示了对象与事实的互塑关系以及理论与实在的同构关系。这两对关系的揭示既能说明为什么“认识论的突变”往往会导致本体论的修正,也能说明为什么量子理论的基本原理能够成为量子计算的物理资源。

*本文系国家社科基金重大项目“当代量子论与新科学哲学的兴起”和国家社科基金重大项目“当代量子诠释学研究”的阶段性成果,项目编号分别为:16ZDA113、19ZDA038

❻ 如何加强学生对算法和算理的理解

算理是算的一种道理和想法,而算法是算理的一种表达形式或书写格式,算理要通过算法来表现,算法又要体现算理。在新课程的教学中,特别突出对算理的理解,追求算法多样化,在处理算理和算法的关系时有偏向了算理,究竟如何把握两者之间的关系,使起和谐平衡发展谈几点看法。
一、让学生在自主探究中构建算理。学生在用已有经验解决问题时,教师应为学生提供探索的空间,交流的平台,在交流中明白一个个算理,从而发展学生的思考能力。
二、展示多种算理时要找到突破口。在交流多种想法时,教师要善于抓住恰当的一种作为切入口,大部分学生容易理解的进行突破。
三、注重算理和算法之间的沟通。算理是算法的基础,当学生明白了算理后,教师应及时落实两者之间的关系,有利于对算法的掌握。
四、基本算法要强化训练。在多种算法中有基本的算法,所以对基本的算法有必要进行强化,规范,示范,努力使每一个学生都会。
其实个人认为这两个关系如同哲学中主观与客观关系一样,两者都不可费,两者相辅相成,这两者关系是辨证的,关键在教学中要重视沟通。

❼ 人生算法——追求高“维差”

“维差”是我自创的词汇,用来表示维度的差异。维差产生势能,从高维向低维的转变,导致能量的释放。就像高处的小球之于地面,具备了重力势能,小球落回地面的过程,就是重力势能释放的过程。反之,则需要外部做功,才能从庆并低维提升至高维,从而储存能量。

类比亚里士多德“潜能-实现”的哲学思想首没,维差誉芹迹就代表着“潜能”;降维的过程,就是“潜能”逐步走向“实现”的过程。从这个角度来讲,维差同样代表着可能性,高维意味着拥有更多的可能性,当高维退化到低维,可能性也就消失了。

举个生物学的例子,葡萄糖是我们身体的能量来源,处于能量最高的维度。乳酸和水是葡萄糖不同分解阶段的产物,对应着释放不同数量的ATP(能量)。能量以葡萄糖形式存在的时候具有最多的可能性,既可以分解为乳酸,也可以分解为二氧化碳和水。当能量以乳酸的形式存在的时候,就只能分解为水和二氧化碳了。这就是“维差”的不同,造成的“潜能”不同,即可能性的不同。

“维差”是能量之源,同维度的竞争则是能量消耗,取胜的关键是维差的大小。维差较高的,可以选择多样的策略,或快速降维形成饱和打击,或采用消耗战术,都能够取得竞争优势。所以,在人生的竞技场中,积累“维差”是我们的有利算法。

“维差”的提升要求我们主动迈出舒适区,进入学习区。需要付出辛苦,才能有所积累。学习的内容就像巨石,升维的过程就是我们推巨石上山, 巨石越重,每提升一分积累的能量才越大。巨石不重,要积累同样的能量,就需要把它推的更高,总体做功是一样的。因此,学习总要不畏艰难,进一寸,有一寸的所得,有一寸的欢喜。

“维差”的积累过程虽然来不得半点虚假,但是却可以选择徒手推石,还是使用工具。这期间的差别就是“认知”。培养正确的认知,就像学习“易筋经”,虽然仍旧需要做功,但却有事半功倍的效果。认知是我们学习的底层操作系统,需要不停的升级迭代,才能更好的运行程序,更快的取得结果。

高“维差”会帮助我们在面对人生困难的时候,掌握更多的底牌和底气,使我们握有更多的选择权。为了这种选择的自由,尽量提升维差甚至成为了“刚需”。当我们把它内化为习惯,就像一日三餐一样,也许感受到的就不再是劳累痛苦,而是能量被不断补充的充实感,以及目标被满足的快感。

这才是追求高”维差“的最高境界吧。虽暂不能至,实心向往之!

❽ 哲学家就餐问题的算法实现

操作系统并发和互斥:哲学家进餐问题和理发师问题

1. 哲学家进餐问题:
(1) 在什么情况下5 个哲学家全部吃不上饭?
考虑两种实现的方式,如下:
A.
算法描述:
void philosopher(int i) /*i:哲学家编号,从0 到4*/
{
while (TRUE) {
think( ); /*哲学家正在思考*/
take_fork(i); /*取左侧的筷子*/
take_fork((i+1) % N); /*取左侧筷子;%为取模运算*/
eat( ); /*吃饭*/
put_fork(i); /*把左侧筷子放回桌子*/
put_fork((i+1) % N); /*把右侧筷子放回桌子*/
}
}
分析:假如所有的哲学家都同时拿起左侧筷子,看到右侧筷子不可用,又都放下左侧筷子,
等一会儿,又同时拿起左侧筷子,如此这般,永远重复。对于这种情况,即所有的程序都在
无限期地运行,但是都无法取得任何进展,即出现饥饿,所有哲学家都吃不上饭。
B.
算法描述:
规定在拿到左侧的筷子后,先检查右面的筷子是否可用。如果不可用,则先放下左侧筷子,
等一段时间再重复整个过程。
分析:当出现以下情形,在某一个瞬间,所有的哲学家都同时启动这个算法,拿起左侧的筷
子,而看到右侧筷子不可用,又都放下左侧筷子,等一会儿,又同时拿起左侧筷子……如此
这样永远重复下去。对于这种情况,所有的程序都在运行,但却无法取得进展,即出现饥饿,
所有的哲学家都吃不上饭。
(2) 描述一种没有人饿死(永远拿不到筷子)算法。
考虑了四种实现的方式(A、B、C、D):
A.原理:至多只允许四个哲学家同时进餐,以保证至少有一个哲学家能够进餐,最终总会释
放出他所使用过的两支筷子,从而可使更多的哲学家进餐。以下将room 作为信号量,只允
许4 个哲学家同时进入餐厅就餐,这样就能保证至少有一个哲学家可以就餐,而申请进入
餐厅的哲学家进入room 的等待队列,根据FIFO 的原则,总会进入到餐厅就餐,因此不会
出现饿死和死锁的现象。
伪码:
semaphore chopstick[5]={1,1,1,1,1};
semaphore room=4;
void philosopher(int i)
{
while(true)
{
think();
wait(room); //请求进入房间进餐
wait(chopstick[i]); //请求左手边的筷子
wait(chopstick[(i+1)%5]); //请求右手边的筷子
eat();
signal(chopstick[(i+1)%5]); //释放右手边的筷子
signal(chopstick[i]); //释放左手边的筷子
signal(room); //退出房间释放信号量room
}
}
B.原理:仅当哲学家的左右两支筷子都可用时,才允许他拿起筷子进餐。
方法1:利用AND 型信号量机制实现:根据课程讲述,在一个原语中,将一段代码同时需
要的多个临界资源,要么全部分配给它,要么一个都不分配,因此不会出现死锁的情形。当
某些资源不够时阻塞调用进程;由于等待队列的存在,使得对资源的请求满足FIFO 的要求,
因此不会出现饥饿的情形。
伪码:
semaphore chopstick[5]={1,1,1,1,1};
void philosopher(int I)
{
while(true)
{
think();
Swait(chopstick[(I+1)]%5,chopstick[I]);
eat();
Ssignal(chopstick[(I+1)]%5,chopstick[I]);
}
}
方法2:利用信号量的保护机制实现。通过信号量mutex对eat()之前的取左侧和右侧筷
子的操作进行保护,使之成为一个原子操作,这样可以防止死锁的出现。
伪码:
semaphore mutex = 1 ;
semaphore chopstick[5]={1,1,1,1,1};
void philosopher(int I)
{
while(true)
{
think();
wait(mutex);
wait(chopstick[(I+1)]%5);
wait(chopstick[I]);
signal(mutex);
eat();
signal(chopstick[(I+1)]%5);
signal(chopstick[I]);
}
}
C. 原理:规定奇数号的哲学家先拿起他左边的筷子,然后再去拿他右边的筷子;而偶数号
的哲学家则相反.按此规定,将是1,2号哲学家竞争1号筷子,3,4号哲学家竞争3号筷子.即
五个哲学家都竞争奇数号筷子,获得后,再去竞争偶数号筷子,最后总会有一个哲学家能获
得两支筷子而进餐。而申请不到的哲学家进入阻塞等待队列,根FIFO原则,则先申请的哲
学家会较先可以吃饭,因此不会出现饿死的哲学家。
伪码:
semaphore chopstick[5]={1,1,1,1,1};
void philosopher(int i)
{
while(true)
{
think();
if(i%2 == 0) //偶数哲学家,先右后左。
{
wait (chopstick[ i + 1 ] mod 5) ;
wait (chopstick[ i]) ;
eat();
signal (chopstick[ i + 1 ] mod 5) ;
signal (chopstick[ i]) ;
}
Else //奇数哲学家,先左后右。
{
wait (chopstick[ i]) ;
wait (chopstick[ i + 1 ] mod 5) ;
eat();
signal (chopstick[ i]) ;
signal (chopstick[ i + 1 ] mod 5) ;
}
}
D.利用管程机制实现(最终该实现是失败的,见以下分析):
原理:不是对每只筷子设置信号量,而是对每个哲学家设置信号量。test()函数有以下作
用:
a. 如果当前处理的哲学家处于饥饿状态且两侧哲学家不在吃饭状态,则当前哲学家通过
test()函数试图进入吃饭状态。
b. 如果通过test()进入吃饭状态不成功,那么当前哲学家就在该信号量阻塞等待,直到
其他的哲学家进程通过test()将该哲学家的状态设置为EATING。
c. 当一个哲学家进程调用put_forks()放下筷子的时候,会通过test()测试它的邻居,
如果邻居处于饥饿状态,且该邻居的邻居不在吃饭状态,则该邻居进入吃饭状态。
由上所述,该算法不会出现死锁,因为一个哲学家只有在两个邻座都不在进餐时,才允
许转换到进餐状态。
该算法会出现某个哲学家适终无法吃饭的情况,即当该哲学家的左右两个哲学家交替
处在吃饭的状态的时候,则该哲学家始终无法进入吃饭的状态,因此不满足题目的要求。
但是该算法能够实现对于任意多位哲学家的情况都能获得最大的并行度,因此具有重要
的意义。
伪码:
#define N 5 /* 哲学家人数*/
#define LEFT (i-1+N)%N /* i的左邻号码 */
#define RIGHT (i+1)%N /* i的右邻号码 */
typedef enum { THINKING, HUNGRY, EATING } phil_state; /*哲学家状态*/
monitor dp /*管程*/
{
phil_state state[N];
semaphore mutex =1;
semaphore s[N]; /*每个哲学家一个信号量,初始值为0*/
void test(int i)
{
if ( state[i] == HUNGRY &&state[LEFT(i)] != EATING &&
state[RIGHT(i)] != EATING )
{
state[i] = EATING;
V(s[i]);
}
}
void get_forks(int i)
{
P(mutex);
state[i] = HUNGRY;
test(i); /*试图得到两支筷子*/
V(mutex);
P(s[i]); /*得不到筷子则阻塞*/
}
void put_forks(int i)
{
P(mutex);
state[i]= THINKING;
test(LEFT(i)); /*看左邻是否进餐*/
test(RIGHT(i)); /*看右邻是否进餐*/
V(mutex);
}
}
哲学家进程如下:
void philosopher(int process)
{
while(true)
{
think();
get_forks(process);
eat();
put_forks(process);
}
}
2.理发师问题:一个理发店有一个入口和一个出口。理发店内有一个可站5 位顾客的站席
区、4 个单人沙发、3 个理发师及其专用理发工具、一个收银台。新来的顾客坐在沙发上等
待;没有空沙发时,可在站席区等待;站席区满时,只能在入口外等待。理发师可从事理
发、收银和休息三种活动。理发店的活动满足下列条件:
1)休息的理发师是坐地自己专用的理发椅上,不会占用顾客的沙发;
2)处理休息状态的理发师可为在沙发上等待时间最长的顾客理发;
3)理发时间长短由理发师决定;
4)在站席区等待时间最长的顾客可坐到空闲的理发上;
5)任何时刻最多只能有一个理发师在收银。
试用信号量机制或管程机制实现理发师进程和顾客进程。
原理:
(1)customer 进程:
首先检查站席区是否已满(stand_capacity),若满选择离开,否则进入站席区,即进入
理发店。在站席区等待沙发的空位(信号量sofa),如果沙发已满,则进入阻塞等待队列,
直到出现空位,在站席区中等待时间最长的顾客离开站席区(stand_capacity)。坐到沙
发上,等待理发椅(barber_chair),如果理发椅已满,则进入阻塞等待队列,直到出现
空位,在沙发上等待时间最长的顾客离开沙发(释放信号量sofa)。坐到理发椅上,释放
准备好的信号(customer_ready),获得该理发师的编号(0~1 的数字)。等待理发师理
发结束(finished[barber_number])。在离开理发椅之前付款(payment),等待收据
(receipt),离开理发椅(leave_barberchair)。最后离开理发店。
这里需要注意几点:
a) 首先是几个需要进行互斥处理的地方,主要包括:进入站席区、进入沙发、进入理发椅
和付款几个地方。
b) 通过barber_chair 保证一个理发椅上最多只有一名顾客。但这也不够,因为单凭
baber_chair 无法保证一名顾客离开理发椅之前,另一位顾客不会坐到该理发椅上,
因此增加信号量leave_barberchair,让顾客离开理发椅后,释放该信号,而理发
师接收到该信号后才释放barber_chair 等待下一位顾客。
c) 在理发的过程中,需要保证是自己理发完毕,才能够进行下面的付款、离开理发椅的活
动。这个机制是通过customer 进程获得给他理发的理发师编号来实现的,这样,当
该编号的理发师释放对应的finished[i]信号的时候,该顾客才理发完毕。
d) 理发师是通过mutex 信号量保证他们每个人同时只进行一项操作(理发或者收款)。
e) 为了保证该顾客理发完毕后马上可以付款离开,就应该保证给该顾客理发的理发师在理
发完毕后马上到收银台进入收款操作而不是给下一位顾客服务。在伪码中由以下机制实
现:即顾客在释放离开理发椅的信号前,发出付款的信号。这样该理发师得不到顾客的
离开理发椅的信号,不能进入下一个循环为下一名顾客服务,而只能进入收款台的收款
操作。直到顾客接到收据后,才释放离开理发椅的信号,离开理发椅,让理发师释放该
理发椅的信号,让下一位等待的顾客坐到理发椅上。
(2)barber 进程
首先将该理发师的编号压入队列,供顾客提取。等待顾客坐到理发椅坐好(信号量
customer_ready),开始理发,理发结束后释放结束信号(finished[i])。等待顾客
离开理发椅(leave_barberchair)(期间去收银台进行收款活动),释放理发椅空闲信
号(barber_chair),等待下一位顾客坐上来。
(3)cash(收银台)进程
等待顾客付款(payment),执行收款操作,收款操作结束,给付收据(receipt)。
信号量总表:
信号量 wait signal
stand_capacity 顾客等待进入理发店 顾客离开站席区
sofa 顾客等待坐到沙发 顾客离开沙发
barber_chair 顾客等待空理发椅 理发师释放空理发椅
customer_ready 理发师等待,直到一个顾客坐
到理发椅
顾客坐到理发椅上,给理发师
发出信号
mutex 等待理发师空闲,执行理发或
收款操作
理发师执行理发或收款结束,
进入空闲状态
mutex1 执行入队或出队等待 入队或出队结束,释放信号
finished[i] 顾客等待对应编号理发师理
发结束
理发师理发结束,释放信号
leave_barberchair 理发师等待顾客离开理发椅 顾客付款完毕得到收据,离开
理发椅释放信号
payment 收银员等待顾客付款 顾客付款,发出信号
receipt 顾客等待收银员收、开具收据收银员收款结束、开具收据,
释放信号
伪码:
semaphore stand_capacity=5;
semaphore sofa=4;
semaphore barber_chair=3;
semaphore customer_ready=0;
semaphore mutex=3;
semaphore mutex1=1;
semaphore finished[3]={0,0,0};
semaphore leave_barberchair=0;
semaphore payment=0;
semaphore receipt=0;
void customer()
{
int barber_number;
wait(stand_capacity); //等待进入理发店
enter_room(); //进入理发店
wait(sofa); //等待沙发
leave_stand_section(); //离开站席区
signal(stand_capacity);
sit_on_sofa(); //坐在沙发上
wait(barber_chair); //等待理发椅
get_up_sofa(); //离开沙发
signal(sofa);
wait(mutex1);
sit_on_barberchair(); //坐到理发椅上
signal(customer_ready);
barber_number=dequeue(); //得到理发师编号
signal(mutex1);
wait(finished[barber_number]); //等待理发结束
pay(); //付款
signal(payment); //付款
wait(receipt); //等待收据
get_up_barberchair(); //离开理发椅
signal(leave_barberchair); //发出离开理发椅信号
exit_shop(); //了离开理发店
}
void barber(int i)
{
while(true)
{
wait(mutex1);
enqueue(i); //将该理发师的编号加入队列
signal(mutex1);
wait(customer_ready); //等待顾客准备好
wait(mutex);
cut_hair(); //理发
signal(mutex);
signal(finished[i]); //理发结束
wait(leave_barberchair); //等待顾客离开理发椅信号
signal(barber_chair); //释放barber_chair 信号
}
}
void cash() //收银
{
while(true)
{
wait(payment); //等待顾客付款
wait(mutex); //原子操作
get_pay(); //接受付款
give_receipt(); //给顾客收据
signal(mutex);
signal(receipt); //收银完毕,释放信号
}
}
分析:
在分析该问题过程中,出现若干问题,是参阅相关资料后才认识到这些问题的隐蔽性和严重
性的,主要包括:
(1)在顾客进程,如果是在释放leave_barberchair 信号之后进行付款动作的话,很
容易造成没有收银员为其收款的情形, 原因是: 为该顾客理发的理发师收到
leave_barberchair 信号后,释放barber_chair 信号,另外一名顾客坐到理发椅上,
该理发师有可能为这另外一名顾客理发,而没有为刚理完发的顾客收款。为解决这个问题,
就是采取在释放leave_barberchair 信号之前,完成付款操作。这样该理发师无法进入
下一轮循环为另外顾客服务,只能到收银台收款。
(2)本算法是通过给理发师编号的方式,当顾客坐到某理发椅上也同时获得理发师的编号,
如此,当该理发师理发结束,释放信号,顾客只有接收到为其理发的理发师的理发结束信号
才会进行付款等操作。这样实现,是为避免这样的错误,即:如果仅用一个finished 信
号量的话,很容易出现别的理发师理发完毕释放了finished 信号,把正在理发的这位顾
客赶去付款,而已经理完发的顾客却被阻塞在理发椅上的情形。当然也可以为顾客进行编
号,让理发师获取他理发的顾客的编号,但这样就会限制顾客的数量,因为finished[]
数组不能是无限的。而为理发师编号,则只需要三个元素即可。
3.参考文献:
左金平 计算机操作系统中哲学家进餐问题探究。
参考教材 操作系统—内核与设计原理

❾ 人工智能的三大要素

人工智能的三大要素:即数据、算力与算法。

算法:以哲学、数学、生物学为基础的逻辑认知和系统喊搜纳认知的结晶。多层神经网络在1969年出现,但直到2010年随着算力和云计算的发展才商业化落地。

人工智能的简介:

算力(又名:哈希率)是比特币网络处理能力的度量单位,即为计算机(CPU)计算哈希函数输出的速度。比特币网络必须为了安全目的而进行密集的数学和加密相关操作。算力是衡量在一定的网络消耗下生成新块的单位的总计算能力。

日前,比特币全网算力已经全面进入P算力时代(1P=1024T,1T=1024G,1G=1024M,1M=1024k),在不断飙升的算力环境中,P时代的到来意味着比特币进入了一个新的军备竞赛阶段。算力是衡量在一定的网络消耗下生成新块的单位的总计算能力。每个硬币的单个区块链随生成新的交易块所需的时间而变化。

热点内容
scratch少儿编程课程 发布:2025-04-16 17:11:44 浏览:642
荣耀x10从哪里设置密码 发布:2025-04-16 17:11:43 浏览:368
java从入门到精通视频 发布:2025-04-16 17:11:43 浏览:89
php微信接口教程 发布:2025-04-16 17:07:30 浏览:311
android实现阴影 发布:2025-04-16 16:50:08 浏览:794
粉笔直播课缓存 发布:2025-04-16 16:31:21 浏览:347
机顶盒都有什么配置 发布:2025-04-16 16:24:37 浏览:213
编写手游反编译都需要学习什么 发布:2025-04-16 16:19:36 浏览:818
proteus编译文件位置 发布:2025-04-16 16:18:44 浏览:369
土压缩的本质 发布:2025-04-16 16:13:21 浏览:594