完成「第三屆機器學習百日馬拉松」所有一百道題目和期中、期末 Kaggle 競賽完全出乎我意料之外,而我會參加「第三屆機器學習百日馬拉松」是有原因的,是慢慢醞釀出來的,從研討會開始,接著是「人工智慧學校」,然後是「第三屆機器學習百日馬拉松」。
我一向喜歡在工作忙碌之餘參加各項研討會和展覽,這些活動不見得和工作有直接關係,也不限於是和工作相同產業的活動。一方面是忙裡偷閒、放鬆心情;一方面說好聽是避免與新科技、新技術脫節,並師夷長技以制夷。無論是什麼原因,總有一種追尋「無用之用的知識」的渴望。「無用」,是因為我們不知道未來會遇到什麼問題,無法預測和想像這些問題是什麼,更無法想像在未來要如何運用這些知識來解決所面臨的問題。但這「無用之用的知識」卻能慢慢積累成系統性思考的基礎,墊高自己的高度與視野。
不過由於種種原因,有很長一段時間沒有參加任何活動,同時失去了人生的方向。
2018年9月,正當手邊計畫告一段落,因緣際會下參加了一個主題是「智慧製造」的產學媒合研討會,副標題是「AIoT」(AI+IoT),談製造、談人工智慧、談物聯網。製造,我懂;物聯網,屬於我的產業,我懂;人工智慧,卻是遙遠年代的記憶,大學最後一年,人工智慧發展歷史中第二次寒冬的前一年,是只要輸入知識就會變聰明那種人工智慧。
研討會中,有某法人研究機構介紹透過人工智慧可以預測物體振動在未來什麼時候會達到設定的危險邊界,並事先採取主動預防措施。這法人研究機構以美國太空總署的資料集驗證,提前七天發現震動將超出損壞界線,比美國太空總署先前自己研究的預測早了好些天。
「這個研究可以應用在什麼地方?」,我問。
負責解說的小朋友(很抱歉我稱呼這研究員為小朋友,因為他與我的年紀真的有一大段差距,至少看起來是)支支吾吾答不出來。
我告訴他,「工廠裡任何擔心會因為振動造成損壞而且影響產能的地方,闢如:與生產有關的馬達;或者是軌道,高鐵、台鐵、雲霄飛車都害怕軌道震動過大;又或者車輛引擎的震動、車輛行駛時的震動偵測都是可以應用的領域。」
我能告訴研究員他的研究可以應用在什麼地方,但我卻無法理解這人工智慧是怎麼預測的。
腦海中忽而閃過曾收過但被丟進垃圾桶的廣告郵件,是「人工智慧學校」的招生廣告。新竹班第一期已經開課,或許我可以在下一期課程中找到答案。不想讓自己又陷入尋找人生方向、生命意義的無限循環中,毫不猶豫地報名「人工智慧學校新竹經理人班第二期」課程。
2018年12月開學前,在網路上讀到這麼一段話。
Always wanted to travel back in time to try fighting a younger version of yourself? Software development is the career for you!
(Elliot, 2013/12/12)
意思是:
總是想回到過去和年輕時的自己對打嗎?那麼軟體開發對你而言是最好的職涯選擇。
(艾略特,2013年12月12日)
這句話真有意思。
在我晉升管理職之後,帶領過幾個不同功能的部門,超過十年沒寫程式了。大學畢業後一頭栽進軟體、韌體開發的行業,一寫就是十多年。而寫程式的職涯中,超過一半的時間在寫組合語言,每天活在 microsecond 和 nanosecond 的世界裡,腦袋裡不時浮現各種時序圖和電子訊號,也曾用 C 和 PLM 撰寫幾個大型系統的程式。每當總經理很得意地告訴我他又發現了一隻臭蟲時,還沒說完這隻臭蟲的來龍去脈,我立刻告訴總經理,「我已經知道臭蟲在哪裡了。」因為所有我寫過的數十萬行的程式碼全都刻印在腦袋裡,只是這些程式碼隨著時間全都被清掃一空(purged)。
我曾經徹徹底底地輸過一次,在我的生命中。或許回來寫程式才是我剩餘人生的方向,至少是避免腦袋空轉的方法。
谷歌大叔告訴我現在最熱門的程式語言不再是 C 而是 Python,谷歌大叔又告訴我說 Python 是開發人工智慧程式最主要的程式語言而不是 Lisp。
重新學習 Python 就如同你已經學會英文很長一段時間,給你一本法文字典、法文文法書和幾篇文章範例,耐心讀下去,不多久大概就能抓到法文的基本脈絡了。程式語言比法文簡單多了。
Ok, let’s go Python and fighting.
第一次聽到「機器學習百日馬拉松」是在「人工智慧學校」裡,同期的同學正參加這個競賽,說的我心癢癢的。「人工智慧學校」還沒結束,「第二屆機器學習百日馬拉松」已經開打。
2019年7月,「第三屆機器學習百日馬拉松」開始報名,心裡想著「如果現在不報名參加,下一屆我也不會報名了,更不用說以後是絕不會報名的。」壓力是最有效的動力,估計下班後的時間與能力,自己約莫能完成前十題。於是報了名,並設定目標在二十題,就二十題。
2019年8月下旬,隨著「第三屆機器學習百日馬拉松」起跑槍聲響起,內心深處沉睡已久的程式鬥魂醒了,經常是闌珊燈火已熄才上床就寢。跟著每週題目發佈,漸漸的發現機器學習程式設計的規則和套件的用法,這是Python 程式語言的好處,有太多第三方套件可以使用。依循脈絡前進,不知不覺中完成了一百題挑戰,也完成了期中、期末Kaggle競賽測驗。
就像去(2019)年初我去三民國中跟小朋友演講時說的:「你不需要等到很厲害才開始,你必須要先開始才能變得很厲害。」在這一百二十多天、一百道題目的挑戰賽過程,我也多次陷入苦思、嘗盡苦頭,譬如:期末考 Kaggle 競賽時,在沒有適當的 GPU 可用的條件下,讓 laptop PC 的 CPU 連續跑 36 小時完成深度學習訓練集的訓練,這之間什麼事都不能做,除了等待。
「機器學習百日馬拉松」的結束只是另一個起點而已。農曆年前,我在評估應該要買什麼樣等級的工作站或伺服器才能滿足接下來更多的深度學習程式設計挑戰,像是電腦視覺化、自然語言處理等等,這將是一筆不小的支出,得好好想想。
老驥於 2020/02/04
留言列表