打造工業級推薦系統(一):推薦算法工程師的成長之道

導讀:個性化推薦系統,簡單來說就是根據每個人的偏好推薦他喜歡的物品。互聯網發展到現在,推薦系統已經無處不在,在各行各業都得到普遍都應用。亞馬遜號稱 40% 的收入是來自個性化推薦系統的,淘寶的個性化推薦系統也帶來非常大的收益,新聞媒體的個性化推薦系統典型的是今日頭條,直播平臺給用戶推薦喜歡的主播,金融網站給用戶推薦需要的理財產品,社交網絡給用戶推薦大 V 或者其他朋友……越來越多的公司將推薦系統作爲產品的標配。

大家接觸推薦系統的概率會越來越大。作爲程序員,瞭解推薦系統也越來越必要,甚至可以主動選擇“推薦系統算法工程師”的相關職位。那大家一定會關心推薦算法工程師需要哪些知識儲備,以及作爲一個推薦算法工程師,未來的發展道路怎樣?

本文是作者計劃的一系列文章中的一篇。後面的文章將涉及到推薦系統的基本介紹、冷啓動、商業價值、工程實現、評估等方方面面。這系列文章是作者多年推薦系統學習、實踐經驗的總結,希望能夠幫助到即將入行推薦系統開發的讀者或者推薦系統開發人員,讓大家少走彎路。

正文

本文我會基於自己的實踐經驗講述推薦算法工程師的成長之道,這裏的“”有發展路徑和道(道理、方法論、經驗、智慧)兩層意思。所以本文除了講解推薦算法工程師的成長路徑之外,還會詳細闡述推薦算法工程師需要了解的方法論和智慧。相信讀者讀完本文會更加堅信推薦算法工程師是一個好的職業選擇, 並且結合自己的興趣和特長也知道未來該怎樣去規劃、發展和成長。在這裏我會從推薦算法是一個好的職業選擇、發展路線及職業定位、成長之道、挑戰和機遇四個維度來講解。

爲什麼說推薦算法是好的職業選擇

深度學習技術的逐步成熟,推動了AI第三次浪潮的到來,縱觀目前AI在互聯網行業上的應用,有比較好的產品落地及商業化價值的應用主要有7個大方向:

  1. 語音識別
  2. NLU及NLP
  3. 圖像識別(特別是人臉識別)
  4. 金融行業的信用評分和反欺詐
  5. 推薦系統
  6. 搜索系統
  7. 廣告(精準)投放(即計算廣告)

在這7個大方向中,推薦,搜索,廣告投放是互聯網公司最普及也是最能產生現金流的三個方向。

廣告投放自不用說,這是互聯網最重要的變現手段,基本每個互聯網公司都會利用廣告來變現。只要是提供大量“標的物”給海量用戶的產品就一定會用到搜索和推薦兩種技術,代表了用戶的兩種不同訴求。

搜索是用戶的主動需求,用戶想要找什麼東西,知道自己的需要,就會通過搜索來獲取。而推薦代表的是用戶的被動需求,當用戶的需求不明確時,推薦就有了用武之地。

在這裏,我也要強調一點,其實推薦、搜索、廣告精準投放都是機器學習驅動的系統,它們在技術體系上是一脈相承的,甚至在廣義上講它們是一樣的。

首先, 廣告投放是將廣告推送給可能會喜歡該廣告的用戶(當然可能需要通過標的物的承接,比如視頻的貼片廣告,廣告是“寄宿“在視頻上的),本質上可以將廣告看成是推薦系統的“標的物”。

這樣看的話,廣告投放可以看成是一種推薦系統,只不過廣告精準投放會將關注點放到廣告上,希望將廣告更好更精準的投放出去。

其次,推薦系統可以看成一個搜索過程,我們可以認爲是將用戶的歷史行爲的整體作爲搜索關鍵詞,通過推薦系統“搜索”出用戶可能感興趣的內容,只不過“搜索”過程是算法自動完成的,而不是用戶輸入關鍵詞。

通過上面的分析,在更廣的意義上,推薦、搜索、廣告精準投放是一致的。他們在工程技術體系上也是類似的。

搜索、推薦在工程實現上都是分爲召回和排序兩個階段,在實現算法上除了常用的機器學習算法,深度學習、強化學習等都在這三個領域得到了很好的應用。

