Author Archives: Pesty

情婦節

當時間一點一點的走向十二點,躺在床上的男女靜靜的相擁。他們誰也沒有睡著,但誰也不願動上一動;儘管靜止的身軀並不能阻止時間的流動,至少,能讓時間過得更真實一點。

男人翻了個身,幾乎是在同時,女人發出了冰冷冷的聲音,

「你要走了?」

「不,我只是….」男人說,「翻一個身….」

「你手痠了嗎?」女人說,「我很重,是嗎?」

「不,一點也不,寶貝,」男人撫摸著女人的秀髮,「只是翻一個身而已,真的。」

分針好像在思考著該不該追上時針,而時針也在十二之前等待著分針。男人和女人把每一個滴答都聽得分外清楚,靜默,似乎是為了等待某一個聲音的到來。

「也許你該走了,」女人說,「沒有關係的。」

「不,別擔心,」男人抓著頭對著天花板說,「我想多待一會。」

分針終究還是追上了時針,咕咕鐘裡的布鼓鳥打破了沉默。男人悄悄的翻下了床,女人轉向另一邊。男人穿上了襯衫、套上了長褲,邊甩著剛戴上的手錶喀啦喀啦的,撫摸著背對他的女人。

「我走了。」男人輕輕的打開門,走出去。

女人聽著男人的腳步聲漸遠,緩緩的起了身,看了鏡中的自己一眼,走向另一扇門….。


男人悄悄的打開門,走入房間。女人躺在床上背對著他;他褪下襯衫、脫下褲子,悄聲的爬上床舖,從背後抱著女人。

「怎麼這麼晚….?」

「嗯,今天比較忙。」男人說,「我累了,睡吧。」

女人不發一語,聽著男人逐漸穩定而規律的呼吸。今天是個特別的日子,情婦節。只是,為什麼當我男人一天的情婦,卻只帶來雙重的空虛?

MySQL 4.1 使用 UTF8 所遭遇的問題及解決方法

最近換成使用 MySQL 4.1 的人越來越多了,在許多地方也看到了哀嚎聲四起,遇到的狀況不外乎是原本的資料突然都變成不正常了,所以在這邊提供正解。

事實上這個問題不光是使用 UTF8 會有,照理說使用其他語系也會有相同的問題,例如如果我們原本用 GB2312 來存資料,結果現在升級後應該也會有問題。解決之道也很簡單:資料庫是什麼編碼,之後 Client 端程式就用什麼編碼和它溝通。

那要怎麼知道資料庫原本是什麼編碼呢?我在 commit 給 plog 中 adodb 的 patch 中包含了一段檢查 database encoding 的 code:


