當前位置:首頁 » 操作系統 » 演算法哲學

演算法哲學

發布時間: 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 瀏覽:88
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:310
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:794
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:346
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:213
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:818
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:367
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:594