隨着移動互聯網的深入發展及產品創新,目前這3個方向有更多更深入的交叉。

比如百度的搜索和廣告基本是整合在一起的,用戶輸入關鍵詞既能給出相關的搜索結果也會產生與關鍵詞匹配的相關廣告。

隨着信息流的發展,信息流整合了變現能力,在信息流推薦列表中插入廣告是非常好的變現方式。視頻推薦中的貼片廣告也是利用了廣告和推薦的協同效應。

推薦和搜索結合在一起更是常用的產品策略,在用戶無搜索結果時給用戶推薦,在用戶點擊某個搜索結果時給用戶推薦相關的結果,在用戶輸入搜索詞不準確或者有錯誤時給用戶推薦更好的搜索詞。

有了上面的鋪墊介紹, 我們來說說爲什麼推薦算法工程師是一個好的職業選擇,可以從如下維度來說明。

1.就業範圍廣、薪資高

從上面的介紹可以看到,推薦算法工程師可以無障礙的轉搜索、廣告精準投放,只要是互聯網公司,都會有搜索、推薦、廣告投放業務,所以擇業面廣。

從目前市面上的招聘信息來看,熟悉推薦算法的候選人是很吃香的,不僅容易找到好工作,並且薪資也是很高的。

2.  推薦算法與變現近,商業價值大

推薦系統是非常具備商業價值的,可以很容易爲公司產生價值,所以說是離錢很近的方向,更不用說精準廣告了。離錢近的業務往往也是公司的核心業務,最容易獲取資源,受到老闆的重視。

3.  技術門檻相對較高,可替代性不強

要想做一個好的推薦系統是很難的。涉及到數據收集、ETL,模型構建、模型訓練,數據存儲、接口服務、UI展示等。

其中最大的挑戰除了構建好的算法模型外,在工程上挑戰性也是極大的,需要並行計算來訓練模型, 需要大規模的數據存儲讀寫, 同時推薦系統的服務接口需要具備高併發、可拓展、容錯的能力。構建一個好的推薦系統需要非常多的組件來配合,構建一套完善齊備的推薦組件挑戰是極大的, 推薦系統專家需要對所有這些方面都瞭解。

所以門檻也是極高的, 毫不誇張地說,如果你精通推薦系統,你的職業前途會一片光明。

4.  研究領域廣,足夠深,挑戰性大

從上一點我們知道推薦系統涉及面廣,每個面都很複雜,可以做的很深,並且極富挑戰性,也值得對技術有追求的人努力奮鬥一輩子。

通過上面的講解, 讀者應該能夠感受得到推薦算法工程師確實是一個很好的就業方向, 那麼我們怎麼進入這一行並且未來該怎麼成長髮展呢?

發展路線及職業定位

大家都知道互聯網技術方向的職業發展一般有三條道路。第一條是一直做技術成爲技術專家,第二條是轉管理方向,第三條是做到一定程度轉行到周邊方向,如產品、項目經理等。

在國內, 多少對年紀大了的技術人員有一定的偏見,認爲年紀大了幹不動了,所以大家都願意往管理方向發展。

其實,在國外做技術是非常自信和自豪的事情,聽說在Google技術人員的地位非常高,只有技術不行的人才考慮轉管理(有待考證)。國外大齡程序員是非常多的,也是非常受尊敬的, 比如Java、C#之父都是一直做技術的。

1. 技術路線

推薦算法工程師的技術路線一般可以分爲四大類,一類是偏工程實現,一類是偏算法研究,一類是綜合類(工作涉及到算法開發及對應的工程實現),一類是偏業務。

不管是哪一類都需要了解自己需要學習什麼技術,需要具備什麼樣的技能和知識儲備。下面我們分別說說這四類算法工程師的職業成長之路。

(1) 偏工程實現類

偏工程實現類的推薦算法工程師,需要有較好的編程能力,熱愛編程。一般的工作是實現各類推薦算法框架,開發推薦周邊模塊(如AB測試等),構建好用的推薦平臺,讓推薦算法可以更快更好的落地到業務中。

