小松鼠嚇了一跳,有了魔法眼鏡後,這世界看起來完全不一樣了

2015年6月12日 星期五

弱者思維


今天看到這個臉書上看到關於  2013 年的這個事件(solidot) 的討論:
谋智中国开发的定制主页及快速拨号页扩展(xpi文件)被发现会 修改用户的快捷方式,如果中国用户在主页建立了京东商城(www.jd.com)的拨号快捷键,那么该快捷键会被定向到一个返利链接 (http://count.chanet.com.cn/click...www.jd.com”)。该扩展的中国开发者还非常幽默的在源代码里加了一 个注解——“do some evil here”。
在 news group 中,就有人質疑這件事情,然後得到的回答是說,中國很多廠商都做同樣的事情,不是我們的錯。別人都用賤招,你還在那裡乾淨的對決是沒用的。當你被擊倒淘汰時,什麼都別說了。
當然這有點斷章取義,不過這種想法很常見。所以我想討論的是這段文字討論的想法。

無獨有偶的,剛好也在臉書上看到有人提到魔術師抄襲的事情。當他勸他們不要抄襲的時候,得到的回應是:「剛開始總要抄襲啊,我又不像你,那麼厲害有創意。」

常常我們要別人思考理解,再來解數學題,而不要先看答案、背解答時,得到的回應也常常是:「一般人不像你們那麼聰明,你們不了解一般人只能靠背的來學數學。」

看出共同點了嗎? 就是滿滿的「沒辦法、沒辦法、沒辦法」,然後把原因歸咎到環境什麼的,不願意嘗試改變自己。

就是因為一直否認自己需要成長,所以才無法成長啊。

2015年5月13日 星期三

文化剝煮產業

遠看、近看各有不同的 Hybrid Image, 因為有 High pass, Low pass filter 以及高斯模糊化的概念,考慮拿來教學上當例子。 其實很早以前也弄過類似的東西" 遠看林志玲,近看像國父"。  也有人寫了 Python 的逐步解釋。 不過我用的是 GIMP。

2015年4月25日 星期六

Gigabyte 輕薄電競筆電 P34K V3 開箱



其實也不算開箱,因為已經開了一陣子了。 主要是想玩 CUDA(Theano, gpuarray, gputools) 但手邊沒有 nvidia 的顯卡,順便又能有台筆電玩 Unreal Engine 及 Kinect V2。
鎖定的機型是 GTX965m 以上的輕薄筆電。 輕薄的考量是因為攜帶方便,而且能在演講使用。鎖定新的 nvidia 9 系列是因為據說效能及省電能力都有進步(從資料上來說,965m以上的與 960m 以下的是不同等級)。
考慮的候選人有 Gigabyte P34K, P34W, P35W, P35X,  MSI GS60 系列, AORUS X3。
ASUS 的 UX501, GL501 也觀望中,不過因為是 GTX960m,所以捨棄。P35 系列重量約 2.2-2.3 公斤,雖然也不太重,但因為常常要攜帶,選擇了 2.0公斤以下的機種。

最後再考慮其實真正要做計算時,還是會用遠端的方式,所以選了使用新9系列入門級的 965m 的 P34K V3,耗電量可能比較低。
簡單列一下 P34K V3 的規格:
  • NVIDIA® GeForce® GTX 965M GDDR5 2GB
  • 8G DDR3L 1600  
  • 僅1.71-1.8Kg、20.9mm
  • 128GB mSATA SSD + 1TB HDD
  • Full HD廣視角液晶螢幕 
  • Intel® Core™ i7 4720HQ 
雖然硬碟只有 5400 rpm,記憶體只有 8G 感覺有點弱,但價格不到 45k, 送個背包和滑鼠。
自動光源調整背光鍵盤搭車時使用很實用。同時有 D-SUB 和 HDMI 接頭,到處演講報時比較方便。


實際拿到的第一感是有點重。但這大概是因為用習慣 MBA 11" (1.1Kg) 及 Sony VAIO DUO 13(1.33Kg),過一陣子之後就覺得還好。
實測重量 1818g

MBA 11" vs P34K

DUO 13 vs P34K
3台打開了比較
變壓器有點大,但不算太重。
實測變壓器重量 424g

和 Duo 13 及 MBA 11 變壓器比較
實際攜帶上,因為贈送的背包很輕,筆電連同變壓器背起來感覺不太到重量。加上都很薄,也不會顯得很笨重。

風扇有時沒什麼事也會吵,但 GPU 和 CPU 熱度都還好。電池電量用起來感覺也還好,但沒有完整實測。

拿到機器之後的第一件事是裝 Linux。把 Ubuntu 14.10 裝進 1TB 的硬碟沒有太大的困難。裝上 nvidia 346, Bumblebee, cuda 7 要多花一點力氣,不過也 OK。
實際上裝玩 Theano + OpenBLAS,跑 check_blas.py 來測, CPU 是 1.5-1.6 秒, GPU 則是 0.15-0.16 秒。  GPU 約等於 GTX770 在 CUDA 6.5 的成績。
另外一個可以拿來測試 CUDA 的是 Blender 的 BMW Benchmark 。在  blender 2.74 下, CPU  跑到 5 分 51 秒, GPU 在適當的切割下,可以跑到 2分 35 秒(win64/linux 下都差不多,linux 下最好可以到 2:30) 不曉得怎麼比,不過看到 GTX 980 有 1分 44 秒的紀錄。


Win8.1 64 bit, Blender 2.74
如果是舊版的 BMW 測試檔,則可以到 1分4秒。


總之, CUDA 的效能還算可以,只是僅限於 float32, float64 太弱。
至於遊戲方面,我沒有太常玩,所以手上積了一堆舊遊戲,只能拿舊遊戲來測,像是 Witcher 2, Alice Madness Return, Tomb Raider 都還算順。
另外也用Dolphin 跑了 Super Mario Galaxy 看看,D3D 也算順暢(60fps)。


Tomb raider 在 Full HD 的測試結果為

最高 Ultimate 1920x1080

很高 Ultra 1920x1080

高 High 1920x1080
 以最低、平均來說

  • High: 58.0/60.0
  • Ultra: 48.0/57.4
  • Ultimate: 29.1/38.5
既然提到 Kinect V2, Kinect V2 的測試也能維持穩定的 30 FPS



但是也有一些缺點

  • 螢幕蓋上時,風扇就會轉動(?)
  • Touch pad 有時會卡住一下,特別是在  BIOS 選硬碟開機啟動 Linux 時。
  • Linux 的 X 有時會卡住(我習慣用 Kubuntu)
這感覺是驅動硬體之間有點不穩的緣故。

有關安裝 Linux 及 Bumblebee 和 CUDA,那又是另外一個故事了,之後再來補充。



2015年3月12日 星期四

不要問國家能為你做什麼,要問你想拿國家來做什麼


常常有人會問,「某某東西」有什麼用。
其實這反應了兩件事情,一個是他可能不理解「某某東西」的用意或價值,另外外一個就是他可能缺乏利用這個「某某東西」的能力和想像力。這個不見得是人的錯,有時候「某某東西」真的就是無聊沒價值的東西,也有可能因為某些外在的因素,讓人無法或者不敢想像自己有利用「某某東西」的可能(比方說這個「某某東西」是國家的時候)。

但既然會問這句話,那這個「某某東西」有價值的可能性不低,因為如果你肯定「某某東西」完全沒價值的話,你根本不會問這個問題。 所以這通常比較像是一個心理框架的轉換,當你想問「某某東西」有什麼用的時候,對的問題應該是「某某東西」能怎麼用。

就像學到某個魔術技巧的時候,當你感受到這個技巧背後的巧思與神奇之後,你想的一定是要怎麼用這個技巧,如何用這個技巧來設計程序,而不是這個技巧有什麼用。 當然你更高階一點的話,你也不會執著於把技巧包裝成程序。你會把這個技巧的精神融入內化。當你想達成某個目標時,有需要時,自然會拿來使用。
剛在 Hacker News 上,看到一個人,在畢業多年,因為線上開放課程,再次接觸久違的線性代數時,留下這一段話:
As someone who hadn't studied it for 20 years, it was invaluable to revisit the subject as an adult with the ability to reflect "ah, I can use that for... " instead of "Ok but when am I ever going to use this"
其實就是這個精神。化被動為主動, 役物而不役於物。

2015年1月28日 星期三

馬力歐及樂高中正紀念堂的模型


 今天帶小孩及跟爸媽看樂高展及逛了一下新光三越 A8 五樓的玩具店,順手用 123D Catch 掃描了幾個 3D 模型,然後下載成 obj 檔,匯入 blender 修剪以及簡化,最後再用 blend4web 匯出成 .html 檔,過程相當無腦。掃描的結果如下。


2014年12月31日 星期三

別讓分數殺了你


先說個故事,關於一個充滿心機的老人的故事
有個老人愛清靜,可附近常有小孩玩,吵得要命。 於是他把小孩召集過來, 說:「我這很冷清,謝謝你們讓這更熱鬧」 說完分給每人三顆糖孩子們很開心,之後就天天來玩。幾天後,每人只給2顆,再後來給1顆,最後就不給了。於是,孩子們生氣了,說:「以後再也不來這給你熱鬧了」 
很多人詬病考試領導教學,也有不少建議要如何改善考試的方式。 其中很多意見都不錯,雖然實際執行還有很多技術細節及現實上的問題(勿忘建構式數學),但整體來說,我對於整體教育的改善是樂觀的。
不過,我想講一些更基本的東西。就像上面的故事一樣。
上面的故事還挺有趣的,只不過,事實比虛構的故事更加有趣。

70 年代的時候,心理學家 Lepper 和 Nisbett 就做過這樣的實驗。 他們在幼稚園(位於史丹佛大學的 Bing 托兒所)中找來一些本來就喜歡畫畫的四五歲小朋友,問他們願不願意畫一張畫給。接下來就是三組不同的地方了: 

  • 預期得獎組:事先告訴小朋友們,那個朋友帶了一些乖寶寶獎狀(上面有像下圖一樣,帶有權威認證的榮譽標誌),只要畫圖就能贏得獎狀。 
  • 無獎品組:事先只問小朋友是否願意幫忙。最後只是謝謝他,不會給獎狀。 
  • 意外得獎組:事先只問小朋友是否願意幫忙,但是畫完之後告訴他因為感謝他,所以給他乖寶寶獎狀。 
可能有人會擔心不同的問法會造成抽樣偏差, 不過其實大多數被問到的小朋友都答應了。
每個小孩有六分鐘的時間畫圖,詳細的研究方式可以參考下面列的原始論文。
結果呢?
兩星期之後,觀察這些小朋友自由時間從事的活動,發現無獎品組以及意外得獎組還是一樣喜歡畫圖,但預期得獎組畫圖的時間卻只剩一半了。




Undermining children's intrinsic interest with extrinsic reward: A test of the "overjustification" hypothesis.
Lepper, Mark R.; Greene, David; Nisbett, Richard E.
Journal of Personality and Social Psychology, Vol 28(1), Oct 1973, 129-137.  PDF

仔細想想,短短的六分鐘,就足以造成這麼大的差別。
你從小到大,有多少時間是處於類似的環境?
會講「要考試了,怎麼還不唸書」這種話嗎?

其實還有不少實驗( Daniel Pink 的 Drive 動機,單純的力量裡面列了不少),像知名的蠟燭實驗,不斷的印證了同樣的結果。不過對我來說,因為我還沒有真的仔細研究過這些論文,讓我相信這個結論的主因還是自身的經驗與觀察。

想一想,你有多少次在考前準備考試的經驗? 據說考試是用來測量學習成效用的,那為什麼要在考前額外做一些事情來影響測量結果? 如果能在幾天一週加強準備,就能準備好的東西,為什麼要花一個學期來學?

制度的存在,是為了解決 Scalability 的問題。 因為人(或者選項)太多,才需要評鑑來幫忙做。 制度可以改善,但再好的制度都無法完美,都是一種簡化的過程。最後一定會有比較,一定會有分數。
而且,一定會有漏洞。
一定有人會鑽漏洞。
而一但有人開始鑽漏洞,就便成了軍備競賽了。
你的評量標準是高度,就會有人揠苗助長。
考試領導教學是無法避免的。但可以某種程度改善。
讓鑽漏洞的難度變高,代價是 Scalability 就會下降,所以要投入更多資源。讓能鑽漏的人變少,所以要特別注意公平性的問題。
隨著老師、社會整體觀念、素質的改變、提昇,進而引導制度越來越合理(才不會重蹈建構式數學的覆轍)。

但有些問題是更本質性的,因為改革只能讓制度更合理、更合乎某種價值觀(不像現在的制度處處自我矛盾)。
有人的地方就有江湖。
個人能做的,就是意識到這件事情,不讓自己被殺掉。
也許這樣講稍微誇張一點。比較持平的講法是,不讓自己的內在動機被殺掉。
不過一個人的自我扣掉內在動機後,我很懷疑還剩下什麼。

 當然,老師們就處在一個更重要的位置了。

但問題是,如果你自己平常就被評鑑、金錢、榮譽、績效追著跑(或者追著他們跑),你要怎麼教學生用平常心來對待分數?

2014年12月19日 星期五

Leap motion 擴增實境


利用 OpenCV 校正攝影機以及 Leap Motion Sensor 的位置,再利用 Three.js 來達成擴增實境的效果。

這是試玩的結果(還是跟 IPython notebook 一起探索),所以並沒有以最佳效果為目標。實際上 leap motion sensor 可以放在比較好的位置。

稍早拿來和 google hangout api 配合的效果。

原理上不難,只是中間要解決一堆技術上的小麻煩。