【轉載】年終總結 & 算法數據的思考 & 結尾彩蛋

原文地址:http://www.douban.com/note/472267231/?qq-pf-to=pcqq.group

據說作者是88年出生的,卻寫得很老到——自古英雄出少年!


============================= 正文 =================================


從前東家離職已經一個多月的時間了,在這一個月,前前後後也和幾家公司做了技術交流,自己也第一次靜下來這麼久來思考總結。今年是我畢業的第五年,也正巧趕上年底,就把這些湊到一起寫個小總結吧,也沒有什麼主題,沒有主次,純粹記錄,想到哪兒寫到哪兒。

1. 推薦系統

在最近的三四年時間裏,我的主要工作就是搭建推薦系統,這幾年來不說看了上千篇論文也有數百篇了,這種專注讓我自認爲在推薦系統領域至少處在一個業界相對領先的水準,但是也恰恰是這段經歷讓我被打上了深深的標籤:他是一個“推薦系統專家”。既然這樣,那我就先來說說推薦系統吧。

推薦系統是一個太龐大的詞,我們不妨先退一步說推薦算法本身,其實推薦算法本身是一個綜合性的問題,他說淺他可以做的很淺,說深也可以把他做到很深。你可以簡單地用最基本的Content-based,再複雜點可以Collaborative Filtering,如果你想做的深入一些,基於SVD/LDA等的降維算法,基於SVD++等的評分預測算法,基於Learning To Rank的排序算法,甚至你再轉換問題,把推薦問題再轉換成分類問題,或者採用以上算法前先用各種聚類算法做數據的預處理,你可以折騰出很多很多的花樣。所以做推薦領域的工程師是個很“痛苦”的事兒,因爲只要機器學習領域有任何的突破性進展,你都需要去做跟蹤,NLP領域出了Word2Vec,出了GloVe,其他領域的算法工程師可以說我對NLP不感興趣,但是你必須跟蹤,因爲他可以輔助你去做文本內容類的推薦算法;Deep Learning可以讓圖像識別領域做更棒的特徵工程,你也馬上要去跟蹤學習,因爲在做圖片推薦時終於有一種方式也許能解決元信息問題;RecSys2013的best paper通過調整節點順序從而優化矩陣分塊策略,極大改善了矩陣分解算法的效率,你就要去跟蹤來更新自己的舊有離線算法;微軟亞研搞出了一個Light LDA允許在低網絡流量下去做LDA的多機並行,你就要興沖沖地跑過去讀他們囉囉嗦嗦的幾十頁的paper,因爲終於不用忍受LDA低劣的性能了,而這些追蹤往往是無窮無盡的。但是如果你一旦停止了更新知識庫,就會學術界遠遠甩在身後,做一個“協同過濾”工程師。

但是算法的一切調整隻有寄託於產品才能發揮出其最大的威力,但是如何根據產品去選擇和調整算法是我認識大多數的算法工程師所非常薄弱的一點。舉個實際的例子,我們都知道在所有的比賽中,多種算法的混合是最重要的環節,經常就會有人問我,說哪種混合策略是最好的,但是其實這是嚴重依賴於產品本身的。例如Tinder,他們的產品形態是每次只出現一個人,讓你點擊喜歡還是不喜歡,那麼這種情況你必須需要一個算法的分類器來爲每個用戶選擇一個合適的推薦算法,並且根據用戶的反饋來實時調整分類器,因爲如果用戶連續Unlike了幾個用戶,他可能就流失掉了。但是對於LinkedIn的用戶推薦列表中,你很適合用若干算法混合的算法,因爲這樣可以保證至少讓整個列表中至少有X個所感興趣的用戶,而往往同一個推薦算法的Items是趨同的。再對於展示在首頁的推薦入口區域,可以優先選擇若干推薦算法的交集策略,這樣可以用少量的高質量Item最大化的滿足用戶的心理底線,從而吸引用戶點擊。所以認清產品的形態和交互形式,依據產品去訂製算法是成爲優秀算法工程師,而非算法研究員的重要一點。

一個優秀的推薦算法,一個優秀的推薦系統的確可以爲企業創造很多價值,曾經和某知名電商網站的數據總監交流,他們的推薦系統實實在在地把銷售額增加了15%,但是過於神話迷戀推薦算法和過於看扁推薦算法都是一種偏激的行爲。作爲推薦算法工程師更應該清楚推薦算法本身的瓶頸,或者可以估計到該算法爲企業帶來的實際價值,從而來決定是否應該繼續優化該推薦算法。何時始,何時止,是任何一個推薦算法工程師都必須要面對和決定的問題,但是聊這個話題必須要牽扯到推薦系統的兩個重要部分:產品和數據。

