本體論: 讓舉一反三變得可能

Posted By Mr. Thursday

子曰:「舉一隅不以三隅反,則不復也。」所謂舉一反三,就是可以靈活應用已經學過的規則,在新的情況上面。譬如說,第一堂數學課,可能會教到一顆蘋果加上一顆蘋果,等於兩顆蘋果,但是考試的時候問到,一顆橘子加上一顆橘子,等於幾顆橘子?這個時候我們不會因為蘋果變成橘子,就忘記後面一個抽象化的規則:1 + 1 = 2 。因此,舉一反三就是能夠把經驗歸納成一個規則來表示,但是這個規則是一條具有彈性的規則,可以在適當的情況下拿出來應用,即使現在面對的情況和過去遇到的經驗有些微不同,譬如說蘋果變成橘子,但是我們可以把經驗抽象萃取出來的規則,靈活運用在新的情況上面,因此一顆橘子加一顆橘子,就如同一顆蘋果加上一顆蘋果一樣,答案是兩顆橘子。

對於人類來說,舉一反三在某些領域,人類表現得不錯,然而電腦計算機來說,舉一反三仍舊是人工智慧的一個瓶頸,主要的問題,我想本體論的學習與維持,是其中一環。接下來我就分別就「規則」、「本體論」,分別介紹和討論,一起探討如果要讓計算機和人一樣,可以舉一反三,有哪些困難,又有哪些可能的解決方法?

規則: 從觀察到行動的過程

所謂「規則」(rule),我們可以把他看成是人類從觀察 (observation) 到行動 (action) 之間的一個對應關係。簡單的規則可以是「如果下雨,就撐傘」。複雜的規則可以是「如果高速公路塞車而且高鐵又打折,就做高鐵,否則…」。因此,一個「規則」,通常都有一個「如果…」的部分,以及一個「則…」的部分。「如果…」就像是我們對環境作觀察,「則…」就像是我們在環境中開始行動。一條規則,就像是把觀察和行動作一個對應 (mapping),複雜的規則,就是一種複雜的對應。至於人類怎樣子學出這種觀察到行動之間應該有的對應,也就是如何學出規則?心理學上面各種學習理論,有習慣化、敏感化、制約學習,可以參考學習三部曲:習慣、敏感、和制約學習。人工智慧和機器學習裡面對於學習的方法,則是有幾種劃分,像是監督式學習 (supervised learning)、非監督式學習 (unsupervised learning)、加強式學習 (reinforcement learning)的劃分,或是模型式(model-based learning)、案例式(instance-based learning)學習的劃分。可以參考KNN演算法KNN演算法 (更正篇)

符號化規則:觀察與行動的彩排

不管有沒有文字,不管有沒有數字系統,人類甚至簡單的生物系統,都有自己的規則,也就是說自己會針對遇到的環境,作出適當的反應行動。人類或是高等動物,可以把規則靈活運用,舉一反三。人類另一個更特別的地方,就在於可以把規則符號化,不管是文字或數字,符號化的好處就是讓人可以在腦海裡面先彩排,這種能力讓人類可以做更好的抉擇,也讓人類行為有更多的可能。舉例來說,小時後可能會在沙坑上面堆一座橋,剛開始可能堆出來的橋不大穩固,經過多次經驗以後,我們可能學出一條規則,知道怎樣子堆出來的橋比較穩固。但是如果我們要造一作跨海大橋,我們可能沒有那麼多時間,也沒有那麼多鋼筋水泥,可以這樣試試看、那樣試試看,一直到試出一條穩固的跨海大橋為止。我們有土木工程專家,知道基本的力學規則,先在紙上或是計算機上計算需要多少鋼筋水泥,再依照這個比例去建造一作跨海大橋。

因此符號化歸則,讓人類比動物有更靈活的規則運用了!規則在符號化之後,「如果…」的這一部分,也就變成一種「樣版的比對」過程 (template matching)。譬如說有一個化學方程式

HCl + NaOH –> NaCl + H2O