這一塊做的好是非常容易成爲大牛的,比如大家熟悉的賈揚清,大名鼎鼎的Caffe框架的作者,也是Tensorflow的核心開發者。他原來是facebook的AI架構總監,最近被阿里挖了過來, 直接給的是P11級別,title是VP(高級副總裁),當然要達到賈揚清的段位是非常非常難的。

偏工程實現類的需要有紮實的計算機基礎,熟悉數據結構和算法,熟悉計算機體系結構,熟練掌握設計模式,有很好的面向對象和抽象思維能力。

除了熟悉推薦系統的底層代碼實現,還需要對機器學習算法、最優化理論、數值計算等非常熟悉,能夠用高效的代碼來實現這些算法。

(2) 偏算法研究類

偏算法研究類的推薦算法工程師主要關注的是怎麼結合公司業務、產品特性構、已有的數據建一系列好的算法,希望通過這些算法來大大提升轉化(可能具體算法的高效工程實現交給工程師)。

這類職位一般要求有研究背景,希望是博士,需要具備非常好的理論基礎。一般是大公司有專門從事算法研究開發的職位,或者是研究院類似的單位(大公司的研究院也算),小公司一般不會招聘專門搞算法研究的。

個人覺得在工業界算法不是最重要的,關鍵是怎麼將算法跟產品形態很好的結合起來,快速上線,整個業務要形成閉環,具備迭代優化的能力。

Google的辛格博士就是喜歡用簡單的算法來搞定問題的典型代表(讀者可以參考吳軍的數學之美第二版第13章)。

偏算法研究類需要有很好的數學基礎,需要對高等數學、線性代數、最優化、概率統計、幾何、圖論等方向非常熟悉。同時需要在機器學習領域有深刻的領悟,能夠利用數學工具設計高效易用的機器學習算法。不一定需要編程能力特別強。

(3) 綜合類

創業公司、小公司、或者剛剛成立推薦算法團隊的公司,前期沒資源也不願意在推薦系統上一下投入非常多的人力,很多推薦算法工程師是既需要思考算法,也要做相關的工程,是上面兩類的綜合體。

雖然學習接觸的東西會更多,但是精力也會更分散。

(4) 偏業務類

隨着大數據、雲計算、AI的發展,越來越多的雲計算大廠或者AI創業公司將AI能力(包括推薦能力)封裝成SAAS服務提供給第三方公司。

我個人覺得這一定是未來趨勢,未來很多創業公司不會再去招聘推薦算法工程師來自己開發推薦業務了,可能就是直接購買別人的推薦SAAS服務。

這個時候就需要一個懂推薦算法業務的專家,結合公司具體業務情況,選擇最合適的推薦算法提供商及對應的推薦SAAS服務。

這類偏業務的推薦算法工程師不需要開發推薦算法,也不需要工程實現,但是需要對推薦算法相關知識熟悉,瞭解周邊生態,知道什麼算法可以用在什麼推薦產品形態上,每種算法的優劣,知道在合適的時間節點引入合適的算法。這類職位其實就是一個推薦算法商業策略師。

2. 管理路線

如果做了很長時間推薦算法想轉管理崗位,需要提前做好準備。包括心理準備和知識儲備。

人的時間是有限的, 轉管理了就一定沒有那麼多時間鑽研技術了。

但是技術管理人員一定要熟悉瞭解技術,要有很好的技術視野,能夠把握未來的技術發展方向,在合適的時機做合適的決策,引入合適的新技術,這種能力也是要建立在一定的技術積累和學習上的, 所以怎麼做好技術學習和團隊管理的平衡非常重要。

做技術管理需要多花時間學習業務知識和管理技能,學會有效溝通,需要站在老闆的角度思考問題,需要引領團隊更好地支撐公司的商業目標。同時也需要有很好的產品意識, 能夠深刻洞察用戶的需求,做好的產品來爲用戶和公司創造價值。

管理方向再往上走可以是技術VP,CTO等更高的級別,當然這類更高的級別對人在各個方面的要求會更高。如果自己有想法,並且喜歡挑戰的話,等你準備充分了,還可以創業。

3. 轉行換方向

推薦算法工程師如果想轉其他方向,可選擇的範圍很多,比如算法產品經理、項目經理、數據分析等。在什麼時間換行、換什麼行業需要結合個人的興趣和現實情況決定。

我不贊同在一個行業做了很長時間再換行,畢竟人的工作年限有限的。