一時想不起更好的例子來了,就說淘寶吧,以淘寶的搜索推薦爲例。首先,我相信淘寶從整體來講是不需要推薦算法的,因爲淘寶是以爆款商品爲主打的,構成了淘寶盈利的大部分,而我相信以淘寶的KPI和運營文化,必然會以CTR爲主要的KPI,所以在這個程度上,淘寶的運營必然不停地推薦爆款商品而不可能冒着風險讓這部分來做個性化。這就是產品不適合做推薦的典型例子。 另一方面,由於爆款商品的推薦所以讓長尾的產品沒辦法積累到足夠的點擊數據,這使得數據的缺失和偏移變得異常嚴重,推薦算法更是無從發揮威力。(沒在淘寶工作過,所以純屬局外人猜測,另外我相信電商網站大多如此)

那麼你從這一個例子就否定掉推薦系統的作用?這個我覺得有一個例子非常容易反應情況:現在地上每隔1米就有100塊錢,在遙遠的10000米外可能會有500W,你到底是選擇一直低頭撿100塊錢,還是跑向遙遠的10000米去找那500W的問題。

2. 深度學習

深度學習近兩年可謂是機器學習領域最熱的詞了,大有飛入尋常百姓家的意思,現在你去參加一個數據的活動,你要是說你不會深度學習,估計會被當做神經病一樣看待。但是實際上,深度學習到底有多大的價值呢?這是需要理性看待的問題。

我們先說什麼是深度學習。其實從整體上來講,Deep Learning就是曾經的多層神經網絡,整體的思想認爲每一個層次都可以被作爲一個獨立的特徵抽象存在,所以最廣泛地被用作特徵工程上,而GPU的存在更是解決了幾十年前的ANN的訓練效率問題。那麼簡單來說,Deep Learning可以對抽取出的特徵進行非線性組合形成更有效的特徵表示。確實,從這一點來說,Deep Learning確實從理論上很好的解決了機器學習領域很麻煩的“特徵抽取”問題,但是在實際的工業界,“特徵工程”到底有多複雜?我們看看Deep Learning表現最好的IR領域吧,曾經是怎麼做的呢?據瞭解微軟有個小Team專門做的事兒就是從圖片上找各種各樣的特徵,因爲算法本身其實已經被鎖死在Random Forest上了,往往特徵的微調就能帶來算法效果的極大提升,那麼Deep Learning的出現當然可以很好地取代這項工作(實際效果確實無法得知),那麼總結下Deep Learning的好處:從海量的特徵中通過特徵工程抽取出有效的特徵組合。

但是刨除掉語音和圖像領域,轉向離我們更近的工作,無論是推薦系統還是數據挖掘,特徵是怎麼出來的呢?對於一個電影,對於一個用戶,滿打滿算一共就那麼多特徵,這個時候Deep Learning根本無從發揮。那麼再退一步說,就算把User對於Item的標定作爲Item的特徵,由於在實際中大部分的缺失值存在,那麼如果你希望用Deep Learning來對該矩陣做特徵重組,第一件事情就是如何填充缺失值,而這恰恰是比特徵工程更困難的事情。

至少從我目前的眼界來看,我還沒有找出幾家真正需要用Deep Learning來爲企業創造價值的公司。

3. 大數據的反思

每一家公司都在說自己是大數據,要利用大數據,更是出現了“大數據工程師”這個職位,但是在我看來,對於算法工程師而言,該做的不是迷信大數據,而是把大數據給提取成小數據,利用小數據爲企業創造價值。大數據標誌着需要更大規模的集羣,更大規模的計算能力,更長的生產週期,而這些都是企業的“成本”,對於大部分公司,基本面臨的都是兩個問題,如何拿到數據和如何利用數據,而不是如何“最好”地利用數據。

大數據其實意味着大樣本量,那麼大樣本量帶來的是高置信度以及廣覆蓋度。例如從FM來說,大數據量意味着更全面地瞭解一個用戶的聽歌品位,從金融互聯網的信用風險評估來說,大數據量意味着不僅僅從消費記錄而包含了社交網絡信息去對用戶做更全面的評價,從用戶畫像來說意味着建立全面的興趣圖譜和知識圖譜,這些都是大數據帶給我們的實際意義。說得學術一些,我們不妨認爲大數據是頻率學派對於貝葉斯學派一次強有力的逆襲。那麼既然說到這個份上了,我們不妨思考一下,我們是不是有希望在迴歸貝葉斯學派,利用先驗信息+小數據完成對大數據的反擊呢?

