Cyc

Cyc是一個致力於將各個領域的本體及常識知識綜合地集成在一起，並在此基礎上實現知識推理的人工智慧項目。其目標是使人工智慧的應用能夠以類似人類推理的方式工作。這個項目是由道格拉斯·萊納特在1984年設立的，由 Cycorp公司開發並維護。

該項目的一部分以OpenCyc形式發布，OpenCyc項目以開源許可的形式向開發者和使用者提供API，可下載的數據集（特別是為語義全球資訊網實踐者提供了OWL版本的數據集）等。

## 概述

Cyc項目始於1984年，由當時的微電子與電腦技術公司開發。該項目最開始的目標是將上百萬條知識編碼成機器可用的形式，用以表示人類常識。CycL是Cyc項目專有的知識表示語言，這種知識表示語言是基於一階關係的。

1986年 Douglas Lenat預測如果想要完成Cyc這樣龐大的常識知識系統，這將涉及25萬條規則，並將要花費350個人年才能完成。1994年，Cyc項目從該公司獨立出去，並以此為基礎成立了 Cycorp公司。

"Cyc"名字的來源是"encyclopedia"，發音很像syke，是美國德克薩斯州奧斯丁的 Cycorp公司的有效註冊商標，Cycorp是一家由 Douglas Lenat領導的致力於實現人工智慧的公司。雖然Cyc知識庫本身為Cycorp公司所有，但是該公司在開源Apache許可證的保證下提供了一個用於自動推理的公共詞彙集，即OpenCyc。最近，Cyc還在一個以研究為目的的許可證保證下向人工智慧研究者開放，並以ResearchCyc命名。

Cyc知識庫中表示的知識一般形如「每棵樹都是植物」、「植物最終都會死亡」。當提出「樹是否會死亡」的問題時，推理引擎可以得到正確的結論，並回答該問題。該知識庫中包含了320萬條人類定義的斷言，涉及30萬個概念，15000個謂詞。這些資源都採取CycL語言來進行描述，該語言採取謂詞代數描述，語法上與Lisp程序設計語言類似。

目前Cyc項目大部分的工作仍然是以知識工程為基礎的。大部分的事實是通過手工添加到知識庫中，並在這些知識基礎上進行高效推理的。最近Cycorp正致力於使Cyc系統能夠和最終使用者用自然語言進行交流，並通過機器學習來輔助形成知識的工作。

Cyc公司與很多公司具有相同的夢想，即採用 Cyc自然語言理解工具解析整個網際網路並從中抽取結構化數據。

2008年，研究人員將Cyc資源被映射到許多維基百科的文章上，這使得Cyc與類似於 DBpedia、 Freebase這樣的數據集進行連接變得更為容易。

## 知識庫

Cyc中的概念被稱為「常量（constants）」。常量以"#$"開頭並區分大小寫。常量主要分為以下幾類：

- 個體，即individuals：例如#$BillClinton又如#$France。
- 集合，即Collections：例如#$Tree-ThePlant（包含所有的樹），又如#$EquivalenceRelation（包含所有的等價關係）。集合中的個體被稱為該集合的實例（instance）。
- 真值函數，即Truth Functions：該函數可被應用於一個或多個概念，並返回「真」或「假」。例如#$siblings表示兄弟姐妹關係，若兩個參數對應的內容為兄弟姐妹關係，則該概念返回真值。約定真值函數以小寫字母開頭，並且可以被拆分為若干個邏輯連接詞（例如#$and、#$or、#$not、#$implies）、量詞（#$forAll, #$thereExists等等）以及謂詞。
- 函數，即Functions：用於以現有術語為基礎產生新的術語。例如#$FruitFn具有以下作用：若接收到用於描述一種（或一個集合）植物的聲明，則會返回其果實。約定函數常量以大寫字母開頭，並以「Fn」作為結尾。