function _getDbDefaultEncoding($argDatabasename){
   if (!$argDatabasename) {
     return false;
   }

   // We use a SHOW CREATE DATABASE command to
   // show the original SQL character set when DB was
   // created.
   $result = mysql_query("SHOW CREATE DATABASE
        $argDatabasename", $this->_connectionID);
   if (mysql_num_rows($result) < 0 ) {
      // The specified db name is wrong!
      return false;
   }
   $dbInfo = mysql_fetch_row($result);
   $pattern = '/40100 DEFAULT CHARACTER SET (w+) /';
   if ( (preg_match($pattern, $dbInfo[1], $match) > 0) ) {
      return $match[1];
   }
   return false;
}

這個函式會檢查當初資料庫建立的編碼方式,並回傳回來,這樣可以確保我們不是冒然把 MySQL client 的 encoding 設定成 UTF-8 (這是目前看到大多數人的解法)。

接下來,在 SelectDB() 函式中,做以下修改:


function SelectDB($dbName)
{
  $this->databaseName = $dbName;
  if ($this->_connectionID) {
+   $dbEncoding =
+       $this->_getDbDefaultEncoding($dbName);
+   if ($dbEncoding) {
+     mysql_query("SET NAMES $dbEncoding",
+         $this->_connectionID);
+   }
     return @mysql_select_db($dbName, $this->_connectionID);
  }
  else return false;

這樣應該不管原本的編碼為何,讀和寫都不會有問題;唯一要注意的是,如果你的 MySQL 不是 4.1 以上,有些指令並不支援,所以這段 patch 不適用;我也替 pLog 寫了一個 isSupportUtf8() 的 function call, 可以用來檢查是否是 4.1 以上的版本,不過就不再這邊多加贅述了。

P.S. 請注意,如果你沒有學過 PHP,請不要問我該怎麼加入這段程式碼。請尋求你所使用的軟體之開發者的協助。

未來時裝走秀

"Seamless" 這個字用於資訊科學界,最常見的是 "Seamless Computing"。不過現在由 MIT 贊助舉辦的這場 Seamless 未來時裝走秀,指的是流行和資訊科技界之間的 "無縫" — 如何把未來科技整合到流行之中。

Nomad Pneumatics
Image courtesy of Doug Eng

秀展的設計師大多是 MIT、哈佛和羅德島設計學校的學生,在這個草根性十足的走秀之中,各個設計師展現出對於科技服飾的想法,有一些傾向實用主義,就像是 Amanda Parkes 設計的Nomad Pneumatics(上圖) 這雙可以透過腳踏來產生能量的鞋子。有的飾品則象徵味十足,例如 Emily Albinski 設計的 Fuse Necklace(下圖),就用保險絲串成項鍊。

Fuse Necklace
Image courtesy of Doug Eng

在展覽的網站提供了個別作品的設計概念,以及照片集

相關網站:

狂賀本站《線上洗錢中心》一文榮登奇摩知識

今天,在這裡,我要感謝許多人;首先要感謝的是,沒有幽默感和看不懂中文的人,沒有他們,我沒有辦法有今天;接著,我要感謝抄文章又不喜歡加出處的人,沒有他們,我沒有辦法登上奇摩知識。

Blog In Yahoo! Knowledge 1

原本只看到最下面 "號稱可幫你洗錢的網站" 連結到本站的《線上洗錢中心》一文,後來才發現原來連上面的洗錢知識也是 "引用" 自文章。

有圖有真相:

奇摩知識: 《『洗錢』的方式為何?》一文

舊文: 《線上洗錢中心》

常識推理系統 — OpenMind & Learner2

不管是哪一個人工智慧學者都會同意,學習能力才是邁向智慧的關鍵。但學習並不是一件容易的事,特別是在常識推理的領域中。這些對於人類毫無困難、但是卻多如牛毛的常識,往往讓電腦在推理的過程中屢遇挫折。

毫無疑問的,只要我們能夠建立一個包含所有常識的資料庫,又能夠建立一套快速搜尋的演算法,並提出能夠解決彼此矛盾的方法,我們就有機會讓電腦走入我們的生活。WWW 的發明人 Tim Berners-Lee 認為人們在網路上所發表的訊息本身就是最好的知識庫,因此著手制訂讓機器易於處理的格式規定,以便建立 Semantic Web (語意網) ,作為機器智能的基礎。

另一群人工智慧的研究者則利用 Internet 的群眾力量,來將這些難以數計的常識建入資料庫之中。MIT Media Lab 所建立的 OpenMind CommonSense 就是這樣的一個計劃,它設計了二十幾種方式來輸入常識,包括定義事實(Enter a fact)、因果關係(Cause and effect)、為什麼? (Explain why?) 等等,有一些方式是讓使用者直接輸入答案,有一些則是電腦的疑點要請使用者釐清。

南加大的 Learn2 系統也是秉持著同樣的想法,它請使用者來回答一些基本的問題,並透過上一個問題來詢問下一個問題。例如,當你輸入 "榔頭是用來敲東西的",它就會問,還有什麼東西可以用來"敲"?或是,在它的知識庫中已經知道門也可以敲,那它們是否相像?

除了建立知識庫之外,更重要的是運用常識推理。OpenMind 提供了 "ConceptNet Toolkit",讓其他需要使用常識推理的研究者可以直接套用,或是自行訓練一個特定領域的常識庫。透過公開的 ConceptNet,大家可以自行發展出各自的應用,而不再需要重複建立常識庫。

然而,目前關於常識庫的建立大都集中於英文上。在中文的領域其實還是一片空白,最大的問題應該還是出在斷字斷詞上,如果連使用者的回答都無法正確斷字斷詞,那麼要建立這樣一個常識庫顯然還有困難。或許也可以利用相同的方式來請使用者協助斷詞,但是要怎麼把建立常識庫變成一件好玩的事,其實才是通往成功之道。

參考資料:

那個人

「ㄟ,你會不會覺得,有一點點不踏實的感覺,在我們相處了這麼久、過著如此幸福的日子之後?」女孩躺在男孩的懷中,問道。

男孩看著遠方,用一種似笑非笑的表情說,「有的故事得透過其他故事來解;妳的這個問題,也得透過其他故事來解喲。」

「那是發生在好久以前的事了;有一對年輕的男孩和女孩正沉浸在熱戀的快樂之中,就像現在的我們一樣。日子是這麼的快樂,除了偶爾男孩的沉默和女孩的任性總是讓彼此又氣又愛之外,一切都是如此的美好。」

「但在他們心中都有一個問號;男孩想著,如果我就這麼沉默下去,她會不會就不愛我了?女孩想著,如果我就這麼任性下去,他會不會就不理我了?問號像是滴在心湖裡的一滴墨汁,逐漸暈開、暈開….。

可是男孩知道女孩心裡在想什麼;他知道女孩想要用任性來試探自己的愛。他對這種技倆了然於心,他不只清楚自己不能變成 "該死的笨男生",更對於過去那個 "該死的笨男生" 再熟悉不過。「絕不能再犯同樣的錯了,」男孩在心裡這樣告訴自己。

女孩也知道男孩的沉默代表什麼。她瞭解內斂和穩重的他才是吸引自己的特質,她知道他的寡言是為了讓自己更能夠表達看法,「絕不能再讓自己陷於缺乏安全感的想像之中了!」女孩在心裡這樣說。

於是他們把自己給藏了起來,只有定時定期的試探對方。他說需要自己的空間,她就給他空間;她耍任性,他就包容。彼此從來沒有不耐。但這也許不是因為愛,而是因為一種算計,因為猜測這是對方給的一個試煉而咬著牙勉強自己。

更慘的是,就算是通過定期的試煉仍然不夠。「他(她)一定知道這是我對他(她)的試煉,」男孩和女孩都想著,「所以他(她)只是勉強自己而已。事實是,他(她)不愛我…。」

幾乎是帶著一種絕望,她們開始對彼此進行不定時的試煉。是的,我有需要,請給我安慰;是的,現在,「否則,你(妳)一定是不愛我的吧….」她們總是在心中這樣嘀咕著。

是怎麼樣的一種狀況,會讓他們變成既彼此滿足、卻又永遠不滿足的一對呢?又是怎麼樣的情境,會讓這樣的競賽持續了數十年之久,已經是一件難以考證的事了。唯一可以確定的是,在旁人的眼中,還有什麼人的吻,比他們的更深情?還有什麼樣的感情,比他們的更堅定?還有怎麼樣的不離不棄,可以做得比他們徹底?

只是,一直到了男孩嚥下最後一口氣的時候,他都還不能確定,女孩是不是全心愛著自己?否則又怎麼會給自己帶來這麼多難題?

而女孩就算在搖椅上認真的把自己的任性重新回想一次,也仍然不能確定,男孩為她做了這麼多,但究竟她是不是男孩的全部?她究竟是不是男孩的 The One?

「我在一個公園遇到那個老婆婆,她說了這個故事給我聽。她用一種屬於年輕女孩的表情對我說,『嘿,小伙子,你知道愛是什麼感覺嗎?』」

「我在公園裡靜靜的聽了她訴說一個很長長的故事;在那個故事裡面,是男孩對女孩一個又一個貼心的過去。我想,如果可以讓對方沉醉在愛的感覺裡面如此長久,那懷疑也許只不過是愛情的催化劑吧。只要今天接著明天,繼續愛著,那就可以一直愛著彼此,很久很久喲….」

「懷疑是會的,但我的明天,還像今天一樣 — 一樣愛妳。」

《巧克力冒險工廠》- 在幸福和想像力的邊界

兒童電影有時候會把想像力當作缺乏邏輯的藉口,這種藉口不僅僅沒有辦法說服成人觀眾,也同樣無法說服兒童。但《巧克力冒險工廠》的故事邏輯非常地清楚,卻又能夠不影響到想像力的發想,實在是一部非常值得欣賞的電影。

這個根據暢銷童書作家羅爾德達爾的小說《巧克力工廠的秘密》改編的電影,有著和童話故事一般的中心思想:好人終有好下場。但是 "好人" 是什麼,卻可以從鏡頭下清楚看出來;那不是靠著哈利波特頭上的命定胎記,也不是靠著壞人的迫害,而是清清楚楚能夠被感覺到的一種味道;當幸福的氣氛在破敗的屋瓦之下流動時,故事之中主角的抉擇既自然、又令人感動。

而要如何實現一個孩童幻想中的巧克力工廠,也是一個挑戰。導演運用了美景來陳述巧克力的氣味,卻也沒有忘了替背後的工廠加上合理又超現實的科學。

但不能不提到的是導演和編劇的觀點。在本片之中其實可以很清楚地瞭解他們要說什麼樣的問題:童年,或者是想像力,或者是幸福,到底是被什麼東西給謀殺了?到底為什麼當我們越來越富裕、但孩子們卻不快樂、不討喜?劇中的情境讓人不禁開始思考這個問題。而導演更利用一個完全無厘頭的歌舞片段,讓觀眾在狂笑之中,把這樣一個問題放入腦袋。

明快的節奏搭上偶爾無厘頭的笑點,這部戲確實是一齣值得一看的作品。唯一比較可惜(但可以理解)的地方是電腦動畫的部份;在片中運用如此大量的電腦動畫,但導演似乎很明確的告訴觀眾 "這不是本片的重點",而露出許多破綻,只不過像歌舞的部份,就不太確定是否用不同的動畫人物來跳會產生更逼真的氣氛。不過整體而言確實是無損於這部片的特色,特別是由 Deep Roy 的演出確實是充滿喜感和動感的。

相關網站:

在舊金山的時光

每次翻出 2000 年去 Berkeley 時的照片,我常常會有一個錯覺,覺得快樂的時間似乎凍結在那個夏天。

那一年夏天雖然只在那裡待了三週,卻覺得像是玩了兩個月一樣充實。第一次去美國的震撼確實是很大的,特別是來到 Berkeley 這個地方,學習在電報街上與乞丐爭道,在每夜每夜的警車和消防車聲中入睡,但是舊金山的活力卻也同樣令人目不暇給。

上週和當初一起去的夥伴們聚餐,回來時在從龍山寺開往江子翠的地鐵上,想起當時候大家也是坐這樣鑽過河底的地鐵、每日每日的前往舊金山探險。我記得我那時剛迷上表坊的作品,還特地跑到劇場外探頭探腦,想像自己來這裡唸劇場的可能性。

還記得我們走了好遠的路,只為了我想吃一碗牛肉麵;還記得我們越過金門大橋,結果發現沒車可以回來;還有走了大半個金門公園,卻發現和金門大橋完全是兩個方向;到卡斯楚街參觀情趣用品店、走進劇場看《悲慘世界》…好多好多的事。

該怎麼解釋那時候的感覺呢…? 到底是什麼讓那時陰沉的我在那裡得到了解脫呢?

離開那裡之前,大家又回到了魚人碼頭;我們在觀光禮品店選了一件 "I Lost My Heart In San Francisco" 的 T-Shirt,一人一件,說好以後每次出來大家都得穿;結果,只有我一個人傻傻的穿 XD

But I really lost my heart in San Francisco….

評《建立以情緒為基礎的代理人決策架構》

上學期的作業報告,丟上來充數。XD

本篇論文主要是應用了情意計算的概念,來設計可以讓 agents 運用情緒資訊來最佳化的架構。

  • 論文題目:建立以情緒為基礎的代理人決策架構
  • 論文作者:清大資工陳光泰/蘇豐文
  • 論文發表於:TAAI 2004

內文簡述

本篇論文主要是提出一個可能的架構,用來在代理人系統的判斷中納入情緒考量,以解決目前以理性為基礎的Agents無法解決的問題,這些問題包括:著重短期利益、不適合產生利人的互助行為、對於事件的優先順序無法有一個完整而精簡的定義方式。藉著Antonio R. Damasio對於缺乏感情判斷能力者的臨床觀察,Affective Computing試圖把情緒納入電腦的判斷參考中,以建立更能夠在實際世界運作良好、與人(Human)和機(agents)合作得更好的擬真程式。

作者首先提出一個情緒架構,用來模擬情緒在人類作決定時所扮演的角色,以及情緒如何影響最終如何影響決定的產生。在這個架構中,環境的輸入先經由Belief Block轉為Belief,Belief再經由參考內在狀態以產生情緒和慾望,這些情緒和慾望參數再經由Planner轉為對應的決策,以朝向最有利於自己的方式改變;而這個改變除了改善自己的狀態外,也包括讓自己的情緒朝向更好的方式改變。

文中對於情緒的表示方式,引用了Piccard提出的方式,以一個Sigmoid function來為情緒建立Threshold和Saturation,其根本理由在於情緒其實是有下限和極限的,在兩個極端時差異其實並不大。

作者並改善南加大提出的情緒評估框架(EAF),在新提出的EEF中新增了一個目標狀態(goal state),以明確的告訴agents如何遠離負面情緒。這種方式的優缺點容後再議。

作者並提出情緒如何合成,參考的觀點包括1.信仰;2.利益;3.代理人;4.經驗。而這些觀點有的又帶有較理性的偏好情感,有的則是非理性的道德情感。在道德情感又分為義務論(Deontology)和目的論(Teleology),以免正義被過份擴張,或是為了多數犧牲少數的情形發生。

經由以上的架構建構出的網路可以用來計算每一個決定背後可能對agent所帶來的”快樂”為何。”快樂”在這個架構中取代了”利益”,成為agent最佳化的目標。由於不同的agents會因為自己的利益、信念、經驗等因素而產生不同的”快樂”,最後在互動的過程中也會產生合作或利它的行為,最終使得系統達到global optima。

問題與討論

  • 情緒是否適合用Sigmoid function來表示?該如何表示極度的情緒產生的「暴虎馮河」行為?

    Sigmoid function的確可以表示一般狀態下的情緒,但是若用來表示盛怒之下、完全不考慮其他事情的情緒,就顯得有點不足了。事實上,在這個狀況下,情緒的作用還比較像是offset極大的二極體(diode),在超過一定範圍後電阻趨近於零。雖然這種情緒帶來的效果往往是不好的,但例如像成在火災時奮力一跳以求能跳到另一個大樓,此時這個決定若是會釋放大量的腎上腺素(而不考慮這樣做是否會造成血醣存量不足),那麼就能夠讓agent更有生存的機會。

    所以除了Sigmoid function外,我相信必定還需要某個function來處理這種緊急狀態。

  • 遠離負面情緒的方式是否能夠embed在EAF中而成為EEF呢?這樣的設計是否有侷限或缺點呢?

    將遠離負面情緒的方式加在描述情緒的描述之中,雖然看起來比較方便agent參考,但是實際上卻仍有兩個問題。

    1. 遠離負面情緒的選項往往不只一個,以巨大聲響而言,細胞內部有兩種學習機制,一種是敏感化、一種是習慣化,前者會引致個體嘗試逃避該刺激的行為,後者則是讓刺激對細胞的影響減弱,兩種方式都可以達到減少負面情緒的作用。如果連細胞層次都有這樣不同的行為產生,更不用說對於高階生物而言應該有多少種對應了,這麼多的對應要如何存於EEF中呢?個體對於各選項的偏好又要如何取捨呢?
    2. 針對goal state個體應該要能夠調適,就如同我們都覺得愛乾淨是好事,但是不顧一切保持乾淨會成為潔癖而影響正常生活;所以個體如何調適自我的情緒以滿足設定錯誤的goal?在自動控制系統中,我們知道在傳統的feedback model,有時候設定的goal會無法達成,造成永遠存在的落差,這時如果這個goal被寫死在agent的設定中似乎不是最好的選擇。相反的,應該要能夠讓agent把目標也當成內部狀態能夠自我調適。

  • 在這篇論文中提出了要考慮無聊的因素,但卻沒有定義如何表達無聊。無聊該如何定義呢?

    無聊這個東西,必然關連於時間以及內在狀態。但是對於agents來說,如果它會覺得一直採用相同的步驟(也許是已知最佳解)是無聊的,那麼系統就永遠不會進入穩定最佳解,無聊也許可以幫助系統跳出local optima,那就同樣可能跳離global optima。同時,如果它知道自己先前都採取什麼步驟,它要如何記憶?它又需要在什麼時候採取無聊的狀態?

  • 在這麼多因素的條件下,如何設計出會合作的Rules?

    賦予agents感情並期待其出現合作的行為,看似要利用基因演算法來產生Rules。如果是由人來設計Rules,那是否會出現某種不確定的環境,造成「保証毀滅」的軍武競賽結果?即使採用演化的方式,我們也無從知曉是否在某種環境下,agents會被trigger成完全不顧goal state、只顧維持自己的生存。所以我們必須要問,我們的goal state以長期而言,真的能被滿足嗎?而長遠的合作真的是穩態嗎?

結語

將Affective導入agents中雖然是個很有趣的點子,但是也讓系統的複雜度大為增加,甚至無從預測系統會產生什麼樣的整體行為。作者提出的觀點儘管補足了現存架構之不足,但從系統的架構、Rule的產生、個體的定義以及情緒的反應,都還需要更進一步的探討。