1. 程式人生 > >人工智慧的研究領域

人工智慧的研究領域

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                 

人工智慧的研究更多的是結合具體領域進行的,主要研究領域有專家系統,機器學習,模式識別,自然語言理解,自動定理證明,自動程式設計,機器人學,博弈,智慧決定支援系統和人工神經網路。

人工智慧是一種外向型的學科,它不但要求研究它的人懂得人工智慧的知識,而且要求有比較紮實的數學基礎,哲學和生物學基礎,只有這樣才可能讓一臺什麼也不知道的機器模擬人的思維。

因為人工智慧的研究領域十分廣闊,它總的來說是面向應用的,也就說什麼地方有人在工作,它就可以用在什麼地方,因為人工智慧的最根本目的還是要模擬人類的思維。因此我們可以從許多的應用領域中挑選幾個有代表性的方面來看看人工智慧的發展需要進行哪些方面的工作。

下面我們就具體的應用方面專家系統來看看人工智慧的主要研究領域是什麼。

專家系統是目前人工智慧中最活躍,最有成效的一個研究領域,它是一種基於知識的系統,它從人類專家那裡獲得知識,並用來解決只有專家才能解決的困難問題。這樣定義專家系統:專家系統是一種具有特定領域內大量知識與經驗的程式系統,它應用人工智慧技術、模擬人類專家求解問題的思維過程求解領域內的各種問題,其水平可以達到甚至超過人類專家的水平。專家系統是在關於人工智慧的研究處於低潮時提出來的,由它的出現及其所顯示出來的巨大潛能不僅使人工智慧擺脫了困境,而且走上了發展時期。

專家系統的分類有解釋型,診斷型,預測型,設計型,規劃型,控制型,監測型,維修型,教育型和除錯型,而從體系上來說,它可分為集中式專家系統,分散式專家系統,神經網路專家系統,符號系統與神經網路結合的專家系統。名字可是不少,但是專家系統的基本結構圖如下圖所示:

Image7.gif

人機介面部分就不做多的解釋了,它只是一個使用者介面而已。它的實現可以有不同的形式,也有可能是很複雜的。人們希望能夠和人類專家那樣和機器交流,不再使用簡單的命令,而是用人類的語言完成互動工作,這就要求人機介面能夠有自然語言理解的功能。但是專家系統能不能使用,好不好使用關鍵在中間的那一層,人可以思考,如果希望機器也能夠象人那樣思考,那麼推理機制是必不可少的,而且它在很大程式上決定了這個專家系統的效率和可用性。

就推理而言,它一般可以分為精確推理非精確推理兩種。精確推理有以下特點:

精確推理是運用確定性的知識進行的推理,精確推理基於的知識都是明確無誤的東西,是 1 就是 1 ,是 2 就是 2 ,不存在什麼模糊的東西,在一點上,精確推理有它的長處,也就是說,它可以準確地推理,在推理的過程中不必關心會不會出現什麼結論精確度的問題,每一步到下一步都是完全正確的,不存在什麼可能對可能錯,它的正確性是 100% 傳遞給下一個推理過程的。

精確推理和人類的思維模型相差很大,人類的思維是有精確的一面,但是絕大部人類的思維還是模糊的和不確定的,人類思維的結果往往是可能如何如何,大概如何如何,但是精確推理的結果中絕對不會有什麼可能大概之類的話。

精確推理是一種單調性推理,即隨著新知識的加入,推出的結論或證明了的命題只會單調增加,這一點和人類的思維結構也有著明顯的不同。新的知識有可能使人類的思維結果增加,但絕對不會是單調增加。

精確推理需要知道全部的資訊才可能進行推理,這與人有明顯的不同,人可以根據一些情況進行一些假設和推斷,產生一個結果,而精確推理卻不可能。

正因為精確推理的基礎是經典邏輯,而經典邏輯可以說是一種符號化了的形式推理,它關心的是符號與符號之間的形式聯絡,而不是符號與符號之後深層次的語義聯絡。也正是因為這一點,限制了精確推理在人工智慧中的應用。如果讓這種邏輯解一些題,進行一些確定性的工作,它還是可以的,但是如果讓它進行更復雜的工作就力不從心了。我們可以想象一下機器翻譯中的例子,人類語言中的有些句子根本沒有什麼語法,非要從語義上理解不可。這個時候精確推理就不好用了。

下面我們看看,人類思維的另一方面,非精確方面。我們知道所謂推理就是從已知的事實出發,通過運用相關知識逐步推出結論或者證明某個假設不成立的思維過程。專家系統中的知識來自於領域內的人類專家,而這種知識常常帶有不確定性,在這種情況下,如果仍然使用經典邏輯做精確推理,就必然要把客觀事物原來具有的不確定性及事物之間客觀存在的不確定性關係化歸為確定性,在本來不存在明確類屬關係的事物之間人為地劃上界限,這無疑會捨棄事物的某些重要屬性,從而失去真實性。不確定性推理是建立在非經典邏輯上的一種推理,它是對不確定性知識的運用與處理,嚴格地說,所謂不確定性推理就是從不確定性的初始證據出發,通過運用不確定性的知識,最終推出具有一定程度不確定的,但是卻是合理(或近乎於合理)的結論的思維過程。

要處理不確定的時候就涉及到確定性推理中不存在的幾個基本問題:如何表示這種不確定性,根據表示了的不確定性如何進行推理得到一個(或多個結論),在推理的過程中如何處理不確定性帶來的結論的不確定性,如果評價所得到的結果。

因為計算機是處理數字的一種裝置,因此對於不確定性的表示說到底還是將它表示成一種有範圍的數值,這種數值要有利於推理中對結論不確定性的計算。

解決問題總是需要推理的,而推理出的結論能不能用,是不是結果,那就需要一種衡量的方法,衡量的方法和具體的推理方法不同而不同,現有的推理方法基本上走的是兩條路,一條是基於概論論的,一條是基於模糊數學的,前者發展的歷史很長了,有很多現成的結果可以使用,但是由於概率是基於一種大樣本統計的產物,而這種大樣本統計往往不可能得到,而且還沒有充分體現模糊性,所以也更談不上對模糊性進行有效地處理了;而後者克服了前者的缺點,它根據模糊集理論發展出來,為不確定性的判斷和獲得開闢了新的道路。

現在我們回到我們上面的專家系統基本結構圖上來,我們知道人類的推理活動是基於一定知識進行的,我們解幾何題的時候總是要知道一些基本的公理(或定理),醫生看病的時候起碼要有一點最起碼的醫學常識,這樣才有進行推理的物質條件,推理是建立在具有知識的基礎上進行的。

知識就是一些事實或事實的抽象,我們稱之為概念的東西組成的。知識是對客觀事物某一方面屬性的瞭解。知識有著它的特性:

相對正確性。任何知識都有一定的應用範圍,不能脫離了範圍來說一個知識可用不可用;

不確定性。由於現實世界的複雜性,許多事實和概念都不可以說是絕對正確,就象哲學中不存在絕對真理一樣,知識本身也有不確定性;

可表示性。同樣,知識也要是可以表達的,用口述也要,用什麼東西記錄也要,要能夠感知的,如果不能表示出來,那誰能夠理解,連表示都表示不出來,那也根本談不上應用了。不能用的東西,我們知道也罷不知道也罷,對於面向應用的人工智慧來說沒有什麼意義。

事實和概念之間,概念和概念之間,事實和事實之間都存在聯絡,這種聯絡有兩種,靜態聯絡動態聯絡

靜態聯絡。比如,我們一旦提起“早上”這個概念就會想起“太陽東昇”或“公雞叫”之類的事實,這種聯絡有時候是雙向的,也就是等價的,而有時是單向的,我們可以把“太陽東昇”與“早上”等價起來,而我們如果把“公雞叫”和“早上”等價起來,十有八九可能要錯了。

動態聯絡。除了靜態的聯絡以外,我們還必須看到,事實和概念之間也會存在一種動態的聯絡,這一點在機器翻譯中很好的體現了。比如在上文中看到了一個概念 A ,它建立了概念 B 的聯絡,那麼,我們在下文中就必須承認 A B 之間是有聯絡的,即使在生活中這種聯絡是根本不存在的,只要在上文中已經承認了這種聯絡,我們就必須承認這種聯絡的存在。再具體一點,我們在翻譯一篇科幻小說的時候,前文已經說過這個地方“早上”太陽是從“北方升起”,那麼,“太陽北方升起”就和“早上”這個概念建立了聯絡,在這篇文章的翻譯中就要注意了,凡是有關早上太陽的都要是從“北方升起”的。但是千萬要注意,這種聯絡不可做為靜態聯絡而帶到下一個文章中,如果把這個聯絡記住帶到下一個文章中去,那可就出大麻煩了。

前面已經說過知識是客觀事物某一方面屬性的描述,而正因為客觀事物是相互聯絡的,因此知識也必須是相互聯絡的。這就是知識聯絡的存在的本質原因。

知識作為機器智慧的一部分,就必須能夠讓機器知道什麼是知識,那就涉及到了知識表示的問題,這個問題就象人記錄某一事實有不同的方法一樣,例如對於聾子來說,你讓他把“早上”和“公雞叫”聯絡在一起,那是根本不可能的。而對於機器這個東西,它簡直就是一個又聾又瞎,又沒有感覺(更談不上感情)的石頭,它只理解數字和一些人為規定的資料結構,那麼如何讓它能夠理解知識,特別是知識中的聯絡就是一個重要的問題了,一個專家系統的推理系統做得再好,沒有知識做為後盾肯定什麼也幹不成。

同時,知識的表示又影響到推理機制的執行,推理機制和知識表示兩者是相關的,一種知識表示可以有利於一種推理機制的執行,而另一種則不利於這種推理機制的執行,因此選擇知識表示也一定要根據所要處理的具體領域選擇相應的知識表示方法,具體的知識表示有以下幾種:

一階謂詞邏輯表示法。它是把一些知識表示為經典邏輯中的謂詞表示式,因為表示成了謂詞的形式,進行推理起來當然比較方便了,但是有許多知識是根本無法表示為謂詞的,其關鍵原因是因為謂詞只有表示出精確的知識,而對不確定的事物無法有效表示;同時這種表示方式也不能很好地體現知識的內在聯絡,尋找知識內在聯絡的任務要交給推理系統或另外的系統完成,這就比較麻煩了。

產生式表示法。它的基本形式類似於我們的 IF 語句的形式,因為與計算機中一些現成的語句相似,因此對它的處理要方便得多。它注意到了聯絡和知識的應用範圍,但是它在表示結構性知識上可是先天不足。

框架表示法。它的基本作法是把許多事物放在一起,構成一個集合,然後就這個集合中的聯絡和事實進行表示,這種表示方法可比前兩種科學得多了。在機器翻譯中,如果一個老太太說到 VC ,我們可不要把它和微軟聯絡起來,而要和維生素 C 等價。這種表示法限制了概念出現的場合,這可能是它的不足之處,但是相對於前面兩種表示法,它是很接收於人類思維的一種表示法,它無形中體現了知識適用的範圍。更重要的是它是可以繼承的,在這一點上,它更加接近人的思維了。

語義網路法。我們自己可以想象一下自己所擁有的知識體系,有是有結構的,但在另一角度上看,它是一個網路,普遍聯絡的網路,而語義網路表示法正是在表示人類知識體系成網路化的一面,而且它能夠使聯想式推理在其上得到很好的發揮,為進行復雜推理打下了堅實的基礎。它很接近人類思維,但是它不能正確表示類屬關係,它體現了網路性,但它忽視了事物有類屬性。框架表示法和語義網路表示法在這一點是有互補性的。

指令碼表示法。這種表示法在自然語言理解方面開始應用,這是因為自然語言理解的特殊性要求有這樣一種表示法。它正確地表示了上下文關係,表示了事物之間的靜態關係,動態關係,充分考慮到了場景(上下文),但是世界上的場景可實在是太多了,儲存這些場景幾乎是不可能的。這就限制了它的應用範圍。

就知識表示來的幾種方法來看,知識的表示有貼近於人類表示的,有與人類表示相差比較遠的表示方法,總體上我們可以看到一種特點:與人類思維接近的表示法,讓計算機表示起來都會有一定的麻煩,而與機器接近的表示法卻不能完全表示人類知識結構。機器和人之間有著一種差別,這種差別可能開始促使人們開始研究新結構的計算機,讓機器和人類思維之間的差別減少到最小。但是因為目前人類的思維結構,人腦的結構還不能搞得很清楚,因此能夠靠這樣一臺機器把人和機器的思維差距縮小到什麼程度就不得而知了。而且就目前看來,替換如此許多的計算機也是不現實的,因此有必要採用另外的方法讓機器和思維和人類的思維更加接近。

