大話人工智慧

張傳波(Fireball)發表於2013-10-11
人工智慧英文簡稱為AI,英文全寫Artificial Intelligence,中文直譯就是人工智慧。
人工智慧是讓人很感興趣的話題,也是讓人很神往的東西,可惜就是人工智慧的資料往往是枯澀難懂,希望這裡能讓大家輕輕鬆鬆地瞭解人工智慧的基本知識,為進一步學習打好基礎。
 
在大家日常生活中,在很多地方都存在“人工智慧”。現在很多傻瓜相機有臉部優先功能,能自動識別人臉進行對焦,有些還能自動識別笑臉,見到笑臉就自動拍照。空調自動恆溫技術、液晶電視亮度自動適應技術等許多家電都應用了人工智慧技術。車載衛星導航系統,讓你開車開得更爽。如果你喜歡玩電子遊戲,你會發現大量的遊戲中含有人工智慧,讓你興致勃勃地不斷挑戰遊戲中具備智慧的“敵人”。在國防、科技探索等領域,更加是大量應用了人工智慧技術,如:在火星上的探測車能自動尋路,用超級電腦來模式核爆炸,精確制導炸彈等等。人工智慧正在改變世界,人工智慧讓我們的生活更加精彩!
 
那什麼是人工智慧?還真的不好下定義,簡單地說就是能模擬人類智慧活動並做出決策的技術。“模擬人類智慧活動”又怎樣理解呢?人工智慧並不能完全實現人類智慧活動的效果,但有時候又能超越出人類的能力。
人工智慧並不能完全實現人類的智慧活動,到目前為止還不能製造出一個跟人類相似程度很高的機器人,現在的機器人要麼就是用作某一專業用途,如潛水、拆炸彈等,要麼就是用來做展示無實用價值的,如和人類進行簡單的交談。無論是怎樣的人工智慧,都是人類設計出來的,人工智慧不可能超越人類的智慧。
為什麼說人工智慧有時候能超越人類的能力呢?電腦和人類相比,優勢就是運算速度高、不會疲倦、不會出錯、不會帶感情色彩,人工智慧可以一下子識別1000張以上的臉,從中找出犯罪嫌疑人,如果用人來判斷的話是耗時費力且不準確的工作。
 
人工智慧分為兩類:定性AI(deterministic),非定性AI(nondeterministic)。
定性AI(deterministic)的特徵是既定的可預測的,如:某物體以時速10公里的速度前進,那麼兩小時後該物體將行進20公里。定性AI往往會利用一些數學公式、物理公式進行運算,一般來說比較容易實現。
非定性AI(nondeterministic)的特點就是具備某種程度的不確定性,具備一定的人類模糊思維、歸納推演、學習等思維特徵。如:不少象棋軟體能下贏很多人,甚至還具備學習能力,不會因為相同的原因再次輸給你。非定性AI非常有意思,但要掌握卻相當不容易。
 
下面簡單介紹一些常見的人工智慧演算法:(以下都是非定性的AI)
 
貝葉斯演算法
貝葉斯演算法是一種根據歷史事件發生的概率來推測將來的演算法,由偉大的數學家Thomas Bayes所建立的。Thomas Bayes,1702年出生於英國倫敦。
該演算法的原理是這樣的:如果事情A、事情B、事情C、...、這些事情發生了,那麼事情X發生的機率是多少。前面這些事情叫做前提事情,可以是一個到多個,前提事情越多分析起來就越複雜但會更加準確。
舉個例子:據說麥當勞當年發現,如果顧客購買了漢堡包和薯條,那麼顧客再購買可樂的機會是70%,於是麥當勞就將這三個產品捆綁在一起作為套餐,於是銷量大增。對於這個案例,前提事件就是購買漢堡包和購買薯條,要預測的是顧客會不會買可樂,預測結果就是有70%機會會買。
 
模糊邏輯
計算機程式做判斷往往是數字化的,看看這程式碼:
If 玩家.Power < 100 Then 攻擊玩家
這是動作遊戲中由電腦控制的敵人決定是否攻擊玩家控制的角色的程式碼,該敵人明顯就是欺軟怕硬,見到你的Power低於100就執行攻擊。但這樣的判斷邏輯也太簡單了,你玩多了就會發現這個規律,就會覺得遊戲太固定化了,沒啥意思!
 
再看看下面這段空調恆溫程式是這樣寫的:
If 當前室溫 > 指定溫度 Then 製冷
Else 停止製冷
這段程式的目的是當前室溫大於指定溫度時,空調製冷讓室溫降低,當前溫度低於指定溫度則停止製冷,希望通過這樣能讓室溫穩定在指定溫度。如果按這樣的程式寫了,問題就來了,空調會時開時停,省不了電並且會很快讓你的空調報銷。
 
人類就比計算機聰明多了,人類的判斷一般不會數字化。比方說你在玩一場籃球比賽,你的對手在前面擋住你,你要決定過還是不過他,你的判斷依據是他的高大程度、他的敏捷程度、他的速度情況等等,這些都是在電光火石之間在你腦袋中一閃而過,然後你會做出決定。你肯定不會這樣判斷的,他的高度是不是大於180cm,他的速度是不是大於10米/秒。
 
