知識表示

**知識表示**（；參見）係認知科學同人工智能領域當中一個受關注嘅課題，指一個認知系統－無論係人類定係人工智能－內部點樣表示有關「周圍世界點運作」嘅資訊，以及點樣用呢啲資訊對事物作出判斷同預測。

舉個簡單例子說明，想像家陣有一個噉樣嘅神經網絡：個網絡有兩層，每層有若干粒神經細胞，第一層表示「見到嗰樣物件嘅特徵」，而第二層表示「將件物件分做乜嘢類」，第二層每粒神經細胞會同第一層嘅某啲細胞有連繫，喺某啲特定嘅第一層細胞啟動嗰時會跟住啟動，即係話，攞第 i 粒第二層細胞：

:C_i = W_1 A_1 + W_2 A_2...；
:C_i 係第二層細胞 i 嘅啟動程度，
:A_j 係第 j 粒第一層細胞嘅啟動程度，
:W_j 係第 j 粒第一層細胞對第二層細胞 i 嘅影響力，而 W_j 數值可以係 0。

假想第一層細胞每粒代表咗一個特徵，而第二層細胞每粒代表咗一個類別。當個網絡望到外界有一件具有「有毛皮」、「有鬚」同「四隻腳」等特徵嘅物件嗰時，呢啲特徵相應嘅第一層細胞就會啟動，而第二層細胞當中同呢柞細胞有連繫嗰粒－例如代表「貓」嗰粒第二層細胞－就會跟住啟動。噉即係話，呢個網絡曉一接收到某啲特徵，就將件物件歸類做某個相應嘅類別－「貓有毛皮、有鬚、四隻腳」係一個知識，而呢個知識就係用一個神經網絡嘅方式「表示」咗出嚟。

對知識表示嘅研究相當跨學科：呢個領域會參考神經科學等領域嘅研究，尤其係有關「人腦點做知識表示」嘅研究（已知人腦曉做知識表示，問題係到底人腦係點做到嘅呢？），然後人工智能領域嘅研究者就會按呢啲知識，嘗試製作出能夠好似人噉做知識表示嘅電腦系統。

## 神經基礎

### 細胞

神經細胞（neuron）可以帶有同傳遞資訊：一個腦由極大量嘅神經細胞組成，例如一個正常大人嘅腦據估計有成 860 億粒神經細胞咁多；一粒神經細胞喺接收到某啲特定嘅刺激嗰陣，會用微弱電流等嘅型式傳訊號，例如視網膜上面嗰一大柞感光細胞喺受光刺激嗰時，會射訊號上個腦嘅視覺皮層（visual cortex）嗰度，而每種感光細胞都淨係會對某啲特定刺激有反應，所以每當個腦收到呢啲訊號嗰陣，就可以判斷對眼望到乜－「射緊訊號嘅得感應藍色光嘅感光細胞，對眼梗係望緊啲藍色嘅嘢喇」。神經編碼係神經科學一個子領域，專門研究解讀神經細胞帶同傳嘅資訊。

### 網絡

想像有個由若干粒神經細胞組成嘅神經網絡（neural network）。**輸入層**嗰啲細胞會對某啲外界刺激（例如係光或者聲）有啟動反應，**隱藏層**收到輸入層細胞嘅訊號嗰時會啟動，而最後嗰浸**輸出層**收到隱藏層細胞嘅訊號嗰時又會啟動。即係話是但搵粒細胞，佢嘅啟動程度 C 可以用以下條式計：

:C = W_1 A_1 + W_2 A_2...；
:A_j 係粒細胞第 j 個輸入嘅數值，
:W_j 係粒細胞第 j 個輸入對粒細胞 i 嘅影響力（權重值；weight）。

而家假想輸出層有 5 粒細胞，每粒都有一個**門檻值**，如果嗰粒細胞個 C 超越門檻值，佢嘅數值會變成 1，否則佢嘅數值會變成 0（睇埋數碼訊號），所以喺是但一個時間點，個神經網絡嘅輸出可以用 5 個 1 同 0 嚟表達－「11000」、「10010」、「10101」等分別代表唔同款嘅輸出。如果柞 W_j 數值恆定不變，噉輸入同輸出之間會成某啲特定嘅關係，例如每次輸入層數值等如某個數，輸出都會等如「11000」。呢段關係反應咗個神經網絡對輸入同輸出嘅知識，假想家陣輸入層有 4 粒細胞，而個網絡柞 W_j 經已調整好，令輸入同輸出成以下關係：

