演算法和架構
㈠ 搞架構和搞演算法,哪個更牛一些
我以為,這個問題的答案不是「誰更牛」,而是應該(甚至必須)二者得兼。
先說說機器學習演算法的重要性。最近十年的IT行業是互聯網主導的。互聯網服務之所以稱為服務,就是要能了解、理解、服務好用戶。傳統行業如銀行、醫院、商場也是服務行業。互聯網服務和他們的區別在於——利用機器智能,回答長尾問題,服務大眾——用戶不需要是衣冠楚楚的就可以P2P貸款。這是人工智慧技術最近十年在互聯網行業發展起來的核心原因。也是大家能看到所謂」演算法工程師」的收入比其他工種相對高的原因。
人工智慧演算法和大學專業課「演算法」有一個本質區別:後者教大家如何用「人腦」,利用人的知識,想明白解法,然後描述成代碼,讓機器照著執行;而前者是讓機器去從數據里「學習」或者「總結」知識,然後來解決問題。
要想互聯網服務質量過人一等,能回答好的問題要更多,所以知識的量得更大,也就是說要能從更多數據中學習和歸納知識。這就是「大數據」的核心價值,也是「架構」技法的重要性。
用Python+NumPy、R、Matlab、Octave、甚至一台機器里的一兩個GPU、不具備容錯能力從而只能覆蓋幾十台機器的MPI,在很多情況下都不能搞定」大數據學習「問題。讀書的時候,用這些工具只是方便大家對人工智慧演算法盡快有個了解。實際情況是,最好在工作前,至少在工作中,要能掌握large scale system開發的思想和方法。
大數據學習支撐互聯網行業突破已經至少十年了。它悄悄帶來了很多革命性的變化:tenure的知名人工智慧教授們也面臨中年危機了;其中有遠見有執行力的人尋求進入公司發力(入Andrew Ng);有業界經驗的人開始進入大學執教(如Alexander Smola);架構高手跨界進入人工智慧演算法領域(如Jeff Dean);大數據存儲和處理相關的開源項目的興盛(如Hadoop、Spark、Mesos、CoreOS、Kubernetes。
如果在這樣的大潮前還看不到兩者得兼的必要性,還在二者選一,甚至通過迴避技術完備去談」商業模式上的突破「,在沒有做好log信息和第三方數據收集時自稱」我們沒有大數據「,都可能讓我們在不遠的未來會碰到尷尬。