我換個標題比較方便未來有人需要的話可以搜尋。
我來拋磚引玉一下台灣業界現況。
我個人 112 CSIE 碩畢,但碩論跟 ML 無關,沒有 ML 相關的學術論文。
Kaggle 銅牌以上 x 5 (兩次是抱團靠隊友)
六年工作經驗,算是 deep learning 熱潮起來以前就入行。
待過兩家五百人規模的新創,工作內容包含將商業問題轉換成
ML 可解的問題、將解出來的模型跟系統組的同事合作推上線
有時候也要接一下資料(水管)。
先講工作上會用到的數學:
一些基本的統計觀念,對於觀察資料會有幫助。
理解使用到的 ML 模型的概念,了解這個有時候會對參數選擇有所幫助。
Deep learning 的話至少看得懂 loss function,有時候會把不同 loss
合起來一起訓練。少數幾次遇到的問題沒有合適的現成 loss ,所以自己
亂寫 loss function,寫完也是丟給 tf 幫我 optimize。
理解使用到的 metric,關乎到你怎麼挑選模型跟 loss function。
我覺得理解 metric 跟 loss 是很重要的,這樣模型在 metric 表現不好
的時候才知道要往哪個方向調整。
看 paper 我第一個看它實驗怎麼做的、結果怎樣,看完覺得有機會在我的
dataset 上也夠好才會繼續看,第二個看有沒有現成的 code 可以用,第三
個才是去理解它的方法 (通常是 loss function)。至於裡面的定理,很多
假設都跟現實有差距或是它是在證 error bound 這種我知道也不能幹嘛的
東西。至於正確性就相信 reviewer 不會偷懶 XD 所以通常都是跳過不看 XD
工作上最需要的就是做的東西要有商業價值,至於後面是什麼技術、數學
多難本身不是太重要,跟不懂的人講什麼模型聽起來都很厲害。如果 rule
based 的方法成效就足夠好,我也會先用它頂著。當然一般來說 ML 的成效
都會比 rule based 更好,所以用到 rule based 的機會還是很少。
數學重要在幫助你選擇適合的 metric 跟模型,以及調模型的時候更有效率
,可以不用所有的參數丟下去跑,畢竟這個花時間也花錢,對公司來說這兩
個都是大成本。
以這個需求來說,我覺得不需要很艱深的數學,主要是機率統計微分(沒有積分)
,如果你說矩陣相乘算線代那有用到,再難的就很少了。
重要的是觀念要清楚,用到的都是觀念。
最後,工程師 coding 就是基本功,所有的想法都要 coding 才能在真實世
界實現,尤其 ML 常常處理大資料,模型也要上 production。我不知道 ML
要強到什麼程度公司才願意配一個人專門幫你寫扣 XD
我的經驗是架構方面通常會有專業的同事幫忙設計,inference 的部分就要
自己寫。data pipeline 的話同事會將資料整理好,可能是 parquet on s3
,把它轉成 feature 到 model training 再將 model 送上 production 機
器這一段要自己寫。
實驗 code 就是全部自己來,code 有沒有效率就關乎你實驗跑多久、能跑多
大的 scale。
關於面試,六年來我也應該面過二十幾個 ML engineer 的職缺,大小公司都
有,台灣日本新加坡都有。我自己在兩家公司也都有幫忙面過 ML engineer。
通常 ML 面試就是給你一個問題,問你怎麼用 ML 解。比如說怎麼設計推薦系
統之類的,然後再從你的回答問延伸問題。我覺得只要大觀念會、對於提出來
解決問題用的模型有一定程度的理解就可以了。我從來沒有被問過任何證明推
導的問題。Research scientist 我就沒面過了,不清楚。
除了少數幾家小公司沒有問 coding,其他幾乎都有,而且我體感規模越大的公
司問的越難,所以 leetcode 還是要刷,越大間的公司越要刷。
前陣子剛好敝公司比較多 ML 的 headcount,所以我幫忙面了大概有十個人吧,
最後錄取三個。我參與的是第二輪面試,所以我不知道第一輪是怎麼挑人的。我
們主要想找有 NLP 經驗的人,我看到的履歷沒人有頂會,只有一個有 Kaggle
成績,一個是碩班做 NLP,其他都是因為相關工作經驗被找來。進來以後我覺得
工作能力上也沒有什麼問題,對公司也能有商業上的貢獻。
我自己面試人對於 ML 的基本要求是,知不知道用的模型概念是什麼、哪些參數
是重要的、能不能根據問題挑選合適的 metric 以及根據這個 metric 挑選合適
的模型,怎麼判斷模型好壞、成效不好的怎麼 debug 跟調整。
以上跟有沒有頂會完全無關,當然發過頂會的人對於上面這些問題一定是都能答
得不錯,但沒發過頂會也可以。反而因為上面這些問題很重要,我個人是很看重
Kaggle 的,Kaggle 除了 metric 幫你決定好以外,其他能力都要好才能有好成
績。Kaggle 我只認可有獎金的比賽成績,銅牌以上我覺得應該就有基本能力可以
找來面試看看,銀牌以上應該程度不錯,金牌我會覺得很強。
Kaggle 當然 deep learning 相關的比賽有設備有優勢,不過也是有人靠免費的
colab 拿到金牌,如果只要求銅牌的話對於拿免費的 colab 頂著用也不是每個比
賽都跑不完,有時候 google 也會贊助 300USD 讓你用 GCP,我覺得不求頂尖成
績的話設備不會是問題。
會找來面試的通常是有相關工作經驗,或是碩班做 ML,或是有 Kaggle 成績。
轉領域的話前兩項一定是沒有的,就去 Kaggle 刷一個銅牌吧!刷不到至少也知
道 ML 是怎麼回事,有沒有興趣做下去,探索興趣對人生來說也是很重要的事情
。我覺得刷 Kaggle 很好玩呀,只是太花時間了,不然我也想天天刷 XD
--