2012-11-05 22:53:48Morris

[心得] 資訊工程概論 W1-W5

100502205-楊翔雲

    今日演講探討關於類神經網路,講到這一類的主題很明顯地會聯想到 AI 的設計,期望想要做出與大腦智慧的功能,大腦的結構恰好與電腦結構相反,海量的細胞雖然只有少數功能,但因為海量的細胞個數造就了高度精緻的行為。然而電腦卻是單一元件就做了數種的功能,而且不可能海量,要完全模擬大腦的行為有點不可能。

    講講手語辨識發音,使用者手指的彎曲藉由手套上的電阻值改變去辨識,從類比轉換成數位,其中不只是要程式,而且還要與硬體上的結合,才能適當將類比訊息(手語)轉換,如何偵測與五感有關的反應就是一大挑戰,偵測出來後的處理不能太慢,太快又怕錯誤,才能符合人性的使用。有時科技產生雖然有用,但卻是不切實際,例如可能會侵犯人的隱私權、或者是儀器太過笨重。

關於數位科技的產品,有些是要協助於那些身心障礙者所製作的,目的是要協助或者是改善他們的病情,其中教授最注重的是影像處理,很多零件都必須要使用影像辨識的功能,如影片中感覺影像辨識的功能還有很大的改善空間。其中也有談論關於學習器材的改善,從原本傳統的教學方式轉換成數位系統教學,將原本面授換成面對螢幕,有些數位的器材可能會增加學習效率,但同時也可能會因為沒有具體實作而缺少經驗。而且最長見就是對於學習動機也會下降,沒有同儕的討論,無法實體去確認學習狀況,缺少人際上的互動、實體操作。長時間使用電子設備也是個健康問題。尤其是對於兒童的學習更是影響深遠,協助學習的方式,可能會影響使用者的心理狀態,因此在設計時要考慮人為的心理因素。

科技產品雖然不錯,但對於一個正常人來說,可能會因為太方便而逐漸喪失某項能力,使用時怠惰思考,或者沉迷使用,沒有真正的去省思其背後真正細節。當科技越厲害越有智慧時,我們也要省思道德抉擇。


100502205-楊翔雲

    網路安全的攻防戰,駭客幾乎能在任何的地方植入病毒碼,透過檔案的讀取與解碼而將病毒程式片段執行,最簡單也就是做得不安全的留言版,可以被留言HTML的代碼導致下一個人不小心誤觸了跳窗程式的病毒,即使是圖片檔也是不安全的,除了txt的文字檔外,都有可能被塞入一些奇怪的代碼。

其實我們的私密資料早就已經被惡意程式給偷光了,網站會員的註冊,那時填的資料網站就會好好的保管?使用越多個網站就越容易洩露出自己的私密資料,我們並不了解網站是否沒有被駭客攻擊過。常常有遊戲公司臨時公告遊戲需要維修,那很有可能是伺服器遭受到駭客的攻擊而停擺,雖然表面上看不出來發生了什麼事情,常常會被隱瞞起來。

有些電腦因為中毒而可以被遠端操控,那麼駭客要那麼多電腦做些什麼事情?他們可以使用阻斷式攻擊讓某一台伺服器當機,藉以進行詐騙。或者是用這些電腦進行密碼的破解嘗試。

電腦由防毒軟體保護,那防毒軟體由誰保護,因此常常會有病毒會先打算關掉防毒程式再進行惡意行為,因此防毒軟體本身需要有完善的設計,如此一來才不容易被惡意程式關閉。

其實程式是很脆弱的,教授說 buffer overflow attacks 是很危險的,程式將所有行為都存在buffer 中,stack進行程式的模擬也是,因此只要buffer中其中一個數值是錯誤的,就會使得程式崩潰。或者是程式沒有邊界限制,因此只要使用超過原先的記憶體就會造成RE(runtime error)記憶體區段錯誤,這種情形若發生太多次,即使再好的電腦可能都必須重新開始初始化。因此編程的時候嚴謹很重要,雖然C速度很快,那是由於邊界限制由使用者自行去規劃。相較之下JAVA程式語言是一個較安全的,漏洞較不易被抓到,即使被抓到也不容易使主機當機。駭客只需要一個簡單的漏洞,就可以將整個程式搞砸。

