電腦效能應用與安全研究室 Performance, Applications and Security Lab


我們的研究範圍很廣,從嵌入式系統、手機應用、一直到雲端計算、商務應用、資訊安全都有做。
我們的合作研究夥伴很多,包括聯發科、IBM、中研院、資策會,還有和台大、清大、交大的教授合組研發團隊
,包括高階應用處理器架構研究、虛擬化技術、異質計算、系統軟體等重要技術的研究與創新,我們很關切台灣人才與產業的未來。

2014年3月1日 星期六

承載知識的Wolfram語言

週四中午跟同學們分享關於Wolfram Language的影片,很有趣,值得深思。正好下午朋友來信,希望我提供心得... 我雖然不是職業的reviewer,但對於新鮮有趣的東西,我是很樂意review的。 下次有好玩的東西,可以主動送過來給我玩,能打動我的話就寫review,不收費的。

我想從Watson談起。很多人都知道IBM Watson -- 那個打敗Jeopardy!高手的電腦。可以想像Watson是個專家系統,你把整理好的資料和規則放進去,他可以在特定的領域表現優異。

如何把資料和規則整理好、放進去、快速執行,是Watson的know-how。這個很不容易,IBM花了很多人力、物力才做出一個能在Jeopardy!節目上獲勝的Watson,但成功之後,可以複製出千千萬萬個Watson!

如何把人類的知識轉變成電腦語言,自從有電腦開始,一直就是個大問題 -- 人類被迫去學電腦語言,才有辦法設計電腦程式。程式設計師,往往扮演人類與電腦的溝通的橋樑。所以說,懂得寫程式,只是程式設計的一半,另外一半是與人類溝通。

這個號稱是用於Knowledge-based programming的Wolfram Language,對我來說並不陌生。二十多年前,我就研究過Wolfram的Mathematica,所以我根本覺得做那些高難度的微積分考題簡直是在整人。你再會解積分題目、化簡三角函式,這些機械化的事情,Mathematica做得比你還好! 

Mathmematica擅長的是符號計算(symbolic computing),而非數值計算(numerical computing),這是他跟MATLAB大不同的地方,也是它特別有趣和特別有用的地方。

符號(symbol),是人類表達知識的載具。有意義的符號,稱之為文字;利用文字來溝通,稱之為語言。

如果有一套語言和工具,能夠讓我們輕易地、很結構化地裝載(encapsulate)知識,甚至是操作(manipulate)知識的話,那麼將對於整理、組織、運用人類知識,有極大的助益。


這裡談的不是「自然語言處理」(natural language processing, NLP),傳統的NLP希望夠做到分析、辨認人類語句,但頂多只是作為人類與電腦溝通的前端,距離知識的整理和運用還頗遙遠。

Walfram採用的方式,其實是不斷地去增加Mathematica的能力,蒐集各類型重要領域常用的語言和工具,讓人類可以
整理和運用知識


以數學為例,Mathematica提供的語法,讓我們很方便可以寫出代數的式子,他更提供了許多能用以操作這些式子的工具。記得因式分解、三角函式、微積分、複變分析、傅立葉分析、統計嗎?這些都是人類發展出來處理知識的工具。

至於目前 Wolfram Language能做些什麼,看看這影片中Steve Wolfram本人現身說法:
https://www.youtube.com/watch?v=_P9HqHVPeik&noredirect=1

“In general, what we’re trying to do is so that as long as a person can describe what they want, our goal is to get that done. A human defines what the goal should be, and a computer does its best to figure out what that means, and does its best to do it,” Wolfram says.

我不得不讚美Steve Walfram對他懷抱的理念的執著與企圖心,他花了30年持續常這個方向而不捨前進。幸好,近年的雲端運算和Big Data技術,應該大幅加速這個理想的實現。各位可以在這裡看到這個Wolfram Language目前的能力,以及思考我們能夠用他做的工作,再進一步想像他在幾年後能夠做的事情。

然而我們該深思的是,有這類的工具在手,人類該做什麼,學校該教些什麼?

- 知識就是力量,擁有處理知識的工具,將大幅強化人類的力量。
- 學校訓練學生的目標,不應是知識的記憶,而是如何活用知識的技藝。
- 教一些、學一些電腦不會的東西吧!

舉例來說,我這學期教平行程式設計,我將讓學生看看Wolfram Language在平行計算上能做什麼?根據http://reference.wolfram.com/language/guide/ParallelComputing.html,他還不會幫人類自動平行化程式,但他提供了不少基本的平行計算的支援。

需要進階的平行計算,Wolfram訴諸於CUDA和OpenCL,例如:
http://reference.wolfram.com/language/OpenCLLink/guide/OpenCLLink.html

所以想讓事情做得快,人類還是得用告訴電腦如何平行做事情。如何平行做事情?這個就是電腦不會的學問了,來上我的課就知道了。

Wolfram的如意算盤是:一些常用的運算,逐漸會被平行化,成為Wolfram Language的一部分。

想持續追蹤Wolfram Language的動態,可以鎖定:http://blog.stephenwolfram.com/


1 則留言: