1. 程式人生 > >人工智慧實踐教程(一)

人工智慧實踐教程(一)

 本文為《人工智慧實踐教程》學習總結和感悟,先寫書中內容,再寫自己的思考     2017年10月20日,實驗室    

 現在人工智慧就是用計算機去模擬人類智慧。為什麼計算機可以模擬人類的智慧?

這是因為人和計算機都是物理符號系統。能夠實現輸入符號、輸出符號、儲存符號、複製符號、通過找出符號間關係建立符號結構、條件性遷移就是一個完整的物理符號系統。假設物理符號系統的6種功能是智慧的充分必要條件,那麼就可以推出,人有智慧,所以人是物理符號系統,計算機是物理符號系統所以計算機能有智慧。當然現在,人類無論是獲取、儲存資訊還是初級處理都與計算機大不相同,所以計算機和人相比智慧水平有限。

人工智慧有哪些學派?智慧的起源究竟是什麼?

人工智慧主要有符號主義、連線主義和行為主義學派。符號主義學派。符號主義學派的觀點是智慧行為可以通過符號操作來實現,人工智慧源於數理邏輯。以此依據,符號主義學派做出了定理證明系統。聯結主義學派認為人的思維基元是神經元,智慧是相互聯結的神經元競爭與協作的結果。代表作品為人工神經網路。行為主義學派認為人工智慧源於控制論,代表作品就是與環境可以互動的智慧機器人。這三個學派各有所長,實際工程中可以融合使用,以解決問題為目的。

對於智慧起源問題我的看法是低階智慧是伴隨生物的競爭和進化出現的,如從遠古單細胞動物到草原中的獅子,生物對環境的感知和自身能動性越來越強。而高階智慧的起源我認為是語言,語言構造的龐雜豐富的知識(如詩詞歌賦)讓人類具有了決策能力,想象力,好奇心等。在此只做簡介,另一篇博文中《人工智慧的思考》詳細介紹。

人工智慧有哪些領域?

1.智慧感知   模式識別:首先通過感測器把各種物理量轉化為數值或符號。再通過消除噪聲,排除不相干的訊號,特徵計算等識別有效資訊,然後通關特徵選擇和提取形成特徵

                                           空間,模式分類或匹配在特徵空間基礎上進行。可以類比人類的識字過程。

                 自然語言理解:讓計算機理解人類語言不像人類查字典就可以理解,理解必須依賴於知識背景,習慣用法,具體情境。

計算機視覺:光學影象取樣量化得到灰度值組成的二維陣列,提取邊緣,周長,慣性矩等特徵,匹配特徵庫中的已知物體,得出結果。可以想象計算機 怎麼識別

貓。

2.智慧推理    推理與邏輯相輔相成。

搜尋技術:簡單來講就是在有限時間內或者有限空間裡通過一定方法找出問題的解。

定理證明,專家系統;用程式推理,實現知識。

3.智慧學習    學習方法:歸納學習、類比學習、分析學習、連線學習和遺傳學習。

記憶與聯想:傳統方法的聯想是指標、連結串列等,機器是按地址存取方式進行的,如“int a=1;”開闢一塊記憶體區域放入1,計算機可以通過a或者記憶體區域的地址訪問。而人腦的聯想按內容,說起西瓜就能想到橢圓,不必關心橢圓存在人腦的位置。

神經網路:利用大量簡單計算單元,組成一個大網路,通過大規模平行計算來完成。很少利用先驗知識,直接通過資料學習與訓練,自動建立計算模型。比如:加

一操作,你不事先編輯程式,而是輸入{(1,2),(2,3)……}讓它學會加一

進化計算和遺傳演算法:學習不僅可以通過單個生物體的適應實現,而且可以通過一個種群的多代進化適應發生。如吃豆子游戲,將生存表現好的豆子雙性繁殖。

4.智慧行動    依賴良好的感知、推理和學習。

智慧控制:驅動智慧機器自主實現其目標,注意力不在數學模型而在任務和世界模型的描述。比如:你讓小孩去打醬油,你讓他出門左拐走100米再右拐500米是

傳統的做法,現在你告訴他紅燈停,綠燈行,靠右行走,商店是尖頂紅瓦,讓他自己去規劃路徑並打回來醬油。

規劃和機器人學:和智慧控制類似,本質是以一種允許對不斷變化的環境做出響應的方式來做出規劃,比如上面的小孩在道路被封了以後選擇·其他合理路徑。

分散式人工智慧:各智慧體之間的合作和對話,具有全域性概念·,如機器人足球比賽,無人駕駛。

資料探勘與知識發現:綜合運用統計學,粗糙集,模糊數學,機器學習從大量資料中提煉出抽象的知識。

人工生命和遊戲。

S先生與P先生謎題
有大於等於2但小於等於99的兩個數:m、n
S先生知道兩數的和(m+n),P先生知道兩數的積(mn)
二人進行了如下對話
S先生:我知道 你不知道m、n是什麼,我也不知道
P先生:現在我知道m、n是什麼了
S先生:現在我也知道m、n是什麼了