Cyc中的謂詞最重要的是#$isa以及#$genls。#$isa表示某個對象是某個集合的個體（instance），#$genls表示某個集合是另外一個集合的子集合。由概念構成的事實採用CycL語言描述的「句子」表示。謂詞則寫在與其相關的對象之前，並以括號括起來：

（#$isa #$BillClinton #$UnitedStatesPresident）

表示「Bill Clinton屬於美國總統集合」。

（#$genls #$Tree-ThePlant #$Plant）

表示「所有的樹都是植物」。

（#$capitalCity #$France #$Paris）

表示「巴黎是法國的首都」。

句子中可以包含變量，變量字串以"?"開頭，這些句子被稱為「規則」。與#$isa謂詞有關的一條規則如下所示：

```
(#$implies
   (#$and
     (#$isa ?OBJ ?SUBSET)
     (#$genls ?SUBSET ?SUPERSET))
   (#$isa ?OBJ ?SUPERSET))
```

上面的規則可解釋為："若OBJ為集合SUBSET中的一個實例，並且SUBSET是SUPERSET的子集，則OBJ是集合SUPERSET的一個實例。下面再給出另外一個典型的示例：

（#$relationAllExists #$biologicalMother #$ChordataPhylum #$FemaleAnimal）

上面的規則可解釋為：對於脊索動物（chordate）集合#$ChordataPhylum中的所有實例，都存在一個母性動物（為#$FemaleAnimal的實例）作為其母親（通過謂詞#$biologicalMother描述）。

Cyc知識庫是由許多「microtheories」（Mt）構成的，概念集合和事實集合一般與特定的Mt關聯。與整體的知識庫有所不同的是，每一個Mt相互之間並不矛盾，每一個Mt具有一個常量名，Mt常量約定以字串"Mt"結尾。例如：#$MathMt表示包含數學知識的Mt，Mt之間可以相互繼承得到並組織成一個層次化的結構。例如#$MathMt特化到更為精細的層次便包含了如#$GeometryGMt，即有關幾何的Mt。

## 推理引擎

推理引擎是從知識庫中經過推理獲取答案的電腦程式。Cyc推理引擎支持一般的邏輯演繹推理，包括：

- 肯定前件假言推理（Modus ponens）
- 否定後件假言推理（Modus tollens）
- 全稱量化（universal quantification）
- 存在量化（existential quantification）。

## 發布版本

### OpenCyc

OpenCyc的最近一個版本是於2009年7月發布的OpenCyc 2.0版。OpenCyc 1.0版涵蓋了完整的Cyc本體，其中包含了47000個概念、306000個事實，主要是分類斷言，並不包含Cyc中的複雜規則。

OpenCyc的第一個版本發布於2002年春天，該版本僅包含6000個概念、60000條事實。該知識庫是在Apache許可證保護下發布的。Cycorp公司已表示有意採用無限制的授權形式及多種授權形式滿足其使用者的需求。CycL和SubL解釋器（允許用戶瀏覽並編輯知識庫、並具有推理功能）是免費發布給使用者的，但是僅包含二進位文件，並不包含原始碼。OpenCyc具有針對Linux作業系統及微軟Windows作業系統的發行版。開源項目Texai項目發布了RDF版本的OpenCyc知識庫。

### ResearchCyc

2006年，Cycorp發布了二進位版本的ResearchCyc 1.0，這是向科研社群發布的免費版本的Cyc（ResearchCyc在2004年經過了一整年的測試開發，並於2005年2月發布了測試版）。ResearchCyc中除了包含OpenCyc中的分類資訊外，還在知識庫中顯著增加了許多語義知識（及附加的事實），並加入了一個龐大的詞彙表、英文解析與生成工具、及用於編輯、查詢知識的Java接口。

## 應用

### 恐怖主義知識庫項目