一般職業選擇是很謹慎的,需要事先想清楚,在剛開始做的一二年內也會知道自己喜不喜歡這個行業,在這個方向上是否有一定的優勢和天賦,如果不合適就要儘快換行。

到這裏就介紹完了推薦算法工程師的發展路線和職業定位,如果我們決定一直做推薦算法工程師,那麼想在這條路上走的更遠,就需要把握推薦算法工作的要義,這就是下面一節要講的內容。

成長之“道”

作者有7、8年推薦行業相關經驗,也走過很多彎路、趟過很多坑,所以這裏將我的一些經驗教訓和建議分享給大家,讓大家少走彎路,這些經驗即所謂的“道”。

其實這些經驗和建議也適合很多互聯網行業的其他職位,甚至是非互聯網行業的職位。

1. 關注業務、關注價值產出

推薦算法工程師不能只關注自己做了什麼,是否保質保量地完成了任務,對公司老闆來說,能夠爲公司創造商業價值纔是最關鍵的。當然,配合公司產品將功能快速高效實現是我們的主要工作之一。

如果你沒有關注業務、關注推薦價值產出的意識,你一定不會在日常工作中思考業務和價值,更不可能基於自己的思考來優化推薦產品,最終你的工作很難產生商業價值。

如果你無法真正爲公司和用戶創造價值,那麼對公司就沒有價值,從而也不會受到重視,無法得到更大的成長。

所以,及早具備關注業務和商業價值的意識,並在日常工作中不斷踐行,你纔會有更大的成長空間。不光要關注價值,更應該量化你的價值產出。

2. 讓系統儘快運轉起來,儘快產生價值

很多剛入行推薦算法的新人,會進入一個誤區,以爲算法工程師就是要做一個牛逼的算法出來,讓效果一飛沖天。這種想法太幼稚了。

先不說牛逼的算法是否容易實現,即使實現了,是否可以分佈式計算,是否可以在一定時間內跑完,是否穩定,這些問題在實際應用中都得考慮,並且也是制約算法是否可以落地的重要因素。

所以推薦算法工程師不能將所有精力放到研究高深的算法上,好的做法是先採用盡量簡單的方法實現,先讓系統跑起來,對業務先產生價值,後面逐步去優化它。

其實,往往簡單的推薦算法比不用推薦會有一個較大的提升,非常牛逼的算法也很難在簡單算法基礎上再有極大提升了,上一個簡單的算法其實已經解決了80%的問題了。

特別是對創業公司來說,往往沒有那麼多的資源招聘很多牛逼的算法工程師,這時做一個簡單的系統先上去比什麼都管用。

3.打造倒三角知識體系,培養核心競爭力

現代社會科技發展日新月異, 特別是計算機行業,新技術更新迭代更快,你不可能將所有東西學會,即使是推薦系統這一個子領域,你也不可能每一塊都特別精通。

我個人建議在有限的時間和精力下,你要結合自己的興趣和長處選擇一個更專的方向深入鑽研,做到這個方向的絕對專家,同時在與這個行業相關的行業上拓展廣度。

我將這種提升方式叫做打造自己的倒三角知識體系(見下面圖1)。

image

圖1:打造倒三角知識體系

只有這樣你纔會有自己的核心競爭力。 拿我個人來說,我自己是數學專業的,數學很好,也非常喜歡數學,所以我會在推薦系統上深挖,成爲推薦專家,特別是推薦算法上,同時在大數據、搜索、廣告、NLP、計算機視覺等領域拓展自己的能力邊界。

將來不管你是不是一直做推薦算法,在一個領域做到專家肯定會對你有幫助的。

首先可以形成自己的一套思考解決問題的理論體系,這一套體系會幫助你在其他方向或者行業打開局面,重新快速地構建自己在新方向的認知體系

4. 抓住核心,有的放矢

不管是在推薦系統知識學習上,還是在實際推薦業務開發上,我們都需要將精力放到價值產出最大的任務上,這樣才能產生事半功倍的效果,我們每個人都要活學活用二八定律。

5. 關注外面的世界,不閉門造車

推薦系統涉及到算法和工程兩大塊,具體的做法和實現雖然不同的行業不太一樣,但是肯定是有借鑑價值的,平時除了工作外,需要多關注外面的動向,瞭解別的的公司在做什麼,怎麼做的,只有這樣才能知道哪些地方做的不夠好,有待提高。

