在做算法工程師的道路上,什么情況下技術(shù)會突飛猛進(jìn)?
導(dǎo)讀
算法工程師作為近幾年非常火熱的崗位,近幾年校招開放了大量的算法崗位。作為想要在這個崗位上不斷前進(jìn)不斷深入的人,有哪些tips或者經(jīng)驗可以傳授給這條賽道上的各位呢?本文匯總了知乎上三個優(yōu)質(zhì)的回答,希望能給各位一點啟發(fā)。
# 回答一
作者:沈世鈞
來源鏈接:
https://www.zhihu.com/question/436874654/answer/1746629056分享2個關(guān)于算法(包括算法工程師)的心得。
1.成就一個優(yōu)秀算法工程師的,不僅是聰明和汗水,更還有那一瞬間的靈感。
一作算法的朋友,入行幾年一直平庸無奇,然而就在某個下午,它在公司的走廊上遛彎的時候,就在一瞬間,它腦子中閃出一個精彩的點子,一下把公司的算法性能提高了幾倍。
為此,公司獎了他一大筆錢。有了這筆錢,朋友原本準(zhǔn)備在上海首付買房,結(jié)果直接全款,而且還是90多平米的大房子。
但其實,當(dāng)其他的同時了解了朋友的靈感之后都感慨萬千,因為實在是太“簡單”了,不過是利用了gpu的某個硬件特性而已。
但是,就是這么個簡單的東西,放在那里,別人就是沒想到,最后被朋友撿了個漏,只能說大概那一刻,他被上帝的蘋果砸中了頭。
2.算法是一個殘酷的競技場。
做軟件開發(fā)的都有體會,一個優(yōu)秀的軟件工程師相比于一個平庸的軟件工程師,可能會有數(shù)倍的生產(chǎn)力優(yōu)勢。
但是,即使是一個平庸的軟件工程師,管理得當(dāng),總能夠有產(chǎn)出,然后薪水合理,總還是能夠追求性價比的。
所以,這么多年來,我還沒見過因為純技術(shù)的因素被淘汰出這個行業(yè)的軟件工程師。也就是說,只要肯吃苦,薪水合理,總能有口飯吃。
但算法工程師不一樣。
杰出的算法工程師相比于無所作為的算法工程,可能是極大和0的差別。
和軟件開發(fā)不同,相同功能的系統(tǒng),很能進(jìn)行量化的比較,但算法不一樣,在標(biāo)準(zhǔn)的數(shù)據(jù)集上,可以得出一個精確的性能/精度結(jié)果。在此之上,就可以就行各種比賽以及排名。
所以經(jīng)常會出現(xiàn)這種情況。
作為一名算法工程師,過去的1年你投入了巨大的精力在某個算法的改進(jìn)上,結(jié)果感覺也進(jìn)步不小,但很有可能在年末的比賽中被同行吊打。
我就見過朋友辛苦了一年,比賽結(jié)果出來,排名直接去年的前5跌出前10,這個時候人只能感慨:“不是我不努力,而是對手太強(qiáng)”。
但最讓人感到痛苦的時候,當(dāng)我們被對手吊打的時候,我們甚至猜不出對手到底使用什么“黑科技”,從而取得了如此突飛猛進(jìn)的成果,也許就如上面所描述的,對方的某個算法工程師也被上帝的蘋果砸中了腦袋。
所以,在關(guān)鍵指標(biāo)上,公司對算法工程師的產(chǎn)出考核是極端苛刻的,要么是1,要么是0。你辛苦研究出的東西很可能一出生就是落后的,要被淘汰的東西。
所以,算法工程師的情緒常常要在谷底和巔峰之間飛躍,承受巨大的壓力。
正是因為算法輸出成果的可比較性,在其中的算法工程師往往會承受巨大的壓力,這種壓力比程序員更大。
程序員雖然很累,但好在程序員的工作需求往往是明確的,過程(搬磚)是可預(yù)期的,壓力主要體現(xiàn)在工期上。而算法工程師的需求有時候是不明確的,即使是明確的,但過程卻未知,需要去探索,有時候依賴于靈感。
過去的這些年,我從沒見過因技術(shù)主動離隊的程序員,但我卻見過不止一個因為技術(shù),承認(rèn)自己被擊敗,而主動離隊的算法工程師。
# 回答二
作者:DLing
來源鏈接:
https://www.zhihu.com/question/436874654/answer/1744174731
數(shù)據(jù)放在第一位,成也數(shù)據(jù),敗也數(shù)據(jù)。深刻認(rèn)識數(shù)據(jù)的重要性,把數(shù)據(jù)集維護(hù)好,數(shù)據(jù)量夠了,再談后面的模型優(yōu)化,數(shù)據(jù)都不干凈,用再好的模型,也不會出好的結(jié)果。
啟動開發(fā)前,多問問自己有沒有了解這個業(yè)務(wù),目前定的方案還有沒有盲點沒有考慮到,畢竟啟動開發(fā)需要準(zhǔn)備各種數(shù)據(jù)集,耗時長且需要一定的人員和經(jīng)濟(jì)投入,如果開發(fā)過程中或者測試階段發(fā)現(xiàn)方案不合適,這時候推倒重來的話,就DT了。
算法工程師并不只是調(diào)包俠,煉丹師,而是一個綜合要求很高的崗位。要訓(xùn)的了模型;寫的了邏輯;優(yōu)化的了算法性能,時刻把運行速度,準(zhǔn)確率,召回率,顯存利用率,顯存占用,cpu利用率,內(nèi)存占用,并發(fā)路數(shù)等等記在心里;還得深刻了解業(yè)務(wù),目前的方案合不合適?產(chǎn)品定的指標(biāo),給的需求有沒有坑?完成這些需求,要選什么樣的硬件最劃算,可不可以少幾個模型,畢竟看數(shù)據(jù)也很費眼;
多實驗,多記錄,多對比,勤討論,勤匯報,勤迭代。這一行多少還是有點玄學(xué)的,很多問題沒有很強(qiáng)的理論可以支撐,靠經(jīng)驗的地方很多,這個模型效果好,很多情況也不是推導(dǎo)出來的,而是實驗出來的,有時候想破腦袋,也沒有動手起幾個模型效果來的快。平時多跟同事同行討論討論,搞不好費了你好幾根頭發(fā)的問題,就被別人解決過呢?
多看行業(yè)頂會論文,多追追大牛的博客,思路打開了,落地也就簡單很多。
# 回答三
作者:坡哥說
公眾號:坡哥說
來源鏈接:
https://www.zhihu.com/question/436874654/answer/1705702321
模型不是一切!
模型不是一切!
模型不是一切!
重要的事情說三遍!
其實并不存在所謂的突飛猛進(jìn),就是從業(yè)務(wù)出發(fā),去連接業(yè)務(wù)和模型、特征本身。那些模型也好,技術(shù)也罷,不落在真實的業(yè)務(wù)場景和產(chǎn)品中,則產(chǎn)生不了太大的商業(yè)價值。
我們絕大部分人都是普通人,大家都是為了掙錢、養(yǎng)家糊口才去工作的,而老板愿意給你發(fā)更多錢并不是因為你搞的這個技術(shù)很黑科技,很牛X,而是你做的東西帶來了商業(yè)價值。
苦口婆心地勸還在學(xué)校的學(xué)生不要迷戀模型,可能一點兒用也沒有,因為人家接觸不到真實業(yè)務(wù)場景和數(shù)據(jù)。
其實,算法工程師,越做越久,就會發(fā)現(xiàn)本質(zhì)還就是數(shù)據(jù)分析和歸納,模型那些東西不會占用很多時間,更何況,工業(yè)界用的實實在在的那些模型,其實都是些非常經(jīng)典,架構(gòu)簡單的,絕不是堆砌那些花里胡哨,投入產(chǎn)出比低的模型。
往期精彩:
【原創(chuàng)首發(fā)】機(jī)器學(xué)習(xí)公式推導(dǎo)與代碼實現(xiàn)30講.pdf
【原創(chuàng)首發(fā)】深度學(xué)習(xí)語義分割理論與實戰(zhàn)指南.pdf
點個在看