我們甚麼時候可以應用這個規則呢?就是當我們遇到HCl和NaOH在一起的情況的時候。聖經裡面有一條規則「虛心的人有福了,因為天國是他們的」。這規則要應用在誰身上呢?就是應用在「虛心的人」身上了。不過接下來就是今天要討論的重點:「虛心的人」是誰呢?就像 1 + 1 = 2 一樣,1  可以代表一顆蘋果,也可以代表一顆橘子,舉一反三,才能把過去的經驗,化成可以靈活運用的規則,應付新的問題,生存下來。而這種靈活運用規則的能力,或者說,把「如果…」這部分,也就是樣版比對 (template matching)的這一環可以靈活比對,需要甚麼樣子的能力呢?人類的抽象化能力、聯想能力,是一種可能。邏輯上面有歸納與演譯。計算機科學,則是可以經由「本體論」(ontology) 來幫忙完成這項艱鉅的任務。

本體論: 敘述事物關係的樹狀結構

本體論最早是從哲學發展出來的學問,後來資訊科學把本體論應用到人工智慧上面的問題。簡單地說,本體論就是一種分類的方式,份類出來會是一顆樹的樣子,樹根是最一般的概念,葉子的地方則是最細分的概念,譬如說車子的本體論,我們可能在樹根的地方寫上「車子」,接下來我們可能根據用途,分成自用車、公車、救火車、救護車、計程車、…等等。這就是一個簡單的樹狀分類。如果對樹狀結構不大熟悉的讀者,或許可以再回想一下,我們對生物的分類,是不是有所謂的「界門綱目科屬種」呢?每一個動物,依照最上一層的屬性,就先分成許多界,每個界在分成許多門,在細分成綱、目、科、屬,最後細分到種。每分一層,就像樹枝展開一樣,因此整個分類結構看起來,就像是一棵樹的形狀了。

圖1 樹狀結構示意圖

更多樹狀結構的介紹可以參考由樹的前序、中序、後序走法來談資料結構

不同的領域,也就有各自的本體論 (ontology),就是各自的分類方式。譬如說圖書館對於書籍的分類,又是另外一種本體論。甚至我們自己電腦的資料夾,也是一種樹狀結構,也可以算是一種廣義寬鬆的本體論。每個本體論裡面的節點,就是一種概念 (concept),越接近樹根的節點,就是越一般的概念 (general concept),越接近葉子的節點,就是越特定的概念 (specific concept)。節點之間的連結,就是關係的連結 (relation)。每一層之間的關係,就是一種繼承的關係,這種繼承的關係,會讓比較一般的概念的屬性,可以直接套用在特定概念上面。譬如說哺乳綱有的特性,靈長目的動物都會有,因為「綱」比「目」來的一般 (general ceoncept)。

其他繼承的屬性,常見的有 is-a 和 has-a 的關係,譬如說剛才提到的生物分類本體論,靈長目是一種 (is-a) 哺乳動物。如果就車子的本體論,可能就變成車子有 (has-a) 車門、車燈、輪胎。透過這兩種關係,我們就可以把某個領域的概念,從最一般的概念,排列到最特定的概念,連接成一棵樹狀的結構,成為本體論 (ontology)。

有了本體論之後,最大的好處,就是讓電腦能夠舉一反三。譬如說語意網 (Semantic Web)裡面,ontology就是一個重要的部分。下面就是一張 Semantic Web的積木圖,不知道各位是否看到Ontology了呢?

圖2 Semantic Web

除此之外,Stanford的Mark Musen的團隊也開發了 Protégé 這個工具,可以創造和編輯自己的本體論,並且儲存成共通的 OWL 語言格式,讓電腦做進一步的邏輯推理。

圖3 Protégé畫面

MIT的活氧計畫 (Oxygen Project) 裡面也有一項子計畫叫做 HayStack,是一套具有基本本體論的工具,希望把本體論應用到桌面資料夾和各種檔案的分類整理上面。HayStack主要是用 RDF來描述每個物件,也有自己的視窗介面,有興趣的不妨也去下載來試用看看。

圖4 HayStack畫面

本體論的學習與抽象化

有了本體論,剛才提到規則的靈活運用,在電腦上面就變得可能,因為我們只要學會一般的規則,就可以應用到特定的概念上面。譬如說我們知道了哺乳動物的一些規則,靈長目動物馬上就可以應用這些規則,不用再學一遍,就像我們學會了 1 + 1 = 2 這個規則,我們馬上就可以知道 一顆蘋果加上一顆蘋果 等於 兩顆蘋果。

