460 likes | 638 Views
第七章 一階邏輯. 7.1 語意和語法 7.2 推廣與符號變形 7.3 使用一階邏輯 7.4 Wumpus 世界的邏輯代理人 7.5 簡單反射代理人 7.6 表達世界的改變 7.7 推論世界的隱藏性質 7.8 動作之中的偏好 7.9 朝向目標基礎代理人. 7.1 語意和語法. 在命題邏輯每一個表示式是一個命題代表一個論據。一階邏輯有命題,但它也有代表物件的項目。常數符號、變數和函數符號被用來建構「項目」,量詞和述詞符號用來建構命題。圖7.1所示是一階邏輯的使用 Backus-Naur 形式的完整文法。. 常數符號: A、B、C、 約翰 ….
E N D
第七章 一階邏輯 7.1 語意和語法 7.2 推廣與符號變形 7.3 使用一階邏輯 7.4 Wumpus世界的邏輯代理人 7.5 簡單反射代理人 7.6 表達世界的改變 7.7 推論世界的隱藏性質 7.8 動作之中的偏好 7.9 朝向目標基礎代理人
7.1 語意和語法 在命題邏輯每一個表示式是一個命題代表一個論據。一階邏輯有命題,但它也有代表物件的項目。常數符號、變數和函數符號被用來建構「項目」,量詞和述詞符號用來建構命題。圖7.1所示是一階邏輯的使用Backus-Naur形式的完整文法。
常數符號:A、B、C、約翰… 一個解釋必須指定每一個常數符號是參考到這個世界上的哪一個物件。每一個常數符號只命名一個物件,但並非每一個物件都需要名字。
述詞符號:Round, Brother 一個解釋指定了一個述詞符號參考到在這個模式中的特殊關係。例如,「兄弟」這個符號將表示兄弟關係。「兄弟」是一個二元述詞符號,所根據的兄弟關係保持(或沒有保持)在這一對物件之間的關係。在任何給定的模式,這個關係是由滿足這個關係的物件的tuple所定義。
函數符號:Cosine, FaterOf, LeftOf… 某些關係是函數化的──也就是說,任何給定的物件藉由這個關係只和唯一個其它的物件有關。例如任何一個角度只有它唯一的一個餘弦值,任何一個人只有一個人是他或她的父親。在這種情形下,定義函數符號(例如Cosine)來指定角度和數值之間的適當關係是比較方便的。
項目 項目是一個參考到物件的邏輯表示式。因此常數符號是項目。某些時候,使用一個表示式參考物件是比較方便的。例如,在英文中我們會用「約翰國王的左腿」這樣的表示式代替給他左腿一個名字。這個函數符號正是我們使用LeftLegOf(John)代替使用常數符號。
單元命題 現在我們有了參考到物件的項目,以及參考到關係的述詞符號,我們可以將它們放在一起而產生狀態論證的單元命題。一個單元命題是由一個述詞符號接著一個刮號刮起來的項目的序列所形成。
例如:根據我們前面的解釋 Brother(Richard,John) 陳述了Richard the Lionheart是King John的兄弟。單元命題的參數可以是複雜的項目: Marrried(FatherOf(Richard),MotherOf(John)) 陳述了Richard the Lionheart的父親娶了約翰國王的母親(同樣的,這是在一種適當的解釋之下)。一個單元命題為真,如果由這個述詞符號所參考到的關係在其參數所參考到的晤見之間成立。
複和命題 我們可以使用邏輯連接元建構複和命題,如同命題邏輯。一個由邏輯連接元所形成的命題與命題邏輯的情形相同。例如: Brother(Richard,John) Brother(John,Richard)為真,當John是Richard的兄弟,同時Richard也是John的兄弟。Older(John,30)Younger(John,30)為真,當John比30歲老或是John比30歲年輕。 Older(John,30)Younger(John,30)陳述了如果John 的年紀大於30歲則他不會比30歲年輕。 Brother(Robin,John)為真,當Ribin不是John的兄弟。
量詞 想要用物件的性質表達整個物件的集合而不用名字去一一例舉每一個物件是很自然的事。量詞讓我們可以做到這件事情。一階邏輯包含了兩個標準的量詞,稱為「整體性」和「存在性」。
整體性量詞() 為了表達這個特殊的規則,我們使用了一元述詞Cat和Mammal;因此,「Spot是一隻貓」表示成Cat(Spot),同時「Spot是一個哺乳動物」表示成Mammal(Spot)。用英文,我們想要表達的是對於任何的物件x,如果x是貓則x是哺乳動物。一階邏輯以如下的方式定義這一件事: x Cat(x)Mammal(x)
通常唸成「對所有的…」。起記得「A」的倒轉的這個符號代表「所有的」(all)。你可以將一個命題x P,其中P是任何的邏輯表示式,看成和將所有的對於變數x用只要出現在P的物件名字取代的命題的連結(也就是)是等價的。
存在性量詞() 整體性量詞是關於每一個物件的敘述。同樣的,我們可以藉由存在性量詞對這個宇宙中的某一些物件做描述而不需要指定它們的名字。例如,要說「Spot有一個姊妹是貓」,我們寫成 x Sister(x,Spot) Cat(x) 讀做「存在有…」。一般而言,x P為真,如果P對於這個宇宙中的某些物件是為真的。因此,其可以被看成和將所有的對於變數x用只要出現在P的物件名字取代的命題的分離(也就是)是等價的。
巢狀量詞 我們通常會想要使用多重的量詞來表達更複雜的命題。最簡單的例子是其中的量詞的型態是相同的。例如,「對於所有的x和所有的y,如果x是y的父母,則y是x的小孩」可以寫成 x,yParent(x,y)Child(y,x) 量詞的順序是非常重要的。如果我們使用刮號,這將會變得比較清楚。一般而言,x (y P(x,y)),其中P(x,y)是包含x和y的任意命題,說明了在這個宇宙中的每一個物件具有某種特殊的性質。
和 之間的關連 這兩個量詞經由否定事實上有著很密切的關係。當有人說每一個人都不喜歡防風草,他也可以說成不存喜歡防風草的人;反之亦然 xLikes(x,Parsnips) 等價於 x Likes(x,Parsnips)
等式 一階邏輯包含不只一種建構單元命題的方式,除了使用前面所提到的量詞和項目的方法。我們可以使用等號造出兩個項目是參考到同樣物件這樣的描述。例如, Father(John) = Henry 指出由Father(John) 所參考到的物件和由 Henry所參考到的物件是相同的。 等式可以被視為一個具有述詞意義的述詞符號,也就是,其參考到的是相等的關係。
7.2推廣與符號變形 本節,我們要看三種不同形式的一階邏輯。首先,我們要看的是一種推廣,稱之為高階邏輯。第二個,我們考慮某些縮寫,它沒有增加一階邏輯任何的能力,但是會讓所造出的句子更簡潔。第三,我們要看我們一階邏輯的符號變形。
高階邏輯 一階邏輯名字的由來是因為我們可以量化物件。(一階的實體是真正存在這個世界的)但是並沒有量化物件之間的關係或函數。高階邏輯允許我們量化關係和函數以及物件。例如,在高階邏輯我們可以說兩個物件是相等的若且唯若所有應用在它們上面的性質都是相同的: x, y (x=y) (PP(x) P(y)) 或者我們可以說兩個函數是相同的若且唯若這兩個函數對於所有的參數都有相同的值: f, g (x=y) (xf(x) g(y))。
使用的函數和述詞表示式 能夠從較簡單的元素建構複和述詞和函數通常是有用的,如同我們可以從簡單的元素建構複和的命題(如PQ),或者從簡單的產生複和項目(如x2 + y3)。 (希臘字母lambda)運算一般就是用在這樣的目的。一個計算其第一個參數的平方和第二個參數的平方的差的函數可以被寫成 x, y x2 - y2
唯一性量詞 ! 我們已經看過了如何使用說明某些物件存在,但是卻沒有一個簡明的方式說明滿足某一個述詞存在性的唯一的物件。某些作者使用這樣的符號 ! x King(x) 表示「存在唯一的物件滿足King(x)」或者更通俗的,「只有唯一的一個國王」。你可以將!看成沒有增加任何新的符號,而可以看成是下面這一個複雜的命題的方便的簡寫 x King(x) y King(y) x = y.
唯一性運算元 使用!描述唯一性是方便的,但是有時候使用一個項目直接來描述這個唯一的物件是更方便的。符號xP(x)通常就是被用在這樣的目的(是希臘符號iota)。要說「Freedonia唯一的統治者已死」或者同樣的「Freedonia的統治者r已死」我們寫成: Dead(rRuler(r, Freedonia)) 這只是如下的命題的簡寫: ! rRuler(r, Freedonia) Dead(r)
符號的變形 在AI以及其他使用邏輯領域,包括數學、計算機科學和哲學。這裡是它們的一些變形。
7.3使用一階邏輯 在知識表示中,定義域是我們所要表達的知識的部分世界。本章我們從一些簡單的定義域開始,使用一階邏輯表達家屬關係以及數學集合。之後我們會討論在wumpus世界的代理人所需要的知識。
家屬關係定義域 我們第一個考慮的例子是家屬關係的定義域。這個定義域包含像「Elizabeth是 Charles的母親」「Charles是William的父親」這樣的論據,以及像「如果x是y的母親且y是z的父母,則x是z的祖母」這樣的規則。
公理、定義和定理 數學家用公理做為定義域的基本論據的描述,而這些基本的論據定義其他的概念,並使用公理和定義來證明定理。在AI,我們很少使用「定理」這一個術語,然而在知識庫中所初始的命題通常稱之為「公理」,而它們通常會談論到「定義」。
集合的定義域 數學集合的定義域是比貓或國王更抽象一些,但是形成我們所要表達的一致性的知識主題。我們想要表達個別的集合,包括空集合。我們需要有一個藉由加入新的元素進入集合的方法建構集合或者對兩個集合做聯集或交集。 我們將使用集合論中常用的字彙:EmptSet是一個常數;Member和Subset是述詞;Intersection,Union和Adjoin是函數(Adjoin是將一個元素加入集合的函數)。Set是一個述詞只有集合為真。
集合、佇列以及算術的特殊符號 因為集合和佇列這樣的相近,並且由於它們已經有的明確定義的數學符號,我們將試著推廣一階邏輯的語法包含這些數學符號。要記得的重要的事情適當這件事是成功的,它只改變了這個語言的語法,它並沒有改變語意。這些符號對於原有的一階邏輯只是簡稱。這樣的符號的擴張有時候稱為句法的修飾。從現在開始我們將算術以及集合論的標準數學符號,同時我們也將使用非標準的符號 {a|s}做為Adjoin(a,s)的簡稱。
問題詢問以及得到解答 雖然我們將TELL和ASK內部的討論延後至9和10章,理解它們如何使用一階邏輯是很重要的。如果我們想要將親屬關係加入知識庫KB,我們將會呼叫 TELL(KB,(m,cMother(c=m) Female(m)Parent(m,c))) 依此類推。現在假設我們告訴它 TELL(KB,(Female(Maxi)Parent(Maxi,Spot) Parent(Spot,Boots))) 之後我們可以 ASK(KB, Grandparent(Maxi, Boots)) 並得到一個肯定的答案。
7.4 Wumpus世界的邏輯代理人 在第6章我們已經指出了知識基礎代理人的輪廓,我們將在這裡重複稍做修改的圖7.2。我們也指出了如何建構wumpus的知識基礎代理人,但是由於命題邏輯的限制使得我們無法完成這個代理人。
一個代理人如何去組織他所知道的事以產生正確的行為。我們將考慮三種代理人結構:反射代理人,其指 區別他們的感知及根據的動作;模型基礎代理人,他們建構了這個世界的內部表達方式並由它產生行動;目標基礎代理人,其形成目標並試圖完成它們。(目標基礎代理人通常也是模式基礎代理人。)
7.5 簡單反射代理人 可能的最簡單的一種代理人具有直接連結感知和動作的規則。這些規則類似反射動或直覺。例如,當一個代理人看見眼前閃閃發光,他將做一個拾取的動作,以便拿起黃金: s,u,b,c,t Percept([s,b,Glitter,u,c],t) Action(Grab,t) 感知和動作之間的連結可以由感知的規則傳達,其將立即感知的輸入抽象化成有用的形式。 b,g,u,c,t Percept([Stench,b,g,u,c],t) Stench(t) s,g,u,c,t Percept([s,Breeze,g,u,c],t) Breeze(t) s,b,u,c,t Percept([s,b,Glitter,u,c],t) AtGold(t)
簡單反射代理人的限制 簡單反射代理人對於wumpus世界將有其困難。要研究這件事情最簡單的方法是考慮Climb這一個動作。最佳的代理人應該不是拿到了黃金,就是判斷出要拿到黃金是一件非常危險的事,並回到他的出發點,並爬出洞穴。一個單純的反射代理人無法知道他何時要爬出洞穴,因為如果他不是拿到了黃金且在開始的方格;這些是代理人藉由形式化這個世界的表達所得到的事情。
7.6 表達世界的改變 在我們的代理人設計,所有的感知都會被加入知識庫,同時理論上感知的過程是關於這個世界所認識的全部。如果我們允許一個規則可以參考到過去的以及現在的感知,理論上我們將可以推廣代理人的能力到代理人可以做最佳化行動的地步。
狀態計算 狀態計算在一階邏輯中描述狀態改變的特殊方法的名稱。它假想這個世界是由一序列的狀態所組成,其中的每一個都是這個世界的狀態的「速寫」。 狀態是由前一個狀態經由動作而產生,如圖7.3所示。
位置的記錄 在wumpus世界,位置也許是我們所關心的最重要的事情;它無法被直接察覺,但代理人必須知道他去過哪些地方以及他在那些地方看到了什麼,以推論出陷阱和wumpus在哪裡,並確定他能完成尋找黃金的探索。
7.7 推論世界的隱藏性質 一旦代理人知道他在哪裡,我們可以將這個地方加上一些特性而不只單是狀態而已,例如我們可以說,如果代理人在一個地方且感覺到有微風,我們說這個地方是微風輕拂的,如果代理人感受到有臭氣,則我們說這個地方是臭味難受的: l, s At(Agent, l, s) Breeze(s) Breezy(l) l, s At(Agent, l, s) Stench(s) Smelly (l)
因果規則 因果規則反應出這個世界的因果關係的可能趨勢:這個世界某些隱含的性質將產生某些特定的感知。我們可以有描述鄰近wumpus的方格有臭氣以及鄰近陷阱的方格有微風的規則: l1,l2 At(Wumpus, l1,s) Adjacent(l1,l2) Smelly(l2) l1,l2 At(Pit, l1,s) Adjacent(l1,l2) Breezy(l2) 理解因果規則的系統稱之為模式基礎理解系統。
診斷規則 診斷規則直接從感知導向的資訊推論隱含性質發生。我們已經看過了兩個診斷規則: l, s At(Agent, l, s) Breeze(s) Breezy(l) l, s At(Agent, l, s) Stench(s) Smelly (l) 為了推論出wumpus的出現,診斷規則只能得到較弱的結論,也就是,如果一個位置是臭味難聞的,那麼wumpus應該是在這個位置或者是在相鄰的位置: l1, s Smelly (l1) (l2At(Wumpus, l2, s) ( l2=l1Adjacent(l1,l2) )) )
7.8動作之中的偏好 到目前為止,我們決定行動唯一的方法是寫下規則並在這個世界特定狀態的基礎上給他們建議。這將會是令人厭煩的。例如,一般而言藉由移動至OK的方格進行探索是一個好的想法,但是如果在途中有著耀眼的光明則這將不是好的方法。因此我們的探索規則必須提醒有耀眼的光明。
將有關於動作的論據和有關於目標的論據區別開來會更模組化,這表示我們的代理人可以被簡單的重新規劃,藉由要求他完成某些不同的事情。目標描述了期望得到的狀態,無論它是如何得到的。
7.9朝向目標基礎代理人 先前的動作值的描述集合足以產生合理的智慧型探索策略。它可以被證明(在習題7.15),代理人使用這些公理將永遠安全地找到黃金,只要能夠找到黃金的安全的動作序列存在。這大約看我們可以從邏輯代理人詢問到一樣多。 一旦找到了黃金,策略需要完全的改變。現在的目標是回到起始方格越快越好。我們想要做的是推論出代理人現在達成了在位置[1,1]的目標: s Holding(Gold, s) GoalLocation([1,1], s)
明確目標的出現允許代理人執行一個可以達到這個目標的動作序列。要找到這樣的序列至少有三種方法:明確目標的出現允許代理人執行一個可以達到這個目標的動作序列。要找到這樣的序列至少有三種方法: 推論:要寫下允許我們詢問知識庫一個保證可以安全達成目標的動作序列的公理不是件難事。關於44的wumpus世界,這是可行的,但是對於更大的世界,計算量的需求將會過高。在任何的情形,我們都有區別好的解答和浪費時間的問題(例如,一個人在他得到他正確的路徑之前,造成了一系列的長的曲折的移動) 搜尋:我們可以使用最佳優先搜尋程序(見第4章)找到到達目標的路徑。這需要代理人將知識轉換成集合運算,並完成狀態表示,使得搜尋演算法能夠應用。 規劃:這包含了為了理解行動而設計的通用推論系統的使用。第11章將詳細的描述這些系統,解釋它們優於搜尋演算法的地方。