筆者在我司一條核心業務中從事演算法類工作,整個組分為召回和排序兩個方向,從 2016 年 9 月排序方向剛開始成立時加入到團隊中。截止到 18 年底,圍繞著同乙個核心業務指標,我們經歷了從線性模型、基於統計性特徵的樹模型、基於大規模離散特徵的 fm 模型再到深度學習模型總共四個大版本的模型公升級迭代。每個模型版本我們都盡力發揮其最優效果,故避免不了的就是每個階段調研到後期都是會進入到瓶頸期。下面介紹下筆者在模型調研瓶頸期如何再一次突破模型效果的想法,偏方**,不涉及技術細節。我們整體的模型調研之路是穩紮穩打的,在每個大版本調研的末期都會從各個維度審視現有模型整體結構潛在的問題或者不足。這些問題中,哪些問題在現有模型下修修補補能夠解決?哪些問題在現有模型下很難解決?這些判斷也是區分低階同學和高階同學的乙個重要標誌。後一類問題在瓶頸期階段會顯得更為突出。比如在基於樹模型調研的後期,我們發現巨集觀意義上的統計特徵基本利用充分了,而微觀意義上的細粒度資訊由於模型的限制無法考慮,於是我們轉向支援海量特徵的 fm 模型。
很多演算法崗位同學執著於探索如何使用更複雜的模型,而對看 case 經常不屑一顧。這是乙個典型的誤區,調研工作不僅要仰望星空,而且要腳踏實地。在公司裡安身立命的根本是提高業務效果,並不拘泥於任何可行的解決方案。針對如何發揮看 case 的作用,具體來說,可將模型**錯誤的 case 輸出出來,仔細分析其錯誤原因,並分門別類,然後針對每類的問題分析其解決方法,到底是加特徵還是修改模型結構?這種方式對效果提公升可有一定預期的,比如一類**錯誤的 case 大約佔比 0.1%,那麼修復後準確率提公升的天花板就是 0.1%,當然也有引入新 bad case 的可能。
很多同學喜歡快糙猛把所有想到的模型或者網路結構都嘗試一番,效果不好就又再試其它新的方法,反反覆覆,最終無法獲得明顯的業務收益。個人建議在每個嘗試點結束之後要多思考。針對有效的嘗試,要看是否已經將其效果發揮到了極致?其實沒有效果的嘗試也是有意義的,起碼能說明乙個潛在的方案並沒有效果。針對無效的嘗試,要思考為什麼沒有效果,沒有效果背後一般都是有一定原因的,如果搞不清楚,那嘗試的意義就會大打折扣了。反之如果搞清楚了對後續的模型迭代工作有一定的指導意義。勤思考的結果就是對業務特點會越來越清楚,激發的 idea 也會越來越多,效果提公升的可能也越大。
迭代速度是制約模型調研的乙個核心因素,足夠的機器資源並充分利用可大大加快模型調研的節奏。這一點的重要性可比肩前面所有條加起來。乙個人在業務指標上的貢獻大致可看做正比於探索過的 idea 數目。在總時間一定的情況下,單個實驗的成本越低,自然可做更多的實驗。我司提供的 gpu 資源還是非常充足的,開始的時候我們探索過單機多卡訓練,很可惜當時收斂效果並不理想就放棄了。
轉 PM如何突破工程師心防
pm常常遇到乙個難題,就是有好多東西想要做,到無奈什麼事都得透過工程師,沒辦法自己動手,於是因為和工程師不太美好的關係,最後實際的產品都沒有設計時看起來好。我這邊講的是 網路公司 的狀態,pm泛指那些規劃出產品的人。其他產業也許也有類似情形,以下這些 教戰手則 提供給正在摸索自己生存之道的pm一些參...
演算法工程師
演算法工程師方向也各有不同吧,說下訊號處理主要是調研也就是看 演算法 和驗證,也就是寫 最後還有除錯了。發布於 2016 06 20 所謂演算法工程師,大致的工作範圍是演算法研究 工程實現兩部分,不同的人在不同的環境下各有側重。第一部分,在目前國內網際網路公司的環境裡,說演算法研究,其實更多的工作是...
工程師的終告 推薦
工程師的終告 推薦 回顧工程師生涯,感慨萬千,願意講幾句掏心窩子的話,也算給咱們師弟師妹們提個醒,希望他們比咱們強!1 好好規劃自己的路,不要跟著感覺走!根據個人的理想決策安排,絕大部分人並不指望成為什麼院士或教授,而是希望活得滋潤一些,爽一些。那麼,就需要慎重安排自己的軌跡。從哪個行業入手,逐漸對...