但是,現在的問題就變成,本體論要怎麼來呢?現階段本體論通常需要人工建置,即使電腦有複製方便的特性,本體論往往也需要維護或編輯修改。這一切如果都要人工達到,起不是又回到原點,電腦的舉一反三,又變成要依賴人類舉一反三的能力了?尤其某些領域可能是大量的資料,電腦處理大量資料有速度上的優勢,缺少的就是自動學習本體論的能力。因此如果讓電腦自己學出本體論,讓電腦自己維護本體論,就是一個大問題。這個問題就和如何讓電腦自動整理我們桌面的資料夾,如何自動把檔案歸類到我想要的資料夾一樣困難。延伸閱讀桌面整理程式的構想

不過總該有個起頭。這邊我想到的一個可能答案,就是「抽象化」。譬如說我們如果從來沒有上過數學課,我們不知道 1+1 = 2 這個一般的規則。但是我們曾經兩隻手各拿著一顆蘋果,然後有兩顆蘋果的感覺。我們也曾經兩隻手各拿著一顆橘子,然後有兩顆橘子的感覺。就這樣子反反覆覆,日復一日,終於有一天,Eureka! 這兩種感覺共通的部分,就是 1個 加 1個 等於 2個!人類第一次發現,或是抽象出一個道理,叫做 1+1 = 2 ,即使那個時候可能連文字數字都沒有,但是在人腦中,終於有了這個可以靈活運用,舉一反三的規則,有了一個本體論,讓我們遇到的不管是橘子或蘋果,只是要和數量相關的運算,就可以直接套用 1+1 = 2,進一步推廣 10 + 10 = 20等規則!

所以抽象化的第一步,可能就是尋找兩件事情的「共同點」。有了共同點,就可以往上抽象化一層。人類和猩猩因為某些共同點,因此可以一起歸類在靈長目,在尋找其他的共同點,就可以和其他動物一起歸類在脊索動物門。「共同點」的尋找,應該就是本體論學習的第一步了。不知道各位是否還記得介紹拓樸的那篇文章呢?開集合與拓樸空間。一個拓樸空間,也是有交集聯集的定義在裡面。因此這也是我們可以繼續思考的方向!生物上的模型,像是神經網路如何做尋找共同點的功能,也是我們可以參考的方向!

延伸閱讀