有人說人工智慧就是一個數據庫加上搜索,從某種程度上,這句話也確實可以說明人工智慧的現狀。無論是在知識庫這一方也好,還是在推理機那一方也好,都要涉及到搜尋這一過程。

大體上來說,搜尋分為兩種,一種是非啟發式的搜尋,另一種是啟發式搜尋。非啟發式的搜尋在搜尋過程中不改變搜尋策略,不利用搜索獲得的中間資訊,它盲目性大,效率差,用於小型問題還可以,用於大型問題根本不可能;而啟發式搜尋在搜尋過程中加入了與問題有關的啟發性資訊,用以指導搜尋向著一個比較小的範圍內進行,加速獲得結果的過程。我們都知道計算機中有一個NP完全性問題,也正是因為這個使非啟發式搜尋在許多場合下不可用,但是啟發式搜尋雖然利用了搜尋的中間結果,減少了搜尋量,看起來優於非啟發式搜尋,它所得到的解是不是最優解這往往令人頭痛。總的說來,非啟發式搜尋隨著搜尋的進行,需要搜尋的空間很快加大;啟發式搜尋隨著搜尋的進行,需要搜尋的空間有所增加,但增加的幅度遠遠小於非啟發式搜尋。問題空間中的有些地方因為中間資訊的獲得而根本不用搜索了。隨著計算機硬體效能的不斷提高和實際系統的需求,原來看起來不能使用非啟發式搜尋的地方現在也可以了,所以在實際應用中非啟發式搜尋仍然使用很廣。

有了搜尋的方法,那我們現在可以看看要搜尋的東西是什麼樣子的了。資料結構決定演算法的實現。對於我們所知道的問題,我們可以採用狀態空間或與或樹的表示方法來表示一個待搜尋的問題空間。

由於工程實踐的需要,搜尋的結果有時候可以不是最優解(有時候最優解也沒有判定標準),而是次優解,我們可以想一下機器翻譯中對一句話的翻譯可能有許多種,哪裡談得上有什麼最優的。因此,隨了我們熟悉的一些類似的深度優先,廣度優先演算法以外,現在研究的很多還有一種進化式的搜尋演算法,例如遺傳演算法,模擬煺火演算法等等,它們有的搜尋方法獨立於問題,而且能夠在比較短的時間內找到最優解(或次優解),特別適應於對問題空間比較在的情況下使用。

拿遺傳演算法來說,我想更重要的一點是我們不必關心它如何做,而只用關心它做什麼,這一點是相對於傳統搜尋演算法的最大不同。而人工智慧所追求的也就是讓機器具有類似人類的智慧,如果你能夠告訴一臺計算機要幹什麼,它就能夠自己幹了,而不用你告訴它如何幹,那人工智慧就已經實現了。

我們現在再回到上面專家系統基本結構圖上來。我們有了推理機,有了知識庫,按說就可以實現使用者的功能了,但是我們還應該注意到,另一個重要的部件,知識獲取部分,一個人類專家只所以能夠成為人類專家,就是它可以在實踐過程中不斷地豐富自己的知識,讓自己做出的結論在結合實踐後反饋回自己,讓自己修改錯誤,人是一個負反饋的系統,而我們上面提到的沒有知識獲取的專家系統根本沒有什麼反饋,這個機器專家,現在是這個水平,將來還會是這個水平,它所知道的,不會因為自己的實踐而有絲毫的變化。因此它不能適用工程實際的需要。知識獲得部分的工作就是要建立這樣一種反饋機制,把所得到的結果反饋給知識庫,修改已知的知識,讓它得到的結果更準確,更具有可用性。如果讓它能夠例項進行學習,那更好不過了,程式設計人員就可以不用把一條條的規則用程式寫給這個專家系統了,而只用把一個個用計算機作好標記的例項交給計算機,它自己會生成知識庫,這樣它就更象一個人了。因此,如果一個專家系統有自學習的功能,那在系統的維護方面和系統的可用性方面一定會大有提高。

