[討論] ML/AI 工程師需要的數學

軟工

40370


我換個標題比較方便未來有人需要的話可以搜尋。


我來拋磚引玉一下台灣業界現況。

我個人 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


--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.104.122.246 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1636769550.A.E5D.html
DrTech1樓非常務實,有邏輯,有自己想法,表達又清楚的一篇文章。也 11/13 10:41
DrTech2樓說到工作中的關鍵點,及看paper的好方法。 11/13 10:41
aa77a3樓總算有人說得好了 11/13 11:04
joshnash4樓推推 11/13 11:11
z8888888615樓推推好文 11/13 11:56
kiwi9469466樓想請問問coding部分。即使已經有專案經驗,第一關還是 11/13 12:09
kiwi9469467樓會先給你考程式題,第二關才會問你之前的專案經驗嗎? 11/13 12:09
具體面試流程每家公司都不太一樣,技術面試之前應該都有機會可以問 HR 該公司 是怎麼安排的。也是有可能同一關一半的時間考程式一半的時間問 ML 相關經驗或問題
x246libra8樓備份,哪天後端熟悉了,再來一窺ml基本能力需求 11/13 12:44
andy0869樓非常同意,實作有商業價值才是真的 11/13 13:44
lofu10樓推 有沒有kaggle成績真的是個分水嶺 11/13 14:20
libitum11樓推推推 刷leetcode變得越來越必須了 11/13 14:38
ouskit12樓push 11/13 15:41
asleisureto13樓務實推 11/13 16:15
csvt3274514樓碩班開始弄相關東西 看Paper到最後也變這樣XD 11/13 16:29
ghost9033115樓推推 11/13 21:42
ykes6051316樓以前研所修過李宏毅的ML…那數學真的是天書看不懂 11/13 22:11
JustInn17樓有的人很喜歡自創演算法與調參,但實際現有理論與套件加 11/13 23:26
JustInn18樓變化一下便可達成。反而忽略domain knowledge與特徵處理 11/13 23:26
mmonkeyboyy19樓樓上你這句話是真理啊 11/13 23:43
world4jason20樓業內給推 觀念真的重要很多 解商業問題大部分都是組 11/14 00:06
world4jason21樓合拳 很多ML算法很好用的 DL就算弄出來還得考慮成本 11/14 00:06
world4jason22樓問題 數學程度我也覺得能夠理解metric跟loss就夠了 11/14 00:06
world4jason23樓剩餘就是偶爾去kaggle或是各大論壇上面補充新知就好 11/14 00:06
abby030224樓謝謝分享 11/14 00:35
lukelove25樓感受同意 11/14 00:55
kevin1ptt26樓好文推! 11/14 01:38
tiramisu022527樓 11/14 09:29
jskblack28樓推~~ 11/14 12:08
RumiManiac29樓 11/14 12:58
ddmanddman30樓 11/14 13:21