老師也說了一個國外學習的方式,一個認真的學生可能已經打了數十萬行的程式碼,而相較之下我們過得太過於幸福了,可能到畢業之時打還沒有打過一萬行的程式,這值得好好地省思我們對於程式的熱忱。讀完這個大學說不定才會發現自己並不是真正適合寫程式,參加社團也許是不錯的,但若失去其本質是不太妙的,如果因此而不好好地讀書去學習這項領域,還不如好好地去別的領域發揮。


資工2B

100502205

楊翔雲

演講題目

Distributed Compressive Data Aggregation in Large Scale WSNs

演講者

Min-Te Sun, Ph. D.

     

對於一個無線感測網路,由於成本低,散布的區域廣,使用的感測器多,如何善用有限的資源有效地傳送資料,如何建構傳送的路徑與方法就成了很重要的關鍵。通常不會使用人工的方式放置感測器,而感測器的位置也可以隨著移動,傳送路徑也會隨之改變,每個感測器的運算能力沒有那麼強,解決傳送路徑的問題就是個NPC問題,而且要事先獲得所有感測器的資源資料才能運行,如何用較少的複雜度獲得近似最佳解,這個MRT(Minimum Relay Tree)以及MAT(Medial Axis bases Data Aggregation Tree)可以獲得區域的最佳解,再利用local minmum逐步更新優化解。有時候我們無法在有限的資源下獲得全局最佳解,如何善用 Greedy 貪婪法加上部份最佳解是一個不錯的選擇。

原本以為這是一個fortune's algorithm去求一個最佳解,但經過教授的講解我發現解法是不同的,由於傳遞的資料量是累加的,這個問題很明顯的不一樣,雖然可以利用一個很像複利葉轉換方成獲得一個比較離散的數據,這方法可以將很多連續的資料壓縮成某一特定的離散圖形,這也是讓我第一次了解複利葉轉換方程的用法。之前曾聽說過傳播也是如此,更在演算法得到連數字相乘也可以使用FFT去加速,這一些方法真的是非常的奇妙,居然是一個可以逆轉換的方法,在資料壓縮跟計算效率上都有很好的運用。

有時候去比程式設計競賽時,也常會賭賭這些看似不合理的演算過程,我們大部份選手稱這個叫作假解,但有些 NPC 問題真的是無法在有限時間內完成,只好用假解去卡卡看,做到一半就好,或者是離散化選擇部分擴張求解,甚至隨機化演算法都會出現,看到實例與應用挺趕到驚奇的。

 

資工二B

100502205

楊翔雲

演講題目

Introduction to Multimedia

演講者

蘇柏齊教授

     

在多媒體領域中,最常接觸的區塊就是在娛樂,隨著技術的進步,娛樂產品的聲光效果隨之進步。多媒體結合影像、聲音、等訊息,用簡單的操作供我們使用。從現在看來以前用很突兀的動畫技術展現在電影中,就知道這十幾年來多媒體的技術進步迅速。這項技術的發展不僅僅只是用於娛樂,在網路訊息的溝通(skype)、教育(e-learning)、醫學手術 等都可以發現他們的蹤跡。

其中最大的影響者是電視,原本我們的電視是採用類比技術,但多年之後的現在已經全面改用數位電視加掛數位機上盒,而大部份電視都已經搭配網路連線功能。原本類比就比數位的還要清晰,畫質也不錯,但是因為頻寬的限制而無法再進行服務,而且數位形式的影像就可以做加密,需要特殊條件才可觀看,但唯一的缺點是取樣時會失真。

隨著影音資料越來越多,如何儲存與搜尋就相當的重要,儲存可以使用壓縮格式去減少記憶體的使用,但最重要的是判重,將重覆的資料刪除,文字檔在這一方面很容易做到,在影音檔卻不是那麼簡單,壓縮率與判重的效能往往不如預期。搜尋依照傳統關鍵字搜尋,但隨著資料過多,關鍵字的效率就會逐漸下降,最後就比較難搜尋到需要的影音,以圖搜圖、圖搜影、影搜影等是未來的發展。

有時我們並不用完整的影像顯示,傳送的成本過高的時候,只要傳送到一定程度可以讓使用者辨識某些特定物時即可,因此漸進式的編碼傳送就相當地重要,不用等到全部訊息都傳送完畢即可行動。這可運用在軍事行動、災害探勘或者是資源挖掘。

