2007年5月28日 星期一

看不見的朋友

小時後有看不見的朋友,是個忍者,是從我的左手出來的。

以前上廁所坐在馬桶上很無聊,會用手在牆壁的紋路上面跳呀跳的,用食指跟中指作成人走路的動作,然後到處跳,功夫很好的樣子,這樣我就很開心。有的時候也會有壞人出現,就是我的右手,他也很厲害,左手跟右手會打架,但是都是左手贏,因為我覺得左手比較可憐,因為幼稚園的時候左手肩膀骨折,很久不能動,力氣也比較小,所以打架都要讓他贏。不然就已經很虛弱,打架還要打輸,就實在太可憐了。

後來就常常用想像的,想像有一個小人,會到處跳,就是從我的左手延伸出來的,他是我的好朋友,不過別人都看不到,我無聊得時候他就會出來陪我玩,陪我說話,還會告訴我他去哪裡了,我要是很久沒陪他的話,他還會生氣,我要跟他道歉,然後他就會跟我分享他去了哪裡哪裡,看了什麼,遇到什麼,每次我很久沒想到他,之後想到他我就會覺得很愧疚。

國小的時候多了新朋友,是一台軌道車,媽咪買給我的軌道車,不是四驅車喔,他只有兩個後輪會動,而且底盤比較低。我坐車的時候,他會在外面旁邊的馬路上一起跟的奔馳,跟著我的車,很快速。忍者也會在外面跳阿跳的,跟著我走。

國一的時候,我畫圖,隨手畫了一個女孩,雙手交疊在身前的模樣,長長的裙子,短髮,其實我喜歡的是長頭髮的女生,但是我不知道為什麼很喜歡她,每次都會看著那張畫發呆,看到痴呆的程度,現在想一想,我很像是希臘神話裡面的畢馬龍(Pygmalion,一個雕刻家,迷戀上自己所雕塑的雕像,後來愛神維納斯被他的深情感動,將雕像化作真人),完全迷上自己的畫作,她時時會走在我的左右,陪了我很長一段時間。我後來畫了很多東西給她,像是衣櫃阿,衣服阿,日常用具阿,然後把這些東西統統夾在一本筆記本裡面收藏好。因為我完全認為她跟我生活在一起,雖然我不會跟她說話讓別人以為我在自言自語,但是我走路會讓她,也會看她,會注意她,有時候我也會很擔心別人知道我有一個看不見的朋友,然後被別人當作神經病。

其實還有一台飛機,是我自己設計的模樣,我還有用紙做出模型,我很喜歡他,他的形狀很單純,只有五個面。然後後來忍者也有的別的忍者朋友,右手的忍者也出來了,也不當壞人了,跟左手當了好朋友。我的看不見的朋友,從最初的一個,到了後來變成了一票。

我從幼稚園開始,國小國中,這些朋友都一直在我的身邊的,我上課無聊的時候,他們會小小隻的在我的桌子上,陪我聊天講話,或是演戲給我看,或是跳跳鬧鬧的,讓我很開心。到了高中,很多時間都投入到漫畫跟寫程式上面去了,很少想起他們,慢慢的,他們就從我的生活中淡出了,大學的時候幾乎沒想到過他們,但是現在研究所,不知道為什麼,前陣子,我突然想起來這些陪我很多年的朋友,看不見的朋友。

2007年5月15日 星期二

AI-RPG

我們研究室正在做的計畫 AI-RPG

把人工智慧應用到 RPG 設計,建立一個虛擬社群,讓 NPC 展現更真實而且複雜的行為。

比方說,在武器店賣東西老闆,不再只是武器店的老闆了,他也有一段自己的過去,內心也有一股想要到處冒險的衝動,玩家跟他的互動不再只是買賣武器而已,當你面對他的時候,你可以跟他說:
唷,老闆,我看的出你內心的一把火,我們一起去冒險吧!

也許他就會把攤子收了,跟你去冒險。

