人工智慧概論--人工智慧神經及網路,(只記錄了重點)
人工智慧,它是研究、開發用於模擬、延伸和擴充套件人的智慧的理論、方法、技術及應用系統的一門新的技術科學。
知識表示✨
知識與知識表示的基本概念
-
知識:把有關資訊關聯在一起所形成的資訊結構在長期的生活及社會實踐中、在科學研究及實驗中積累起來的對客觀世界的認識與經驗。
-
任何知識都是在一定的條件及環境下產生的,在這種條件及環境下才是正確的。
-
特性:不確定性
-
隨機性、模糊性、不完全性、經驗引起
-
特性:可表示性、可利用性
-
知識表示:將人類知識形式化或者模型化。
透過定義一階謂詞,並透過連線詞和量詞將一階謂片語合成謂詞公式來描述自然語言所表達的知識
命題(proposition):一個非真即假的陳述句。
命題邏輯:研究命題及命題之間關係的符號邏輯系統。
命題邏輯表示法:缺乏抽象能力,不能把不同事物間的共同特徵表述出來。
謂詞的一般形式: P (x1, x2,…, xn)
個體 x1, x2,…, xn :某個獨立存在的事物或者某個抽象的概念;
謂詞名 P:刻畫個體的性質、狀態或個體間的關係
表示形式有多種,例如:
- 個體是常量:一個或者一組指定的個體。
“老張是一個教師”:一元謂詞 Teacher (Zhang)
“5>3” :二元謂詞 Greater (5, 3)
- 個體是變元(變數):沒有指定的一個或者一組個體。
“x<5” :Less(x, 5)
- 個體是函式:一個個體到另一個個體的對映。
“小李的父親是教師”:Teacher (father (Li) )
謂詞公式
連線詞(連詞)
(1)﹁: “否定” ( negation )或 “非”。
(2)∨: “析取”(disjunction)——或。
(3)∧: “合取”(conjunction)——與。
(4)→:“蘊含”(implication)或 “條件”(condition)。
(5)$\leftrightarrow$“等價”(equivalence)或“雙條件” (bicondition)。
量詞(quantifier)
(1)全稱量詞(universal quantifier):“對個體域中的所有(或任一個)個體 x ”。
(2)存在量詞(existential quantifier):“在個體域中存在個體 x ”。
全稱量詞和存在量詞出現的次序將影響命題的意思。
例如:
量詞的轄域
量詞的轄域:位於量詞後面的單個謂詞或者用括弧括起來的謂詞公式。
約束變元與自由變元:轄域內與量詞中同名的變元稱為約束變元,不同名的變元稱為自由變元。
謂詞公式
謂詞公式的永真性、可滿足性、不可滿足性、等價性
- 如果謂詞公式P對個體域D上的任何一個解釋都取得真值T,則稱P在D上是永真的;如果P在每個非空個體域上均永真,則稱P永真。
- 如果謂詞公式P對個體域D上的任何一個解釋都取得真值F,則稱P在D上是永假的;如果P在每個非空個體域上均永假,則稱P永假。
- 對於謂詞公式P,如果至少存在一個解釋使得P在此解釋下的真值為T,則稱P是可滿足的,否則,則稱P是不可滿足的。
- 設P與Q是兩個謂詞公式,D是它們共同的個體域,若對D上的任何一個解釋,P與Q都有相同的真值,則稱公式P和Q在D上是等價的。如果D是任意個體域,則稱P和Q是等價的,記為P 等價於 Q 。
謂詞邏輯的其他推理規則
P規則:在推理的任何步驟上都可引入前提。
T規則:在推理過程中,如果前面步驟中有一個或多個公式永真蘊含公式S,則可把S引入推理過程中。
CP規則:如果能從任意引入的命題R和前提集合中推出S來,則可從前提集合推出R → S來。
一階謂詞邏輯知識表示方法
用一階謂詞表示:
首先定義謂詞 Human(x)和Die(x)
然後用連線詞連線各個謂詞,形成謂詞公式。
所有的人都是會死的,
因為諸葛亮是人, Human(Zhugeliang)
所以諸葛亮是會死的。 Die(Zhugeliang)
掌握透過產生式來描述具有因果關係的知識
確定性規則知識的產生式表示
基本形式: IF P THEN Q
例如:
r4:IF 動物會飛 AND 會下蛋 THEN 該動物是鳥
2. 不確定性規則知識的產生式表示
基本形式: IF P THEN Q (置信度)
或者: (置信度)
例如: IF 發燒 THEN 感冒 (0.6)
產生式與謂詞邏輯中的蘊含式的區別:
(1)除邏輯蘊含外,產生式還包括各種操作、規則、變換、運算元、函式等。例如,“如果爐溫超過上限,則立即關閉風門”是一個產生式,但不是蘊含式。
(2)蘊含式只能表示精確知識,而產生式不僅可以表示精確的知識,還可以表示不精確知識。蘊含式的匹配總要求是精確的。產生式匹配可以是精確的,也可以是不精確的,只要按某種演算法求出的相似度落在預先指定的範圍內就認為是可匹配的。
瞭解框架表示方法和框架網路;
框架表示法:一種結構化的知識表示方法,已在多種系統中得到應用。
框架(frame):一種描述所論物件(一個事物、事件或概念)屬性的資料結構。
一個框架由若干個被稱為“槽”(slot)的結構組成,每一個槽又可根據實際情況劃分為若干個“側面”(faced)。
一個槽用於描述所論物件某一方面的屬性。
一個側面用於描述相應屬性的一個方面。
(1) 結構性
便於表達結構性知識,能夠將知識的內部結構關係及知識間的聯絡表示出來。
(2)繼承性
框架網路中,下層框架可以繼承上層框架的槽值,也可以進行補充和修改。
(3)自然性
框架表示法與人在觀察事物時的思維活動是一致的。
槽和側面所具有的屬性值分別被稱為槽值和側面值。
框架名:〈教師-1〉
姓名:李玲
年齡:39
性別:女
職稱:副教授
部門:電腦科學與技術系
住址:〈adr-1〉
工資:〈sal-1〉
開始工作時間:2008,9
截止時間:2034,4
確定性推理方法✨
演繹推理、歸納推理、預設推理
(1)演繹推理 (deductive reasoning) : 一般 → 個別
三段論式(三段論法)
足球運動員的身體都是強壯的 ;
高波是一名足球運動員;
所以,高波的身體是強壯的。
(2)歸納推理 (inductive reasoning): 個別 → 一般
完全歸納推理(必然性推理)
不完全歸納推理(非必然性推理)
(3)預設推理(default reasoning,預設推理)
知識不完全的情況下假設某些條件已經具備所進行的推理。
實現正向推理需要解決的問題:
確定匹配(知識與已知事實)的方法。
按什麼策略搜尋知識庫。
衝突消解策略。
正向推理簡單,易實現,但目的性不強,效率低。
逆向推理需要解決的問題:
如何判斷一個假設是否是證據?
當匯出假設的知識有多條時,如何確定先選哪一條?
一條知識的運用條件一般都有多個,當其中的一個經驗證成立後,如何自動地換為對另一個的驗證?
……..
逆向推理:目的性強,利於向使用者提供解釋,但選擇初始目標時具有盲目性,比正向推理複雜。
正向推理: 盲目、效率低。
逆向推理: 若提出的假設目標不符合實際,會降低效率。
正反向混合推理:
(1)先正向後逆向:先進行正向推理,幫助選擇某個目標,即從已知事實演繹出部分結果,然後再用逆向推理證實該目標或提高其可信度;
(2)先逆向後正向:先假設一個目標進行逆向推理,然後再利用逆向推理中得到的資訊進行正向推理,以推出更多的結論。
在不同謂詞公式中,往往會出現謂詞名相同但其個體不同的情況,此時推理過程是不能直接進行匹配的,需要先進行代換。
代換(置換)可簡單的理解為是在一個謂詞公式中用置換項去替換變數。
定義1代換(置換)是形如 {t1/x1,t2/x2,…,tn/xn} 的有限集合。其中,t1,t2,…,tn是項;x1,x2,…,xn是互不相同的變元;ti/xi表示用ti替換xi。並且要求ti與xi不能相同,xi不能迴圈地出現在另一個ti中。
定義2 設θ={t1/x1,t2/x2,…,tn/xn} λ={ u1/y1, u2/y2, … , um/ym } 是兩個代換。則θ與λ的複合也是一個代換,記作θ°λ。它是從集合 { t1λ/x1, t2λ/x2, … , tnλ/xn, u1/y1, u2/y2, … , um/ym } 中刪去以下兩種元素
① 當tiλ=xi時, 刪去tiλ/xi (i=1, 2 ,…, n);
② 當yj∈{ x1, x2 ,…, xn }時, 刪去uj/yj (j=1, 2 ,…, m)
最後剩下的元素所構成的集合。
合一可理解為是尋找項對變數的置換,使兩個謂詞公式一致。可定義為:
定義3 設有公式集F={F1, F2,…,Fn},若存在一個置換θ,可使 F1θ=F2θ=…=Fnθ, 則稱θ是F的一個合一。稱F1,F2,…,Fn是可合一的。 例如,設有公式集F={P(x,y,f(y)), P(a,g(x),z)},則 λ={a/x, g(a)/y, f(g(a))/z} 是它的一個合一。
一般來說,一個公式集的合一不是唯一的。
MGU演算法
(1)初始化,令k=0, Fk=F,σk=Φ。其中,Φ是代換空集。
(2)若Fk只含一個表示式,則演算法停止,σk就是最一般合一;否則轉步驟(3)。
(3)找出Fk的差異集Dk。
(4)若Dk中存在變元xk和項tk,且xk不在tk中出現,則:
σk+1=σk о {tk/xk}
Fk+1=Fk {tk/xk}
k=k+1
轉步驟(2);否則, 演算法終止,F的最一般合一不存在。
定義4 設σ是公式集F的一個合一,如果對F的任一個合一θ都存在一個置換λ,使得θ=σ°λ,則稱σ是一個最一般合一。(Most General Unifier)簡稱MGU。
一個公式集的最一般合一是唯一的。
MGU演算法
(1)初始化,令k=0, Fk=F,σk=Φ。其中,Φ是代換空集。
(2)若Fk只含一個表示式,則演算法停止,σk就是最一般合一;否則轉步驟(3)。
(3)找出Fk的差異集Dk。
(4)若Dk中存在變元xk和項tk,且xk不在tk中出現,則:
σk+1=σk о {tk/xk}
Fk+1=Fk {tk/xk}
k=k+1
轉步驟(2);否則, 演算法終止,F的最一般合一不存在。
例子 設有公式集
F={P(A, x, f (g (y))), P(z, f (z), f (u)) }
求其最一般合一。
解:初始化,令k=0,σ0=Φ,
F0=F={ P (A, x, f (g (y))), P(z, f (z), f (u)) }
謂詞公式化成子句集的步驟如下:
(1) 消去連線詞“→”和“↔”
反覆使用如下等價公式:
P→Q ⇔﹁ P∨Q
P↔Q ⇔ (P∧Q)∨(﹁P∧﹁Q)
即可消去謂詞公式中的連線詞“→”和“↔”。
例如公式
(∀x)((∀y)P(x,y)→﹁ (∀y)(Q(x,y)→R(x,y)))
經等價變化後為
(∀x)(﹁(∀y)P(x,y)∨﹁ (∀y)(﹁Q(x,y)∨R(x,y)))
(2) 將否定符號“﹁”移到最緊靠謂詞的位置
反覆使用雙重否定定律
﹁(﹁P) ⇔ P
摩根定律
﹁(P∧Q) ⇔﹁P∨﹁Q
﹁(P∨Q) ⇔﹁P∧﹁Q
量詞轉換律
﹁ (∀x)P(x) ⇔ (∃x) ﹁P(x)
﹁ (∃x)P(x) ⇔ (∀x)¬P(x)
將每個否定符號“﹁”移到僅靠謂詞的位置,使得每個否定符號最多隻作用於一個謂詞上。
上式經等價變換後為
(∀x)((∃y)﹁P(x,y)∨(∃y)( Q(x,y) ∧﹁R(x,y)))
(3) 對變元標準化
在一個量詞的轄域內,把謂詞公式中受該量詞約束的變元全部用另外一個沒有出現過的任意變元代替,使不同量詞約束的變元有不同的名字。
例如,上式經變換後為
(∀x)((∃y)﹁P(x,y)∨(∃z)( Q(x,z) ∧﹁R(x,z)))
(4) 化為前束正規化
化為前束正規化的方法:把所有量詞都移到公式的左邊,並且在移動時不能改變其相對順序。由於第(3)步已對變元進行了標準化,每個量詞都有自己的變元,這就消除了任何由變元引起衝突的可能,因此這種移動是可行的。
例如,上式化為前束正規化後為
(∀x)(∃y) (∃z)(﹁P(x,y)∨( Q(x,z) ∧﹁R(x,z)))
(5) 消去存在量詞
消去存在量詞時,需要區分以下兩種情況:
若存在量詞不出現在全稱量詞的轄域內
(即它的左邊沒有全稱量詞),只要用一個新的個體常量替換受該存在量詞約束的變元,就可消去該存在量詞。
若存在量詞位於一個或多個全稱量詞的轄域內
例如
(∀x1)…(∀xn) (∃y)P(x1,x2 ,…, xn ,y)
則需要用Skolem函式f(x1,x2 ,…, xn)替換受該存在量詞約束的變元y,然後再消去該存在量詞。
例如,上步所得公式中存在量詞(∃y)和(∃z)都位於(∀x)的轄域內,因此都需要用Skolem函式來替換。設替換y和z的Skolem函式分別是f(x)和g(x),則替換後的式子為
(∀x)(﹁P(x,f(x))∨ (Q(x,g(x))∧﹁ R(x,g(x)) ) )
(6) 化為Skolem標準形
Skolem標準形的一般形式為
(∀x1)…(∀xn) M(x1,x2,……,xn)
其中, M(x1,x2,……,xn)是Skolem標準形的母式,它由子句的合取所構成。把謂詞公式化為Skolem標準形需要使用以下等價關係
P∨(Q∧R) ⇔ (P∨Q)∧(P∨R)
例如,前面的公式化為Skolem標準形後為
(∀x)((﹁P(x,f(x))∨Q(x,g(x))∧(﹁P(x,f(x))∨﹁R(x,g(x))))
(7) 消去全稱量詞
由於母式中的全部變元均受全稱量詞的約束,並且全稱量詞的次序已無關緊要,因此可以刪掉全稱量詞。但剩下的母式,仍假設其變元是被全稱量詞量化的。
例如,上式消去全稱量詞後為
(﹁P(x,f(x))∨Q(x,g(x)) ∧(﹁P(x,f(x))∨﹁R(x,g(x)))
(8) 消去合取詞
在母式中消去所有合取詞,把母式用子句集的形式表示出來。其中,子句集中的每一個元素都是一個子句。
例如,上式的子句集中包含以下兩個子句
{ ﹁P(x,f(x))∨Q(x,g(x))
﹁P(x,f(x))∨﹁R(x,g(x)) }
(9) 更換變數名稱
對子句集中的某些變數重新命名,使任意兩個子句中不出現相同的變數名。由於每一個子句都對應著母式中的一個合取元,並且所有變元都是由全稱量詞量化的,因此任意兩個不同子句的變數之間實際上不存在任何關係。這樣,更換變數名是不會影響公式的真值的。
例如,對前面的公式,可把第二個子句集中的變元名x更換為y,得到如下子句集
﹁P(x,f(x))∨Q(x,g(x))
﹁P(y,f(y))∨﹁R(y,g(y))
例子:
掌握歸結原理;
歸結原理基本思想
首先把欲證明問題的結論否定,並加入子句集,得到一個擴充的子句集S’。然後設法檢驗子句集S’是否含有空子句,若含有空子句,則表明S’是不可滿足的;
若不含有空子句,則繼續使用歸結法,在子句集中選擇合適的子句進行歸結,直至匯出空子句或不能繼續歸結為止。
歸結原理包括
命題邏輯歸結原理
謂詞邏輯歸結原理
命題歸結原理和歸結樹:
謂詞歸結和歸結樹:
謂詞邏輯的歸結原理
謂詞邏輯中的歸結式可用如下定義來描述:
定義3 設C1和C2是兩個沒有公共變元的子句,L1和L2分別是C1和C2中的文字。如果L1和L2存在最一般合一σ,則稱
C12=({C1σ}-{ L1σ})∪({ C2σ}-{ L2σ})
為C1和C2的二元歸結式,而L1和L2為歸結式上的文字
能夠利用歸結反演進行問題求解;
例子:
下面再透過一個例子來說明如何求取問題的答案。
例子 已知:“張和李是同班同學,如果x和y是同班同學,則x的教室也是y的教室,現在張在325教室上課。” “現在李在哪個教室上課?”
C(x, y) x和y是同班同學;
At(x, u) x在u教室上課。
把已知前提用謂詞公式表示如下: C(zhang, li) (∀x) (∀y) (∀u) (C(x, y)∧At(x, u)→At(y,u)) At(zhang, 325)
把目標的否定用謂詞公式表示如下: ﹁(∃v)At(li, v)
把上述公式化為子句集:
C(zhang, li)
﹁C(x, y)∨﹁At(x, u)∨At(y, u)
At(zhang, 325)
把目標的否定化成子句式,
﹁At(li,v) ∨ANSWER(v) 代替之。
把此重言式加入前提子句集中,得到一個新的子句集,對這個新的子句集,應用歸結原理求出其證明樹。其求解過程如下圖所示。
該證明樹的根子句就是所求的答案,即“李明在325教室”。
例子2:
歸結樹:
不確定性推理方法、掌握可信度方法
(1)確定性推理:推理時所用的知識與證據都是確定的,推出的結論也是確定的,其真值或者為真或者為假。
(2)不確定性推理:推理時所用的知識與證據不都是確定的,推出的結論也是不確定的。
不確定性推理:從不確定性的初始證據出發,透過運用不確定性的知識,最終推出具有一定程度的不確定性但卻是合理或者近乎合理的結論的思維過程。
-
可信度:根據經驗對一個事物或現象為真的相信程度。
可信度帶有較大的主觀性和經驗性,其準確性難以把握。
C-F模型:基於可信度表示的不確定性推理的基本方法。
不確定性的表示
(1)知識不確定性的表示
CF(H,E)的取值範圍: [-1,1]。
若由於相應證據的出現增加結論 H 為真的可信度,則 CF(H,E)> 0,證據的出現越是支援 H 為真,就使CF(H,E) 的值越大。
反之,CF(H,E)< 0,證據的出現越是支援 H 為假,CF(H,E)的值就越小。
若證據的出現與否與 H 無關,則 CF(H,E)= 0。
(2)證據不確定性的表示——證據的動態強度
靜態強度CF(H,E):知識的強度,即當 E 所對應
的證據為真時對 H 的影響程度。
動態強度 CF(E):證據 E 當前的不確定性程度。
(3)組合論據:
傳遞性:
合成演算法的計算方法:
例子:
不確定性的度量
① 能充分表達相應知識及證據不確定性的程度。
② 度量範圍的指定便於領域專家及使用者對不確定性的估計。
③ 便於對不確定性的傳遞進行計算,而且對結論算出的不確定性量度不能超出量度規定的範圍。
④ 度量的確定應當是直觀的,同時應有相應的理論依據。
瞭解證據理論方法。
目前,在證據理論的基礎上已經發展了多種不確定性推理模型。
1 機率分配函式
如果 ,則正交和 M也是一個機率分配函式;
如果 ,則不存在正交和 M,即沒有可能存在機率函式,稱 與 矛盾。
K和M的計算
信任函式和似然函式:
4 機率分配函式的正交和(證據的組合)
5 基於證據理論的不確定性推理
搜尋策略✨
依靠經驗,利用已有知識,根據問題的實際情況,不斷尋找可利用知識,從而構造一條代價最小的推理路線,使問題得以解決的過程稱為搜尋
掌握搜尋問題形式化表示,重點掌握狀態空間表示法和與或樹表示法;
- 按問題的表示方式
狀態空間搜尋(State Space)
與或樹搜尋(And/Or Tree)
按是否使用啟發式資訊
盲目搜尋(Blind Search)
啟發式搜尋(Heuristic Search)
重點掌握狀態空間表示法 和 與或樹表示法、瞭解狀態空間盲目搜尋方法;
狀態空間表示法用“狀態”和“算符”來表示問題
狀態—描述問題求解過程不同時刻的狀態
算符—表示對狀態的操作
算符的每一次使用就使狀態發生變化。當到達目標狀態時,由初始狀態到目標狀態所使用的算符序列就是問題的一個解。
①狀態:是描述問題求解過程不同時刻的狀態的資料結構,可用一組變數的有序集表示:
與或樹表示法:
本原問題
不能再分解或變換,而且可以直接可解的子問題稱為本原問題。
端節點與終止節點
在與/或樹中,沒有子節點的節點稱為端節點;本原問題所對應的節點稱為終止節點。可見,終止節點一定是端節點,而端節點不一定是終止接點。
可解節點
在與/或樹中,滿足下列條件之一者,稱為可解節點:
1) 它是一個終止節點。
2) 它是一個“或”節點,且其子節點至少有一個是可解節點。
3) 它是一個“與”節點,且其子節點全部是可解節點。
不可解節點
關於可解節點的三個條件全部不滿足的節點稱為不可解節點。
解樹
由可解節點所構成的,並且由這些可解節點可推出初始節點為可解節點的子樹稱為解樹。
三階梵塔問題。
當給每一個分量以確定的值時,就得到了一個具體的狀態
②算符:引起狀態中某些分量發生變化,從而使問題由一個狀態變為另一個狀態的操作稱為算符。在產生式系統中,每一條產生式規則就是一個算符
③狀態空間:
由問題的全部狀態及一些可用算符所構成的集合稱為問題的狀態空間,一般用一個三元組表示:
(S, F, G) 其中S是問題的所有初始狀態構成的集合;F是算符的集合;G是目標狀態的集合。
④狀態空間圖
狀態空間的圖示形式稱為狀態空間圖。其中節點表示狀態;有向邊表示算符。
例子:
二階“梵塔”問題狀態空間表示
有三個柱子(1,2,3)和兩個不同尺寸的圓盤(A,B)。在每個圓盤的中心有個孔,所以圓盤可以堆疊在柱子上,最初,全部兩個圓盤都堆在柱子1上(最大的在底部,最小的在頂部)。要求把所有 圓盤都移到另一個柱子上,搬動規則為:
(1)一次只能搬一個圓盤
(2)不能將大圓盤放在小圓盤
(3)可以利用空柱子。
如何用狀態空間方法來描述問題?
狀態的表示
柱子的編號用i,j來代表 (i,j)表示問題的狀態其中: i代表A所在的柱子
j 代表B所在的柱子
狀態集合 (9種可能的狀態)
算符如何定義?
定義算符A(i,j)表示把A從i移到j;
B(i,j)表示把B從i移到j。
算符集合(共12個算符):
A(1,2),A(1,3),A(2,1),A(2,3),A(3,1),A(3,2)
B(1,2),B(1,3),B(2,1),B(2,3),B(3,1),B(3,2)
- 掌握OPEN表和CLOSE表的構成及作用;
1、特點:
1)搜尋按規定的路線進行,不使用與問題有關的啟發性資訊
2)適用於其狀態空間圖是樹狀結構的問題求解。
2、搜尋過程:
一般都要用兩個表,這就是OPEN表和CLOSED 表。
OPEN表用於待考察的節點。
CLOSED表用於存放已考察的節點。
3、當目標狀態出現的時候,結束搜尋。
對於上圖的空間狀態我們列出所有可能的open表:
Open表的變化(寬度優先搜尋) 初始 (1)
1 (2,3,4,5)
2 (3,4,5,6,7)
3 (4,5,6,7,8,9)
4 (5,6,7,8,9,10,11)
5 (6,7,8,9,10,11,12,13)
6 (7,8,9,10,11,12,13,14)
7 (8,9,10,11,12,13,14,15,)
8 (9,10,11,12,13,14,15,16)
9 (10,11,12,13,14,15,16,17)
10 (11,12,13,14,15,16,17,18)
11 (12,13,14,15,16,17,18,19)
12 (13,14,15,16,17,18,19,20)
13 (14,15,16,17,18,19,20,21)
14 (15,16,17,18,19,20,21,22,23)
15 (16,17,18,19,20,21,22,23,24,25)
16 (17,18,19,20,21,22,23,24,25,26)
.. … …. … ……
25 (26,27,28,…………………………)
26 找到目標節點。
寬度優先搜尋改進:
Open表的變化(改進的寬度優先搜尋)
初始 (1)
1 (2,3,4,5)
2 (3,4,5,6,7)
3 (4,5,6,7,8,9)
4 (5,6,7,8,9,10,11)
5 (6,7,8,9,10,11,12,13)
6 (7,8,9,10,11,12,13,14)
7 (8,9,10,11,12,13,14,15,)
8 (9,10,11,12,13,14,15,16)
9 (10,11,12,13,14,15,16,17)
10 (11,12,13,14,15,16,17,18)
11 (12,13,14,15,16,17,18,19)
12 (13,14,15,16,17,18,19,20)
13 (14,15,16,17,18,19,20,21)
14 (15,16,17,18,19,20,21,22,23)
15 (16,17,18,19,20,21,22,23,24,25)
16 (17,18,19,20,21,22,23,24,25,)
26為16的子節點,是目標節點,得到解
深度優先傳統演算法和改進演算法:
存在問題:
1、dm的值很難給出。
2、不能保證找到最優解。
改進方法:
可變深度
可變深度的思想:
基本思想:先任意給定一個較小的數作為dm,然後進行上述的有界深度優先搜尋,當搜尋到達了指定的深度界限dm仍未發現目標節點,並且CLOSED表中仍有待擴充套件節點時,就將這些節點送回OPEN表,同時增大深度界限dm繼續向下搜尋。如此不斷地增大dm,只要問題有解,就一定可以找到它。
掌握狀態空間啟發式搜尋和估價函式的設計方法,深入理解啟發式函式;
啟發性資訊——可用於指導搜尋過程,且與具體問題求解有關的控制性資訊。
用於估計節點的重要性的函式稱為估計函式。其一般形式為:
f(x) = g(x) + h(x)
其中g(x)為從初始節點S0到節點x已經實際付出的代價;h(x)是從節點x到目標節點Sg的最優路徑的估計代價, h (x)稱為啟發函式,它體現了問題的啟發性資訊。
定義啟發函式要根據具體問題具體分析,可以參考的思路有:
① 一個結點到目標結點的某種距離或差異的度量;
② 一個結點處在最佳路徑上的機率;
③ 根據經驗主觀打分
全域性擇優搜尋
每次總是從OPEN表的全體節點中選擇一個估價值最小的節點。
過程如下:
(1) 把初始節點S0放入OPEN表,f(S0)。
(2) 如果OPEN表為空,則問題無解,退出。
(3) 把OPEN表的第一個節點(記為節點n)取出放入CLOSED表。
(4) 考察節點n是否為目標節點。若是,則求得問題的解,退出。
(5) 若節點n不可擴充套件,則轉第(2)步。
(6) 擴充套件節點n,用估計函式f(x)計算每個子節點的估價值,併為每個子節點配置指向父節點的指標,把這些子節點都送入OPEN表中,然後對OPEN表中的全部節點按估價值從小到大的順序進行排序,然後轉第(2)步。
前面討論的擇優搜尋僅適合於搜尋的狀態空間是樹狀結構,樹狀結構的狀態空間中每個節點都只有唯一的父節點(根節點除外)。因此搜尋演算法放入到OPEN表中的節點的狀態是各不相同的,不會有重複的節點。
如果狀態空間是一個有向圖的話,那麼狀態空間中的一個節點可能有多個父節點,因此,在OPEN表中會出現重複的節點,節點的重複將導致大量的冗餘搜尋,為此須對全域性擇優搜尋進行修正。
修正的思想:當搜尋過程生成一個節點i時,需要把節點i的狀態與已生成的所有節點的狀態進行比較,若節點i是一個已生成的節點,則表示找到一條透過節點i的新路徑。若新路徑使節點i的估價值更小,則修改節點i指向父節點的指標,使之指向新的父節點;否則,不修改節點i原有的父節點指標,即保留節點i原有的路徑
*有序搜尋(A演算法)、A演算法**
h(n)就是從n到目標節點路徑的最小代價;函式g(n)是所有從S開始可達到n的路徑的最小代價;函式f(n)就是從節點S到節點n的一條最佳路徑的實際代價加上從節點n到某目標節點的一條最佳路徑的代價之和,即 f(n)=g(n)+ h(n)
我們希望估價函式f(n)是f(n)的一個估計,此估計可由下式給出: f(n)=g(n)+h(n) 其中:g是g的估計;h是h的估計。對於g(n)來說。很顯然g(n)≥g(n)。對於h*(n)估計h(n),它依賴於有關問題的領域的啟發資訊。
定義1 :在GRAPHSEARCH過程中,如果重排OPEN表是依據f(x)=g(x)+h(x)進行的,則稱該過程為A演算法。
定義2 :在A演算法中,如果對所有的x,h(x)≤h(x)成立,則稱h(x)為h(x)的下界,它表示某種偏於保守的估計。
基於上述g(x)和h(x)的定義,對啟發式搜尋演算法中的g(x)和h(x)做如下限制:
①g(x)是對g*(x)的估計,且g(x)>0;
②h(x)是h(x)的下界,即對任意節點x均有h(x)≤h(x)。
在滿足上述條件情況下的有序搜尋演算法稱為A*演算法。
對於某一搜尋演算法,當最佳路徑存在時,就一定能找到它,則稱此演算法是可納的。可以證明,A演算法是可納演算法。也就是說,對於有序搜尋演算法,當滿足h(x)≤h(x)條件時,只要最佳路徑存在,就一定能找出這條路徑。
瞭解與或樹盲目搜尋
與或樹搜尋基本思想:
擴充套件(自上而下)
標示(自下而上)
結束條件:初始節點為可解或不可解
與或樹盲目搜尋
寬度優先
深度優先
與/或樹的寬度優先搜尋與狀態空間的寬度優先搜尋類似,是按
“先產生的節點先擴充套件”的原則進行搜尋,只是在搜尋過程中要多次呼叫可解標示過程和不可解標示過程。搜尋過程如下:
(1) 把初始節點S0放入OPEN表。
(2) 把OPEN表中的第一個節點(記為節點n)取出放入CLOSED表。
(3) 如果節點n可擴充套件,則:
① 擴充套件節點n,將其子節點放入OPEN表的尾部,併為每個子節點配置指向父節點的指標。
② 考察這些子節點中是否有終止節點。若有,則標示這些終止節點為可解節點,並應用可解標示過程對其先輩節點中的可解節點進行標示。如果初始節點S0也被標示為可解節點,就得到了解樹,搜尋成功,退出搜尋過程;如果不能確定S0為可解節點,則從OPEN表中刪去具有可解先輩的節點。
③ 轉第(2)步。
(4) 如果節點n不可擴充套件,則:
① 標示節點n為不可解節點。
② 應用不可解標示過程對節點n的先輩節點中不可解的節點進行標示。如果初始節點S0也被標示為不可解節點,則搜尋失敗,表明原始問題無解,退出搜尋過程;如果不能確定S0為不可解節點,則從OPEN表中刪去具有不可解先輩的節點
③ 轉第(2)步。
深度優先搜尋:
搜尋過程如下:
(1) 把初始節點S0放入OPEN表。
(2) 把OPEN表中的第一個節點(記為節點n)取出放入CLOSED表。
(3) 如果節點n的深度大於等於深度界限,則轉第5)步的第①點
(4) 如果節點n可擴充套件,則:
① 擴充套件節點n,將其子節點放入OPEN表的頭部,併為每個子節點配置指向父節點的指標。
② 考察這些子節點中是否有終止節點。若有,則標示這些終止節點為可解節點,並應用可解標示過程對其先輩節點中的可解節點進行標示。如果初始節點S0也被標示為可解節點,就得到了解樹,搜尋成功,推出搜尋過程;如果不能確定S0為可解節點,則從OPEN表中刪去具有可解先輩的節點。
③ 轉第(2)步。
(5) 如果節點n不可擴充套件,則:
① 標示節點n為不可解節點。
② 應用不可解標示過程對節點n的先輩節點中不可解的節點進行標示。如果初始節點S0也被標示為不可解節點,則搜尋失敗,表明原始問題無解,退出搜尋過程;如果不能確定S0為不可解節點,則從OPEN表中刪去具有不可解先輩的節點
③ 轉第(2)步。
掌握解樹代價的求取,理解利用希望樹求取代價最小解樹的方法;
與/或樹的啟發式搜尋可用來求取代價最小的解樹,也被稱之為與或樹有序搜尋。
為了進行有序搜尋,需要計算解樹的代價。解樹的代價可以透過計算解樹中節點的代價得到。
1) 如果x是終止節點,則定義節點x的代價h(x) = 0;
2) 如果x是”或”節點,y1,y2…yn是它的子節點,則節點x的代價為:h(x) = min{c(x,yi) + h(yi)}
3)如果x是”與”節點,則節點x的代價有兩種計算方法:和代價法與最大代價法。
若按和代價法計算,則有:h(x) = ∑(c(x,yi) + h(yi)) 若按最大代價法計算,則有:h(x) = max{c(x,yi) + h(yi)}
4) 如果x不可擴充套件,且又不是終止節點,則定義h(x) = ∝
由上述計算節點的代價可以看出,如果問題是可解的,則由子節點的代價就可推算出父節點代價,這樣逐層上推,最終就可求出初始節點S0的代價,S0的代價就是解樹的代價。
2、希望樹
希望樹是指搜尋過程中最有可能成為最優解樹的那棵樹。
與/或樹的啟發式搜尋過程就是不斷地選擇、修正希望樹的過程,在該過程中,希望樹是不斷變化的。
定義:
(1) 初始節點S0在希望樹T
(2) 如果n是具有子節點n1, n2, … , nk的或節點,則n的某個子節點ni在希望樹T中的充分必要條件是
(3) 如果n是與節點,則n的全部子節點都在希望樹T中。
掌握基於極大極小方法的博弈樹搜尋及alpha-beta剪枝策略。
博弈問題特點
全資訊:對壘的雙方A,B輪流採取行動,任何一方都瞭解當前的格局及過去的歷史。
二人零和:博弈的結果只有三種情況:A方勝,B方敗;B方勝,A方敗;雙方戰成平局。
非偶然:博弈的過程是尋找置對手於必敗狀態的過程。
Grundy博弈是一個分錢幣的遊戲。有一堆數目為N的錢幣,由兩位選手輪流進行分堆,要求每個選手每次只把其中某一堆分成數目不等的兩小堆。例如, 選手甲把N分成兩堆後,輪到選手乙就 可以挑其中一堆來分,如此進行下去, 直到有一位選手先無法把錢幣再分成不相等的兩堆時就得認輸。
極大極小分析法的基本思想
設博弈的雙方中一方為A,另一方為B。然後為其中的一方(例如A)尋找一個最優行動方案。
為了找到當前的最優行動方案,需要對各個可能的方案所產生的後果(得分)進行比較。
為計算得分,需要根據問題的特性資訊定義一個估價函式,用來估算當前博弈樹端節點的得分。
當端節點的估值計算出來後,再推算出父節點的得分。
推算的方法是:
對“或”節點,選其子節點中一個最大的得分作為父節點的得分,這是為了使自己在可供選擇的方案中選一個對自己最有利的方案;
對“與”節點,選其子節點中一個最小的得分作為父節點的得分,這是為了立足於最壞的情況。
如果一個行動方案能獲得較大的倒推值,則它就是當前最好的行動方案。
極大極小分析法:
設A的棋子用“a”表示,B的棋子用“b”表示。為了不致於生成太大的博弈樹,假設每次僅擴充套件兩層。估價函式定義如下:
設棋局為P,估價函式為e(P)。
(1)若P是A必勝的棋局,則e(P)=+∞。
(2)若P是B必勝的棋局,則e(P)=-∞。
(3)若P是勝負未定的棋局,則e(P)=e(+P)-e(-P)
極大極小分析法的缺點是效率低。
α-ß剪枝技術的基本思想為:
對於一個與節點MIN,若能估計出其倒推值的上確界β,並且這個β值不大於MIN的父節點(一定是或節點)的估計倒推值的下確界α,即α≥β,則就不必再擴充套件該MIN節點的其餘子節點了(因為這些節點的估值對MIN父節點的倒推值已無任何影響了)。這一過程稱為α剪枝。
對於一個或節點MAX,若能估計出其倒推值的下確界α,並且這個α值不小於MAX的父節點(一定是與節點)的估計倒推值的上確界β,即α≥β,則就不必再擴充套件該MAX節點的其餘子節點了(因為這些節點的估值對MAX父節點的倒推值已無任何影響了)。這一過程稱為β剪枝。
例:
智慧計算
掌握遺傳演算法的基本機理和求解步驟;
基本思想
適應度函式:
尺寸變化:
在遺傳演算法中,將所有妨礙適應度值高的個體產生,從而影響遺傳演算法正常工作的問題統稱為欺騙問題(deceptive problem)。
過早收斂:縮小這些個體的適應度,以降低這些超級個體的競爭力。
停滯現象:改變原始適應值的比例關係,以提高個體之間的競爭力。
適應度函式的尺度變換(fitness scaling)或者定標:對適應度函式值域的某種對映變換。
掌握選擇-複製、交叉、變異三種遺傳操作的設計方法;
個體選擇機率分配方法
選擇操作也稱為複製(reproduction)操作:從當前群體中按照一定機率選出優良的個體,使它們有機會作為父代繁殖下一代子孫。
判斷個體優良與否的準則是各個個體的適應度值:個體適應度越高,其被選擇的機會就越多。
個體選擇機率分配方法
瞭解遺傳演算法的應用;
利用遺傳演算法求解區間[0,31]上的二次函式y=x2的最大值。
分析
原問題可轉化為在區間[0, 31]中搜尋能使y取最大值的點a的問題。那麼,[0, 31] 中的點x就是個體, 函式值f(x)恰好就可以作為x的適應度,區間[0, 31]就是一個(解)空間 。這樣, 只要能給出個體x的適當染色體編碼, 該問題就可以用遺傳演算法來解決。
解
(1) 設定種群規模,編碼染色體,產生初始種群。
將種群規模設定為4;用5位二進位制數編碼染色體;取下列個體組成初始種群S1:
s1= 13 (01101), s2= 24 (11000)
s3= 8 (01000), s4= 19 (10011)
(2) 定義適應度函式。
取適應度函式:f (x)=x^2
(3) 計算各代種群中的各個體的適應度, 並對其染色體進行遺傳操作,直到適應度最高的個體(即31(11111))出現為止。
首先計算種群S1中各個體
s1= 13(01101), s2= 24(11000)
s3= 8(01000), s4= 19(10011)
的適應度f (si) 。
容易求得
再計算種群S1中各個體的選擇機率。
選擇機率的計算公式為
由此可求得
P(s1) = P(13) = 0.14
P(s2) = P(24) = 0.49
P(s3) = P(8) = 0.06
P(s4) = P(19) = 0.31
在演算法中賭輪選擇法可用下面的子過程來模擬: ① 在[0, 1]區間內產生一個均勻分佈的隨機數r。
② 若r≤q1,則染色體x1被選中。
③ 若qk-1<r≤qk(2≤k≤N), 則染色體xk被選中。 其中的qi稱為染色體xi (i=1, 2, …, n)的累積機率, 其計算公式為
於是,得第四代種群S4:
s1=11111(31), s2=11100(28)
s3=11000(24), s4=10000(16)
顯然,在這一代種群中已經出現了適應度最高的染色體s1=11111。於是,遺傳操作終止,將染色體“11111”作為最終結果輸出。
然後,將染色體“11111”解碼為表現型,即得所求的最優解:31。
瞭解粒子群最佳化演算法
粒子群演算法的目標是使所有粒子在多維超體(multi-dimensional hyper-volume)中找到最優解。首先給空間中的所有粒子分配初始隨機位置和初始隨機速度。然後根據每個粒子的速度、問題空間中已知的最優全域性位置和粒子已知的最優位置依次推進每個粒子的位置。隨著計算的推移,透過探索和利用搜尋空間中已知的有利位置,粒子圍繞一個或多個最優點聚集或聚合。該演算法設計玄妙之處在於它保留了最優全域性位置和粒子已知的最優位置兩個資訊。後續的實驗發現,保留這兩個資訊對於較快收斂速度以及避免過早陷入區域性最優解都具有較好的效果。這也奠定了後續粒子群演算法改進方向的基礎。
基本思想
將每個個體看作n維搜尋空間中一個沒有體積質量的粒子,在搜尋空間中以一定的速度飛行,該速度決定粒子飛行的方向和距離。所有粒子還有一個由被最佳化的函式決定的適應值。
基本原理
PSO初始化為一群隨機粒子,然後透過迭代找到最優解。在每一次迭代中,粒子透過跟蹤兩個“極值”來更新自己。第一個就是粒子本身所找到的最優解,這個解稱為個體極值。另一個是整個種群目前找到的最優解,這個解稱為全域性極值。
專家系統
初創期
DENDRAL系統(1968年,史丹佛大學費根鮑姆等人)——推
斷化學分子結構的專家系統
MYCSYMA系統(1971年,麻省理工學院 )——用於數學運
算的數學專家系統
特點:高度的專業化。
專門問題求解能力強。
結構、功能不完整。
移植性差。
缺乏解釋功能。
成熟期
MYCIN系統(史丹佛大學 )——血液感染病診斷專家系統
PROSPECTOR系統(史丹佛研究所 )——探礦專家系統
CASNET系統(拉特格爾大學):用於青光眼診斷與治療。
AM系統( 1981年,史丹佛大學):模擬人類進行概括、抽象和歸納推理,發現某些數論的概念和定理。
HEARSAY系統(卡內基-梅隆大學)——語音識別專家系統
特點:
(1)單學科專業型專家系統。
(2)系統結構完整,功能較全面,移植性好。
(3)具有推理解釋功能,透明性好。
(4)採用啟發式推理、不精確推理。
(5)用產生式規則、框架、語義網路表達知識。
(6)用限定性英語進行人-機互動。
發展期
專家系統XCON(DEC公司、卡內基-梅隆大學 ):為VAX計算機系統制訂硬體配置方案。
專家系統開發工具:
骨架系統:EMYCIN、KAS、EXPERT 等。
通用型知識表達語言: OPS5 等。
專家系統開發環境: AGE 等。
機器學習:機器學習(Machine learning)使計算機能模擬人的學習行為,自動地透過學習來獲取知識和技能,不斷改善效能,實現自我完善。
框架是一種 結構化的知識表示方法
編譯原理中的文法屬於生產式
假設我們定義了以下謂詞:
Study(x) x肯學習
Lucky(x) x是幸運的
那麼下列哪個謂詞公式對於以下知識的表示是正確的?
"張不肯學習但他是幸運的"
﹁Study(zhang)∧Lucky(zhang)
如果定義謂詞like(x,y)表示某一個人x喜歡運動專案y,那麼以下謂詞公式分別表示什麼意思?
本作品採用《CC 協議》,轉載必須註明作者和本文連結