想像輸入係兩個用二進制表達嘅數，而輸出係一個用二進制表達嘅數，將上述數字變成十進制嘅話：

呢個輸入同輸出關係表示，個神經網絡曉計（兩個輸入都喺 2 以內嘅）乘數－係一個將有關乘法嘅知識「表示」咗出嚟嘅網絡。同一道理，假想有個神經網絡，有數以百億計嘅細胞（好似係人腦）佢會識處理好複雜嘅輸入，俾好複雜嘅輸出，而且仲能夠運算好複雜嘅輸入輸出關係。睇埋人工神經網絡。

## 處理過程

### 普遍同複雜
***[[廣義化|普遍化]]**指一個智能系統對唔同嘅輸入俾**同一個**輸出：例如家陣有兩個唔同嘅輸入－「一隻身上有七條間條嘅老虎」同「一隻身上有八條間條嘅老虎」，而有一個人感知到；對個人嚟講，喺兩個情況下，最理想嘅輸出都係「識驚、走佬」，而如果有個人類見到前者識走佬，但見到後者唔識嘅話，佢好有可能生存唔到；「普遍」化指緊就係將對一個刺激 x 嘅知識應用落去第啲同 x 有啲相似（但唔完全一樣）嘅刺激嗰度－而「概念」喺定義上就係指普遍化所產生嘅知識表示，個人睇咗一柞（隻隻個樣都有啲唔同嘅）老虎之後心靈當中有咗一個「老虎」嘅概念。普遍化嘅能力對於知識系統嚟講好重要。
***[[狹義化|複雜化]]**指一個智能系統對唔同嘅輸入俾**唔同**輸出：假想頭先見親老虎都識走佬嗰個人，佢從來未見過貓（貓一般對人唔危險），跟住有次佢見到貓，因為貓同老虎外形上有某啲相似嘅地方，所以佢見到隻貓就驚同走佬；但打後佢對貓嘅體驗多咗，發覺貓同危險之間並冇正統計相關（貓同危險好少可一齊出現），於是佢就學識「見到老虎要走佬，但見到貓唔使」－先前會引起同一個輸出嘅刺激，變成會引起唔同輸出，呢個過程就係所謂嘅複雜化。普遍化同複雜化之間嘅平衡係有智能行為嘅基礎。

### 聚類分析

聚類分析係一種常用嚟教智能系統學識做適當知識表示嘅方法。假想而家有若干個個案，每個個案都係兩個變數 x 同 y 上有個數值，再用以下個演算法處理吓柞個案嘅數據：


```c++
手上有 N 個個案，每個個案俾返個標籤（某個特定嘅「000011100...」規律）佢。
  將啲個案冚唪唥攞喺 C 呢個聚類入面。

  直至 size(C)（C 入面嘅個案數量） = 1 為止，一路做
    將淨低嘅個案逐對逐對睇，計每對個案之間嘅距離（喺 X 同 Y 上差幾遠）；
    搵出最接近嗰兩個個案，設做 c1 同 c2；
    將 c1 同 c2 加入 c3 入面，c3 係一個包含咗 c1 同 c2 在內嘅聚類，
    將 c3 加入去 C 入面；
    將 c1 同 c2 由 C 嗰度攞走。
```


如果個數據庫當中有 8 個個案，上述段演算法會俾類似以下噉嘅知識表示：


```c++
C = 
    [[[[case_1, case_8], case_2], case_6], [[[case_3, case_4], case_5], case_7]]
```