喜歡這篇文章嗎? 分享出去給作者一點鼓勵吧!
  • Mr. Tomorrow

    …..這篇文章很有趣!!!

    其實很多時候人類也做不到樣版比對……..

  • 謝謝Mr. Tomorrow
    有些事情人類很容易做到
    但是電腦還沒有辦法
    譬如說手寫辨識 圖片辨識等等
    不過也有些事情不僅電腦不容易
    對人類來說也不容易
    我目前想到的是和群體行為有關的辨識
    譬如說股市 選舉等等
    因為每個人只有自己或區域上的資訊
    想要得到全域的結果
    就和電腦想要做到手寫辨識和圖形辨識一樣困難囉…

  • 謝謝Mr. Tomorrow
    有些事情人類很容易做到
    但是電腦還沒有辦法
    譬如說手寫辨識 圖片辨識等等
    不過也有些事情不僅電腦不容易
    對人類來說也不容易
    我目前想到的是和群體行為有關的辨識
    譬如說股市 選舉等等
    因為每個人只有自己或區域上的資訊
    想要得到全域的結果
    就和電腦想要做到手寫辨識和圖形辨識一樣困難囉…

  • Pingback: 化整為零與見樹又見林的人工智()

  • Pingback: 雪釀冷玉♀ viking's blog()

  • Jim

    小弟碩士論文剛好就是ontology領域的…
    基本上最純形式的ontology應該是graph, 而tree是它其中一個subset…
    分類用的ontology等於是用”is-a relation”跟”tree structure”的template建構的…
    車子則是用”has-a relation”跟tree structure…
    一點小comment…

  • Jim

    小弟碩士論文剛好就是ontology領域的…
    基本上最純形式的ontology應該是graph, 而tree是它其中一個subset…
    分類用的ontology等於是用”is-a relation”跟”tree structure”的template建構的…
    車子則是用”has-a relation”跟tree structure…
    一點小comment…

  • 嗯….如果用點代表每一個概念本身
    用線代表概念之間的關係
    就可以形成一個圖(graph)
    如果具有方向性
    還有一個問題…就是有沒有迴圈(cycle)
    有些ontology會要求是DAG(direct-acyclic graph)
    也就是具有方向性 沒有回圈的圖
    沒有迴圈的圖….比較能夠避免循環定義的問題
    也就是說…A是一種B, B是一種C, C是一種D, D又是一種A
    不過有一家公司名字就叫做Cyc….是用邏輯處理語意的公司
    還有OpenCyc可以使用
    不知道是不是因為可以處理循環定義(cycle)的原因囉?

  • 嗯….如果用點代表每一個概念本身
    用線代表概念之間的關係
    就可以形成一個圖(graph)
    如果具有方向性
    還有一個問題…就是有沒有迴圈(cycle)
    有些ontology會要求是DAG(direct-acyclic graph)
    也就是具有方向性 沒有回圈的圖
    沒有迴圈的圖….比較能夠避免循環定義的問題
    也就是說…A是一種B, B是一種C, C是一種D, D又是一種A
    不過有一家公司名字就叫做Cyc….是用邏輯處理語意的公司
    還有OpenCyc可以使用
    不知道是不是因為可以處理循環定義(cycle)的原因囉?

  • sincoew

    各位前輩好,
    小弟剛好碩論朝有關本體論的方向,
    請各位前輩若對本體論有深刻的了解,
    能否指導或給個意見參考呢?
    或是有任何有趣的應用。

    謝謝

  • sincoew

    各位前輩好,
    小弟剛好碩論朝有關本體論的方向,
    請各位前輩若對本體論有深刻的了解,
    能否指導或給個意見參考呢?
    或是有任何有趣的應用。

    謝謝

  • sincoew您好
    之前唸書的時候接觸過一些semantic web的東西
    可以參考W3C相關的網頁 像是這個
    http://www.w3.org/2001/sw/
    至於semantic web整個大意來說
    主要是想把每一個網頁當成是一份XML
    然後在上面用RDF(一種特殊的XML)來描述原來文件裡面各個node之間的關係
    並且也定義基本的類別
    再上一層則是有DAML+OIL等描述語言(也是XML)
    可以用來做邏輯推理的動作
    —————-
    這些描述語言 標記語言(markup language)
    無論是RDF還是DAML+OIL
    都是為了讓機器讀懂網頁
    讓網頁不只是人看懂…機器也可以了解
    了解之後…機器就可以作為每個人的小秘書
    從旅行訂機票..到各種電子商務網站
    每個網頁機器都因為有了RDF, DAML+OIL的資料
    可以推理以後幫使用者在網頁上面訂票訂房
    讓機器成為人類在網站上面的智慧型代理人(Intelligent Agent)
    —————-
    這大概就是Semantic Web的內容和目標
    再生物醫學領域也有ontology相關的研究
    目的是要讓醫學的資訊..同樣可以讓機器了解語意後
    作一些自動化的工作…譬如說自動化文件搜尋等等
    GeneOntology就是其中一個例子
    http://www.geneontology.org/
    可以參考一下 🙂

  • sincoew您好
    之前唸書的時候接觸過一些semantic web的東西
    可以參考W3C相關的網頁 像是這個
    http://www.w3.org/2001/sw/
    至於semantic web整個大意來說
    主要是想把每一個網頁當成是一份XML
    然後在上面用RDF(一種特殊的XML)來描述原來文件裡面各個node之間的關係
    並且也定義基本的類別
    再上一層則是有DAML+OIL等描述語言(也是XML)
    可以用來做邏輯推理的動作
    —————-
    這些描述語言 標記語言(markup language)
    無論是RDF還是DAML+OIL
    都是為了讓機器讀懂網頁
    讓網頁不只是人看懂…機器也可以了解
    了解之後…機器就可以作為每個人的小秘書
    從旅行訂機票..到各種電子商務網站
    每個網頁機器都因為有了RDF, DAML+OIL的資料
    可以推理以後幫使用者在網頁上面訂票訂房
    讓機器成為人類在網站上面的智慧型代理人(Intelligent Agent)
    —————-
    這大概就是Semantic Web的內容和目標
    再生物醫學領域也有ontology相關的研究
    目的是要讓醫學的資訊..同樣可以讓機器了解語意後
    作一些自動化的工作…譬如說自動化文件搜尋等等
    GeneOntology就是其中一個例子
    http://www.geneontology.org/
    可以參考一下 🙂

  • sincoew

    多謝前輩指引,
    若有問題在請前輩指點!
    謝謝~!

  • sincoew

    多謝前輩指引,
    若有問題在請前輩指點!
    謝謝~!

  • Sincoew

    請問前輩, 有關於Ontology較深入的問題~ , 不知道是否方便詢問?
    是否能請前輩給個聯絡方式呢? (若有打擾請見諒)
    晚輩的信箱: [email protected]