人工智能jan4 gung1 zi3 nang4(英文:artificial intelligence,AI;粵拼:ei1 aai1),又有叫機械智能gei1 haai6 zi3 nang4(machine intelligence),泛指由機械展示嘅智能,相對於人同第啲動物展示嘅自然智能。喺科學上,「人工智能」一詞亦都俾人攞嚟指專門研究 AI 嘅認知科學同電腦科學交界領域,呢個領域嘅研究會關注點樣教機械做推理、知識表示、計劃、學習、自然語言處理、感知以及郁同操控物體等嘅作業,而呢啲研究其中一個終極目標就係想造出強 AI-即係能夠展現出同人無異嘅智能嘅 AI 。
AI 嘅理論基礎建基於智能體(intelligent agent)嘅概念:喺最廣義上,一嚿物體如果有能力感知佢四圍嘅環境,並且運用所得嘅資訊嚟提升自己達到目的嘅機會率嘅話,噉佢就算係一個智能體-包括人在內嘅動物都符合呢個定義。AI 領域嘅目標就係研究點樣人工噉整一啲智能體出嚟,最常見嘅做法係參考心理學以及神經科學呢啲研究自然智能嘅領域嘅研究,跟住再編寫電腦程式嚟模仿人同第啲動物所展現嘅智能。
除咗科學,AI 研究又引起咗唔少哲學同社科上嘅討論:「人可以整機械嚟模擬人類智能」嘅宣言引起咗一連串(到咗廿一世紀初仲有人關注嘅)心靈哲學問題同埋「人工噉創造一個有人類水平智能嘅物體係咪合乎道德」等嘅討論;亦都有唔少人覺得 AI 如果唔受控嘅話會對人造成威脅,例子可以睇吓廿一世紀初科幻故仔常見嘅 AI 叛變橋段,或者有人擔心 AI 會搞到有大量嘅人失業。
AI 領域誕生於廿世紀中:喺 1956 年,有班工程師宣稱,因為人類智能可以用科學理論描述(睇認知科學),所以用運算機械模擬人類智能係有可能嘅,引起學界熱議;而自從嗰陣開始,AI 領域有過好幾波嘅熱潮,又試過因為研究失敗等嘅原因搞到有排冇人肯出錢資助(即係所謂嘅 AI 低谷),有過幾波唔同嘅技術革新。到咗廿一世紀,AI 經已係一個蓬勃嘅獨立科學領域,有得按照所使用嘅技術或者想達到嘅目的分做多個唔同嘅子領域,而且呢啲子領域好多時仲要專化到彼此之間溝通唔到。
智能體(intelligent agent)係
如是者,智能體就會一路同環境互動,一路嘗試達成自己嘅目的。唔同智能體喺複雜度上可以有好大差異,而一個智能體有幾複雜反映到佢智能(intelligence)有幾高。上述呢個智能體同環境之間嘅互動可以畫成以下噉嘅抽象圖解:
呢個圖入面嘅每件物件都可以攞數值表示。例如環境嘅狀態可以想像成一個有若干個維度嘅向量,例:
[2.5, 3.9, 1.0,...]
,個向量當中每一個數值表示某個描述世界狀態嘅數值,例如個環境係一間房,第一個數字表示間房嘅平均溫度、第二個數字表示間房嘅亮度... 呀噉;於是部電腦就可以透過處理 [1.2, 4.3, 6.4,...]
同 [1.1, 4.3, 6.4,...]
噉嘅陣列知道環境嘅狀態同埋由環境狀態當中計出要採取嘅行動。
一個智能體會有某啲目的(goal):一個智能體嘅目的可以想像成一個「個智能體想達到嘅狀態」,可以表達成一個特定嘅環境狀態,而「現時狀態同目的之間嘅距離」可以諗做代表現時狀態以及目的狀態嗰兩個向量之間嘅歐幾里得距離;另一方面,目的又可以用函數嚟表達,即係用數字話俾個智能體知佢幾時做啱幾時做錯,簡單嘅例子有「if
自己贏咗場象棋,then
output 係 1(達到目的),else
output 就係 0(達唔到目的)」。
定義上,AI 領域想做嘅,就係
「 | 」 |
篇文跟住落嚟嘅內容,假設讀者已經識嗮演算法、編程同埋學習等嘅基本概念。
一個 AI 程式要展示自己嘅智能,就實要(好似人類做決策噉)
Output 嘅質素會決定個 AI 程式嘅表現。舉例說明,喺一個 AI 程式捉象棋嗰陣,個程式會係噉收到「個棋盤係乜嘢形勢」嘅資訊(input),跟住佢會一啲運算,決定自己要行邊一步(output),而佢所行嘅步最後就會決定佢贏定輸(表現好唔好)。喺成個過程當中,一個 AI 程式由 input 值計 output 值,即係話 output 值係 input 值嘅函數,
-當中函數 可以有好多唔同款。
AI 史上出名嘅運算方法(可以想像成 可能嘅款)有以下呢啲:
符號 AI(symbolic AI),又叫老派 AI(good old-fashioned AI,GOFAI),係最早期(同埋俾好多人認為係最易明)嘅 AI 運算方法:喺 1950 年代 AI 領域啱啱起步嗰陣,啲科學家好多都認為人類智能只不過係對邏輯符號嘅玩弄,而符號 AI 做法就將所受嘅 input 值用一大柞邏輯符號計算,再按照呢啲計算俾個 output 值出嚟睇;舉例說明,如果家吓有個設計者想教部電腦幫手睇病(input 值係「有關病人嘅資訊」,而 output 值係「診斷」),噉就要教佢
... 等嘅若干條法則。
即係話符號 AI 嘅做法建基於三個諗頭:
符號 AI 嘅做法可以話係比較原始,而且過咗冇幾耐啲 AI 研究者就發現有好多問題都係符號 AI 搞唔掂嘅。
廿世紀早期嘅學者好多都認為,人嘅認知功能可以用一啲相對簡單嘅啟發法(heuristics)嚟表達:佢哋會將要解決嘅問題想像為一柞狀態(state),而解決問題嘅過程就係個 AI 嘗試由初始嗰個狀態變到佢目的狀態嘅過程,佢哋認為人類會用某啲相對簡單-但唔一定啱-嘅認知捷徑嚟判斷點樣由一個狀態移去下一個狀態,例如係好似「如果我將隻棋行得太出,佢通常會俾對手食咗」呢一啲直覺同無意識嘅假設,而呢啲簡單直接、通常啱用嘅規則就係所謂嘅啟發法。
採取呢個做法嘅研究者認為,要令 AI 做到好似人噉嘅智能,要做嘅就係用認知心理學領域嘅實驗搵出人思考嗰陣用啲乜嘢啟發法,並且開發出一啲模擬人腦用嗰啲啟發法嘅演算法,再用呢啲連串嘅演算法嚟模擬人所展示嘅智能。呢種做法一路去到 1980 年代中期都仲有好多人用。
又有好多符號 AI 研究者主張,AI 唔使模擬人嘅認知功能所涉及嘅啟發法,而係應該用一啲實啱(相對於啟發法嘅「通常啱」)嘅邏輯法則嚟指定「乜嘢係正確答案」。例如係如果要教一部電腦點樣知道兩個人係咪彼此嘅兄弟姐妹,運用基於邏輯做法嘅 AI 研究者會教電腦以下呢條法則:
siblings(X,Y) :− parent(Z,X) and parent(Z,Y)
呢條法則講嘅係,「如果有一個人 Z,佢係 X 嘅父母,又係 Y 嘅父母,噉 X 同 Y 就係兄弟姐妹嘅關係。」呢類思考嘅方式唔似人(好多時用直覺多過邏輯嘅)日常思路,但就係一條絕對正確同合邏輯嘅思路。相比之下,用認知模擬嘅 AI 研究者會研究吓一般人類用乜嘢(無意識、未必完全穩陣嘅)法則判斷兩個人係兄弟姐妹嘅機會率,再用演算法模擬呢啲法則。
由 1970 年代開始,電腦嘅記憶量開始愈嚟愈大,令到各門嘅 AI 專家都開始嘗試將「知識」嘅成份加落去 AI 應用嗰度。呢股「知識革命」引起咗專家系統(expert system)嘅發展。
專家系統係第一種真係成功嘅 AI 軟件,一個專家系統會建基於一個知識基礎之上,並且運用一大柞「if... then...」嘅法則嚟做推理。例如係一個用嚟診斷病人嘅專家系統噉,佢內部會有一大堆有關唔同嘅病同啲病嘅症狀嘅資訊,而如果俾個病人佢睇嘅話,佢會用一大柞
等嘅法則嘗試搵出一個診斷。但要整一個專家系統就實要有個真嘅人類專家幫手,而吓吓都逐條逐條法則都明文講嗮俾個 AI 程式知會好嘥時間-專家往往都因為有人需要佢哋嘅服務而好唔得閒,好難請佢哋幫手整專家系統。
符號 AI 最大問題係,呢種做法要求
「 | 設計者將個 AI 做判斷要用嘅法則,冚唪唥都明文噉講嗮俾部電腦知。 | 」 |
但由 1980 年代開始,AI 學界開始留意到,呢種做法喺好多情況之下根本行唔通:首先,噉嘅 AI 學起嘢上嚟好撈絞-如果個設計者想教一條新法則俾個程式聽,佢就要人手噉由(閒閒地成幾萬行長嘅)源碼當中搵嗮所有同條新法則衝突嘅法則出嚟,再攞走呢啲舊法則,非常嘥時間;而且符號 AI 根本唔能夠模擬到自然智能-認知心理學等領域嘅研究清楚噉表明咗,人類智能好多時都會依賴直覺等無意識、難以明文噉講出嚟嘅法則(第一型過程)。所以廿一世紀初嘅 AI 好少可會真係齋靠用符號性嘅方法,而好多時啲新嘅 AI 做起運算上嚟都起碼會用啲混合型方法-即係結合符號同非符號嘅 AI 做法。
AI 解問題嗰陣成日都要面對不確定性(uncertainty)-意思即係話,個程式成日都焗住要喺唔完全知道嗮所需嘅資訊嘅情況之下行事。於是 AI 專家就運用概率論同經濟學等領域嘅知識,諗咗一柞工具出嚟去應付呢啲問題:
貝葉斯網絡(Bayesian network)係一種可以用嚟教電腦做推理、學習同計劃等工作嘅工具。一個貝葉斯網絡會考慮大量變數,並且用一柞基於貝葉斯定理(Bayes' Theorem)嘅方程模擬唔同變數之間嘅關係。舉個簡單例子,假想家吓有一個貝葉斯網絡,佢會睇某啲變數(包括咗「有冇落雨」同埋「啲灌溉花灑有冇開著」等)嘅數值,並且計出「啲草係濕嘅」呢個狀態係「真」嘅機會率,途中會用到(例如)以下呢條式:
當中 係指「啲草濕咗」呢個狀態, 係指「啲灌溉花灑著咗」呢個狀態,而 係指「有落雨」呢個狀態。成條式用日常用語講嘅話係噉嘅:「嗰三個狀態都係真嘅機會率」( )等如「如果有落雨( )而且啲灌溉花灑著咗( ),啲草濕咗( )嘅機會率」( )乘以「如果有落雨( ),啲灌溉花灑著咗( )嘅機會率」( )乘以「有落雨嘅機會率」( )。
個設計者寫好程式之後,可以(例如)搵一大柞有關呢幾個變數之間嘅關係嘅數據俾個程式睇,跟住叫個程式用呢啲過往嘅數據,計出變數同變數之間嘅關係係點,而個程式就可以攞嚟預測未來。貝葉斯式 AI 有相當廣泛嘅用途,例如 Xbox Live 噉,喺幫啲打緊網上遊戲嘅玩家搵比賽加入嗰陣,就會用到考慮嗰個玩家嘅贏率嘅貝葉斯網路:一種做法係整個人工神經網絡(睇下面),用每一個玩家喺先前嗰啲比賽嗰度「幾常成功殺敵」同埋「幾常俾敵人殺」等嘅資訊做個網絡嘅 input,而呢個網絡嘅 output 就係「如果個分隊係噉嘅話,A 隊贏嘅機會率係幾多」,並且寫個演算法搵出令到呢個機會率最接近 50% 嘅分隊法(即係盡可能令場比賽勢均力敵)。
同符號 AI 比起上嚟,好似貝葉斯網路啲噉嘅貝葉斯式 AI 都有唔好處:佢哋內部要計大量嘅機會率,搞到佢哋喺運算上撈絞好多(computationally expensive-做起運算上嚟要嘥多好多時間同記憶體),好多時為咗慳啲時間同記憶體,啲設計者焗住要簡化佢哋啲模型,例如係如果個設計者用嘅電腦冇返咁上下運算能力,佢可能就冇得用涉及打圈結構嘅貝葉斯網路-即係話模型嘅可能複雜度受制於運算能力上嘅局限,而唔係個模型模擬現實嘅能力。
人工神經網絡(artificial neural network,ANN)係建基於人腦入面嘅神經細胞嘅結構嘅:一個動物嘅腦會由好多神經細胞組成,一個成年男人嘅腦有成差唔多 860 億粒神經細胞,每粒神經細胞會由第啲神經細胞嗰度接收電同化學訊號,而當一粒神經細胞受到啲訊號刺激嗰陣,佢就可能會射自己嘅電同化學訊號,呢個訊號跟手就可能會刺激第啲神經細胞,於是乎訊號就噉喺個網絡嗰度傳開去。人工神經網絡運用嘅係同一道理。喺整人工神經網絡嗰陣,個設計者會
舉例說明,每粒人工神經細胞嘅活躍程度可以用以下呢條式代表:
當中, 代表粒神經細胞嘅啟動程度, 代表前一層神經細胞當中第 粒嘅啟動程度,而 就係其他神經細胞當中第 粒嘅權重(指嗰粒神經細胞有幾影響到 )。
如果個設計者人手噉俾某一啲 input 落去個神經網絡 input 層當中嗰啲神經細胞,噉跟住嗰啲層嘅神經細胞就會受到 input 層嗰啲嘅刺激,並且改變佢哋嘅活躍程度,而最後嗰層嘅神經細胞(output 層)就會負責表示個 output。跟住落嚟,一種可能做法係運用反向傳播算法(back-propagation)訓練個人工神經網絡-個設計者會將個網絡俾嘅 output 同佢想個網絡俾嘅 output 比較,計個誤差值,再用個誤差值嚟計吓應該點樣調較啲神經細胞之間嘅權重。如果一切順利,個網絡就慢慢變到愈嚟愈俾到正確嘅答案。
除咗反向傳播算法之外,廿一世紀初仲有咗所謂嘅遺傳演算法(GA)方法嚟訓練人工神經網絡:用呢種做法嘅設計者運用進化論當中物競天擇原理;根據物競天擇,大自然嘅每一種生物物種嘅內部都有個體差異,而呢啲個體差異令到一個族群嘅個體當中有啲比較擅長生存同繁殖後代,呢啲個體就比較有機會將自己嘅基因傳俾下一代;同一道理,用 GA 整 AI 嘅過程係一開始嗰陣複製一大柞彼此之間相似,但彼此之間(喺權重值等方面)有少少差異嘅神經網絡出嚟,再俾啲神經網絡各自噉做幾次個設計者想佢哋做嗰樣作業,表現最好嗰啲網絡就會俾個設計者複製,生產下一代(似表現好嗰啲網絡)嘅子代網絡,表現唔好嗰啲網絡就會被淘汰-於是乎個設計者手上有嘅神經網絡就會變到愈嚟愈勁。
Info:神經網絡嘅黑盒問題
有好多神經網絡相關領域嘅學者批評神經網絡係「黑盒」(black box)。
人喺用個腦諗完嘢解決完問題之後,曉將自己嘅思考過程口頭報告返出嚟。但一個神經網絡唔會識做呢樣嘢,唔會話到俾研究者聽佢經過啲乜嘢思考過程先能夠達到佢所俾嘅 output。所以有人將神經網絡比喻做一個黑盒-就算佢嘅 output 係準確嘅都好,個研究者都淨係知個神經網絡嘅 input 同 output,冇辦法知道當中嘅思考過程。即係話對於「個神經網絡俾嘅答案點解係啱」呢條問題,目前唯一嘅答覆係「因為一部醒過人類嘅系統俾咗個答案出嚟」,雖然呢點唔損害神經網絡喺實用上預測現象嘅能力,但噉表示神經網絡嘅可解釋度(explainability)低得好交關,令好多學者都覺得難以接受。因為噉,有好多科學家都致力研究點樣先可以拆解一個經歷咗訓練、做緊準確預測嘅神經網絡。
AI 研究其中一個分類法係按「想解啲乜嘢問題」嚟分:原則上,AI 嘅終極目標係要創造出能夠令電腦同第啲機械展示出智能;最大嗰個問題-模擬自然智能-有得分類做一大柞子問題,包括係學習同解難等嘅能力都係先進嘅自然智能嘅必要部件,所以 AI 領域就要將呢啲能力逐個逐個噉創造出嚟。以下係廿一世紀初 AI 領域當中多人關注嘅問題。
AI 其中一個最基本嘅課題係點樣教機械解難(solve problem)。
早期嘅 AI 研究興集中於整一啲演算法嚟模仿人類玩解謎遊戲嗰陣用嘅逐步演繹推理(deductive reasoning),呢啲演算法會涉及一大柞嘅「如果... 就做...」(if... then...
)指令(睇返上面符號 AI);但呢種做法有個問題-因為組合爆發等嘅問題,實際應用上要處理嘅問題好多時都閒閒地有成幾千幾萬個可能性要考慮,冇可能吓吓都靠設計者講明俾部電腦聽要做乜。所以到咗 1980 年代晚期同 1990 年代,AI 研究開始運用嚟自概率論同經濟學等領域嘅概念(睇返上面貝葉斯網絡),並且發展出用嚟應付不確定性嘅方法。事實係,認知科學領域嘅研究顯示咗,人腦好少可會真係用逐步嘅推理嚟解決問題嘅。
舉例說明,數獨呢個解謎遊戲可以用相對簡單、而且具有決定性嘅「如果... 成立,就做...」法則嚟搵到答案,而第啲解謎遊戲都可以用類似嘅演繹推理方法解決。但人類喺日常生活當中解難嗰陣唔會點用呢種推理方式,好似係「要買啲乜嘢禮物氹女朋友」呢個難題噉,會涉及(例如)估吓個女朋友想要乜,呢類問題好難齋靠「如果... 成立,就做...」嘅明文邏輯嚟解決。
機械感知(machine perception)旨在教一部機械由感應器(包括鏡頭、咪高峰同雷達呀噉)嗰度感應外界嘅資訊並且了解佢四圍嘅環境-而唔係吓吓都靠設計員話俾佢聽:生物型嘅智能體-人同第啲動物-冚唪唥都曉自己用眼耳口鼻等嘅感官嚟接收有關佢哋周圍環境嘅資訊同埋處理分析呢啲資訊,所以如果 AI 要做到好似人噉嘅智能,就一定要識做同樣嘅嘢。
好似係電腦視覺(computer vision)噉,就係指教 AI 處理視覺資訊嘅領域,個設計者可以(例如)寫一個會由部電腦嘅鏡頭攞數據嘅程式,而且個程式內置一個之前事先訓練咗,曉(例如)辨認圖入面邊忽係人面乜嘢唔係-跟住佢就會有一個能夠靠部電腦個鏡頭知道自己面前有冇人面嘅程式。除此之外,機械感知呢樣嘢仲可以攞嚟做語音辨識同認人樣。
一個有返咁上下智能嘅智能體一定要識得幫自己設目的並且嘗試達到呢啲目的。要做到呢樣嘢,一個 AI 就要有能力想像未來-用某啲方式(好似係電腦數據)嚟向自己表達周圍環境嘅狀態以及預測自己同第啲智能體嘅行動會點樣改變周圍環境嘅狀態,仲要曉計每種可能狀態對佢自身嘅效益(utility;簡單啲講就係有幾能夠幫到佢達到目的)以及按佢嘅運算結果做決策。
古典嘅自動計劃研究會用一個理想化(唔多現實)嘅模型:將做緊計劃嗰個智能體想像成好似係世上唯一一個做緊計劃嘅系統噉,喺呢種模型入面,個智能體可以完美噉預測佢嘅行動嘅結果。但現實存在嘅智能體係唔會噉嘅,無論人定 AI 都好,佢哋喺計劃嗰陣梗係要受制於身邊其他智能體嘅行動,所以實會有不確定性。噉即係表示,一個曉好似人噉計劃嘅 AI 實要識得處理不確定性以及按自己行動嘅結果評估自己嘅進度。
喺 2000 年代中,電子遊戲業界出現咗好似噉嘅自動計劃演算法,用嚟控制一隻遊戲嘅 NPC:
Start # 初始化 個 AI 內部有若干個目的(goal)同若干個行動(action); Foreach 時間點 計每個目的有幾高 priority; 按現時世界嘅狀態等資訊,搵出可能行動之中邊個最能夠幫手達到目的; 模擬吓個行動係咪真係能夠幫手達到目的; 採取行動。
喺對 AI 嘅研究當中,要點樣應付複雜(complexity)係一個重要嘅課題:
因為組合爆發嘅問題,AI 研究當中有好多都集中於思考點樣喺有限嘅數據同時間之內盡可能令 AI 程式學最多嘅嘢,其中一個方向係思考
「 | 點由所有可能嘅情況當中,揀一小部份最有可能啱用嘅情況出嚟考慮。 | 」 |
自然語言處理(natural language processing,NLP)係指研究教 AI 理解人類語言嘅領域。一個夠勁嘅 NLP 程式會令人類可以就噉用把口講或者用筆寫嚟同機械溝通,唔使用(好多時都唔係咁易用)嘅程式語言,而且仲可以攞嚟由人寫嘅書以及網頁等嘅來源提取有用嘅資訊或者做機械翻譯等嘅作業。
NLP 好常用。拼寫檢查(spell checking)就係一個比較簡單嘅例子,好似 Microsoft Word 同埋 Google 搜尋器都有用到。拼寫檢查會做嘅嘢係檢查吓一段用字母寫嘅字有冇串錯,拼寫檢查嘅一種可能步驟係噉嘅:
2010 年代嘅 NLP 程式好多時會用多種策略,能夠喺頁數或者段數嘅層次嗰度有可接受嘅準確度,但依然缺乏理解文章內容嘅能力,仲未曉將獨立嘅句子分類,而且呢啲程式通常都因為時間成本問題而冇辦法攞嚟喺商業上應用。
強人工智能(strong AI)可以話係 AI 領域嘅終極目標:強 AI 係指
「 | 」 |
廿世紀嘅學界作出咗多次創造強 AI 嘅嘗試,但次次都衰收尾,遠遠噉低估咗呢個作業嘅難度,而到咗廿一世紀,一個典型嘅 AI 專家多數都會集中於解決一至兩個問題,而唔會大想頭到諗住創造出能夠好似人類噉普遍解決問題嘅 AI 程式。有好多 AI 專家都相信,呢啲淨係曉解決一至兩個問題嘅 AI 程式終有一日會俾人砌埋一齊做一個強 AI 。
廿一世紀初嘅 AI 領域有「AI 欠缺常識」嘅問題:同廿一世紀初嘅 AI 比起上嚟,人好擅長喺冇受訓嘅情況之下對物理或者心理現象做判斷,
廿一世紀初嘅 AI 喺常識上嘅缺乏表示咗佢哋成日都會犯一啲人唔會犯嘅錯,而且犯錯嘅方式對人嚟講好匪夷所思,例如 AlphaGo 可以喺圍棋比賽嗰度鍊贏人類嘅圍棋國際冠軍,而 Deepmind 仲喺 2010 年代成功發展出曉玩唔同 Atari 2600 遊戲嘅 AI ,不過呢啲程式答唔到好似「點樣知一杯牛奶滿唔滿」呢啲(對人嚟講)簡單得好交關嘅問題。
機械學習(machine learning)專研究點樣令 AI 程式隨經驗自動改善自己。
最廣義上,學習可以定義為指一個智能體吸收知識、技能同埋行為嘅過程,包括獲取新知識、新技能或者新行為,又可以係改變舊有嘅知識、技能同行為;數學化啲噉睇嘅話,一個智能體可以想像成一個刺激-反應模型(S-R model),最簡單嗰條式如下:
當中
個模型講嘅係「一個智能體嘅反應係佢感知到嘅刺激嘅函數( )」,即係「刺激決定反應」,而學習就可以想像成 呢個函數改變嘅過程-個智能體做咗一次反應,然後 改變,喺下次再感知到個刺激嗰陣反應就可能會唔同咗。機械學習係 AI 嘅一個重要子領域,指教人造智能體學習嘅研究。
喺理想嘅情況下,能夠學習嘅程式會按自己所經歷嘅嘢改變佢內部嘅參數(parameter),等自己下次做嘢嗰陣能夠更加成功。舉個簡單例子:想像而家有架內置 AI 程式嘅自駕車,佢個程式嘅設定係佢會喺同前面架車距離 2 米或者以下嗰陣先耷逼力,呢個「2 米」嘅數值就係個程式內部嘅一個參數;而跟住有一次架自駕車喺離前面架車 3 米嗰陣,前面架車突然間耷逼力,架自駕車差少少撞埋去,一個識學習嘅程式就應該要考慮吓係咪要根據呢個經驗將個參數變做「4 米」或者「5 米」,以求降低日後撞車嘅機會率。佢內部嘅源碼應該會包含類似以下噉嘅內容:
float brake_distance; // 有個變數表示「要喺邊個距離耷逼力」。 if distance_from_front_car <= brake_distance { brake; // 如果離前面架車近得滯,就耷逼力;假設個程式經已有方法知道離前面架車有幾近。 } ... // 而跟住要有某啲演算法界定乜嘢為止「差少少撞車」,而 if「差少少撞車」呢個情況發生,噉個 brake_distance 嘅數值要永久提升,同埋提升幾多等等。
機械學習有得分做監督式學習(supervised)同非監督式學習(unsupervised)兩大種:前者指個設計者會特登俾一啲數據個程式睇,同埋明文噉話俾佢知乜嘢為止啱嘅答案乜嘢為止錯嘅答案;而後者指個設計者唔會噉樣做,例如係教 AI 程式將啲嘢分類噉,用監督式學習定非監督式學習都有可能做得到:用監督式學習嘅話,個設計員一般會先攞一大柞樣本返嚟,並且逐個逐個樣本將個樣本嘅類別列明,再俾個程式睇啲數據同教佢要睇邊啲部份嚟分,順利嘅話,個程式會慢慢變到識得將未來撞到嘅樣本分類;而用非監督式學習嘅例子就有聚類分析等。
奥坎剃刀(Occam's razor)係機械學習上嘅一個重要概念。奥坎剃刀意思係「假設第啲因素不變,一個學習者會偏好比較簡單啲嘅理論同假說,除非比較複雜啲嗰個模型(例如)解釋同預測現實嘅能力勁好多」。當一個 AI(通常因為設計得唔好)喺學習嗰陣為咗要令自己心目中嗰個「描述世界點運作」嘅數學模型完美符合過去數據,而選擇一個太複雜嘅模型,個 AI 就有過適(overfitting)嘅問題:雖然話過度複雜嘅模型解釋過去數據嘅能力比較勁,但統計學上嘅研究表明,呢啲模型解釋將來數據嘅能力通常會渣啲。為咗防止過適,設計 AI 嘅人好多時都會想鼓勵個程式學一啲能夠充分解釋數據得嚟又唔係太複雜嘅模型。
例如想像下圖:
家陣有一個智能體,佢要學習兩個變數(圖中嘅 X 軸同 Y 軸)之間成乜嘢關係,等自己將來能夠由 X 嘅數值預測 Y 嘅數值;佢要做嘅係,嘗試搵一條有返咁上下合乎過去數據(每個黑點係一個個案)嘅線,用條線做佢心目「兩個變數之間成乜嘢關係」嘅模型;藍色嗰條線有過適嘅問題-藍色線完美噉符合過去嘅數據,但藍色線條式會複雜過直線嘅好多,而實證研究顯示,通常呢啲咁複雜嘅線解釋將來數據嘅能力(以「將來用條線做預測嗰陣嘅誤差」衡量)會比較渣。
「建立能夠用嚟做預測嘅數學模型」呢一點喺 AI 設計上相當重要:比較複雜嘅智能體會具有「描述世界嘅內部模型」(internal model of the world),意思係個智能體對「世界係點運作」嘅理解,可以想像成一大柞 數值,而呢點對於個智能體做決策嚟講不可或缺-例:個智能體憑過往數據估計出條線,可以用變數 X 嘅數值預測變數 Y 嘅數值,而呢個模型能夠幫個智能體做「如果我採取咗行動 令變數 X 嘅值變成噉噉噉,環境變數 Y 會變成 嘅機會率會最大化,而我嘅目的係想要環境變數 Y 變成 ,所以我要作出 呢個行動」等嘅判斷。
除此,一個學習緊嘅智能體仲可以有「學錯嘢」嘅問題。舉個例說明,假想而家有個設計者想訓練一個 AI 程式學識分辨馬同貓嘅圖片,佢搵一大柞啡色嘅馬同黑貓嘅圖片返嚟,再入落去個程式嗰度訓練個程式;喺呢個情況之下,個程式可能會學錯嘢,諗住啡色嘅物體就係「馬」,黑色嘅物體就係「貓」。「要點樣防止 AI 學錯嘢」喺圖形辨識(pattern recognition)-專門研究點樣教機器分辨圖像嘅 AI 子領域-上係一個相當受關注嘅課題。
知識表示(knowledge representation)係古典 AI 研究上重要嘅一環,研究點樣教一個 AI 程式組織手上嘅知識,並且用呢啲知識解決一啲複雜嘅作業。舉個例說明,家吓有個設計者想寫個 AI 程式嚟幫手做地理學助教,佢想個程式曉解答一啲簡單嘅地理問題,想個程式了解北美洲喺 2020 年有邊幾多個國家,於是佢喺寫個程式嗰陣,可以用以下呢段碼:
NorthAmericanCountries = ("The United States", "Canada", "Mexico")
呢段源碼教個程式話「北美洲國家」呢個類別包括咗「美國」、「加拿大」同「墨西哥」三個內容。當有個學生問個程式「北美洲喺 2020 年有邊幾個國家」嗰陣,個 AI 程式會耖嗮佢手上有嘅資訊,搵出「北美洲國家」呢個類別包含嘅內容,再將嗰三個名俾出嚟做 output。同一道理,呢種做法可以用嚟教任何 AI 程式將啲嘢-例如係將動物或者語言-分類。除咗呢種分類性嘅手法,知識表示研究仲有好多方法教 AI 程式組織自己手頭上嘅知識。
上述呢個等級式嘅知識組織方法有唔少局限:
Info:內隱知識
「要點樣令 AI 展示內隱知識(tacit knowledge)」係另一個受注目嘅課題。
內隠知識係指嗰啲難以言喻嘅知識,好似係一個象棋大師可能會直覺噉覺得某一步「太危險」所以唔行,但如果問返佢,佢唔會講得出點解佢覺得嗰步太危險-認知心理學嘅研究顯示,人有能力用直覺做判斷(第一型過程),喺呢啲情況之下,做判斷嘅人唔識用言語形容佢嘅思考過程,但實驗結果係,好多時用直覺做判斷估中嘅機會率大過純粹隨機斷估。噉即係話喺人用直覺做判斷嘅過程當中個腦實係處理咗啲用言語形容唔到嘅知識-呢啲知識就係所謂嘅內隱知識。
內隱知識對人嘅日常生活好緊要,因為人冇可能吓吓做決定(例如決定行路嗰陣邊隻腳踩出去先)都要有意識噉諗過度過先做。所以要做出好似人噉嘅 AI,噉就實要能夠令 AI 具有好似內隱知識噉嘅行為。
AI 對於任何嘅智能作業嚟講都好有用。比較廣為人知嘅 AI 應用例子包括咗識揸自己嘅交通工具(包括咗車同埋無人飛機呀噉)、醫療診斷、數學定理證明、藝術創作、玩遊戲、搜尋器、認相入面嘅影像以及係網上廣告... 等等。
電子遊戲 AI 係指電子遊戲用嘅 AI:電子遊戲係能夠同玩家互動、以娛樂玩家為目的嘅電腦程式;而電子遊戲入面好多時會涉及由電腦控制,同玩家進行對局嘅角色(NPC),遊戲開發者為咗想玩家得到樂趣,通常會想呢啲由電腦控制嘅角色有返咁上下聰明,能夠為玩家提供一定嘅挑戰(睇埋心流體驗);噉即係話佢哋會想 NPC 展現一定程度嘅智能,而「教電腦程式做出類似有智能噉嘅行為」正正就係 AI 呢個領域嘅重心。
舉個簡單例子,《食鬼》入面嘅敵人由電腦控制,一個教電腦控制啲敵人嘅可能演算法如下:
Pac-Man.pos clyde_target = random_tiles // 將 clyde_target 設做隨機一格 while game == in_play: // 當隻遊戲進行嘅每一個時間點, case player of: Blinky: move 1 tile toward Pac-Man.pos // 第一隻鬼要向主角位置(Pac-Man.pos)行一步。 Inky: move 1 tile toward (Pac-Man.pos + 4) // 第二隻鬼要向主角位置前四格行一步。 Clyde: if Clyde.pos == clyde_target: // Clyde 呢隻鬼要向佢嘅目標位置前進,如果到咗目標位置,揀個新嘅目標位置。 clyde_target = (clyde_target + 1) % 10 else: move 1 tile toward clyde_target
上述嘅碼會令啲敵人曉追趕主角-有少少似有智能嘅噉。
早期-廿世紀中-嘅電子遊戲經已有喺度用相對簡單嘅 AI,而廿一世紀初及後,電子遊戲 AI 仲成為咗遊戲製作上嘅一個大課題。遊戲製作專家會研究「用乜嘢演算法整一隻遊戲嘅 AI 先最可以令玩家過癮」,而且 AI 仲有俾人運用嚟做控制 NPC 以外嘅工作,例如係做遊戲測試(喺隻遊戲出街前測試隻遊戲玩起上嚟點)同遊戲分析(對玩家嘅行為作出分析)等都有用到 AI 相關嘅技術。
... 等等。
AI 早喺 19 世紀初經已喺 sci-fi 或者類似體裁嘅創作當中出現:由英國作家瑪莉雪萊(Mary Shelley)寫嘅經典 sci-fi 小說《科學怪人》講及一個人類科學家創造咗一隻有血有肉、有智能嘅生命體(喺廣義上算係 AI),而呢隻生命體仲有自己嘅意志,仇視佢嘅創造者同埋對佢嘅創造者造成威脅,可以算係早期用咗 AI 橋段嘅 sci-fi 作品。
... 等等。
AI 哲學(philosophy of AI)係對 AI 嘅哲學探討:AI 同哲學-尤其係心靈哲學-相當有關,因為兩個領域都關注智能、心靈、意識以至自由意志等嘅概念。再加上 AI 嘅技術理論上可以引致人造心靈嘅出現,而噉做會引起唔少道德上嘅問題,所以道德哲學等嘅領域都對 AI 嘅相關討論有興趣。
AI 哲學上嘅思考會試圖回答以下嘅問題:
... 等等。
Info:圖靈測試
圖靈測試(Turing test,簡稱 TT)係 AI 哲學上一個出名嘅議題。圖靈測試係由英格蘭數學家亞倫圖靈(Alan Turing)喺 1950 年諗出嚟嘅一個測試,用嚟檢驗一部機械係咪展現到好似人噉嘅有智能行為。最基本嗰種圖靈測試步驟如下:
- 一次測試會有一個人類負責做評判(下圖嘅 C),
- 跟住又有一個人類(下圖嘅 B)同部受試嘅機械(下圖嘅 A),兩者分別噉同個評判講嘢;
- 個評判唔會見得到個人類同個受試者,淨係有得用鍵盤同熒幕等嘅方法同受試者傾偈,
- 最後個評判就要答,兩個受試者當中邊個係人邊個係機械
-而如果搵咗一班評判返嚟之後,發現班評判嘅判斷嘅準確性唔明顯好過隨機靠撞(答中率等如 50%)嘅話,嗰部受試機械就算得上係通過咗圖靈測試,展現出同人類無異嘅智能。
圖靈測試喺 AI 哲學上引起咗廣泛討論。例如有學者批評圖靈測試指出,嚴格嚟講,就算一部機械通過咗圖靈測試,都只係表示佢曉喺一個人工環境下做某啲工作,但有智能嘅行為要求嘅係能夠喺自然環境下生存,所以圖靈測試喺測試機械智能上嘅功用有限。因為噉,有學者諗出咗新版嘅圖靈測試,好似係所謂嘅真正完整圖靈測試(Truly Total Turing Test,TRTTT)噉,就認為一部機械要算得上展現人類智能,佢就需要能夠喺自然環境下達成人類能夠達成嘅重大成就,包括係-好似人類噉樣-創作出藝術品、音樂、遊戲以及語言等嘅文化產物。
維基辭典嘅字詞解釋 | |
維基同享嘅媒體 | |
維基新聞嘅新聞故事 | |
維基語錄嘅名言 | |
維基文庫嘅原始文獻 | |
維基書本嘅教科書 | |
維基學府嘅學習資源 |
This article uses material from the Wikipedia 粵語 article 人工智能, which is released under the Creative Commons Attribution-ShareAlike 3.0 license ("CC BY-SA 3.0"); additional terms may apply (view authors). 呢度嘅所有文字係根據 CC BY-SA 4.0 牌照嘅條款發佈;可能會有附加嘅條款。 Images, videos and audio are available under their respective licenses.
®Wikipedia is a registered trademark of the Wiki Foundation, Inc. Wiki 粵語 (DUHOCTRUNGQUOC.VN) is an independent company and has no affiliation with Wiki Foundation.