機器學習在這樣的需求下產生了。機器學習的方法有以下幾種:

機械式學習。它的另一個名稱死記式學習能夠直接體現它的特點,這是一種最簡單的,最原始的學習方法,也是機器的強項,人的弱項。

指導式學習。這種學習方式是由外部環境向系統提供一般性的指示或建議,系統把它們具體地轉化為細節知識並送入知識庫中,在學習過程中要對反覆對知識進行評價,使其不斷完善。

歸納學習。我們看到,機器所善長的不是歸納,而是演繹,它適用於從特殊到一般,而不太適應從一般到特殊,從特殊到一般的歸納是人類所特有的,是智慧的標誌。具體的歸納學習方法有許多,但它們的本質就是讓計算機學會從一般中得出規律。

類比學習。類比也就是通過對相似事物進行比較所進行的一種學習。它的基礎是類比推理,也就是把新事物和記憶中的老事物進行比較,如果發現它們之間有些屬性是相同的,那麼可以(假定地)推斷出它們的另外一些屬性也是相同的。

基於解釋的學習。這是近年來興起的一種新的學習方法。它不是通過歸納或類比進行學習,而是通過運用相關的領域知識及一個訓練例項來對某一目標概念進行學習,並最終生成這個目標概念的一般描述,這個一般描述是一個可形式化表示的一般性知識。

通過以上的學習方法就是為了得到知識,通過一種方便的方法得到知識。前面已經說過了,因為機器的思考方式和人類的思考方式大有不同之處,因此讓機器通過自己學習生成自己便於理解和使用的知識,也不失為機器學習的目標之一。

就人工智慧的研究領域來說,前面說所說的系統可以表示成下面這樣一個圖示:

Image8.gif這個系統型別於控制中的負反饋系統,把結果重新作用於知識庫上,於是知識庫得到不斷地修正,以適應系統的需要。但是我們注意到上圖中,如果把結果作用於推理機會得到什麼結果。

我們前面討論的專家系統也好,推理機也好,機器學習也好,與人的差距就在於我們還需要告訴它們怎麼做,而不是僅僅告訴它們做什麼,它們就會去做了。人工智慧的兩種研究方法,一種是希望找到人類智力的數學解釋,只要找到了數學解釋,那麼人工智慧就可以得到實現了;另一種是用一種軟體或硬體的結構來模擬人腦的結構,通過類似仿生學的方法來模擬人類思維。而神經網路正是基於後一種思路提出的。從某種意義上來說,對於神經網路而言,結果它改變的是不是知識庫,而是推理機的結構,它也是研究人工智慧的一種重要的方法。

神經網路也就是模擬人腦中神經元的功能,希望通過模擬人腦最基本的單位神經元功能來模擬人腦的功能。它通過一定的範例訓練構成的神經網路,就象教一個小孩子一樣,在訓練結束後,這個神經網路就可以完成特定的功能了。它是通過範例的學習,修改了知識庫和推理機的結構,達到實現人工智慧的目的。

最後還有一個應用領域,就是模型識別,我想它應該在知識挖掘中應用不小,因為現在工程中的獲得的資料越來越多,要想人為地從這些資料中確定某一規律都不容易,更不要說在這些資料中發現新規律了,因此有必要進行資料探勘,它的應用對於決策支援系統將有著巨大的意義。

人可以思考,人工智慧也需要思考,這就是推理;人可以學習,人工智慧也就需要學習;人可以擁有知識,那麼人工智慧也就需要擁有知識。

人工智慧是為了模擬人類大腦的活動的,人類已經可以用許多新技術新材料代替人體的許多功能,只要模擬了人的大腦,人就可以完成人工生命的研究工作,人創造自己,這不但在科學上,而且在哲學上都具有劃時代的意義。

最後,我們來總結一下,人工智慧的各個研究領域。參照人在各種活動中的功能,我們可以得到人工智慧的領域也不過就是代替人的活動而已。哪個領域有人進行的智力活動,哪個領域就是人工智慧研究的領域。人工智慧就是為了應用機器的長處來幫助人類進行智力活動。人工智慧研究的目的就是要模擬人類神經系統的功能。

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述