另外,既然我們已經說到了大數據的廣覆蓋度,就針對這個再額外說一下吧。誠然,大數據能夠全面地覆蓋到所有信息,但是從實際的工業界來看,考慮到實際的計算能力以及效果,大多數公司都會對大數據做“去噪”,那麼在去噪的過程中去除的不僅僅是噪音,也包括“異常點”,而這些“異常點”,恰恰把大數據的廣覆蓋度給降低了,於是利用大數據反而比小數據更容易產生趨同的現象。尤其對於推薦系統來說,這些“異常點”的觀察其實才是“個性化”的極致。

4. 技術選型

既然都說到這裏了,就順着說到技術選型。之前和某公司聊過,他們說,你對技術選型怎麼看,這裏我就把當時說過的話重新整理一下吧。我認爲初創公司技術選型分做兩個層面看:

A. 對於大部分互聯網初創公司,一般是根據初創成員擅長的領域去選擇語言,選擇無外乎兩種,要麼選擇開發效率高並且入門簡單的語言框架,例如Python , 例如Rails。要麼選擇市場覆蓋量大,容易招人,並且有着非常成熟解決方案的語言,例如Java。
B. 對於小部分用Clojure的初創公司(我真心不願意去黑),必須滿足一點,公司就是小團隊作戰,不需要擴張,用這種語言的好處就是連這種語言都會或者都願意去學,會省掉很多面試的成本,但是招人的成本也增加了不少。(我真的是勉強爲這種公司找個理由)

對於成熟公司的技術轉型,也是分成幾點來看:

A. 性能問題:說實話我極少遇到一個公司語言成爲了性能瓶頸,我目前好像知道的也就是Twitter把一些核心架構從Rails變成了Java,實際原因是不是因爲性能我也不知道。但是其實一定避免說上來性能問題先怪語言,據說騰訊某些工程師就特別願意幹這樣的事兒,把C++當聖經,鄙視一切其他語言……但是如果真的是撐不住了,那麼就換吧。

B. 社區問題 & 開發效率問題 & 招人成本問題:在10年左右的時候,大批的公司把.NET平臺換成Java平臺,最核心的原因除了Windows的價格問題外,還包括遇到了問題解決不了,因爲大公司都是用Java/C++的,所以至少出了性能問題我還能去定點挖人,用.NET出了問題都不知道去哪兒找人。 另外就是比如C++開發起來確實慢,而且非常容易系統崩潰,這個時候逐漸地去做技術轉型到其他語言也是有道理的,只是要掌握節奏的問題。最後就是那些剛開始作死用一些小衆語言(比如Clojure)的公司,隨着大規模招人就需要做技術轉型了。在這一點上,最主要的就是避免爲了轉型,爲了秀技術,爲了跟風而轉型,我相信新技術也一定有新技術的好,一定解決了某一方面的問題,但是轉型有着轉型的代價,人力成本,系統穩定性,量產招人的困難程度,這些都可以換算成“成本”,那麼在做這種轉型時一定要把這筆賬算清,再決定轉還是不轉。

C. 管理問題。一個網站,一個服務,我們不分MVC,純粹去用PHP往模板裏面寫代碼,其實也能做出來,開發成本稍微高點唄,但是代碼容易看懂啊。這個例子有些極端,我想表達的是,用再爛的技術都能做出一個可用的東西。但是問題是,在現在的時代,程序員真他媽難找啊!當薪資幾乎相同的情況下,也只能靠技術來吸引人和留人。也就是說至少要讓員工覺得他們能學到新東西,外人來面試的時候我也要有能吹牛逼的資本,這時怎麼辦?我一般會選擇在一些邊緣系統上去做技術嘗試,例如我會傾向於用其他語言(例如Go, Swift)搭建外圍系統或實驗室項目。這也是我對某些流失情況嚴重的團隊最大的建議。

5. 算法,產品和企業價值

這一點又回到了曾經老生常談的問題,算法工程師對於企業的價值是什麼,爲了討論的方便,我們還是把算法工程師換成數據工程師吧。

