前幾天看到幾篇不同的文章寫關(guān)于機(jī)器學(xué)習(xí)的to do & not to do,有些觀點(diǎn)贊同,有些不贊同,是現(xiàn)在算法崗位這么熱門,已經(jīng)不像幾年前一樣,可能跑過(guò)一些項(xiàng)目、懂點(diǎn)原理就可以了,現(xiàn)在對(duì)大家的要求更高,尤其工程能力更不可缺少,只跑過(guò)一些iris鳶尾花分類、啤酒與尿布、貓狗分類等的同學(xué)需要再提高提高,因?yàn)楦?jìng)爭(zhēng)太激烈了,我在這里結(jié)合我自己的經(jīng)驗(yàn)總結(jié)一下吧。
To Do
做項(xiàng)目時(shí),邊搜集數(shù)據(jù)可以邊用已經(jīng)搜集好的少部分?jǐn)?shù)據(jù)跑模型。不用等到所有數(shù)據(jù)都搜集好了再跑。
不知道什么算法合適,可以直接把所有的算法都跑一遍,看效果再選擇,多跑幾個(gè)應(yīng)用場(chǎng)景你就知道什么算法適合什么場(chǎng)景,什么數(shù)據(jù)對(duì)不同的算法會(huì)有什么影響了。
不知道什么參數(shù)是最佳參數(shù),可以用random search或者grid search自動(dòng)搜索最佳參數(shù)組合,有經(jīng)驗(yàn)以后對(duì)于每個(gè)參數(shù)的大概范圍心里會(huì)有個(gè)數(shù)。
一定要練習(xí)工程能力,只會(huì)調(diào)參的demo俠現(xiàn)在很難找到工作啦。
模型復(fù)現(xiàn)和刷題是很好的鍛煉工程能力的一種方式。
刷題不要追求數(shù)量,要總結(jié)不同類型的題目的經(jīng)驗(yàn),并結(jié)合之前的業(yè)務(wù)中,看能不能優(yōu)化之前的業(yè)務(wù)邏輯。
模型復(fù)現(xiàn)可以給自己規(guī)定一個(gè)任務(wù),譬如在一個(gè)月內(nèi),把某篇論文的Tensorflow實(shí)現(xiàn)的代碼,復(fù)現(xiàn)成Pytorch或者PaddlePaddle等其他框架的代碼,不是閑著沒(méi)事做,而是模型復(fù)現(xiàn)可以迅速提高你對(duì)框架的熟悉度和代碼能力。
模型復(fù)現(xiàn)的過(guò)程中,最難的是寫新的op和模型效果(精度和速度)的對(duì)齊。這可能很折磨人,但是收獲也很大。
如果要做新項(xiàng)目,可以先看看有沒(méi)有預(yù)訓(xùn)練模型,可以快速做遷移學(xué)習(xí)的,如果有,那么整體的模型周期會(huì)快很多。
如果跑完算法,一定要有一個(gè)成品的形態(tài),最好不要只做算法這一塊,譬如跑完模型將其打包封裝成服務(wù)接口(服務(wù)端和移動(dòng)端等),達(dá)到讓人可用的狀態(tài)最好。
領(lǐng)導(dǎo)不想知道過(guò)程,只想知道結(jié)果。沒(méi)有可用的東西和可視化的結(jié)果,他會(huì)覺(jué)得你啥也沒(méi)做。
上條只針對(duì)部分領(lǐng)導(dǎo)。
沒(méi)有人會(huì)比你更關(guān)心模型的參數(shù)調(diào)整導(dǎo)致模型的效果提升了0.1%還是1%,大多數(shù)人,尤其是leader、或者leader的leader,只關(guān)心它有什么用,真實(shí)場(chǎng)景的效果好不好。
可以多和同事、同行等互相交流,參加線下的學(xué)習(xí)會(huì)、交流會(huì)等,可能會(huì)有意想不到的收獲。
學(xué)習(xí)新的算法,先把代碼跑起來(lái)再說(shuō),再來(lái)看理論、數(shù)學(xué)推導(dǎo)、自己手寫實(shí)現(xiàn)等。
除了調(diào)參以外,還需要關(guān)注關(guān)注部署上線、模型壓縮等方面的內(nèi)容。
Not To Do
訓(xùn)練數(shù)據(jù)不要太干凈了,因?yàn)檎鎸?shí)場(chǎng)景的數(shù)據(jù)往往和實(shí)驗(yàn)數(shù)據(jù)差很多,嘗試加點(diǎn)噪音吧,做些數(shù)據(jù)增強(qiáng)和mixup等。
論文里的效果不一定能復(fù)現(xiàn)。可以嘗試論文的思路,但是不要太過(guò)相信論文里的效果數(shù)據(jù)。
做一個(gè)項(xiàng)目就好好深挖,不僅僅要做出來(lái),還要不斷的優(yōu)化,不然每個(gè)項(xiàng)目都只是跑通了,效果還行,沒(méi)必要寫到簡(jiǎn)歷里,不如寫一個(gè)做得很深入,嘗試了各種優(yōu)化方法并有效果提升的項(xiàng)目。
不要因?yàn)橛X(jué)得自己數(shù)學(xué)不好就先去惡補(bǔ)數(shù)學(xué),買一堆高等代數(shù)、數(shù)學(xué)分析、實(shí)變函數(shù)、復(fù)變函數(shù)等純數(shù)學(xué)書,如果一定要看,推薦《線性代數(shù)》《信息論》《凸優(yōu)化》《數(shù)值分析》。
上條推薦的四本數(shù)學(xué)書也不用全看,凸優(yōu)化太厚了,其他三本可以在自己有大塊時(shí)間可以刷書的時(shí)候,規(guī)定自己在一個(gè)月或者幾個(gè)月的時(shí)間迅速刷完。線性代數(shù)是基礎(chǔ),數(shù)值分析是優(yōu)化方法(也不用全看),凸優(yōu)化與信息論與目標(biāo)函數(shù)相關(guān),涉及機(jī)器學(xué)習(xí)的很多理論知識(shí)。
不要覺(jué)得你訓(xùn)練的模型效果多好就多么厲害,除非是做科研、打比賽、工業(yè)界更關(guān)注能不能落地,能不能應(yīng)用產(chǎn)生價(jià)值,不要自high = =
如果把你的算法封裝成服務(wù)了,也要做做壓測(cè),學(xué)習(xí)下工程方面的內(nèi)容。
最好的狀態(tài)是,工程能力強(qiáng),又懂算法,兩者結(jié)合,效果更佳。不要只注重某一方面的提升,多關(guān)注下自己的代碼風(fēng)格,不要讓你的同事code review的時(shí)候犯難。
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4344瀏覽量
62857 -
模型
+關(guān)注
關(guān)注
1文章
3290瀏覽量
49023 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8435瀏覽量
132887
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論