恐怖主義綜合知識庫是一個正在開發中的Cyc應用，該應用的目標是最終創建一個包含所有恐怖組織、相關成員、領袖、其世界觀、創建者、贊助者、設施、地點、經費、目的、行為、戰術及某次特定恐怖活動事實的知識庫。該類知識以數理邏輯表示的聲明形式存儲。

### Cyclopedia項目

Cyclopedia是一個正在開發的項目，它致力於用Cyc中的關鍵詞對Wikipedia網頁上的內容進行標註。

### 克利夫蘭臨床基金會項目

克利夫蘭臨床基金會採用Cyc開發了一個生物醫學資訊的自然語言查詢系統。該系統將查詢通過開放變量解析為CycL（高階邏輯）片斷構成的集合，隨後通過應用各種約束（如醫學領域知識、常識、語篇語用學、語法）之後，找到將這些片斷結合在一起，形成語義豐富的形式化查詢的方法。

## 對Cyc項目的批評

Cyc項目被譽為是「人工智慧歷史上最有爭議的項目」之一，因此難免對它有批評的意見，這些意見可以概括為：

- 系統的複雜度 - 該系統具有創建百科全書式知識庫的野心，卻手動添加所有的知識到系統中。
- 知識表示廣泛的具體化引發的可擴展性問題，特別是以常量的形式進行。
- 對物質概念的解釋難以令人滿意，對內在屬性和外在屬性區分不清晰。
- 缺乏對Cyc推理引擎效率測試的有意義的標準測試及與其他類似系統的比較。
- 目前該系統在深度和廣度上都有待完善，然而測度該系統的完備性本身就是很困難的。
- 缺乏文檔。
- 缺乏最新的在線培訓材料，不便於初學者學習使用該系統。
- 缺乏對普通對象構成的本體描述的斷言。

## 進一步閱讀建議

