算法工程師日常!詳解真實(shí)的算法工作
導(dǎo)讀
?本文作者簡述了自己的工作日常,給大家做比對,也給一些想入行的人了解一下工作環(huán)境是什么樣的,是否符合預(yù)期做一下參考。寫這篇文章還有一個目的,主要是想在最近很多人可能要確定方向,尤其是“選擇算法”的這么一個時間點(diǎn)下,給大家一些真實(shí)的建議,讓大家知道真正的算法工程師是什么樣。
這周聊點(diǎn)輕松的,聊聊我的工作日常,大家比對比對,另外也給一些想入行的人了解一下工作環(huán)境是什么樣的,是否如何預(yù)期做一下參考吧。(這段本來在結(jié)尾,還是希望把文章最完整的初衷寫一下。大概率很多人看不到最后)寫這篇文章還有一個目的,主要是想在最近很多人可能要確定方向,尤其是“選擇算法”的這么一個時間點(diǎn)下,給大家一些真實(shí)的建議,讓大家知道真正的算法工程師是什么樣,主要現(xiàn)在我看有這么幾個誤區(qū):
算法工程師每天就是調(diào)調(diào)包就好了,工資還賺的很多。 模型一訓(xùn)練,剩下的時間就能摸魚了。 整天就是調(diào)模型就好了,脫離業(yè)務(wù)。
其實(shí)這些誤區(qū)都是圍繞著模型來走的,很多人會以為算法只是在做模型,當(dāng)然這個和很多媒體號聊的風(fēng)向有關(guān),但其實(shí)并非如此,模型工作只是占的很小的一個比例,大家一定要有這個預(yù)期。
大體都有哪些
算法工程師的主要職責(zé)就是負(fù)責(zé)一個或大或小的算法模塊,對效果,對整體指標(biāo),對整個算法模塊的可靠性穩(wěn)定性負(fù)責(zé)的一個職能崗位,大到整個語音助手,小到一個技能的問答模塊,我們就是搭建這樣一個模塊的工種,那么日常都有那些工作?
需求和目標(biāo)的溝通。 數(shù)據(jù)等資源的匯總和整理。 算法的落地實(shí)踐和效果調(diào)優(yōu)。 工程模塊搭建。 技術(shù)沉淀和輸出。 摸魚和生活。
需求和目標(biāo)的溝通
通常是和產(chǎn)品溝通,產(chǎn)品負(fù)責(zé)指揮整個產(chǎn)品的發(fā)展方向,對于我們而言就是和我們一起定義好一些目標(biāo)和標(biāo)準(zhǔn),例如”什么query應(yīng)該被認(rèn)定是天氣“,更多的還有很多模糊的問題,最直接的其實(shí)就是一個“什么叫做好?”,這是個非常復(fù)雜的問題,很多交叉的內(nèi)容需要判斷該分給誰更合理,這個過程往往會比較困難,主要因?yàn)閮烧叩男畔⒉粚ΨQ,產(chǎn)品不懂技術(shù),技術(shù)不懂產(chǎn)品,這是問題的根源,而要解決這個問題還是就是要多溝通多交流,甚至不要等著別人來組織,而是自己主動把大家拉上討論清楚。越是新的項(xiàng)目,前期這塊花的時間就會多很多,畢竟要同步大家的想法,把自己的想法完整、準(zhǔn)確地告知對方,真的很難。
數(shù)據(jù)等資源的匯總和整理
我們都知道,算法研發(fā)是一個極度依賴數(shù)據(jù)的,對現(xiàn)象的分析,模型訓(xùn)練,效果評估,都需要大量的數(shù)據(jù),為了構(gòu)造這些數(shù)據(jù),我們需要花費(fèi)大量的經(jīng)歷去獲取。
通用的,開源的,可以直接下載。 部分在日志、埋點(diǎn)里的,那就要寫sql拿。很多人所謂的“sql boy”的梗就來源于此。 沒有標(biāo)注的,需要和標(biāo)注人員溝通合作,這里又是一波漫長的溝通和等待了。 啥都沒有的,爬蟲可能要試試,在合法的前提下。
另外我們還要保障數(shù)據(jù)的正確性,數(shù)據(jù)量覆蓋現(xiàn)實(shí)的情況,分布和口徑是否一致等等,尤其是評測集,對這些問題的要求尤其高,有的時候數(shù)據(jù)分布不對,直接導(dǎo)致在線問題的出現(xiàn),所以要小心謹(jǐn)慎。為了評估好效果,為了能訓(xùn)練模型,而且數(shù)據(jù)處理其實(shí)非常繁瑣而不具有通用型,所以時間消耗其實(shí)非常大。
算法的落地實(shí)踐和調(diào)優(yōu)
這才到了算法的落地實(shí)踐和調(diào)優(yōu),也是大家最期待和喜歡的環(huán)節(jié),但其實(shí)這個工作時間占比并不高。來看看都在干那些事
各種方案的調(diào)研,這里包括看論文了。 技術(shù)方案的設(shè)計(jì),包括模型的各種實(shí)驗(yàn)方案。 構(gòu)造模型,進(jìn)行實(shí)驗(yàn)。說實(shí)話,真正有用以后,一般不會太去動了,所以一般是初創(chuàng)的項(xiàng)目更可能有模型的任務(wù)。 效果調(diào)優(yōu),簡單的、緊急的,一般就是用規(guī)則、詞典來處理,一般不是到了天花板,很少會主動去處理基線模型的。 bad case分析,這個其實(shí)非?;〞r間,需要標(biāo)注數(shù)據(jù),同時一些歸因之類的是需要思考的,不過我自己其實(shí)挺喜歡的,畢竟這其實(shí)是在積累自己對數(shù)據(jù)的理解,這是書上沒有網(wǎng)上沒有的東西。
算法調(diào)優(yōu)其實(shí)是一個很零散的流程,能拿到完整的效果優(yōu)化時間一定要珍惜。這里也要和很多以為算法工程師只有調(diào)模型的人說一下,其實(shí)這塊的工作很少。
工程模塊搭建
越是前期的項(xiàng)目,算法所需要承擔(dān)的工程任務(wù)就越多,越是后期成熟的項(xiàng)目,算法可以專注算法的時間越多。因?yàn)轫?xiàng)目初期,各種基礎(chǔ)工作都沒有,無論是工程本身還是各種數(shù)據(jù),這會導(dǎo)致我們需要很多時間花在這里,尤其是工程(畢竟算法可以用規(guī)則哈哈哈),算法服務(wù)、日志,如果需要一些更新,那還有更新模塊,甚至還包括一些預(yù)處理的工作(這里強(qiáng)烈建議大家自己構(gòu)造一些框架、一些基礎(chǔ)功能,是可以保留下來了)。這個其實(shí)非常鍛煉人的綜合能力,很多事情自己能做很多,這個修煉是很有利于技術(shù)廣度的,畢竟我們也不希望永遠(yuǎn)做算法吧,拓寬廣度增加自己的綜合能力還是挺關(guān)鍵的。
技術(shù)沉淀和輸出
要想進(jìn)步,可以靠實(shí)踐,但如果實(shí)踐之后能總結(jié)和沉淀,就能讓收獲進(jìn)一步,所以我自己本身會花大量的時間在這里,這也是我能持續(xù)成長最充足的動力。
總結(jié)和復(fù)盤,總結(jié)本周自己的各種進(jìn)展,有哪些做得好,那些不好,從而得到經(jīng)驗(yàn)提升。 每天花點(diǎn)時間看看case,看看自己解決的情況,這個有利于看自己理解問題,找到問題點(diǎn)解決問題。 輸出點(diǎn)東西,這就是我自己的必修課了,也就是大家每周看到的文章了。
摸魚和生活
高強(qiáng)度的工作正常人肯定受不了,稍微有些摸魚肯定是非常幸福的,其實(shí)我非常建議大家也能找到自己的樂趣,我自己喜歡喝咖啡、打游戲之類的,這些事情能讓自己從工作中快速跳出,清理大腦,其實(shí)非常有用。
往期精彩:
?時隔一年!深度學(xué)習(xí)語義分割理論與代碼實(shí)踐指南.pdf第二版來了!
?新書首發(fā) | 《機(jī)器學(xué)習(xí) 公式推導(dǎo)與代碼實(shí)現(xiàn)》正式出版!