或是他會說:
年輕人,我以前也跟你一樣想要到處闖蕩,但這些年過去,我知道平安才是福阿。打打殺殺哪裡好,我兒子也跟你一樣好殺戮,不過他現在在西邊的城堡當魔王的副手,你要是有機會遇到他,記得幫我問候他,叫他逢年過節要回家看媽媽。但是我知道你的個性跟你的身份,還是要殺他的,這種要求對你太過分了,但是請答應我一個要求,如果你非要殺他,請用這把劍,這是我精心製作的,我兒子看到他就會知道是我。既然他要死,那就讓我的武器來殺他吧!對不起,我終究還是自私的...

語畢,老人拿了一把精心製作的武器給你。

你前往西方的魔王城堡,看到一群壯碩可怕的守衛正在聊天,他們正在抱怨禁衛軍裡面那些只會打嘴砲的人都一直升官,像他們那樣老實做事的人卻只能守城門。你走上前去,他們注意到你,開始戒備,你拿出一把寶石:
不要幹了,收下這些,去城裡面快活下半生吧,我不想跟你們打,你們應該也不想跟我打,我們都輕鬆一點,應該沒意見吧。想搶錢的話也可以盡管來,不過既然有機會穩穩的生活,又何必賭上生命?

就這麼前進著,當然也有不能被買通的小兵,那就戰鬥吧。

最後遇到了魔王的副手,武器老闆的兒子,是個年輕壯碩,風度翩翩的男子,你拿出老頭製作的武器,說:
我們是你爸派來的,他想要你回家去,如果你乖乖聽話,那我們也不用你死我活。

男子說:
你們已經不是第一個來的人了,我不會回去的,我不喜歡當人類,一點也不好,老頭子年輕時候,為了自己的夢想,在外奔波當勇者,完全忽略我跟我媽。我恨你們這些勇者,所以才投靠魔王,你們來了,那就死吧....

戰鬥開始了,頃刻之間,你用老頭的劍刺入的男子的身體。
男子沒事,劍斷了。你還沒搞清楚狀況的時候,感覺到肚子一陣溫涼...
你們也被老頭騙了吧?他給你們的劍是假貨,根本耐不起打。他終究是捨不得殺我的,我畢竟是他的兒子,他也一直因為年輕時候的冷漠而愧疚...

對不起,我終究還是自私的...

死前,你回想起了老頭講這句話的臉。

2007年5月7日 星期一

Minsky & Learning

這邊是人工智慧大頭 Minsky 在接受《會思考的機器:AI人工智慧的發展與趨勢(Machines Who Think:A personal Inquiry Into The History and Prospects of Artificial Intelligence)》一書作者 Pamela McCorduck 訪問的時候所說的話:
我們花了好久的時間才明白,而其他人一直還不太明白,就某方面來說,只要有對的描述跟機制,學習其實不太重要,重要的是找出事情該怎麼作,只要你瞭解了,你就容易明白一件事是怎麼被學會的,在觀念上這是很深的改變。要學習上的問題,從我們看來,是去決定你要放什麼東西在你的記憶裡,這要依賴好的描述,然後在描述中找到差異,才能說,這是個新東西。所以差別不是在事情裡,是在描述裡。經過很長的時間,人們才開始能體會。

這是一本有二十五年歷史的老書,內容講的是人工智慧領域的發展跟歷史,在去年重新再出版,補上了人工智慧在這二十五年的新發展,人工智慧的科普這幾年幾乎不見新書,難得看到一本,當然是要拿下來看的,雖然新東西不多,但是聊勝於無。

上面這段是第一章的內容,可以看到人工智慧大頭 Minsky(算是人工智慧領域的開創元老之一)對於機器學習(Machine Learning)的看法,大致上說起來,就是學習沒什麼用。文中所講的「學習」指的是在人工智慧裡面的「機器學習」,而「找出事情該怎麼作」,指的是人工智慧裡面的「規劃/計畫」(planning)。

所謂機器學習,是指不用靠人類去設計複雜的演算法,而讓電腦自己從環境當中根據過去的經驗來學會應該怎麼做事情,學會怎麼把事情作對做好。電腦一開始會表現得很差,但是隨著時間過去,機器的經驗越來越豐富,越來越聰明,表現也就會越來越好。聽起來很神奇,不過他到底是怎麼做到的?