有了對比了解,就更有提升的方向和目標了。

6. 沉澱核心技能,持續學習新知識,學習跨領域的知識

推薦系統是一個複雜的體系工程,需要持續學習新知識和技能,一萬小時理論說一個人要成爲一個領域的專家必須在這個領域積累一萬個小時,每天工作8小時的話,相當於5年時間。

注意一萬小時是必要條件,不是充分條件。

另外,每個領域都在快速發展,除了積澱已有知識外,還需要學習很多新知識。比如,深度學習對很多行業產生了革命性的影響,那我們也需要對深度學習在推薦系統上的實踐持續關注並努力踐行。

技術的學習是無止境的,我們需要從各個渠道學習,論文、書本、Github、各種技術公衆號、線上課程、付費直播、線下分享、線下溝通交流等等。

除了學習本領域的知識外,還需要適當學習跨領域的知識。比如產品、運營、項目管理等等,甚至是管理學、心理學、哲學、經濟學、會計、營銷等等。

更寬廣的知識體系會讓你從一個完全不同的視覺來看待問題,可以給你提供更多的靈感來源(和最優化求最大值類似,在很窄的知識面上,你很容易就走到了一個局部極大值,學習更多的知識,相當於給自己一個擾動,讓自己可以找到更大的局部最大值)。

如果你打算將來走管理路線,那麼學習跨領域的知識必不可少。

7. 構建良好的人脈關係

個人的力量是有限的,要想在事業上獲得極大成功,一定需要別人的幫助,人類祖先之所以能夠在惡劣的環境下生存下來,靠的就是羣體的智慧。

我們在工作中需要跟同事保持良好的人際關係,儘量多幫助別人,需要跟同行業的人多溝通交流,互相學習,甚至是認識完全不同行業的人。

儘量多結識優秀的人,他們是你成長的榜樣,別人身上的優點值得你學習。

在人際交往上不要太短視和功利,你的人脈關係其實是無價之寶,在適當的時候說不定你的朋友可以助你一臂之力。

這裏舉一個我自己的例子,我16年開始用脈脈,堅持每天加10人(熟悉脈脈的知道,脈脈每天最多加十個陌生人),這幾年堅持下來,加了近1萬人,很多人都成了朋友,並且這些人其實就是我們團隊招聘的來源,我通過這個渠道招聘到了實習生和正式員工。

8. 基於自己的認知和理解,構建一套屬於自己的思考體系

優秀的人都是有自己一套思維體系和思考邏輯的。當我們在一個方向上深耕時,我們會積澱很多經驗,這些經驗就是你最寶貴的財富。我們要實時總結,將經驗教訓內化爲你的知識體系, 通過不斷思考及有意識的總結提升,你就會構建一套自己的認知體系。

我們可以將這套認知體系看成一個機器學習模型,你的經歷就是訓練數據,你的總結深度思考過程就是構建模型的過程。通過不斷的總結你不斷地優化你的模型,最後模型會越來越精確,泛化能力越來越好,最終你就可以對很多未知數據(情況)做更好的決策。

9. 打造屬於自己的個人品牌

我曾經看到過一句話,說一個人對社會的價值在於你的輸出而不是你的獲取,我是非常認可的。

要想讓自己得到行業和社會的認可,除了做好本職工作還是不夠的,你需要將自己的經驗知識整理並輸出,通過你對社會的影響來構建個人品牌。相信品牌的價值大家都能理解,有了很好的個人品牌,你可以找到更好的就業晉升機會,如果你技術很牛逼的話,你創業也更容易拉到合夥人。

當然構建個人品牌可以有很多方式,比如開源自研技術、寫博客、寫公衆號文章、組織線下技術活動、發表論文、開網絡課程、寫書等等。這些活動難的不是你能不能做,最難的在於你是否能夠一直堅持做下去。

只有當你持續投入時,通過時間的積澱,你的個人品牌就會不斷成長放大。舉個作者身的例子,作者從14年底開始通過微信運動捐步,到現在已經通過微信運動捐了1330元了,熟悉微信運動捐步的讀者知道每天要走一萬步才具備捐步資格,並且每次捐步就是幾毛錢到一兩元,從中可以看到堅持的力量。