對話導致知識的增加為推理提供了依據。

1. 如果S是以下數的話,根據2≤X≤Y≤99,S先生可直接知道X和Y
S = 4時,X = 2,Y = 2 
S = 5時,X = 2,Y = 3 
S = 197時,X = 98,Y = 99 
S = 198時,X = 99,Y = 99
由S先生的第一句話的後半部分知,S不可能是以上4個數中的任何一個數.
2. 如果X和Y均為素數的話,則P先生在得知P的情況下,可以輕鬆算出X和Y,如P = 481 = 13×37.所以由S先生的第一句話的前半部分得知,S不可能被表示為兩個素數的和,即X和Y不可能都是素數.舉個例子:如果S = 84的話,則可能有X = 5,Y = 79,則這時P可能是P = 5 × 79 = 395,P先生可以輕鬆得出X和Y.所以,如果S是84的話,S先生是不能肯定P先生不知道X和Y的,所以
S是不能被表示為兩個素數的和的數 (a)
先別忙算,還可以縮小S的取值範圍.
3. 如果X或Y中,僅有一個是素數,且該數大於50,則P先生還是能在僅知道P的情況下解出X和Y的.設P可以分解為以下幾個素數的積:
P = p0p1p2...pn
其中pn是大於50的素數,因為
pn > 50
故對任何素數p,均有
pnp> 100
故X和Y中必有一數等於pn,而另一數等於p0p1p2...pn-1.大於50的最小素數為53,故如果
53 + 2 ≤S ≤ 53 + 99
即當
55 ≤S ≤ 152
時,S先生是不能肯定P先生不能算出X和Y的.小於99的最大素數為97,故當
97 + 2 ≤S ≤ 97 + 99
即當
99 ≤S ≤ 196
時,S先生也不能肯定P先生不能算出X和Y的.
故根據S先生的第一句話,S取值範圍為:
6 ≤S ≤ 54 (b)
4.根據哥德巴赫猜想的驗證,可以輕鬆確定,區間[6, 54]中的所有偶數均能被表示為兩個素數的和(如果不怕麻煩,也可以自己驗證一下嘛),故S是區間[7, 53]中的某個奇數.因為2是素數,故也有一些奇數也可以表示為兩個素數的和,找出[3, 53]中的素數,與2相加,再進一步剔除區間[6, 54]中能被表示為兩個素數之和的奇數:
7 = 2 + 5
9 = 2 + 7
13 = 2 + 11
15 = 2 + 13
19 = 2 + 17
21 = 2 + 19
25 = 2 + 23
31 = 2 + 29;
33 = 2 + 31
39 = 2 + 37
43 = 2 + 41
45 = 2 + 43
49 = 2 + 47
故根據S先生的第一句話,可以確定S的值只可能是以下幾個數之一:
11, 17, 23, 27, 29, 35, 37, 41, 47, 51, 53
設集合A={11,17,23,27,29,35,37,41,47,51,53},則
S∈A (c)
5.由P先生的那句話,得知P先生根據S先生的第一句話,得出了結論c,在已知P的情況下算出了X和Y.
設P的素數分解為:
P = p0p1p2... pi...pn (n>2)
則存在唯一的
X = p0p1p2... pi
Y = pi+1...pn
滿足
X + Y = S∈A
將這個結論(條件)命為d,滿足這個條件的P組成集合B.
舉例說明,設P=130,對P進行素數分解有:
P = 2×5×13
這時X和Y的解可能為(2,65)、(5,26)或(10,13),但僅有(10,13)這組解滿足:
10+13=23∈A
於是當P=130時,根據結論c,P先生可解出X和Y.但當P=18,24,28,……時,P先生也可以求出X和Y來.
6.S先生根據P先生的那句話,也解出了X和Y來,也即是對於S先生所知的S根據條件d,解出了X和Y.即在S的和表示式
S = X0 + Y0
S = X1 + Y1
S = X2 + Y2
……
S = Xn + Yn 
中僅有一組(Xi,Yi)的積P滿足條件d,即滿足
P = Xi×Yi
P ∈ B
這樣S先生才能解出X和Y.
現對集合A中的元素逐一驗證:
當S=11時,有
S = 2 + 9,P = 2×9 = 18∈B
S = 3 + 8,P = 3×8 = 24∈B
S = 4 + 7,P = 4×7 = 28∈B
當S=17時,僅有
S = 4 + 13,P = 4×13 = 52∈B
當S=23時,有
S = 4 + 19,P = 4×19 = 76∈B
S = 7 + 16,P = 7×16 = 112∈B
S = 10 + 13,P = 10×13 = 130∈B
……
總之,只有當S=17時,才存在唯一的一組(4,13)滿足
S = 4 + 13 = 17∈A
P = 4×13 = 52∈B
解得X=4,Y=13