當網路資源越來越多的時候,智權人就必須維護他的數位智權,要防止如何被盜拷或者是適當地被複製。曾經Sony公司有研發這項技術,但會因為被視為病毒而鬧了許多官司(:在使用者不知情的情況下,阻止使用者操作)如何適當使用保護目前仍沒有定論,目前唯一展望就是商業轉型,網路資源當廣告散播,而智權人則使用實體講座或者演唱會的型式進行獲益。

而在圖片智權有浮水印(WATERMARKING)的形式,這項技術雖然很早就聽過了,但沒想到現在已經做得那麼完善,即使是翻轉或者是修改都可以被判定出來是原圖修改版本。利用特徵點找到被破壞的圖形,是項新的想法。

 

資工二B

100502205

楊翔雲

演講題目

物件導向實驗室

演講者

鄭永斌教授

     

開發軟體工程現在都是以物件導向為主體,以我們現在的課程,在台灣很難有這樣的能力,即使懂這些概念,也不見得會做得好。藉由高中的資訊學科能力競賽,現在已經有取多編程經驗的高中生,我也不例外,也是藉此學習到程式的基礎,但若以開發軟體就並不是那麼簡單,說是兩件事情也不為過。

不過其中提到幾個編程經驗是心有所感

l   有新的 idea 可以馬上 try

l   錯了可以馬上改

l   Internet 到處都可以抄

    第三點可以說是啟蒙的開始,當我接觸程式未深的時候,我的確是抄起來的,但並不是為了交作業而抄,玩ACM的人都知道,解題是個成就,為了這些成就,抄是一種途徑。但抄了一年之後,我才逐漸成為那個提供者,第一點與第二點大概到了大學才正式開始,以前好像著了魔似的在解題,因此有新的idea就想馬上寫寫看,發現哪裡錯了就可以馬上改。這不外乎是每個ACMer的興趣了。

    但事實上玩ACM都是在寫小程式,都是在玩演算法、資料結構、幾何數學、等,一般來說都不會破百行,上千行的屈指可數,但很明顯地這些程式碼的使用率並不高,實用性也不夠,能重新編寫的大致上也只有自己,遇到的輸入情況都是已經被設限了,但事實上的軟體並不是這樣,他們需要一個可以擴充與修改的程式碼,因此如何將程式碼寫得正確是理所當然,如何將程式碼寫得漂亮才是個重點,變數亂設的情況在ACM比賽中可是常有的,反正也不會動輒上千行的程序。

     其中教授講到他面試研究生時所問的問題「你是怎麼樣 debug的?」的確,身為一個程序員debug是常有的事情,常常玩程式的ACMer或許還動輒不到debugger去進行debug,不過居然會有人認為編譯錯誤也算是debug,這讓我大吃一驚了。雖然我個人沒有使用debugger進行debug的經驗,但手工的中斷點(system(“pause”))與查看變數值也是常用的,還沒有進化到用debugger的地步,大概以後就要新增這一項技能了。

    教授蠻注重如何協助debugdebugger的製作,根據統計一個程序員消耗1/3的時間都在debug,也有1/3的時間在等待編譯,因此這些時間只要一減少,編程的效率就會高,通常會希望能將物件實體化進行debug,也就是在2D或者是3D展示,講到二元樹的輸出,就心有所感,之前也曾經出一道題目要求輸出一個二元樹的表示法,用圖形去表示他,光是用文字介面去表示就使得一堆人望之卻步,看到教授所展示的2D表達方法,就很吸引我的目光,不過從沒做過破千行程式的我,大概沒有辦法一次進展那麼多。

    教授打算在中央資工開一個不看成績的軟工所,以甄試的方式進行,上機測試真實力,之前就常常看到有些人真的程式實力不錯,道理也懂,但是在科目考試中每次都考得不理想,這種考驗真實力獲得的學習機會已經不多了。就像今年我考的轉學考,哪一個大學不會考國英微積分?但我偏偏在這上面的分數有些偏頗,英文是理工學生必要的科目,但我偏偏沒有辦法學好,但我想換個地方好好學習程式技巧,卻被這個門檻被卡住,真的是不想在四年之後,因為學習環境的關係而拉開實力的距離。