前言

2018年4月研究生畢業,我作為機器學習工程師加入一家外企創業公司,已有接近2年的時間。加上之前的一系列的實習經歷,自己在初級機器學習工程師這個階段上已經積累了2年多的經驗,現在是一個非常好的時間節點來回顧一下自己的成長。因為研究生到工程師的角色變化,我現在的思維和認識較之前有很大不一樣,我想分享機器學習工程師的三個關鍵詞:

逐步迭代,溝通理解,人人不同。

我的經驗主要來自於搜尋和推薦系統領域,從某些角度上看,這些內容適用於所有的工程類職業。希望這篇文章對於剛入職的朋友有幫助,也歡迎已經工作的朋友相互交流。

逐步迭代

研究生和工程師的共同點是都在解決問題,因為目的不同,兩者在解決問題上面有截然不同的方式。研究生希望提出世界最前沿,理論最完備,效果最好的方法,甚至直接把問題解決掉。而機器學習工程師,因為工程方面的各種限制無法完全解決問題,比如推薦問題,工程師更注重逐步迭代,不斷最佳化。

從學生到工程師的思維轉變——機器學習工程師兩年工作的小小總結

推薦系統APP的例子,左邊是音樂推薦,右邊是小影片推薦

舉個例子,短影片網站,為了增加使用者在平臺上面觀看短影片的時長,以達到提升觀看廣告提升收入的目標。我們可以利用機器學習對於不同的使用者個性化地展示不同短影片首頁。

工程上會始終優先選擇工程實現簡單,收益明顯的方式,逐步迭代,不斷最佳化當前的系統。

從學生到工程師的思維轉變——機器學習工程師兩年工作的小小總結

從三個方向對系統逐步迭代

從機器學習的模型的角度,我們可以從沒有模型到簡單模型,再過渡到複雜模型,Rule Based System → Logistic regression → Tree Based Model → Deep Learning。

從資料特徵的角度,可以從容易獲取的特徵開始,不斷地過渡到更大特徵的範圍,逐步地提升推薦的效果。

從機器學習基礎架構的角度,可以從按天的推薦更新,到按小時的推薦更新,甚至到實時的推薦更新,不斷地提高推薦更新的頻率。

透過不斷地AB測試,指導迭代過程,逐步地將整個系統打造成最能給公司帶來收益的系統。

逐步迭代是機器學習工程系統的天然特性,也是以團隊為單位工作的要求,老闆期望每個月都有進展,有提升公司收入的交付,整個團隊也希望不斷地看到自己在前進,不斷地為公司創造價值。機器學習系統不可能一蹴而就,逐步迭代,不斷最佳化的才是最優方案。

溝通理解

從學生到工程師的思維轉變——機器學習工程師兩年工作的小小總結

人和人的溝通理解就像計算機之間的通訊

研究生和工程師日常當中都需要與其它人進行溝通理解。但是其要求和複雜程度非常不同。 研究生更多地是一對一地與導師溝通,而導師和你都有受過計算機教育,都處於同一研究背景之下,在正常情況下,你們的溝通會很順暢。你只需要對你的導師負責。即使和同學討論,你們往往也都是同一個背景,並沒有什麼溝通障礙。

而機器學習工程師面對更為複雜的環境,你需要和不同背景的同事進行溝通。你要向你的老闆解釋為什麼深度學習技術這麼熱門,你卻不用。你要向產品經理解釋我們的機器學習現在處於什麼位置,未來會變成什麼樣。你要向組員解釋為什麼要往這個方向發展,同時還要吸引他們來做同樣方向的事情。另外也要意識不同的角色關心的內容不同,如果沒有意識到這一點,很容易雞同鴨講。例如經理可能需要處理好幾個部門,並不關心某個推薦演算法的工作原理,而關心專案能不能按時完成,你和經理解釋推薦演算法的原理就是雞同鴨講。

從學生到工程師的思維轉變——機器學習工程師兩年工作的小小總結

Spark叢集當中有兩種角度的計算機,Driver和Worker⁷

溝通理解能力和機器學習工程師的交付能力直接相關。

機器學習工程師在推行一些想法的時候,會發現想法越新穎,越難以推動,這就體現了溝通理解能力的重要性,你需要把新穎的想法,用簡單的語言描述給其它同事,讓大家理解它和其它想法的關係。為了提升溝通理解能力,我特別閱讀了來自諮詢行業的書籍,也推薦給大家¹²

³⁴。

人人不同

從學生到工程師的思維轉變——機器學習工程師兩年工作的小小總結

人人不同,每個人對自己會有不同的要求

之所以溝通理解如此重要,很大程度上是因為人人不同。而學生階段很難意識到這點。因為大家都有相同的教育背景,上同樣的課,看同樣的電視劇,一樣要期末考試,寫畢業論文,參加工作。

人人不同這個事實,衍生出來一系列工作場合的規範。比如大家喜歡把討論天氣作為聊天的開場,因為沒有比這更好的話題了,如果討論聖誕節,有可能對方是猶太人,他們不過聖誕節⁵,如果討論豬肉好吃,有可能對方信伊斯蘭教,他們不吃豬肉,他們覺得豬是骯髒的⁶。

人人不同,每個人對自己會有不同的要求。工作當中,各個團隊成員都會有自己的價值觀,自己的目標和人生規劃。有的人想當將軍,主動承擔更多責任和風險,有的人想要一個安穩的工作,留出時間陪家人。把人比作計算機,那麼整個公司就是一個機算機叢集,一個機算機叢集要高效處理大量的任務,就需要各種不同型別的計算機進行分工合作,比如Spark叢集會有Driver和Worker⁷。一個公司也是需要各個不同的人才,才能高效地為客戶提供優質的服務。

總結

這些經驗總結成一句話是,尊重

人人不同

的前提下,透過高效地

溝通理解

,構建

逐步迭代

的系統。很多情況下,道理大家都懂,但是有人做得好,有人卻做得不好,我們可以透過實踐不斷地習得各種各樣的能力,深化對一些觀念的理解。祝大家在新的一年,透過實踐習得各種各樣想要的能力。

參考資料

麥肯錫工具

麥肯錫方法

金字塔原理 : 思考、表達和解決問題的邏輯- Barbara Minto

https://

book。douban。com/subject

/4882120/

溝通聖經(修訂第5版)

耶穌是猶太人,那麼為什麼猶太人不過聖誕節?

為什麼穆斯林不吃豬肉?

https://

spark。apache。org/docs/l

atest/cluster-overview。html