打造自己的品牌,越早準備越好。作者現在開始持續寫公衆號文章,也是爲了打造自己的個人品牌。

危機與未來展望

前面對推薦算法工程師的職業發展之路及成長之道做了較全面的介紹, 在最後作者基於自己的思考來聊聊在不久的將來(5~10年)推薦算法工程師可能存在的危機及機遇。

人類的需求一定有明確需求和不明確需求兩大類,搜索代表的是明確的需求,而個性化代表的是不明確需求,所以只要人類有獲取信息的需要,個性化推薦一定會伴隨人類的發展,一直持續下去。

雖然推薦算法不會消亡,但是一定會遇到挑戰和變數。

推薦算法工程師最大的危機來自於雲計算及AI的發展,越來越多的雲計算公司將AI作爲雲服務的基礎能力(包括推薦能力)封裝起來對外提供服務。過去兩年很多大公司都從Mobile first轉爲AI first,將AI能力作爲一項核心能力來打造,這一趨勢會進化出越來越易用低價的AI服務。

同時,有很多AI初創公司也試圖構建垂直行業的AI解決方案,試圖從大廠口中分一杯羹。 未來AI一定會成爲雲計算的“水電煤”,用戶接入即可使用。

上述現象導致的直接後果就是,在不久的將來,越來越多的公司會選擇從第三方技術提供方購買推薦服務,而不是自己從零開始構建推薦系統。最終會導致減少對推薦算法工程師的需求。

不過,隨着5G技術的商業化、物聯網的快速發展、VR/AR/MR技術的成熟,會有更多的設備接入互聯網,未來我們可以獲取的信息量更大更廣,身邊充斥着各種訊息萬變的信息。

基於這些信息會產生滿足人類各種新的需求的產品及服務。同時隨着教育水平的提升,每個人將會更加獨立、更加願意表現自我,讓自己的個性化需求得到最大程度的釋放。

這種情況正好是個性化推薦需要解決的場景,所以未來個性化推薦會更加重要和普遍,各行各業會越來越依賴個性化推薦來滿足用戶在各種場景下的個性化需求,這些新的場景一定會採用不同的交互方式和推薦算法體系,這也是推薦算法工程師新的機會。

移動互聯網最大的革新之一是通過觸屏來更便捷地讓用戶與互聯網交互。

隨着NLP及語音交互技術的發展成熟,基於語音的交互方式會產生非常多的家庭場景的應用(語音交互更適合家庭場景,聲音不會對外人產生干預),在家庭互聯網場景下(見下圖2),由於交互方式是通過語音來完成的, 推薦系統可能會朝着適配語音交互方式家庭場景(家庭場景有多人、多終端)進行創新和發展。

image
圖2:PC互聯網、移動互聯網、家庭互聯網的不同交互方式

同時,隨着VR/AR/MR的發展成熟,能夠大大增強人類感知世界的能力。我們可以想象,在不久的將來當人們帶着MR眼鏡時,你的MR系統可以給你提供一個全方位的、實時的、如影隨形的個性化推薦系統(見下面圖3)。
                          
image
圖3:虛擬現實讓你的感知能力增強,更加易於獲取信息

(圖片來源於網絡)

當你帶着MR眼鏡走進一個餐廳時,馬上給你推薦你喜歡吃的實物,當你走進商場時,給你推薦你可能喜歡的衣服 …

如果未來技術能夠做到芯片與大腦相容,識別出腦信號,更多有意思的推薦場景,現在真是無法想象。

隨着技術的進步, 個性化推薦未來一定會遇到很多有意思的挑戰和機遇,值得我們去探索研究, 所以將個性化推薦作爲你的職業選擇一定是一件振奮人心的事情, 讓我們拭目以待!

作者介紹:gongyouliu,有近10年大數據與ai相關項目經驗,有9年推薦系統研究及實踐經驗,目前負責電視貓大數據與人工智能團隊。喜歡讀書,暴走,寫作。業餘維護“大數據與人工智能”公衆號,ID:ai-big-data,持續輸出推薦系統相關文章。個人微信:liuq4360

原文鏈接https://mp.weixin.qq.com/s/Ceo6z-NXHoU-6Sjly927RQ

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章