神經網路(Neural Network[1]) 用的方法是模擬生物神經傳導的方式,利用大量的神經元,互相串街連結,形成複雜的神經網路,透過輸出跟預期輸出的正確性,慢慢調適網路連結上的鍵值來達到學習的效果。一個神經網路會接受外界的刺激當作輸入,然後會產生一個動作當作輸出,如果輸出的動作是正確的,那麼本來神經連結上面的鍵值會被加強,表示這是一個正確的動作,應該被獎勵。如果神經網路產生的動作是錯誤的,那麼連結上面的鍵值會被削弱,以示為懲罰,久而久之,神經網路就會偏向產生正確的輸出,而避開錯誤的決定。

演化計算(Evolutionary Computation[2]) 模擬自然界的演化機制,設計者會設計一堆生物,而這種生物的基因,就是問題的答案,而這種生物所生存的環境,就是所要解決的問題。如果一個生物的表現不好,表示他沒辦法良好的解決這個問題,會有比較差的適存值(fitness),如果一個生物表現的很好,表示他對於這個問題的解答不錯。基因演算法的機制會挑出活的比較好的個體,來進行交配,以產生下一代,而下一代的基因,則是來自於父母的混合交配。長久下來,適者生存,表現的越好越有機會有後代,而表現的差的,就會慢慢被淘汰掉,最後整個族群就都是表現良好的個體了。

上面兩個是目前台灣最流行最熱門的機器學習還有人工智慧技術,不過國外已經沒什麼人在玩了,人工智慧還有其他如 Independent Component Analysis(ICA),Principle Component Analysis(PCA),Hidden Markov Model(HMM),Boosting,Support Vector Machine(SVM)等等技術,都是常見的機器學習模型。機器學習最常見的領域是那種需要高度容錯的系統,像是圖形辨識,語音辨識等等。

所謂「規劃」(Planning)是跟學習相反的一條路,透過程式設計師的腦力煎熬,在一開始就打造了強悍的思維模型,程式擁有強大的力量在已知的解空間裡面去尋找答案,並且透過一些有策略的搜索方法,可以在龐大的解空間當中刪除不可能的答案,或是不進行重複的搜索活動。使用 planning 的 AI 是在程式完成的那一瞬間,就展現出高度智慧,像是各種棋類程式都是屬於這一類。

人工智慧領域很少有這兩邊都通的人才,大部分的人只能專精其中一樣,Minsky 選的是 planning,他認為如果用 planning 就能解決的事情,那我幹麼用 Learning? 理論上他說的沒錯,只要用 planning 就能解決的事情,那的確不用 learning,不過實際上,有很多問題就是不能用或是不好用 planning,像是影像辨識,機械控制,這類東西,你很難仔細的描述事情應該怎麼被做好。或是當環境常常變動,你今天設計好的機制,明天就不能用了,而要設計一個什麼都能用的機制,又是難上加難,像這種時候,就是 learning 存在的理由。

本來我以為 AI 大頭都是全方位的,看到大師也會選邊站,我感覺到很有趣。

[1] AI Junkie 一個不錯的 AI 網頁,這邊是他關於神經網路的介紹
[2] 一個有 Java applet 介紹 GA 的網頁,很生動易懂

2007年5月5日 星期六

末日,因果,緣份

做了怪夢,是世界末日到了。

不知道為什麼天上一直閃光,天色變成很奇怪的顏色,大概就是有點偏紫色的紅色(那不就紫紅色嗎?),然後會一直冒出奇怪的閃光,人看到那種閃光好像會慢慢發瘋,不知道原因,忘記了其實,但是很多人都變得很奇怪了,好像會到處打人咬人吧,變得很瘋狂,要是被他們抓到會死的。

事情發生得很突然,大家都沒時間回家,也沒機會聯絡家人,很多人都已經發瘋了,到處都是一片亂,研究室的同學還有朋友們,我們很快下了抉擇,知道沒辦法回家了,要當下處理這種狀況,大家把能帶的東西都帶一帶,然後往山上躲去了,夢裡面學校附近有很高的深山,幾乎都沒有人到過,然後地形也很險惡的那種深山。