假如柞個案真係有得清楚噉分做兩個聚類嘅話，噉呢個演算法嘅運算過程之中，應該臨尾會出咗兩個 c_{3a} 同 c_{3b}，跟住 c_{3a} 同 c_{3b} 喺最後嗰步變成一體。聚類分析能夠攞一柞輸入，再俾「將柞個案分做若干類」嘅輸出－所以上述個演算法喺人工智能上可以用嚟模擬人類「睇過一柞物體之後，自動噉喺心目中將柞物體分類」嘅心智過程－由數據嗰度產生「見過嘅物件可以分做邊幾類」嘅知識表示，並且喺下次再撞到個案嗰時，用手上呢個知識表示判斷「呢件物件係乜」。

### 主成份分析

主成份分析（PCA）係另一種常用嚟整知識表示嘅分析法。想像而家又係有柞個案，佢哋每個喺兩個變數上都有其數值（睇附圖），跟住可以畫兩條線（附圖嗰兩個箭咀），兩條線分別都可以用一條包含 x 同 y 嘅算式表達，當中由圖當中可以清楚睇到，長箭咀嗰條線成功噉捕捉更多嘅變異數－亦即係話長箭咀嗰條線所代表嗰個**成份**（component）比較能夠用嚟分辨啲個案，所以比較「重要」。

舉個例說明，假想有柞新數據，啲個案係一隻隻動物，而每個個案一係就係隻老鼠，一係就係隻大笨象，x 係隻動物嘅大細，而 y 係隻動物嘅色水；假設柞數據做咗標準化，用同一樣嘅單位表達 x 同 y，喺呢柞數據入面，沿「色水」嘅變異數好細（個箭咀會好短），因為老鼠同大笨象都係灰灰啡啡噉色嘅動物，但沿「大細」嘅變異數就會大得好交關（個箭咀會好長），因為老鼠同大笨象喺體型上差好遠－用 PCA 嘅話，會得出「用 x 作為重心線做分辨有用啲」嘅結果－ PCA 幫到手由一柞數據嗰度，產生出「邊個成份喺用嚟分辨個案上比較有用」嘅資訊，而個智能系統可以用呢個資訊做一個知識表示，攞個知識嚟對將來撞到嘅個案作出判斷。

喺最簡單嗰種情況下，一個做主成份分析嘅演算法大致上係噉：
#攞數據；
#畫條線出嚟，條線有條式，而條式包含數據當中有嘅變數；
#計出沿呢條線嘅變異數有幾多；
#改變吓條線嘅參數；
#再計出沿條新線嘅變異數有幾多；
#一路做步驟 4 同 5，做嗮所有指定咗嘅可能性，最後俾具有最大變異數嗰條線做個演算法嘅輸出。

## 表示模型

### 語義網絡

語義網絡係知識表示常用嘅一種模型。一個基本嘅語義網絡有以下組成部份：個網絡有若干個**節點**（node），每個節點代表一個概念，而節點之間會有一啲連繫，兩個概念之間嘅連繫表達佢哋之間嘅關係；語義網絡可以用嚟模擬促發效應－喺是但一個時間點，每個節點都有個數代表佢嘅「啟動程度」而一個節點啟動會令佢掕住嘅節點跟住啟動，同佢連繫愈強嘅節點就會掕住啟動得愈勁；而呢點似十足人嘅促發效應－人都係噉，一講起一樣嘢嗰陣傾向諗起啲同嗰樣嘢相關嘅嘢，例如實驗就噉做過，實驗者叫受試者喺聽到個「狼」字嗰陣有咁快得咁快撳個掣，而喺聽「狼」打前聽到（例如）個「狗」字嘅受試者對「狼」嘅反應會變快。

語義網絡可以用機械學習方法產生，例如一個人工智能程式接收咗一柞動物嘅影像，用聚類分析將柞影像分做若干個物種，程式內部每個物種俾個名佢，然後再按聚類分析嘅結果（例：「貓同老虎明顯係兩種動物，但兩者彼此之間嘅差距明顯細過佢哋同狼嘅差距，所以貓同老虎都屬貓科」）產生一個語義網絡（例：貓同老虎都各有一條線「屬於」掕去「貓科」嗰度）。

### 貝葉斯知識