模糊邏輯就是計算機模擬人類這種模糊思維方式的一種演算法,模糊邏輯判斷結果會更加人性化。遊戲中應用模糊邏輯,敵人的判斷會更合理,並且具備不可預測性,玩家玩起來會覺得更有挑戰。而應用了模糊邏輯的空調,溫度調節是平滑進行的,不會一會關一會開。
 
神經網路
人腦其實是由數量龐大的神經細胞組成的,神經細胞龐大的數量及複雜的結構,讓人類充滿了智慧。人一出世,腦袋是一片空白的,當我們學會了某樣東西的時候,我們會對起進行推演和歸納。比方說我們認識了這是一條狗,當我們見到另外一條不同品種狗的時候,我們會判斷這也是一條狗。而計算機的判斷一般來說就比較死板了,如果有細微的偏差就會認不出來。
神經網路演算法其實就是通過計算機來構造類似於人腦的神經細胞網路(當然該網路無論如何不能跟人腦相比),通過一些訓練,能讓該網路能識別某一類事物。文字識別、指紋識別等都是應用了神經網路技術的。
 
遺傳演算法
這是模擬達爾文的進化論的一種演算法,我們先說說進化論。
地球上的物種會通過父母結合的方式產生下一代,而下一代有一定的機率會基因突變,突變後的物種可能是更好的也可能是更差的,最後這些物種能否繁衍下來,就要看這些物種對環境的適應性了,這就是所謂的適者生存、優勝劣汰。對環境適應性好的物種,會繼續繁衍後代,而對環境適應性差的物種就會逐漸消退甚至滅絕。這樣經過很長很長時間以後,地球上剩下的物種大體上就是比較好計較優秀的了。現在人類主導地球,這也是地球上物種進化的結果。
 
那遺傳演算法有什麼用呢?模擬這個進化過程有什麼意思?其實地球物種在進化過程中,就是不斷地在回答哪個物種的適應性更好的問題。我們再抽象一層,其實我們現實生活中要研究的很多問題,都是在思考哪個解是最合適的解的問題,如果我們能模擬一個“生態系統”,讓這些解不斷進化,最後留下來的解很可能是我們需要的答案了。
 
遺傳演算法是一種模擬進化過程尋找合理解的演算法,用遺傳演算法不一定能找到全域性最優解,很可能得到區域性最優解。舉一個例子,需要你巡遊在全中國的100個城市,要求是每個城市只走一次並且總路程最短,你怎樣設計你的路線?要走完100個城市,走法有很多種,最完美的求解辦法就是窮舉所有走法,然後找出最短的。但這樣的計算運算量超大,如果城市數量是1000個呢?運算量更加幾何級增長。這時我們可以考慮用遺傳演算法,找出合理解,當然這個解不一定是最短路線。遺傳演算法可以用比較少的運算次數來找到合理解。
 
蟻群演算法
一塊空地上有一粒米飯,有一隻螞蟻在該空地上覓食,該螞蟻可能找了好久也不會找到該米飯。可是如果有一群螞蟻呢?你會發現很快就會有螞蟻找到該米飯,並且如果食物分量足夠大,最終會引來浩浩蕩蕩的螞蟻群。當一大群螞蟻在搬動一份食物的時候,我們同時又在附近放置一份更大的食物,開始無蟻問津,後來就會有螞蟻發現該食物,然後又形成一條浩浩蕩蕩的螞蟻群,食物分量大的那邊蟻群會更大一些。
在我們日常生活中,你在家裡面不小心丟下任何食物殘渣,最終都會引來一群螞蟻,螞蟻是怎樣發現這些食物的呢?蟻群覓食有以下特點:
1.最開始時,螞蟻的走動是隨機走動的,不過它會留下“氣味”。
2.當螞蟻發現食物時,會留下發現食物的“氣味”,沒有發現食物則留下沒有食物的“氣味”。
3.螞蟻感覺到發現食物氣味時,會趨向有食物氣味的方向移動,當它發現食物時,也會留下發現食物氣味,這樣將加強這種氣味。
4.發現食物的氣味越強烈,螞蟻趨向該方向移動的慾望更強烈,反之沒有食物的氣味越強烈,螞蟻不向該方向移動機率也越大。
螞蟻覓食其實是一種很特殊的搜尋辦法,數量眾多的螞蟻同時進行搜尋,但它們之間很少會重複搜尋同一個地方,並且更多的螞蟻會在更有可能有食物的地區搜尋。這樣的搜尋辦法是高效的,從概率上說找到理想食物的機會很大。但也有可能扔會忽略掉一些地方,從而漏掉更有價值的食物。但會隨著時間的延長,搜尋到更好食物的機會也會越大。
 
和遺傳演算法類似,蟻群演算法也是一種尋求合理解的一種演算法,得到的結果可能是區域性最優解而不是全域性最優解。
我們可以利用蟻群演算法的原理來優化某些搜尋演算法。
 
 
 
 
 

作者:張傳波

創新工場創業課堂講師

軟體研發管理資深顧問

《火球——UML大戰需求分析》作者

www.umlonline.org 創始人

相關文章