大家死命的往山上跑,路上很艱難,但是大家都很努力,可能是因為平常都有跟中鎮一起慢跑吧,大家腳力都很好的一直跑,後面其實有零零星星的發瘋的人在追我們,但是都沒跟上,或是追丟了,我們很平安的到了山上,在樹上架了瞭望台,我們可以看到附近有沒有人來。

在一個視野比較好的地方,我們有望遠鏡,還可以看到平地上的人,看到市區裡面有的人正在被追,一直逃命,沒看到他最後怎麼了,把視野轉到附近的山區,可以看到一些零星的人正在亂走,有的應該是發瘋的沒錯,但是因為離我們這邊還很遠,所以還不用擔心。

挖了井,有水,是我挖的,但是又不是我挖的,是刻庭挖的。夢裡面我是第一人稱,但是不是蕭刻庭,我是蕭刻庭的朋友,我也不知道我的身份是誰,但是刻庭正在跟我講這個井,說我們要好好使用他,因為不知道可以用多久。然後他給我看了另外一個黑黑的地洞,說這個是緊急逃生的路,入口的門是特殊設計過的,要打開要動點頭腦,隨便亂敲是打不開的。望進去黑鴉鴉的,我問刻庭這個通去哪,他說這個不能說,感覺上像是非常不得已的通道,他也不希望走這邊,所以他也不希望我們知道,看他皺眉頭,應該是真的沒有別的選擇吧。

白天很短,通常很快就天黑了,天空會是很沉很濃的顏色,一整片都是霞光紅,遠處已經慢慢可以看到轉黑了,算是很美的天空吧,但是卻有一種絕望的感覺,不知道什麼時候才會恢復正常的天空?天空到底怎麼了?資訊都被隔絕了,什麼都不知道。

很絕望的站在海邊,有一小塊地突出在海邊,長滿了綠色的草,突岸上面有一顆綠色的樹,後面就是被染成紫紅色的海,還有紫紅色的天空,海面有微微的波紋。米絲緹從天上下來,她一直哭,一直哭,她已經是神了,我還是凡人,在動亂開始的時,忘記了,但是她應該是做了什麼,犧牲了自己,但總之並沒有跟我們一起逃到山裡去,她變成神了,但是好像因為規定而不能幫助人,她叫我要加油,要讓我心情好,就讓天空變出了很多煙火,看到煙火我就一直哭,因為覺得這是文明世界的東西,在這種近乎末日的時候能看到煙火感覺真的很讓人想哭。我下次看到煙火會是多久以後?我還能看到煙火嗎?不知道,但是眼前佈滿半個天空的煙火,真的非常漂亮,儘管是可怕的顏色的背景。煙火越來越暗了,米絲緹說她必須要走了,她說她不能隨便下來的,她還是哭,叫我要加油,我不敢答應她,因為我不知道未來會是什麼樣子。

在山上種田,因為總得要吃飯,我們一堆人,不多,但是還是要吃東西,所以就種田。身上弄的都是泥巴,心裡卻很開心,覺得泥巴帶有生命的感覺,只要有泥土就可以種植,能種植就會有食物,這樣就不怕餓死,有泥土就有希望。我可以都只吃素就能活,我很好養。

我身上沾了很多草草葉葉的,不知道為什麼右手臂上有兩株豌豆,長在我的手臂上,生根的那種,我也沒覺得怎樣,就覺得有東西生長很好,至少不會餓死,長在那邊就不這麼重要。正在整理田地,米絲緹來了,她說:「你手上的是好朋友。」我看看手上的豌豆,突然想到蝴蝶,以前好像幫助過一隻蝴蝶,還有一株豌豆,我不記得為什麼幫助過他們了,但是我知道那隻蝴蝶跟那株豌豆是有緣份的,他們有因果,關聯在一起。我看到他們在我手上,我知道是他們,就是感覺到了,米絲緹沒說的話我會不知道,但是她一說是朋友,我看到手上的豌豆,就感覺到他們是誰了,我一直哭。

