<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mr./Ms. Days (MMDays) - 網路, 資訊, 觀察, 生活MMDays &#8211; haystack</title>
	<atom:link href="http://mmdays.com/tag/haystack/feed/" rel="self" type="application/rss+xml" />
	<link>http://mmdays.com</link>
	<description>網路, 產業, 資訊, 觀察, 生活, 電影, 技術, 新知, 科技, 媒體, 趨勢, Web 2.0</description>
	<lastBuildDate>Thu, 24 May 2012 16:59:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>本體論: 讓舉一反三變得可能</title>
		<link>http://mmdays.com/2008/06/16/ontology/</link>
		<comments>http://mmdays.com/2008/06/16/ontology/#comments</comments>
		<pubDate>Sun, 15 Jun 2008 19:32:36 +0000</pubDate>
		<dc:creator>Mr. Thursday</dc:creator>
				<category><![CDATA[Mr. Thursday]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[專欄]]></category>
		<category><![CDATA[數學]]></category>
		<category><![CDATA[電腦科學]]></category>
		<category><![CDATA[haystack]]></category>
		<category><![CDATA[ontology]]></category>
		<category><![CDATA[protege]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[本體論]]></category>

		<guid isPermaLink="false">http://mmdays.com/?p=5965</guid>
		<description><![CDATA[Posted By Mr. Thursday 子曰:「舉一隅不以三隅反，則不復也。」所謂舉一反三，就是可以靈活應用已經學過的規則，在新的情況上面。譬如說，第一堂數學課，可能會教到一顆蘋果加上一顆蘋果，等於兩顆蘋果，但是考試的時候問到，一顆橘子加上一顆橘子，等於幾顆橘子？這個時候我們不會因為蘋果變成橘子，就忘記後面一個抽象化的規則：1 + 1 = 2 。因此，舉一反三就是能夠把經驗歸納成一個規則來表示，但是這個規則是一條具有彈性的規則，可以在適當的情況下拿出來應用，即使現在面對的情況和過去遇到的經驗有些微不同，譬如說蘋果變成橘子，但是我們可以把經驗抽象萃取出來的規則，靈活運用在新的情況上面，因此一顆橘子加一顆橘子，就如同一顆蘋果加上一顆蘋果一樣，答案是兩顆橘子。 對於人類來說，舉一反三在某些領域，人類表現得不錯，然而電腦計算機來說，舉一反三仍舊是人工智慧的一個瓶頸，主要的問題，我想本體論的學習與維持，是其中一環。接下來我就分別就「規則」、「本體論」，分別介紹和討論，一起探討如果要讓計算機和人一樣，可以舉一反三，有哪些困難，又有哪些可能的解決方法？ 規則: 從觀察到行動的過程 所謂「規則」(rule)，我們可以把他看成是人類從觀察 (observation) 到行動 (action) 之間的一個對應關係。簡單的規則可以是「如果下雨，就撐傘」。複雜的規則可以是「如果高速公路塞車而且高鐵又打折，就做高鐵，否則&#8230;」。因此，一個「規則」，通常都有一個「如果&#8230;」的部分，以及一個「則&#8230;」的部分。「如果&#8230;」就像是我們對環境作觀察，「則&#8230;」就像是我們在環境中開始行動。一條規則，就像是把觀察和行動作一個對應 (mapping)，複雜的規則，就是一種複雜的對應。至於人類怎樣子學出這種觀察到行動之間應該有的對應，也就是如何學出規則？心理學上面各種學習理論，有習慣化、敏感化、制約學習，可以參考學習三部曲：習慣、敏感、和制約學習。人工智慧和機器學習裡面對於學習的方法，則是有幾種劃分，像是監督式學習 (supervised learning)、非監督式學習 (unsupervised learning)、加強式學習 (reinforcement learning)的劃分，或是模型式(model-based learning)、案例式(instance-based learning)學習的劃分。可以參考KNN演算法， KNN演算法 (更正篇)。 符號化規則：觀察與行動的彩排 不管有沒有文字，不管有沒有數字系統，人類甚至簡單的生物系統，都有自己的規則，也就是說自己會針對遇到的環境，作出適當的反應行動。人類或是高等動物，可以把規則靈活運用，舉一反三。人類另一個更特別的地方，就在於可以把規則符號化，不管是文字或數字，符號化的好處就是讓人可以在腦海裡面先彩排，這種能力讓人類可以做更好的抉擇，也讓人類行為有更多的可能。舉例來說，小時後可能會在沙坑上面堆一座橋，剛開始可能堆出來的橋不大穩固，經過多次經驗以後，我們可能學出一條規則，知道怎樣子堆出來的橋比較穩固。但是如果我們要造一作跨海大橋，我們可能沒有那麼多時間，也沒有那麼多鋼筋水泥，可以這樣試試看、那樣試試看，一直到試出一條穩固的跨海大橋為止。我們有土木工程專家，知道基本的力學規則，先在紙上或是計算機上計算需要多少鋼筋水泥，再依照這個比例去建造一作跨海大橋。 因此符號化歸則，讓人類比動物有更靈活的規則運用了！規則在符號化之後，「如果&#8230;」的這一部分，也就變成一種「樣版的比對」過程 (template matching)。譬如說有一個化學方程式 HCl + NaOH &#8211;&#62; NaCl + H2O 我們甚麼時候可以應用這個規則呢？就是當我們遇到HCl和NaOH在一起的情況的時候。聖經裡面有一條規則「虛心的人有福了，因為天國是他們的」。這規則要應用在誰身上呢？就是應用在「虛心的人」身上了。不過接下來就是今天要討論的重點：「虛心的人」是誰呢？就像 1 + 1 = 2 一樣，1  可以代表一顆蘋果，也可以代表一顆橘子，舉一反三，才能把過去的經驗，化成可以靈活運用的規則，應付新的問題，生存下來。而這種靈活運用規則的能力，或者說，把「如果&#8230;」這部分，也就是樣版比對 (template matching)的這一環可以靈活比對，需要甚麼樣子的能力呢？人類的抽象化能力、聯想能力，是一種可能。邏輯上面有歸納與演譯。計算機科學，則是可以經由「本體論」(ontology) 來幫忙完成這項艱鉅的任務。 本體論: 敘述事物關係的樹狀結構 本體論最早是從哲學發展出來的學問，後來資訊科學把本體論應用到人工智慧上面的問題。簡單地說，本體論就是一種分類的方式，份類出來會是一顆樹的樣子，樹根是最一般的概念，葉子的地方則是最細分的概念，譬如說車子的本體論，我們可能在樹根的地方寫上「車子」，接下來我們可能根據用途，分成自用車、公車、救火車、救護車、計程車、&#8230;等等。這就是一個簡單的樹狀分類。如果對樹狀結構不大熟悉的讀者，或許可以再回想一下，我們對生物的分類，是不是有所謂的「界門綱目科屬種」呢？每一個動物，依照最上一層的屬性，就先分成許多界，每個界在分成許多門，在細分成綱、目、科、屬，最後細分到種。每分一層，就像樹枝展開一樣，因此整個分類結構看起來，就像是一棵樹的形狀了。 [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><strong>Posted By <span style="color: #008000;">Mr. Thursday</span></strong></p>
<p>子曰:「舉一隅不以三隅反，則不復也。」所謂舉一反三，就是可以靈活應用已經學過的規則，在新的情況上面。譬如說，第一堂數學課，可能會教到一顆蘋果加上一顆蘋果，等於兩顆蘋果，但是考試的時候問到，一顆橘子加上一顆橘子，等於幾顆橘子？這個時候我們不會因為蘋果變成橘子，就忘記後面一個抽象化的規則：1 + 1 = 2 。因此，舉一反三就是能夠把經驗歸納成一個規則來表示，但是這個規則是一條具有彈性的規則，可以在適當的情況下拿出來應用，即使現在面對的情況和過去遇到的經驗有些微不同，譬如說蘋果變成橘子，但是我們可以把經驗抽象萃取出來的規則，靈活運用在新的情況上面，因此一顆橘子加一顆橘子，就如同一顆蘋果加上一顆蘋果一樣，答案是兩顆橘子。</p>
<p>對於人類來說，舉一反三在某些領域，人類表現得不錯，然而電腦計算機來說，舉一反三仍舊是人工智慧的一個瓶頸，主要的問題，我想本體論的學習與維持，是其中一環。接下來我就分別就「規則」、「本體論」，分別介紹和討論，一起探討如果要讓計算機和人一樣，可以舉一反三，有哪些困難，又有哪些可能的解決方法？</p>
<p><span id="more-5965"></span></p>
<p style="text-align: center;"><strong>規則: 從觀察到行動的過程</strong></p>
<p>所謂「規則」(rule)，我們可以把他看成是人類從觀察 (observation) 到行動 (action) 之間的一個對應關係。簡單的規則可以是「如果下雨，就撐傘」。複雜的規則可以是「如果高速公路塞車而且高鐵又打折，就做高鐵，否則&#8230;」。因此，一個「規則」，通常都有一個「如果&#8230;」的部分，以及一個「則&#8230;」的部分。「如果&#8230;」就像是我們對環境作觀察，「則&#8230;」就像是我們在環境中開始行動。一條規則，就像是把觀察和行動作一個對應 (mapping)，複雜的規則，就是一種複雜的對應。至於人類怎樣子學出這種觀察到行動之間應該有的對應，也就是如何學出規則？心理學上面各種學習理論，有習慣化、敏感化、制約學習，可以參考<a href="http://mmdays.com/2008/01/24/learning_conditioning/" target="_blank">學習三部曲：習慣、敏感、和制約學習</a>。人工智慧和機器學習裡面對於學習的方法，則是有幾種劃分，像是監督式學習 (supervised learning)、非監督式學習 (unsupervised learning)、加強式學習 (reinforcement learning)的劃分，或是模型式(model-based learning)、案例式(instance-based learning)學習的劃分。可以參考<a href="http://mmdays.com/2007/05/16/knn/" target="_blank">KNN演算法</a>， <a href="http://mmdays.com/2007/05/18/knn_errata/" target="_blank">KNN演算法 (更正篇)</a>。</p>
<p style="text-align: center;"><strong>符號化規則：觀察與行動的彩排</strong></p>
<p>不管有沒有文字，不管有沒有數字系統，人類甚至簡單的生物系統，都有自己的規則，也就是說自己會針對遇到的環境，作出適當的反應行動。人類或是高等動物，可以把規則靈活運用，舉一反三。人類另一個更特別的地方，就在於可以把規則符號化，不管是文字或數字，符號化的好處就是讓人可以在腦海裡面先彩排，這種能力讓人類可以做更好的抉擇，也讓人類行為有更多的可能。舉例來說，小時後可能會在沙坑上面堆一座橋，剛開始可能堆出來的橋不大穩固，經過多次經驗以後，我們可能學出一條規則，知道怎樣子堆出來的橋比較穩固。但是如果我們要造一作跨海大橋，我們可能沒有那麼多時間，也沒有那麼多鋼筋水泥，可以這樣試試看、那樣試試看，一直到試出一條穩固的跨海大橋為止。我們有土木工程專家，知道基本的力學規則，先在紙上或是計算機上計算需要多少鋼筋水泥，再依照這個比例去建造一作跨海大橋。</p>
<p>因此符號化歸則，讓人類比動物有更靈活的規則運用了！規則在符號化之後，「如果&#8230;」的這一部分，也就變成一種「樣版的比對」過程 (template matching)。譬如說有一個化學方程式</p>
<p style="text-align: center;">HCl + NaOH &#8211;&gt; NaCl + H2O</p>
<p>我們甚麼時候可以應用這個規則呢？就是當我們遇到HCl和NaOH在一起的情況的時候。聖經裡面有一條規則「虛心的人有福了，因為天國是他們的」。這規則要應用在誰身上呢？就是應用在「虛心的人」身上了。不過接下來就是今天要討論的重點：「虛心的人」是誰呢？就像 1 + 1 = 2 一樣，1  可以代表一顆蘋果，也可以代表一顆橘子，舉一反三，才能把過去的經驗，化成可以靈活運用的規則，應付新的問題，生存下來。而這種靈活運用規則的能力，或者說，把「如果&#8230;」這部分，也就是樣版比對 (template matching)的這一環可以靈活比對，需要甚麼樣子的能力呢？人類的抽象化能力、聯想能力，是一種可能。邏輯上面有歸納與演譯。計算機科學，則是可以經由「本體論」(ontology) 來幫忙完成這項艱鉅的任務。</p>
<p style="text-align: center;"><strong>本體論: 敘述事物關係的樹狀結構</strong></p>
<p>本體論最早是從哲學發展出來的學問，後來資訊科學把本體論應用到人工智慧上面的問題。簡單地說，本體論就是一種分類的方式，份類出來會是一顆樹的樣子，樹根是最一般的概念，葉子的地方則是最細分的概念，譬如說車子的本體論，我們可能在樹根的地方寫上「車子」，接下來我們可能根據用途，分成自用車、公車、救火車、救護車、計程車、&#8230;等等。這就是一個簡單的樹狀分類。如果對樹狀結構不大熟悉的讀者，或許可以再回想一下，我們對生物的分類，是不是有所謂的「界門綱目科屬種」呢？每一個動物，依照最上一層的屬性，就先分成許多界，每個界在分成許多門，在細分成綱、目、科、屬，最後細分到種。每分一層，就像樹枝展開一樣，因此整個分類結構看起來，就像是一棵樹的形狀了。</p>
<p style="text-align: center;"><img class="aligncenter" src="http://searchdatamanagement.techtarget.com/WhatIs/images/tree_structure.gif" alt="" width="307" height="369" /></p>
<p style="text-align: center;">圖1 <a href="http://searchdatamanagement.techtarget.com/WhatIs/images/tree_structure.gif" target="_blank">樹狀結構示意圖</a></p>
<p>更多樹狀結構的介紹可以參考<a href="http://mmdays.com/2008/01/19/data_structure_tree/" target="_blank">由樹的前序、中序、後序走法來談資料結構</a>。</p>
<p>不同的領域，也就有各自的本體論 (ontology)，就是各自的分類方式。譬如說圖書館對於書籍的分類，又是另外一種本體論。甚至我們自己電腦的資料夾，也是一種樹狀結構，也可以算是一種廣義寬鬆的本體論。每個本體論裡面的節點，就是一種概念 (concept)，越接近樹根的節點，就是越一般的概念 (general concept)，越接近葉子的節點，就是越特定的概念 (specific concept)。節點之間的連結，就是關係的連結 (relation)。每一層之間的關係，就是一種繼承的關係，這種繼承的關係，會讓比較一般的概念的屬性，可以直接套用在特定概念上面。譬如說哺乳綱有的特性，靈長目的動物都會有，因為「綱」比「目」來的一般 (general ceoncept)。</p>
<p>其他繼承的屬性，常見的有 is-a 和 has-a 的關係，譬如說剛才提到的生物分類本體論，靈長目是一種 (is-a) 哺乳動物。如果就車子的本體論，可能就變成車子有 (has-a) 車門、車燈、輪胎。透過這兩種關係，我們就可以把某個領域的概念，從最一般的概念，排列到最特定的概念，連接成一棵樹狀的結構，成為本體論 (ontology)。</p>
<p>有了本體論之後，最大的好處，就是讓電腦能夠舉一反三。譬如說語意網 (Semantic Web)裡面，ontology就是一個重要的部分。下面就是一張 Semantic Web的積木圖，不知道各位是否看到Ontology了呢？</p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.semantic-conference.com/images/SemanticWebStack.jpg" alt="" width="499" height="330" /></p>
<p style="text-align: center;">圖2 <a href="http://www.semantic-conference.com/images/SemanticWebStack.jpg" target="_blank">Semantic Web</a></p>
<p>除此之外，Stanford的Mark Musen的團隊也開發了 Protégé 這個工具，可以創造和編輯自己的本體論，並且儲存成共通的 OWL 語言格式，讓電腦做進一步的邏輯推理。</p>
<p style="text-align: center;"><img class="aligncenter" src="http://protege.stanford.edu/images/protege-frames.jpg" alt="" width="215" height="183" /></p>
<p style="text-align: center;">圖3 <a href="http://protege.stanford.edu/images/protege-frames.jpg" target="_blank">Protégé畫面</a></p>
<p>MIT的活氧計畫 (Oxygen Project) 裡面也有一項子計畫叫做 HayStack，是一套具有基本本體論的工具，希望把本體論應用到桌面資料夾和各種檔案的分類整理上面。HayStack主要是用 RDF來描述每個物件，也有自己的視窗介面，有興趣的不妨也去下載來試用看看。</p>
<p style="text-align: center;"><img class="aligncenter" src="http://oxygen.csail.mit.edu/images/Haystack.jpg" alt="" width="232" height="173" /></p>
<p style="text-align: center;">圖4 <a href="http://oxygen.csail.mit.edu/images/Haystack.jpg" target="_blank">HayStack畫面</a></p>
<p style="center;"><strong>本體論的學習與抽象化</strong></p>
<p>有了本體論，剛才提到規則的靈活運用，在電腦上面就變得可能，因為我們只要學會一般的規則，就可以應用到特定的概念上面。譬如說我們知道了哺乳動物的一些規則，靈長目動物馬上就可以應用這些規則，不用再學一遍，就像我們學會了 1 + 1 = 2 這個規則，我們馬上就可以知道 一顆蘋果加上一顆蘋果 等於 兩顆蘋果。</p>
<p>但是，現在的問題就變成，本體論要怎麼來呢？現階段本體論通常需要人工建置，即使電腦有複製方便的特性，本體論往往也需要維護或編輯修改。這一切如果都要人工達到，起不是又回到原點，電腦的舉一反三，又變成要依賴人類舉一反三的能力了？尤其某些領域可能是大量的資料，電腦處理大量資料有速度上的優勢，缺少的就是自動學習本體論的能力。因此如果讓電腦自己學出本體論，讓電腦自己維護本體論，就是一個大問題。這個問題就和如何讓電腦自動整理我們桌面的資料夾，如何自動把檔案歸類到我想要的資料夾一樣困難。延伸閱讀<a href="http://mmdays.com/2008/01/16/desktop_organizer/" target="_blank">桌面整理程式的構想</a>。</p>
<p>不過總該有個起頭。這邊我想到的一個可能答案，就是「抽象化」。譬如說我們如果從來沒有上過數學課，我們不知道 1+1 = 2 這個一般的規則。但是我們曾經兩隻手各拿著一顆蘋果，然後有兩顆蘋果的感覺。我們也曾經兩隻手各拿著一顆橘子，然後有兩顆橘子的感覺。就這樣子反反覆覆，日復一日，終於有一天，Eureka! 這兩種感覺共通的部分，就是 1個 加 1個 等於 2個！人類第一次發現，或是抽象出一個道理，叫做 1+1 = 2 ，即使那個時候可能連文字數字都沒有，但是在人腦中，終於有了這個可以靈活運用，舉一反三的規則，有了一個本體論，讓我們遇到的不管是橘子或蘋果，只是要和數量相關的運算，就可以直接套用 1+1 = 2，進一步推廣 10 + 10 = 20等規則！</p>
<p>所以抽象化的第一步，可能就是尋找兩件事情的「共同點」。有了共同點，就可以往上抽象化一層。人類和猩猩因為某些共同點，因此可以一起歸類在靈長目，在尋找其他的共同點，就可以和其他動物一起歸類在脊索動物門。「共同點」的尋找，應該就是本體論學習的第一步了。不知道各位是否還記得介紹拓樸的那篇文章呢？<a href="http://mmdays.com/2008/02/08/open_set/" target="_blank">開集合與拓樸空間</a>。一個拓樸空間，也是有交集聯集的定義在裡面。因此這也是我們可以繼續思考的方向！生物上的模型，像是神經網路如何做尋找共同點的功能，也是我們可以參考的方向！</p>
<p>延伸閱讀</p>
<ul>
<li>(Wikipedia) <a href="http://en.wikipedia.org/wiki/Ontology" target="_blank">Ontology</a> <a href="http://zh.wikipedia.org/wiki/%E6%9C%AC%E4%BD%93%E8%AE%BA" target="_blank">本體論</a></li>
<li>(Semantic Web) <a href="http://semanticweb.org/wiki/Ontology" target="_blank">Ontology</a></li>
<li><a href="http://www.geneontology.org/" target="_blank">Gene Ontology</a></li>
</ul>
<p><br/>
<div>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><a href="http://plurktop.mmdays.com/replurkdetail/?link=19c66fbb186bd5b8c527f95f00329ee9" title="看看其他人討論內容" target="_blank"><img src="http://plurktop.mmdays.com/images/replurk_1.png" style="border:0"></a></td>
</tr>
<tr>
<td><a href="http://plurk.com/?qulaifier=shares&#038;status=http%3A%2F%2Fmmdays.com%2F2008%2F06%2F16%2Fontology%2F+%28%E6%9C%AC%E9%AB%94%E8%AB%96%3A+%E8%AE%93%E8%88%89%E4%B8%80%E5%8F%8D%E4%B8%89%E8%AE%8A%E5%BE%97%E5%8F%AF%E8%83%BD%29+-+%E8%BD%89%E5%99%97%E6%8E%92%E8%A1%8C%E6%A6%9C+http%3A%2F%2Fplurktop.mmdays.com%2Freplurk" title="推到噗浪" target="_blank"><img style="border:0" src="http://plurktop.mmdays.com/images/replurk_2.png" /></a></td>
</tr>
</table>
</div>
<p><br/><a href="http://www.facebook.com/MMDays" target="_blank">加入MMDays在facebook的粉絲團 隨時閱讀最新文章</a><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://mmdays.com/2008/06/16/ontology/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>