有認知科學家主張，人同第啲動物嘅心靈係按貝葉斯定理（Bayes' theorem）學習判斷世界嘅系統。假想有兩件事件，A 同 B，P(A) 係 A 發生嘅機會率，P(B) 係 B 發生嘅機會率，根據貝葉斯定理，P(A|B)（已知 B 發生咗，A 發生嘅機會率）可以用以下呢條式計：

:P(A|B) = \frac{P(B|A)\, P(A)}{P(B)}

舉個例說明，有一個地區，個地區嘅人當中有 0.1% 嘅都有一隻病（P(A) = 0.001）；而家有個新測試（「測試出陽性反應」係 B），而打前嘅醫學研究顯示，如果個病人真係有嗰隻病，個測試有 90% 機會呈陽性反應（P(B|A) = 0.9），但就算個病人冇嗰隻病（A'），個測試都有 9% 嘅機會呈陽性反應（P(B|A') = 0.09，P(B) 大約係 0.1）。家吓有個住喺呢個地區嘅人去做咗個測試，出咗陽性結果，用貝葉斯定理嚟計嘅話，佢真係有嗰種病嘅機會率（P(A|B)）大約係 10% （個測試唔多靠得住）。

根據主張貝葉斯腦假說嘅認知科學家，一個心靈會透過自己過去嘅經驗，計算一大柞 P(A|B) 嘅數值，以此表示自己對「世界係點運作」嘅認識，而呢個知識表示就係所謂嘅「對世界嘅內部模型」：想像一個心靈，佢內部會記住若干份經驗（有 P(A) 同 P(B) 呢啲資訊），而佢可以按過去嘅經驗計返 P(A|B)－例如係喺一個實驗裏面，研究者定時定候電隻動物，而隻動物冇能力迴避；隻動物記得 10 次俾人電嘅事件（P(A)），而喺某幾次事件當中佢有嘗試避開個痛楚（B），喺某幾次入面佢冇（B'），但次次都一樣遭俾人電；佢個腦計咗之後會發現，自己行動咗跟住受痛楚嘅機率（A|B）同自己唔行動而受痛楚嘅機率（A|B'）相約，P(A|B) = P(A|B')－即係一個「我作唔作出行動結果都係會受痛楚」嘅知識表示，令佢進入「發現自己好無助」嘅狀態。

### 第啲模型
*迴歸模型，表達「若干個連續變數之間大致成乜關係」嘅知識。
*人工神經網絡（ANN），一種能夠正確噉由輸入計輸出，但推論方法冇得開口講明嘅知識表示法。
*決策樹，將知識表示成一連串「如果 A 數值等如點點點，噉 B 數值就大概會係點點點」嘅決策。
*支援向量機（SVM），用嚟將物件按若干個變數分類嘅知識。
... 等等。

## 本體工程

本體工程係電腦科學嘅一個子領域，研究點建造本體（ontology）：定義上，一個本體係一柞概念嘅集合，會表明呢啲概念之間嘅啦掕，可以話係語義網絡嘅一種；本體嘅特徵係，佢啲概念要有**明確講到出嚟嘅定義**（相比之下，語義網絡可以用人工神經網絡等「計到正確答案、但講唔出口」嘅方法整）。例：一個用嚟表示打機相關知識嘅本體噉，會包含「電子遊戲」、「遊戲機」同「遊戲設計」等嘅概念嘅定義，跟住仲會有一柞連結，表明概念之間嘅啦掕，例如「遊戲機」會有條拎（「用嚟玩」）連去「電子遊戲」嗰度，而「遊戲設計」又會有條拎（「做嚟整」）連落「電子遊戲」嗰度－形成一個描述打機相關概念同呢啲概念之間嘅關係嘅本體（所以本體係知識表示嘅一種）。

本體工程對於製作人工智能嚟講相當有用，最幫到手教電腦做自動推理嘅工作－一個程式有咗一個本體，就會有能力答「貓屬於貓科，貓科屬於哺乳類，噉貓係咪屬於哺乳類？」等嘅問題，而答呢類問題嘅能力正正係智能嘅一個重要指標。

以下呢段係一段用網絡本體語言（Web Ontology Language；一款專用嚟整本體嘅程式語言）表達嘅一個本體，用嚟描述一啲有關意大利薄餅嘅知識：


```turtle
Namespace(p = <http://example.com/pizzas.owl#>)
Ontology( <http://example.com/pizzas.owl#>
   Class(p:Pizza partial
     restriction(p:hasBase someValuesFrom(p:PizzaBase)))
   DisjointClasses(p:Pizza p:PizzaBase)
   Class(p:NonVegetarianPizza complete
     intersectionOf(p:Pizza complementOf(p:VegetarianPizza)))
   ObjectProperty(p:isIngredientOf Transitive
     inverseOf(p:hasIngredient))
)
```


舉個例子說明，呢段碼 `ObjectProperty` 嗰行會同個程式指明個本體入面某啲物件嘅特性，呢行指令講咗幾樣嘢：首先「係某某嘅原料」（isIngredientOf）呢個關係係遞移嘅－即係教部電腦，如果 A 係 B 嘅原料而 B 係 C 嘅原料，噉佢可以推斷 A 係 C 嘅原料；呢行指令仲表明咗「係某某嘅原料」係「原料包含咗」（hasIngredient）嘅反轉（inverse）－所以運用呢個本體嘅人工智能程式可以做（例如）「夏威夷薄餅原料包含咗菠蘿，所以菠蘿係夏威夷薄餅嘅原料」嘅推理。

本體同相關技術有唔少應用價值，一個簡單嘅例子係攞嚟喺搜尋器嗰度俾建議：當一個用家搜尋某個關鍵字嗰陣，個搜尋器程式可以用一個事先學習（分析咗舊有嘅「啲人耖完呢篇文之後，傾向耖乜文」數據）形成嘅語義網絡，估計個用家跟住最有可能會想搜尋啲乜，然後將最有可能會想搜尋嘅嘢列做「建議」。

## 睇埋

*認知
*知識
*心智表徵
*人工神經網絡
*深度神經網絡

## 文獻
英文文獻：

*Ronald J. Brachman; *What IS-A is and isn't. An Analysis of Taxonomic Links in Semantic Networks*; IEEE Computer, 16 (10); October 1983
*Ronald J. Brachman, Hector J. *Levesque Knowledge Representation and Reasoning*, Morgan Kaufmann, 2004 ISBN 978-1-55860-932-7
*Ronald J. Brachman, Hector J. Levesque (eds) *Readings in Knowledge Representation*, Morgan Kaufmann, 1985, ISBN 0-934613-01-X
*Chein, M., Mugnier, M.-L. (2009), *Graph-based Knowledge Representation: Computational Foundations of Conceptual Graphs*, Springer, 2009,ISBN 978-1-84800-285-2.
*Randall Davis, Howard Shrobe, and Peter Szolovits; What Is a Knowledge Representation? *AI Magazine*, 14(1):17-33,1993
*Ronald Fagin, Joseph Y. Halpern, Yoram Moses, Moshe Y. Vardi *Reasoning About Knowledge*, MIT Press, 1995, ISBN 0-262-06162-7
*Jean-Luc Hainaut, Jean-Marc Hick, Vincent Englebert, Jean Henrard, Didier Roland: *Understanding Implementations of IS-A Relations*. ER 1996: 42-57
*Hermann Helbig: *Knowledge Representation and the Semantics of Natural Language*, Springer, Berlin, Heidelberg, New York 2006
*Frank van Harmelen, Vladimir Lifschitz and Bruce Porter: *Handbook of Knowledge Representation* 2007.
*Arthur B. Markman: *Knowledge Representation* Lawrence Erlbaum Associates, 1998
*John F. Sowa: *Knowledge Representation: Logical, Philosophical, and Computational Foundations*. Brooks/Cole: New York, 2000
*Adrian Walker, Michael McCord, John F. Sowa, and Walter G. Wilson: *Knowledge Systems and Prolog, Second Edition*, Addison-Wesley, 1990
*Mary-Anne Williams and Hans Rott: "*Frontiers in Belief Revision, Kluwer*", 2001.

## 引咗

## 拎

* What is a Knowledge Representation?
* Introduction to Knowledge Modeling
* Introduction to Description Logics course
* DATR Lexical knowledge representation language
* Loom Project Home Page