因為感覺到他們的感情,他們在我身上,表示他們覺得我很重要。他們許下願,這輩子在我身上過,用這一世來報前世的恩,感覺到有人把自己看的這麼重要,我就很感動,一直哭,停不下來,他們為了這輩子能看到我,回報到我手上來,我一直哭,一直哭。我不知道能幫他們做什麼,但是很高興能夠永遠不分開了。

2007年4月28日 星期六

用 GreaseMonkey 自動抓網頁

昨天詩芳說她有個需求,要自動去網頁抓資料。

她打算用 Java 寫,我看了一下網頁內容,Java 我不會,那我用 Pyhton 試試看,結果用 urllib2 弄了辦也弄不出來,生氣,換上 wget,結果 server 丟了一個 500 給我,告訴我這樣是行不通的,我沒辦法啦。就在這個時候建勳剛好用 MSN 找我吃晚餐,我記得前幾天以前在 PTT 的 Python 版上看到他在跟別人討論抓網頁的東西,我想他應該有經驗可以指教,就詢問他這個問題,結果得到了很不錯的答案。

前置動作:
  1. 請使用 firefox 瀏覽器
  2. 請學會簡單的 JavaScript
    不過我本來是不會,一邊用一邊學,一個晚上就好了。
  3. 請裝上 GreaseMonkey 插件
    GreaseMonkey 可以在載入指定網頁的時候,執行自訂的 JavaScript,使用者可以透過 DOM 變更網頁內容,操作瀏覽器執行特定動作,像是跳到指定的網址,然後跳回來等等的動作。這邊有 GreaseMonkey 的使用教學(Dive into GreaseMonkey)必看。
  4. 請裝上 Auto Save 插件
    Auto Save 會在 firefox 瀏覽到指定頁面的時候,自動將該往頁儲存起來。所以你只要把你想要儲存的頁面用一些像是 prefix 的規則寫好,那你配合 GreaseMonkey 自動切頁過去的時候,Auto Save 就會剛好自動把你的網頁給存起來。
  5. 請裝上 DOM Inspector 插件
    firefox 選單「工具」拉下來應該就可以看到,如果你沒看到,那表示你沒裝,firefox 從 2003 年 11 月之後,他就被內建到安裝程式裡面的,安裝 firefox 的時候,選擇自訂選項安裝,把 DOM Inspector 打勾,然後完成你的安裝就可以了。這個東西等等可以幫助你用來解析你的目標網頁,讓你可以知道要怎麼透過 JavaScript 操作你的網頁。
  6. 請裝上 Inspect Context 插件
    因為只有 DOM Inspector 並不是很容易定位你要的資料位置,配合 Inspect Context,你可以在網頁的任何一個地方按右鍵,選擇「Inspect」,這個時候 DOM Inspector 就會開啟,並且自動展開到你所點選的位置。
  7. 請到 Web Development Bookmarklets,把第一個 shell 拖曳到書籤工具列上。
    這個 shell 可厲害了,點他一下,他會跳出一個 JavaScript shell 視窗,你可以即時的在這邊進行操作,而不用每次都寫一個完整的 JavaScript 檔案掛到 GreaseMonkey 上面去測試,是開發期的良好工具,請善用。
大致流程:
  1. 針對要抓取的頁面,一邊使用 Inpect Context / DOM Inspector 這兩樣東西分析你的目標網頁,一邊使用 Java Script Shell 進行開發跟測試你的 JavaScript。
  2. JavaScript 寫好以後,把寫好 JavaScript 掛上 GreaseMonkey。
  3. 打開 Auto Save 設定好網址,然後 enable。
  4. 開始瀏覽,自動抓取,完工 :)
當然這個是很粗略的介紹,不過我想重要的都沒有漏掉。

校慶環校路跑

4600m,跑了26分鐘。

說起來好笑,其實支持我去跑的動力竟然是因為前三百名可以拿到紀念品,不知道為什麼我就是很想要,其實大概也知道不會有什麼很好的東西,可是就很想要,甚至在途中被人超過,還有在終點前衝刺的時候,我都是一直想到「如果再不快一點就拿不到紀念品啦~」然後就一直跑下去了,感覺還蠻智障的,竟然為了這麼白痴的事情在跑步 XD

