廣告演算法工程師的核心競爭力是什麼?
計算廣告中用到的演算法並不是太多,很多時候是在琢磨業務,觀察數據,尋找特徵,反覆試驗。工作一段時間下來,相對搞深度學習的朋友感覺自己學到的太少了。搞深度學習的不斷的學習新演算法,圖像方面的還可以做出漂亮的demo,很容易就能夠向人證明自己的工作,自己的實力、競爭力。
那麼對於做廣告演算法的工程師而言,核心競爭力在哪呢?花了大量時間折騰數據,偏偏這方面還沒啥好說的。搞廣告演算法,最終可以在簡歷上留下什麼呢?不知道有沒有過來人可以解答一下,這個問題應該會是不少初入這行的同學的困惑吧?
有些項目決勝的關鍵點靠的是思路 市場 設計 架構 比如微信 在這些項目上追求機器學習技術成長就是南轅北轍
有些項目技術已經成熟了 誰都能做的差不多 這些項目 就別被機器學習這些術語蒙住眼睛 他們本質上就和用現成代碼搭個論壇差不多 也沒什麼技術
但是 有一些項目是真正困難的
以做工程來類比 困難的項目 我們不敢交給新手負責 因為新手會把架構做的一團糟 最後結果很明顯 就是項目失敗
機器學習項目其實也是類似的 大家也許有一個感覺 任何人隨便發明幾個特徵 找點數據跑一下 都能出結果 所以 好像機器學習項目不容易失敗
但是 什麼是項目的失敗? 工程項目的失敗是做不出來 這很清楚 機器學習項目的失敗按照李航老師的說法是:項目的效果達不到用戶的期望。
一個項目需要90的accuracy 只能做到80那就是失敗 競爭對手有90的accuracy 我們只能做到80 那也是失敗
所以 真正困難的機器學習項目 需要大量的知識和經驗
-------
經驗和知識真的有價值嗎?
在傳統工程項目中我們從不懷疑 因為 老手總是能做出來 而新手總是搞得一團糟但機器學習不是如此 隨機性總是存在 運氣好的新手有時會比老手做出更大的貢獻但是 從長遠來看 隨機性會被無數出的嘗試平滑下來 每個人都會收斂到自己真正的能力
------
以我個人的淺見 最寶貴的經驗不是書上或者論文中明白寫出來的 而是一整套方法論1 問題是什麼?2 用什麼指標來度量?3 問題的複雜度是什麼量級?4 模型不好 本質上就是模型複雜度沒有匹配問題複雜度 哪裡是模型複雜度的瓶頸?** 標註數據** 人的智慧 創造有價值的特徵 還是說可以用深度學習來創造feature?** 海量用戶行為數據
** 模型的調整 過於簡單的模型 相當於強行約束了複雜度的上限 使得明明有海量的數據硬是用不上5 找不到便利的數據和特徵 就可以想想是否能把問題分解成子問題 也許在子問題空間下 你能想到更好的特徵 數據和模型 同時分解了問題 就能夠引入更多的人員來並行工作6 知道怎麼做乾淨的實驗 系統性的探索所有的可能性 排除無關因素系統性的做事幫助我們理解問題 就算最後失敗了 也能清楚的說服別人 是資源還是技術水平造成了項目的失敗
而混亂的做事風格 經常給人這樣的印象 這個項目失敗了 但我也不知道為什麼 反正我就是沒做出來在所有的經驗中 狹義的模型和特徵工程只是第四點的一部分而已
但是剩餘的部分也都是技術(與具體的應用領域無關) 是建立在對機器學習的能力與界限有清楚認識的基礎上的一些抽象-------
在說一句深度學習 請別被市場宣傳迷惑 想清楚深度學習解決了什麼問題? 把它融入自己的方法論
知道什麼時候該用深度學習 什麼時候不該用 能解決問題的人才是市場歡迎的人
另外 你的價值取決於供需關係 做深度學習的人 也要想想 大家都能搭demo 都會看論文 也都能實現演算法 我的獨特之處是什麼?業務經驗,如果有公司要搞廣告演算法,你去帶這塊業務,薪水和位置都好說。變現更容易。
相反,純演算法的,不帶業務,也就只能去大公司做做專家,收入雖然也還行,但是職業瓶頸也很明顯。
演算法和業務,能兼顧就盡量兼顧,兩手硬才走得長遠。業務理解,那些尋找特徵的經驗和教訓
所有做數據的都有相似的困惑。做演算法高大上,容易吹牛逼,可是給業務帶來的價值不明顯(99%如此,做AlphaGo這種的另說),不好出業績。緊盯業務無非是堆特徵,特別low而且有天業務不行,轉行也不容易。我的建議始終是,先做好業務,至少讓自己在一個領域能站住腳;然後花20%的時間去做自己所感興趣的技術,想方設法把它應用到現有的問題上,哪怕是再小的問題,有成果及時show給boss看,去證明自己與眾不同的價值。
務虛一點說核心競爭力就是把數據有效、長期、規模化變現的能力;務實一點說就是理解業務內容、駕馭業務方向的眼界,以及親手把演算法、模型在現實廣告系統中實現的經驗(包括各種踩過的坑)。
數據、數據、數據:上述這些核心競爭力其實大多都依賴於對現實數據觀察和理解的深度。而現實世界的數據,往往是存在各種各樣的問題的,由於系統的bug、設計的缺陷、流量規模的限制等等原因,需要非常的經驗去發現數據中潛在的問題、構造「合理」的建模的數據、使用「正確」的數據進行演算法/模型評估。有經驗的演算法工程師/科學家可以一眼看出數據是否合理、應該使用什麼數據進行建模、應該使用怎樣的指標來刻畫性能,這些實際上可以極大地減少走彎路的成本,也就是核心競爭力所在。所以題主提到 「花了大量時間折騰數據,偏偏這方面還沒啥好說的」,這點恰恰是值得大說特說的,有經驗的面試官或者僱主會感同身受這方面的重要性。
演算法/模型的具體實施:給定問題和數據,應該使用怎樣的演算法/模型,也是一個需要積累的事情,當然現在越來越多唾手可得的平台和工具一定程度上減少了嘗試不同演算法/模型的成本。而他們在系統中的具體實施牽涉到的問題不是簡單看看博客技術文章就可以了,尤其是需要照顧系統的響應時間、可擴展性、災難恢復等方方面面的考慮時。這方面的實戰經驗也是廣告演算法工程師的核心競爭力。
數據驅動、約定指標:廣告業務區別於一些其它業務的特點是他是非常「錢」敏感的,廣告主有預算、有廣告投放的需求和期望,平台和發布方有營收和利潤的訴求,更為複雜的是經常有可能矛盾的多指標優化訴求,更別提各種廣告主、發布方、平台、代理等各式各樣奇葩的需求。雖然這些有時候不是演算法工程師可以控制的,但儘早約定核心指標、培養和安利數據驅動的做事方式是一個合格的演算法工程師工作的一部分。這看似非技術的方面,卻是減少產品和產品特性的反覆、避免爭議爭論、主導產品走向的重要內容,也是有經驗的廣告演算法工程師的核心競爭力。
想到哪兒寫哪兒了,算是拋磚引玉吧。(1)業務的理解能力
(2)建模能力
---------------------------------
(1)先說下「業務的理解能力」
無論是廣告亦或是其他行業,任何產品或技術人員,最終落腳點都是對業務本身的理解上。
如果樓主經常研究,則可以發現近幾年Google、Facebook等公司的廣告演算法很難有質的飛躍。
原因有幾點:
1. 廣告的載體近期沒有太大的突破,原有載體上的廣告演算法已經優化到一定的層級,再往上是一個大的門檻;
2. 數據很多,但是能利用的近幾年已經用個差不多了,沒有新維度的數據;
3. 演算法上,雖然有深度學習,但是深度學習在國內用於廣告的鳳毛麟角;
(2)然後說下「建模能力」
演算法其實就那麼幾個,機器學習和概率研究到一定程度也沒有新的東西可學,那麼什麼才是演算法工程師最需要學習卻也比較難學習的能力呢?
——建模能力
這種能力是建立在對業務有足夠理解的基礎上,廣告比較特殊,是個三方博弈的系統環境。當你聽到產品經理說完需求後,在最短的時間內列出目標函數,並提出可行的優化方案,這個時候你就成為一個很牛的演算法工程師了。
搞廣告老大隻看變現,演算法能結合業務現成變現才是最重要。至於你用那些演算法高不高端並不是最重要,只要能增強變現能力的演算法都是好演算法。能做出漂亮的demo只是在校招的時候有用了,到了社招就主要看成功的項目經驗了。
做計算廣告的話,業務的熟悉比演算法本身更值錢。你知道怎麼掙錢啊!
核心競爭力就是變現能力,技術提升可以直接轉化成變現能力,都是真金白銀啊,哪個公司會不喜歡呢?
另一方面,如題主說,如果是純粹搞深度學習研究,或者"圖像方面可以做出漂亮的demo",這個能轉化成用戶產品,再到一定的市場佔有率,這中間還有很長一段路需要走,而且產品化不是演算法牛就足夠的,畢竟企業都是以這些為生存要務。如果演算法研究,更適合在大學、研究所、實驗室吧
推薦閱讀:
※用python實現一些機器學習演算法時是否需要自己寫輪子?
※國內數據挖掘比賽有哪些?
※如何通俗地解釋貝葉斯線性回歸的基本原理?
※怎麼通俗易懂地解釋貝葉斯網路和它的應用?
※數據挖掘、機器學習、自然語言處理這三者是什麼關係?這幾個怎麼入門啊?