在人工智能領域,數據是抽象的內容,獨立時沒有含義;信息是經過收集和處理的數據;而知識是經過人為的解讀和經驗充實的信息。知識是智慧、創造力的前提。這段時間看文獻,對知識表達產生了興趣,它是人工智能的一個核心環節。從數據到信息,從信息到知識,知識必須被人類和計算機理解,才能產生所謂人工智能。目前,知識表達的形式非常多,最常見的就是IF...THEN的形式,這種表達十分簡單,但是表達能力有限。這里我想向大家介紹一種叫做“本體”的知識表達方式。我想對哲學比較了解的朋友,聽說過“本體”這兩個字,沒錯,“本體”就是來源于哲學。那么,且從哲學中的“本體”講起。
(1)柏拉圖和亞里士多德對于“存在性”的理解
本體論是形而上學的一個分支,是研究和討論“存在性”問題的。關于“存在性”的討論,柏拉圖和亞里士多德的理論對后世的影響比較大。柏拉圖提出了“理念”這一詞,和具體的現象相對應。他認為擁有同一個名字的不同個體之間肯定存在著同一種理念,例如“床”這個概念就是“理念”,各式各樣的個體的床是現象。在他看來,“理念”真正存在的實體,是獨立于任何心靈而存在的,是上帝創造出來的完美體;而現象是“理念”的不完美的、殘缺的復制品,沒有“理念”的事物是不存在的。這就好比“理念”是上帝做的模子,而現象只是從這個模子里復制出來的殘缺品(這個比方來自《蘇菲的世界》,可能不太準確)。
為了說明這個道理,柏拉圖打了一個著名的比喻,叫“洞穴之喻”。設想在一個地穴中有一批囚徒;他們自小呆在那里,被鎖鏈束縛,不能轉頭,只能看面前洞壁上的影子。在他們后上方有一堆火,有一條橫貫洞穴的小道;沿小道筑有一堵矮墻,如同木偶戲的屏風。人們扛著各種器具走過墻后的小道,而火光則把透出墻的器具投影到囚徒面前的洞壁上。囚徒自然地認為影子是惟一真實的事物。如果他們中的一個碰巧獲釋,轉過頭來看到了火光與物體,他最初會感到困惑;他的眼睛會感到痛苦;他甚至會認為影子比它們的原物更真實。如果有人進一步拉他走出洞穴,到陽光下的世界,他會更加眩目,甚至會發火;起初他只能看事物在水中的倒影,然后才能看陽光中的事物,最后甚至能看太陽自身。到那時他才處于真正的解放狀態,會開始憐憫他的囚徒同伴、他的原來的信仰和生活。如果他返回去拯救他的囚徒同伴,他得有一段時間去適應洞中的黑暗,并且會發現很難說服他們跟他走出洞穴。
在這個比喻里面,柏拉圖重在說明存在兩個世界: 現象世界和理念世界。現象世界是我們感知的世界,是囚徒們看到的墻壁上的影子,其實是虛幻的,不存在的。而理念世界是通過理性思考所得,是山洞外面的世界,那才是完美的、真正存在的。普通人都陷在現象世界不可自拔,只有通過教育和理性思考才能把他們拉出洞穴,讓他們看看真實存在的理型世界。
可見柏拉圖把“理念”和“現象”分離了,所以說他的理論是“二元論”。基于此,他留下了著名的著作,《理想國》。
亞里士多德是柏拉圖的學生,他在繼承老師的思想的基礎上,對老師部分思想進行了批判,并予以發展,發明了“共相論”。亞里士多德認為,“共相”的意思就是可以用于描述許多主體的東西,共相論要討論的是泛指的、一類事物的名詞。而與“共相”對應的是“實體”,它指個別的、唯一的、獨立的個體。往往說“這類”指的是共相,而“這個”指的是實體。
從這里可以看出亞里士多德的理論和他老師的有所不同。在亞里士多德看來,理念并不是存在的實體,而實體是具體的個別事物。也就是不存在永恒和超驗的理念世界,在他看來,理念內化在事物本身,所以理念和物質是不可分離的。亞里士多德把“理念”理解為事物普遍性的一面,是由所有同一類型事物分享的本質統一。這里的“理念”也即亞里士多德所謂“共相”。
這些就是柏拉圖和亞里士多德關于“存在性”的討論,非常的無聊,看起來這些討論毫無意義,但是他們的這些無聊的討論卻影響了整個西方國家的宗教、文化的發展。
后來19世紀90年代,亞里士多德“共相”的理論被引入到人工智能領域,就是所謂“本體工程”,用來定義領域內的一些概念,以達到知識共享的目的。
(2) 人工智能領域對“本體”的定義及“本體”的基本要素。
在人工智能領域“本體”被定義為“a formal explicit specification of a shared conceptualization ”, 即一種共享的概念化,這種概念被形式化的、精確的定義。“形式化”意味著本體是可以被計算機理解的;“精確的”意味著概念以及概念被使用的約束要被精確的定義;“共享”意味著本體不是被針對某些個人的,而是被一個團體通常是一個領域所共享的;“概念化”是指對世界上某些現象的一種抽象模型,它指出了這種現象的相關概念。
說得簡單些,“本體”就是精確定義了某一領域的一些概念,以及描述這些概念的特性、概念之間的關系的屬性,以及屬性的約束等,而這種定義和描述是可以被計算機理解的,且被領域所共同接受的。
講這么多,其實我們只要明白“本體”的幾個基本元素,就理解了什么是“本體”。之前在哲學里面已經討論過“共相”的概念了,所以“本體”的兩個最基本的元素就是“概念”和“實體”。基于亞里士多德關于“分類”的方法論,一個“概念”實際上也是一個“類”,所以“概念”和“類”在本體論中是同一個意思。為了描述概念或者實體的特性以及相互之間的關系,還有“屬性”這么一個元素。實際上,“屬性”包括兩個元素,一個是“對象屬性”,即描述類與類、類與實體、實體與實體之間的關系;另一個是“數據屬性”,描述類或者實體的數據屬性。除此之外,還有必要定義一些屬性的約束,所以“約束”也是一個基本元素。
本體的構建過程,實際上就是定義上述幾個基本元素的過程。當我們構建領域的本體知識時,我們可以考慮采用亞里士多德“分類”的方法論,從一個超類出發尋找下面的子類,再以此類推尋找更低一層的子類。例如生物這么一個類可以分為動物和植物,動物又可以分為人類和畜生,人類又可以分為男性和女性。
(3)一個簡單的例子
這里舉一個簡單的例子,以便理解本體論的含義和基本元素以及本體的構建過程。Protégé是本體創建和編輯常用的開源軟件,這里以該工具為例進行說明。
為了推動動物園管理智能化,于是全國動物園聯合搞了個動物園領域的本體工程。
首先,對動物園的相關概念進行定義,例如“animal”、“plant”、“herbivore”、“carnivore”、“giraffe”、“lion”、“tree”、“branch”、“leaf”等。可以從圖中看出,“herbivore”和“carnivore”是“animal”的子類。
然后定義一些對象屬性,來描述類與類之間的關系,如圖中的“eat”、“eated”、“partof”。“giraffe”“eat”“leaf”,這樣就描述了類與類之間的關系了。
為了把這個關系描述得更清楚,往往會加入一些約束,例如“giraffe”“only”“eat”“leaf”,這里的“only”就是約束。
好了,接下來就是為類添加一些實體,例如有一個叫“wangwang”的長頸鹿,于是可以進行如下操作。
那么,“wangwang”就是“giraffe”的一個實體了。對了,還有一個元素“數據屬性”還沒有提到的。例如下圖,定義“address”和“tel”來描述動物園的地址和電話,這就是數據屬性了。
在定義動物園的實體時,就可以為該實體填入數據屬性的具體值了,例如下圖動物園實體“上海動物園”的數據屬性。
通過這個例子,對本體的幾個基本元素應該理解了。這個例子很簡單,其實通過這種方式,可以定義非常復雜的本體,形成復雜的語義網絡。而且本體是支持邏輯推理的,這種推理能力來源于描述邏輯。
(4)本體論和面向對象的異同
有編程經驗的朋友可能會感覺,本體論和面向對象的意思差不多嘛。是這樣的,它們都是對現實世界的抽象,也都來源于“共相論”。但是側重點不一樣,本體論側重于對概念的定義,以及概念之間的聯系;而面向對象側重于類的功能的實現,或者說接口的實現。這是因為它們的用途是不一樣的,“本體”是用來表達領域知識的,本體知識要便于計算機搜索到相關知識,并且便于計算機進行邏輯推理,所以它最重要的是描述概念或者實體之間相互的聯系,以及約束。而面向對象實際上是要實現一定的功能的,它之所以用“類”的方法,是為了統一同一個類的接口,以實現代碼的重用,所以它最重要的是要編碼實現這些接口。
如果有需要用到知識表達的朋友,可以關注一下本體這種方法,或許會給你的項目或者論文幫上大忙。