獎品是毛巾一條,講好聽是毛巾啦,其實是抹布,可惡~~~

中鎮又拿到第一名啦(當然),獎品是1g的隨身碟,很漂亮的衣服,還有一個砂鍋大的獎牌 ,很大,但是感覺質感很好,木頭的很高級,我也好想要喔。重點是那件衣服,真的很想要,白色的,很漂亮,上面有漸層的彩色圖案,感覺一整個很特別。

男生前25名就有獎品,我真的好想要喔,第25名大概是21分鐘,少我5分鐘,長跑的話其實差一分鐘就差很多了,所以這5分鐘也不是我說「可惡看我衝一下」就可以追上的。好,以後跑步都跑這個路線,希望在明年這個時候可以練到20分鐘,這樣我也會有獎品了,希望明年的衣服也一樣漂亮 >"<

2007年4月19日 星期四

Puggy

十二點半的時候,Puggy找我出去聊天,距離上次聊天,其實已經隔很久了,說隔了很久,更正確的說法應該是,我們從來沒有這樣面對面的聊天過。之前聊很久,也是在MSN上面聊天,而不是像這樣當面聊天。她問我抽不抽菸,我說我嚐試過,但是我沒用,學不會,不過我很可以接受煙味,問她是不是要找我出去抽菸,她說是,所以我們就去了電資館的陽台,她抽菸,我陪她說話。

她講的是感情的事,我知道這事,但我不知道這人是誰,到今天才知道,原來,也是我認識的。我想我比以前更有感情,更有同情心了,在她描述的時候,以前應該是會冷淡的我,現在卻有一點點能感覺到她很痛,我不可能完全體會她的心情,但是我有一點點痛。

我永遠不會懂女孩子捨棄自己小孩的感覺,我不會懂,我只能知道那是不開心的事情,努力的去體會,努力的去體會。我的肚子裡面,有一個美好的生命,我的,我的孩子,我是他的媽媽,可是我把他殺死了,好痛,好痛!對不起,可是媽媽的心也是很痛的。

「小孩會原諒妳的,因為妳是他媽媽,他知道妳不是故意的,他知道妳很痛,他已經很心疼了,所以不會怪妳。」我說。我不知道Puggy在想什麼,但是我在想她一定很痛,心很痛。「那不是妳的錯,我沒有覺得妳不好。」Puggy說:「你這樣說,害我很想哭。」但是她沒有哭,她笑了。我知道Puggy很堅強,很辛苦,面對這樣的事情,是誰都會很痛,不知道怎麼辦。

Puggy說了好多好多,原來那個男的這麼壞,她笑著說:「其實我很想報復。」可是看的出來,她其實做不到。「妳很好,遇到這樣的事情,你的心還是很善良,並沒有扭曲。報復是好事,但是不要想著去報復,報復完成了,是會很開心,但是在想著去報復的那個過程,其實都是自己受苦的,會讓自己變的很醜,很醜,每次妳在想著要報復的時候,妳應該也覺得自己很醜吧。妳是聰明的人,妳知道我的意思。」Puggy說:「我覺得我現在的心已經很扭曲了。」「妳沒有阿,妳現在還在跟我說這些,妳很好。」

聊了很多很多,從十二點半聊到快五點,Puggy說了好多好多,她以前的男朋友,她家人,爸爸,媽媽,妹妹,同事,工作,自己的個性,過去發生的事情,傷害的人,還有現在自己的轉變。講了不知道自己的興趣是什麼,覺得自己是個只會賺錢但是不懂怎麼對自己的好的人。我想她好可惜,她不會對自己好,不知道什麼東西會讓自己快樂。所以呢,我說我這個禮拜因為自己有乖乖唸書,所以我要好好獎勵自己,我要去餵松鼠,我覺得那是開心的事情,我要抓她一起去 ^^ 希望她也會喜歡。當然我不知道她會不會喜歡這個,但是如果她也覺得開心的話,那就太好了,太好了。

很多人的人生都有很多痛苦,不是我能想像跟明白的,可是我很想懂,想為他們哭泣,想為他們做一點點事情。我有在進步嗎?跟以前無情的那個我比起來,希望比較有感情了。