560 likes | 2.11k Views
計算機概論 第二版. Foundations of Computer Science Chapter 18 人工智慧. 18.1 簡介. 何謂人工智慧? 人工智慧的簡短歷史
E N D
計算機概論 第二版 Foundations of Computer Science Chapter 18 人工智慧
18.1 簡介 何謂人工智慧? 人工智慧的簡短歷史 • 人工智慧可說是起始於 2400 年前,當時希臘哲學家亞里斯多德(Aristotle)發明了邏輯推理的概念。後繼的萊布尼茲(Leibniz)和牛頓(Newton)完成了邏輯的語言。喬治布爾(George Boole)在十九世紀發展布林代數,奠定了電腦電路的基礎。但是,思考機器的主要想法是來自亞蘭圖靈(Alan Turing)所提出的圖靈測試。「人工智慧」一詞是由約翰麥卡錫(John McCarthy)於 1956 年首創。 人工智慧是程式化系統的研究,就某種程度而言,其能模擬人類的活動,例如理解、思考、學習與動作。 p.422
圖靈測試 • 圖靈測試(Turing Test),提供了一個機器智慧的定義,這簡單的測試是比較一個人與一台機器的思考行為。一位詢問者同時向一台電腦與一個人提問一組問題。詢問者接收兩組回答,在仔細檢查這兩組回答之後,如果詢問者無法明確地分辨哪一組答案是來自電腦的回答,而哪一組是來自人,則此電腦的思考行為通過了圖靈測試。 p.422
智能代理人 • 智能代理人(intelligent agent)是一個能理解其周遭環境,並從中學習且能聰明地與之互動的系統。智能代理人可區分為兩個主要的分類:軟體代理人和實際代理人。 1.軟體代理人(software agent)是一組被設計用來執行特殊工作的程式。例如,有一些智能系統可用來整理電子郵件。另一種個軟體代理人是搜尋引擎,用來搜尋全球資訊網並找到可以提供有關要求主題資訊的網站。 2.實際代理人〔physical agent;機器人(robot)〕是一個可用來執行各式各樣工作的程式規劃系統。簡單的機器人可用在製造業的日常例行工作,例如組裝、焊接或塗漆。有些機構使用行動機器人來做例行的投遞工作,例如分送信件或不同房間的通信往返。有些行動機器人用來在水底探勘石油。 p.422
程式語言 有兩個語言是特別為 AI 所設計:LISP 和 PROLOG。 • LISP(LISt Programming) 由約翰麥卡錫於 1958 年所發明,是一種用來處理串列的程式語言。LISP 將資料和程式視為串列,這意味著 LISP 程式可以改變其本身。這項特色符合智能代理人的想法,從其周遭環境學習並改善其行為。LISP 的一項缺點是緩慢。如果要處理的串列太長,則處理速度緩慢。另一項缺點是其語法的複雜性。 • PROLOG(PROgramming in LOGic)是一個可以建立事實資料庫和規則知識庫的語言。一個 PROLOG 所寫的程式可用邏輯推理來回答問題,其答案從知識庫推論而得。然而,PROLOG 並不是一個非常有效率的程式語言。 p.423
18.2 知識表徵 • 智能代理人需要能以某種方式來表達知識,事實被表達成資料結構以便於讓儲存在電腦中的程式能夠加以處理。四種常用來表達知識的方法是:語意網路、框架、述詞邏輯和規則庫系統。 語意網路 • 語意網路(semantic network)是由理查李辰斯(Richard H. Richens)於 1960 年代初期所發展,語意網路使用有向圖形來表達知識。有向圖形是由頂點(節點)和邊(弧線)所組成,語意網路使用頂點代表概念,而邊(以箭頭表示)代表兩個概念之間的關係。 p.423
圖 18.1一個簡單的語意網路 p.424
概念 • 概念可視為是一個集合或子集合。例如,動物定義了所有動物的集合。一個物件是一個集合的成員(實例),概念是用頂點來顯示。 關係 • 在語意網路中,關係是用邊來顯示。邊可以定義一個子類別的關係──邊是從子類別指向它的父類別。邊也可以定義一個實例(instance)的關係──邊是從實例指向它所屬的集合。邊還可以定義一個物件的屬性(attribute)(顏色、大小等)。邊亦可定義物件的性質。語意網路中可以適當加以定義的最重要的關係之一就是繼承(inheritance)。繼承關係定義了一件事實,就是一個類別的所有屬性會在繼承的類別中出現。 p.424
框架 • 框架(frame)是用資料結構(記錄)來表示相同的知識。框架優於語意網路的一點是程式能處理框架比處理語意網路更為容易。 圖 18.2表示圖 18.1 中語意網路的一組框架 p.424
物件 • 語意網路中的節點變成一組框架中的物件,所以一個物件可以定義一個類別、一個子類別或類別的一個實例。 位置 • 語意網路中的邊被轉換成位置(slot)──資料結構中的欄位。位置的名稱定義了關係的類型而位置的值完成了此關係,例如圖 18.2 中的動物是爬蟲動物物件中的一個位置。 p.425
述詞邏輯 • 最常用的知識表徵是述詞邏輯(predicate logic),可用來表示複雜的事實,它是一個定義完善的語言。先介紹一個較簡單的語言命題邏輯(propositional logic)。 命題邏輯 • 命題邏輯是一種由句子所組成集合的語言,使用五種運算子,如下所示: • 每個句子的邏輯值(真與假)決定於組成複雜句子之單元句(atomic sentence)的邏輯值。 ¬ ∨ ∧ → ↔ (否) (或) (且) (若⋯則) (若且唯若) p.425
圖 18.3命題邏輯中五個運算子之真值表 p.426
句子 • 在這語言中的句子是遞迴定義,如下所示: 1. 大寫字母如A、B、S 或T 代表自然語言中的敘述,亦即句 子。 2. 兩個常數值(真與假)其中任一視為是一個句子。 3. 若P 是一個句子,則¬P 是一個句子。 4. 若P 與Q 都是句子,則P ∨ Q、P ∧ Q、P → Q 和 P ↔ Q 都是句子。 p.426
推論 • 從存在的事實裡產生出新的事實。在命題邏輯中,這個過程稱為推論(deduction)。給予兩個可能是真實的句子,可以推論出一個新的真實句子。前兩個句子稱為前提(premiss);推論得到的句子稱為結論(conclusion)。這整個過程稱為論證(argument)。 • 一個有效推論的論證其結論必須遵守其前提。換言之,在一個有效推論的論證中,當所有前提皆為真時而結論是假的,這是不可能的。證明方法之一就是產生一個具有全部前提及結論的真值表。如果可以發現一個反證(counterexample)的情況,則結論是無效的。 如果無法找到反證,則是一個有效的論證。 p.426
述詞邏輯 • 在命題邏輯中,一個符號代表一個單元句,它無法再被分解而從其成分中找到資訊。 • 述詞邏輯:一種定義命題邏輯中各個部分間之關係的邏輯。在述詞邏輯中一個句子可以區分成一個述詞和多個論證。 p.427
述詞邏輯中句子的定義如下: 1. 一個具有 n 個論證的述詞是一個句子,例如述詞名稱(論證 1, ⋯⋯,論證 n)。述詞名稱說明論證彼此之間的關係。每一個論證 可能是: a. 一個常數,例如人、動物、約翰、瑪麗。 b. 一個變數,例如 x、y 和 z。 c. 一個函式,例如母親(安妮)。注意,函式是可當成論證 的述詞;函式會傳回一個可以取代一個論證的物件。 2. 兩個常數值(真與假)其中任一視為是一個句子。 3. 若 P 是一個句子,則 ¬P 是一個句子。 4. 若 P 與 Q 都是句子,則 P ∨ Q、P ∧ Q、P → Q 和 P ↔ Q 都是 句子。 p.427
量詞 • 述詞邏輯可以使用量詞(quantifier)。在述詞邏輯中兩個常見的量詞為: 和 。 1. 讀為「所有的」,稱為普遍量詞(universal quantifier);表示其變數所代表的每一個物件都具有某件事為真。 2. 讀為「存在」,稱為存在量詞(existential quantifier);表示其變數所代表的一個或多個物件都具有某件事為真。 A E A E p.427
推論 • 在述詞邏輯中,如果沒有量詞,則論證的證明就如同在命題邏輯中所討論一樣。如果有量詞,則證明變得更加複雜。 • 此論證寫為: • 得到下列論證: 所有男人都會死 前提1: 蘇格拉底是男人 前提2: 所以,蘇格拉底會死 結論 x [男人(x) →會死(x)],男人( 蘇格拉底) |− 會死(蘇格拉底) A 男人(蘇格拉底) → 會死(蘇格拉底),男人(蘇格拉底) |− 會死(蘇格拉底) p.428
規則庫系統 • 規則庫系統(rule-based system)代表使用一組規則從已知的事實來推論新事實的知識。規則庫是一組「若⋯則⋯」敘述的形式 其中A 稱為前提(antecedent)而 B 稱為結果(consequent)。注意,在規則庫系統,每一個規則是獨立處理,並沒有跟其他規則有任何連結。 若A 則B 或 A → B p.428
組成元件 • 一個規則庫系統是由三個組成元件所構成:直譯器(interpreter)〔或推理引擎(inference engine)〕,一個知識庫(knowledge base)和一個事實資料庫(fact database)。 圖 18.4規則庫系統的組成元件 p.429
知識庫 • 規則庫系統中的知識庫組成元件是一個規則的資料庫(倉庫)。它包含了一組事先建立好的規則,可用來從給予的事實中得到結論。 事實資料庫 • 事實資料庫包含了一組給知識庫中的規則所使用之條件。 直譯器 • 直譯器(推理引擎)是一個處理器或控制器(例如一個程式)結合了規則與事實。直譯器有兩種類型:前向推理(forward chaining)與後向推理(backward chaining)。 p.429
前向推理 • 前向推理是直譯器使用一組規則和一組事實來執行一個動作的過程。動作可以是增加一件新事實到事實資料庫中、發出一些命令,例如啟動另一個程式或機器。直譯器解譯並執行規則直到不再有規則可以加以解譯。 • 如果有兩個不同規則可以應用到一件事實的衝突,或一個規則可以應用到兩件事實,則系統必須呼叫衝突解決程序來解決問題。這樣保證只有一個輸出會增加到事實資料庫中,或只會採取一個動作。 p.429
後向推理 • 如果系統試著要證明一個結論,前向推理不是很有效率。因為必須檢查所有事實以找到所給予的結論。在這種情形,使用後向推理可能會更有效率。 • 此程序從結論(目標)開始著手。如果目標已經在事實資料庫中,則程序停止且結論得到證明。如果目標不在事實資料庫中,系統找尋目標在其結論中的規則。不過,現在後向推理是將每個事實應用到規則中(遞迴)來取代應用該規則。如果在該規則中所有的事實可在事實資料庫中找到,則原來的目標就得以證明。 p.429
圖 18.5前向推理之流程圖 p.430
圖 18.6後向推理之流程圖 p.430
18.3 專家系統 • 專家系統(expert system)使用知識表徵語言來執行通常需要人類專家的工作。 萃取知識 • 從一個專家萃取其知識通常是一件困難的工作。原因如下: 1. 專家所擁有的知識通常是啟發式的:它是基於機率而不是 確定性。 2. 專家發現要將他們的知識表達成可以儲存在知識庫中萃取 過的規則,這通常是困難的時刻。 3. 知識獲取只能藉由親自與專家會談,這可能是一件麻煩且 無聊的工作。 • 知識萃取過程通常是由知識工程師來建立,他有專門的技術知道如何做會談以及如何解譯答案來用於建立知識庫。 p.431
萃取事實 • 對一個知識表徵語言要能夠推理新事實或執行動作,除了知識庫之外還需要有事實資料庫。 架構 • 一個專家系統有多達七個組成元件:使用者、使用者介面、推理引擎、知識庫、事實資料庫、解釋系統和知識庫編輯器。 • 推理引擎是專家系統的心臟:它聯繫知識庫、事實資料庫和使用者介面。專家系統七個組成元件中的四個:使用者介面、推理引擎、解釋系統和知識庫編輯器,可以建立一次後使用於許多應用中。 p.431
圖 18.7專家系統的架構 p.432
使用者 • 使用者是一個使用此系統以獲得所提供之專門技術的實體。 使用者介面 • 使用者介面可讓使用者與系統交談,接受來自使用者的自然語言並解譯給系統,也提供一個友善的選單系統。 推理引擎 • 推理引擎是系統的心臟,它使用知識庫和事實資料庫來推理所要採取的動作。 知識庫 • 知識庫是一堆的知識,是基於與專門技術相關領域的專家會談結果。 p.432
事實資料庫 • 專家系統中的事實資料庫是案例式的。對每一個案例,使用者輸入有效的或量測的資料到事實資料庫中,以便讓推理引擎使用於該特別案例。 解釋系統 • 解釋系統是用來解釋推理引擎所得結論背後的原理。 知識編輯器 • 知識編輯器可能沒有包含於所有的系統中,它是用來更新知識庫。 p.432
18.4 知覺 • 人工智慧的目標之一就是要產生一個行為像專家的機器,另一個目標是要產生一個行為像正常人的機器。「知覺」就是瞭解透過五官接收到──視覺、聽覺、觸覺、嗅覺、味覺。 • AI 已經包含兩種知覺:視覺和聽覺。 圖像處理 • 圖像處理(image processing)或電腦視覺(computer vision)是 AI 的領域之一,其處理物體的知覺是透過代理人的人工眼睛,例如照相機。圖像處理器從外界取得二維圖像並且嘗試產生一個呈現在場景中的三維物體之描述。輸入呈現在圖像的過程是一張或多張場景的圖像,而輸出是場景中物體的描述。AI 的概念是如何解釋圖像並萃取物體的特性。 p.433
圖 18.8圖像處理器之組成元件 p.433
邊緣檢查 • 圖像處理的第一階段是邊緣檢查(edge detection):找出圖像中的邊緣在哪裡。邊緣可以定義圖像中物體與其背景的邊界,邊緣顯示在表面、深度或亮度的不連續性。 圖 18.9邊緣檢查程序 p.433
分割 • 分割(segmentation)是圖像分析的下一階段。分割是將圖像區分為同質性的部分或區域。通常同質性區域是指像素強度變化平緩的區域。在分割之後,物體被區分成不同的區域。 找尋深度 • 下一個步驟是找尋物體在圖像中的深度。找尋物體可幫助智能代理人測量物體距離它有多遠。 找尋方向 • 場景中物體的方向可以利用兩種技術: 陰影(shading) 與紋理(texture)。 p.434
物體辨識 • 圖像處理最後步驟是物體辨識。要辨識一個物體,代理人需要有一個此物體的模型在記憶體中作為比較。 • 一個解決方法是假設要辨識的物體是由一組簡單幾何形狀所組成的複合物體。這些基本形狀可以產生並儲存於代理人的記憶體中,然後,需要代理人辨識的的物體類型,可以從這些物體的組合產生與儲存。 p.434
圖 18.10基本幾何形狀 p.434
語言理解 • 一部機器能夠理解自然語言的查詢並轉換成正式的查詢是很有用的。一部機器能理解自然語言的工作區分成四個連續步驟:語音識別、語法分析、語意分析與實用分析。 語音識別 • 自然語言處理的第一步驟是語音識別(speech recognition)。此步驟中,語音訊號被分析並且將它所包含字的順序萃取出來。語音識別子系統的輸入是連續(類比)訊號;輸出是依序列的字。訊號需要區分成不同的聲音,有時稱為音素(phoneme),這些聲音需要被組合成字。 p.435
語法分析 • 語法分析(syntactic analysis)步驟是用來定義字如何組成句子。 文法 • 要正確分析一個句子的首要工具是一個定義完善文法。定義一個語言的文法有數種方法,其中之一為 BNF(Backus-Naur Form)。 語法分析程式 • 機器要決定一個句子是否文法正確,在排除無效的一個句子之前並不需要檢查所有選項。這是由語法分析程式(parser)來完成。語法分析程式產生一個基於文法規則的分析樹來決定句子的有效性。 p.436
語意分析 • 語意分析(semantic analysis)在完成語法分析之後萃取句子的意義。此分析產生句子中所包含的物體之表徵,它們的關係和屬性。 實用分析 • 前三個步驟產生了口說句子的知識表徵。在大部分案例中,另一個步驟,實用分析(pragmatic analysis)需要更進一步清楚句子的目的以及去除模糊性。 p.436