A. 任何系統不要脫離產品而存在。先吐個槽,之前在某個公司面試,某個公司上來就問我,你覺得我們的用戶畫像應該怎麼做?這個問題是非常業餘的(這個問題就像是有人問我我們網站有性能問題,你說咋辦;好吧,這個問題也是這個公司問我的),任何數據系統都是強產品關聯的,這也是太多公司去做數據系統的誤區,在這裏我還是用戶畫像爲例。 用戶畫像到底是什麼,其實說簡單了他就是一個用戶寬表,如果偏要我說需要注意的,就是在選擇數據庫的時候一定要選擇列容易擴充的數據庫。如果要說具體需要哪些字段,我還真的沒法說,我只能把他歸類成用戶元屬性數據,行爲統計數據,潛在挖掘數據,至此而已。因爲數據系統從來不是一個事先規劃好的系統,而是需要隨着業務增長來逐漸填充的系統,這也是數據平臺難做的原因。 所以我真心無法理解有一些不太大的公司成立了一個部門,這個部門專門做用戶畫像(例如PPTV)。

B. 數據工程師不僅僅是處理數據而是理解數據。我遇到的數據工程師大抵分成兩類,一類是數據開發工程師,例如Hadoop工程師,數據倉庫工程師;一類是學術化的工程師,深鑽模型,這種工程師其實還是更適合研究院;當然,這兩種工程師都各有優缺點,但是我更覺得對於大部分企業來說更需要一個理解數據而非處理數據的工程師,核心價值更應該在於深入去理解產品業務,數據處理,數據建模,做數據分析和挖掘,接下來對於產品的發展做數據化的驅動,並且知道何時應該繼續對模型進行優化,何時應該適可而止。
        
C. 沿着上一點繼續說,Growth Hacker & Data Scientist。一個優秀的算法/數據工程師應該具備Growth Hacker 和 Data Scientist的能力,其實這兩點也恰恰標誌着不僅僅是數據,而是一個產品的最重要兩點:增長和留存。作爲Growth Hacker,你應該爲企業找到潛在的機會點,幫助產品增長;另一方面,你也應該作爲Data Scientist,發現現有數據的問題,幫助產品優化體驗,提升留存,而推薦系統往往是屬於這一部分的子集。

D. 避免成爲成本部門。這是我後期去帶一個事業部的時候纔有着的最深體會。對於任何一個部門來講,最痛苦的莫過於自己成爲了公司的成本部門,所以爲什麼小公司的實驗室部門根本搞不下去,所以爲什麼數據部門都希望自己有個數據產品,所以爲什麼技術部門都不希望自己僅僅是一個支撐部門。那麼無論是對於技術團隊,還是數據團隊,作爲部門的負責人,永遠需要想的都應該是,我們爲企業到底創造了什麼實際的價值,而這個價值是不是當前公司所最緊缺的。例如公司現在最缺的是增長,你整個部門偏偏要拼死命做留存;公司最需要的是產品快速迭代,你偏偏要去搞底層性能優化。這些很勢利,卻是決定着部門榮辱興衰的最重要一點,無論是什麼部門,去幫忙解決公司最痛的那個點纔是最重要的。



6. 數據和直覺

有一次我和別人聊了很多,他說所以做產品經理必須要數據決策對不對?我覺得這個事兒也對也不對。

數據驅動是什麼?數據驅動是從已有的數據中去發現規律對產品進行優化,但是數據做不到的是從未知中挖掘機會點,而這往往是一個優秀產品經理的直覺。我經常和人舉的一個例子是,要是數據驅動,也許今天應該也出現不了微信。很多時候優秀的創意就是來源於一個直覺,而不是循規蹈矩的分析推導,因爲這樣往往會陷入我在上文提到的大數據的窘境。所以不要無視數據,更不要神化數據,該相信直覺的時候還是相信直覺。其實有時候做算法也是一樣,你不可能把上千種算法都A-B Test一次,有時候別人問我爲什麼,我能說的也就是直覺,作爲算法工程師的直覺,“用另外一種算法效果不會更好的”。

更何況產品經理的溝通,協調,跟蹤能力同樣是不可或缺的一部分,也是大部分工程師所缺乏的自身特質。


7. 數據工程師的窘境

這一點我不知道該從何寫起,其實算是數據工程師職業生涯上面臨的最大尷尬吧。