- Alan Belasco et al.（2004）. "Representing Knowledge Gaps Effectively". In: D. Karagiannis, U. Reimer（Eds.）: Practical Aspects of Knowledge Management, Proceedings of PAKM 2004, Vienna, Austria, December 2–3, 2004. Springer-Verlag, Berlin Heidelberg.
- Elisa Bertino, Gian Piero & B.C. Zarria (2001). Intelligent Database Systems. Addison-Wesley Professional.
- John Cabral & others (2005). "Converting Semantic Meta-Knowledge into Inductive Bias". In: Proceedings of the 15th International Conference on Inductive Logic Programming. Bonn, Germany, August 2005.
- Jon Curtis et al.（2005）. "On the Effective Use of Cyc in a Question Answering System". In: Papers from the IJCAI Workshop on Knowledge and Reasoning for Answering Questions. Edinburgh, Scotland: 2005.
- Chris Deaton et al.（2005）. "The Comprehensive Terrorism Knowledge Base in Cyc". In: Proceedings of the 2005 International Conference on Intelligence Analysis, McLean, Virginia, May 2005.
- Kenneth Forbus et al.（2005）. "Combining analogy, intelligent information retrieval, and knowledge integration for analysis: A preliminary report". In: Proceedings of the 2005 International Conference on Intelligence Analysis, McLean, Virginia, May 2005
- James Masters (2002). "Structured Knowledge Source Integration and its applications to information fusion". In: Proceedings of the Fifth International Conference on Information Fusion. Annapolis, MD, July 2002.
- James Masters and Z. Güngördü（2003）. "Structured Knowledge Source Integration: A Progress Report". In: In Integration of Knowledge Intensive Multiagent Systems. Cambridge, Massachusetts, USA, 2003.
- Cynthia Matuszek et al.（2005）. "Searching for Common Sense: Populating Cyc from the Web". In: Proceedings of the Twentieth National Conference on Artificial Intelligence. Pittsburgh, Pennsylvania, July 2005.
- Douglas Lenat and R. V. Guha.（1990）. Building Large Knowledge-Based Systems: Representation and Inference in the Cyc Project. Addison-Wesley. ISBN 978-0-201-51752-1.
- Tom O'Hara et al.（2003）. "Inducing criteria for mass noun lexical mappings using the Cyc Knowledge Base and its Extension to WordNet". In: Proceedings of the Fifth International Workshop on Computational Semantics. Tilburg, 2003.
- Kathy Panton et al.（2002）. "Knowledge Formation and Dialogue Using the KRAKEN Toolset". In: Eighteenth National Conference on Artificial Intelligence. Edmonton, Canada, 2002.
- Deepak Ramachandran P. Reagan & K. Goolsbey (2005). "First-Orderized ResearchCyc: Expressivity and Efficiency in a Common-Sense Ontology". In: Papers from the AAAI Workshop on Contexts and Ontologies: Theory, Practice and Applications. Pittsburgh, Pennsylvania, July 2005.
- Stephen Reed and D. Lenat (2002). "Mapping Ontologies into Cyc". In: AAAI 2002 Conference Workshop on Ontologies For The Semantic Web. Edmonton, Canada, July 2002.
- Benjamin Rode et al.（2005）. "Towards a Model of Pattern Recovery in Relational Data". In: Proceedings of the 2005 International Conference on Intelligence Analysis. McLean, Virginia, May 2005.
- Dave Schneider et al.（2005）. "Gathering and Managing Facts for Intelligence Analysis". In: Proceedings of the 2005 International Conference on Intelligence Analysis". McLean, Virginia, May 2005.
- Blake Shepard et al.（2005）. "A Knowledge-Based Approach to Network Security: Applying Cyc in the Domain of Network Risk Assessment". In: Proceedings of the Seventeenth Innovative Applications of Artificial Intelligence Conference. Pittsburgh, Pennsylvania, July 2005.
- Nick Siegel et al.（2004）. "Agent Architectures: Combining the Strengths of Software Engineering and Cognitive Systems". In: Papers from the AAAI Workshop on Intelligent Agent Architectures: Combining the Strengths of Software Engineering and Cognitive Systems. Technical Report WS-04-07, pp. 74–79. Menlo Park, California: AAAI Press, 2004.
- Nick Siegel et al.（2005）. Hypothesis Generation and Evidence Assembly for Intelligence Analysis: Cycorp's Nooscape Application". In Proceedings of the 2005 International Conference on Intelligence Analysis, McLean, Virginia, May 2005.
- Michael Witbrock et al.（2002）. "An Interactive Dialogue System for Knowledge Acquisition in Cyc". In: Proceedings of the Eighteenth International Joint Conference on Artificial Intelligence. Acapulco, Mexico, 2003.
- Michael Witbrock et al.（2004）. "Automated OWL Annotation Assisted by a Large Knowledge Base". In: Workshop Notes of the 2004 Workshop on Knowledge Markup and Semantic Annotation at the 3rd International Semantic Web Conference ISWC2004. Hiroshima, Japan, November 2004, pp. 71–80.
- Michael Witbrock et al.（2005）. "Knowledge Begets Knowledge: Steps towards Assisted Knowledge Acquisition in Cyc". In: Papers from the 2005 AAAI Spring Symposium on Knowledge Collection from Volunteer Contributors (KCVC). pp. 99–105. Stanford, California, March 2005.

## 外部連結

- Cycorp主頁*
- Opencyc.org（包含培訓材料）
- research.cyc.com
- Cyc基金會
- 支持瀏覽OpenCyc知識庫的伺服器
- opencyc,開源發布的頂層Cyc本體（版本1.0發布於2006年7月14日）
- OpenCyc C API
- David Whitten寫的非官方Cyc常見問題解答
- 能夠思考的機器進展到什麼程度了? 2005年4月23日, New Scientist
- 常識2006年4月15日, New Scientist
- Cyc官方博客
- "Confessions of a Cyclist" - 另一個關於Cyc的部落格
- Cyc影片培訓材料
- 採用OpenCyc實現的常識知識獲取系統