現在所有公司都在談數據驅動,可是說實話我目前還真的沒看到有真正數據驅動的公司,爲什麼呢?很關鍵的就是,說驅動你得驅動得起來才行啊。對於大部分公司,數據部門只是作爲一個獨立的支撐部門存在,我讓你幹嘛你就幹嘛就行了,今天幫我跑個數據,明天幫我上個模型,產品是我的,你別和我指手畫腳。再一些公司呢,數據部門,不對,不能叫做部門,“數據組”只是產品的一個附屬部門,部門的老大都是產品總監,你就更沒資本去驅動你的Boss了。 其實歸根結底,還是中國人不相信這些東西,老闆自己都不相信或者不重視,各位想一下大部分中小公司對於CTO和技術總監的要求就知道了:幫我把性能問題給解決了,而這些卻恰恰應該是一個系統架構師的定位。這裏必須要再丟一下caoz的文章:《CTO這點事 - caoz的夢囈》

那麼數據工程師發展到最後職業生涯到底進展到哪兒呢?我也不知道,也許我們都只能期望國內數據行業的進一步成熟和被認可了。而這些就是我以前老大講的,在數據的工程領域,我們都是先行者,沒有人可以告訴我們怎麼走,這些都是需要我們自己去探索和闖蕩的路。

8. 企業價值 & 市值

我一直有個理論,一個大的市場,一定能夠容納下兩家上市公司。例如我們認爲分類信息是個大領域,那麼58上市了,我相信趕集一定能上,而且如果“58” 30億的市值,我相信趕集應該會在20億上下浮動。這個其實極大地關係到瞭如何選擇一個公司。

其實現在就這麼多行業了,社交網絡已經日漸沒落,騰訊和陌陌已經切去了聊天IM的大部分市場,所以現在一家再做細分領域的聊天社交,包括匿名社交我相信都只是騙騙投資人的錢罷了。視頻行業大勢已定,幾乎沒什麼太大空間了。唯一一個老牌並且有想象空間的就是音樂,問題還是在於版權和付費意識決定了音樂行業的變現一直是大問題,所以倒是仍然值得再去拼一次。

那麼剩下的就是大家都熱炒無數次的。
電商: 電商一定還會有市場,只是新應用的用戶獲取成本太高,如何選擇品類,如何實現用戶的自傳播從而實現盈利成爲了最關鍵的問題。
O2O: 一個又一個細分市場,因爲線下太大,沒有任何一家有資本和能力全部囊括。但是稍微熟悉O2O行業的都知道,O2O的最大關鍵還是在於Offline的服務品質,線上只是線下的一個宣傳手段罷了,就像曾經在QQ上也能訂餐,現在只是發展出一個APP然後服務規模擴大化精細化了而已,既然只是一個渠道,那麼Online的部分在O2O行業所能得到的重視程度自然也就有限(個人意見,不喜可噴)。
互聯網金融:金融互聯網是個千萬億的市場,一旦成功註定是秒殺互聯網行業的,可是正是因爲這種高市值也伴隨着高風險,一個不小心現金流就如同那些P2P公司一樣捲鋪蓋跑路了。另外問題一樣,互聯網金融,核心還是金融,互聯網只是渠道,那麼核心競爭力還是取決於如何利用數據來推動金融業務的發展,例如現在P2P裏的信用風險評估,其實就是金融業的最基本概念罷了,現在拿出來用互聯網再炒一遍。
在線教育:不懂.....只是直覺覺得不看好,因爲覺得反人性的,太嚴肅的東西在互聯網上都玩不轉
硬件:離我太遠,我只是覺得現在的智能硬件還處於太初級的階段,大多是傳統硬件加個Wifi而已,有待繼續發展。

其實對於大多數人來講,技術永遠都不是瓶頸,難的都是如何選擇一個公司和行業,從短期來講選公司,在過去我們都可以靠融資多少,風投機構是否靠譜來判斷一個公司,但是在資本大熱的今天變得越來越不可行了,那麼這個時候只能依靠自己的判斷。例如拉勾,B輪2500萬美元,那麼也就是說預計B輪估值3億左右,那麼就看看吧,51job和智聯都在10個億左右的市值,而拉勾做的太深領域無法自拔,只能是他們的一個金字塔頂,於是你可以去推算一下他的想象空間。
長期來講選行業,那麼未來幾年內大熱的行業也就這麼多,選行業看看前車之鑑例如旅遊,看看途牛的估值也知道這個行業的互聯網發展了;再接下來我覺得重要的還是在於在這個行業中到底能扮演什麼樣的角色,是否能解決核心問題,例如硬件的核心問題從眼前來看是供應鏈和生產工藝,那麼做數據去盲目進入只會淪爲邊緣角色,如此類推。


9. ........

考慮實際影響,已經刪除彩蛋

發佈了167 篇原創文章 · 獲贊 65 · 訪問量 71萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章