導(dǎo)言:
今晚吃飯和媳婦打趣,她把青芒、梨子、桃子幾種水果混合在一起榨汁,解決了冰箱里水果瀕臨吃不完的問(wèn)題,我來(lái)了一句:這些水果通過(guò)進(jìn)化,好不容易才變成不一樣的物種,你又給它們混合回去了。
達(dá)爾文的物種進(jìn)化理論中有一個(gè)重要命題,就是"物種沒(méi)有過(guò)渡形態(tài),只有最終形態(tài),因?yàn)橛H代會(huì)消亡,子代會(huì)更加分化"。這個(gè)觀點(diǎn)大方向很好,細(xì)節(jié)有待商榷。
1 過(guò)渡形態(tài)在哪兒?
按照我的理解, 過(guò)渡形態(tài)無(wú)處不在,只是因?yàn)樵跉v史的長(zhǎng)河中我們對(duì)過(guò)渡形態(tài)和穩(wěn)定形態(tài)的觀測(cè)頻率一樣,才造成了一定的采樣偏差。
先說(shuō)說(shuō)采樣偏差。我們?nèi)祟?lèi)是不是最終形態(tài)?現(xiàn)代人類(lèi)幾千年的文明歷史在地球的歷史長(zhǎng)河里幾乎是觀測(cè)不到的(如果200年后我們就滅絕了的話(huà))再比如一個(gè)主要依靠打車(chē)來(lái)運(yùn)輸乘客的交通系統(tǒng),遵循排隊(duì)理論,如果你在街邊有很多人打不到車(chē),你能說(shuō)這個(gè)城市較大比例的打車(chē)需求無(wú)法滿(mǎn)足嗎?不是的,因?yàn)槟悴⒉荒芸匆?jiàn)那些能迅速打到車(chē)的人,他們已經(jīng)在路上了!
我們就是如此容易忽略過(guò)度形態(tài),這種忽略是不公平的。站在任何一個(gè)時(shí)間截面上,過(guò)渡形態(tài)都會(huì)以某種非0概率存在,而不是我們常常說(shuō)的"只有最終形態(tài)"。這種進(jìn)化是持續(xù)演進(jìn)的,而不會(huì)是一蹴而就的,過(guò)渡形態(tài)一直存在于它們應(yīng)該存在的時(shí)空中,而且在那個(gè)時(shí)間點(diǎn)甚至并沒(méi)有顯現(xiàn)出"它們是過(guò)度形態(tài)"這一征兆。也許是偶然事件推動(dòng),也許是環(huán)境影響,過(guò)渡形態(tài)才會(huì)重新分化、進(jìn)化,以至于使自己的形態(tài)最終滅失。
聽(tīng)上去有點(diǎn)可惜,然而抱著不求天長(zhǎng)地久,只求曾經(jīng)擁有的態(tài)度,倒是也能淡定一些了。
2 關(guān)于數(shù)據(jù)挖掘工程師的進(jìn)化
我聽(tīng)過(guò)一個(gè)比較有意思的觀點(diǎn),來(lái)自于某位互聯(lián)網(wǎng)獵頭顧問(wèn):
"外包公司的人的痛往往在于沒(méi)辦法在迭代中進(jìn)步,做事情長(zhǎng)期處于entry level會(huì)越來(lái)越水;而B(niǎo)AT人的痛往往在于N多年永遠(yuǎn)是某個(gè)特殊崗位上的螺絲釘,逐漸精深做的很好,然而轉(zhuǎn)崗跳槽選擇都很少。"
這其實(shí)是在講兩個(gè)生態(tài)環(huán)境中的兩種成熟的物種。
前者的程序員更擅長(zhǎng)做數(shù)據(jù)的單純開(kāi)環(huán)而非閉環(huán),至于效果、驗(yàn)證、優(yōu)化,這種東西完全取決于項(xiàng)目人員的節(jié)操。受制于項(xiàng)目成本、甲方的水平,實(shí)在是沒(méi)有辦法在平均意義上做的太有水準(zhǔn),甚至連優(yōu)化迭代這件事的重要性提都不提:即然做完了為什么不直接拿錢(qián)走人呢?這種不負(fù)責(zé)任到底的心態(tài)是甲乙雙方?jīng)]有共同利益點(diǎn)的機(jī)制使然,半吊子的項(xiàng)目以及殘酷的競(jìng)標(biāo)環(huán)境,最終帶來(lái)的,絕大多數(shù)情況下導(dǎo)致的是令人遺憾的劣幣驅(qū)逐良幣。
后者的程序員更擅長(zhǎng)做數(shù)據(jù)的單純閉環(huán):在組織架構(gòu)分工明確、交接流暢的前提下,每個(gè)人都有自己負(fù)責(zé)的那"一小撮",只需要擔(dān)心在數(shù)據(jù)pipeline路徑上,數(shù)據(jù)輸入方是什么狀態(tài),數(shù)據(jù)輸出方是什么狀態(tài),進(jìn)而如何影響下一次輸入方的數(shù)據(jù)就可以了。不管是單純的日志處理,數(shù)據(jù)倉(cāng)庫(kù)搭建,還是使用數(shù)據(jù)挖掘模型作出預(yù)測(cè),從方法論到工具集基本都是套路,也不太需要?jiǎng)?chuàng)造性思維也能把成果穩(wěn)定一點(diǎn)點(diǎn)提高,因此也會(huì)陷入這種模式:人變成了架構(gòu)、變成了kpi的奴隸,比如預(yù)測(cè)/有監(jiān)督學(xué)習(xí)問(wèn)題中出現(xiàn)百萬(wàn)、上億特征而不追求降維、模式研究本身就是一種畸形,這種畸形是"預(yù)測(cè)準(zhǔn)確率就是一切"這種思路帶來(lái)的,而且還使人前赴后繼進(jìn)行日復(fù)一日的重復(fù)勞動(dòng)。
以上兩點(diǎn)說(shuō)的是某種意義上的最終形態(tài)。盡管"存在即合理",但是容易發(fā)出怨言的人并不只是負(fù)能量的制造機(jī),因?yàn)槟切┤四芸吹阶罱K形態(tài)并不是對(duì)于個(gè)人而言的最優(yōu)形態(tài)。人有更優(yōu)而不得,才會(huì)產(chǎn)生負(fù)能量。對(duì)于對(duì)于成熟物種的強(qiáng)烈不滿(mǎn),會(huì)把人導(dǎo)向另外一條進(jìn)化道路,這些人會(huì)勇于在合適的創(chuàng)業(yè)公司中把自己變成過(guò)渡形態(tài):他們?cè)谛聵I(yè)務(wù)數(shù)據(jù)探索和研究方向上的動(dòng)機(jī)以及實(shí)踐,與其說(shuō)是適應(yīng)環(huán)境,還不如說(shuō)是不滿(mǎn)意環(huán)境,希望構(gòu)建一個(gè)新環(huán)境,然后把自己放在環(huán)境里靜待進(jìn)化。盡管這一小撮人的狀態(tài)對(duì)于以上兩種人而言像是過(guò)渡形態(tài),但也可以反過(guò)來(lái)想:他們追求并構(gòu)建的公司數(shù)據(jù)文化,跟前兩種公司的數(shù)據(jù)文化相比,搞不好還更接近最終形態(tài)呢!
3 關(guān)于數(shù)據(jù)科學(xué)程序語(yǔ)言的進(jìn)化
剛才提到,個(gè)人會(huì)進(jìn)化,公司文化也會(huì)進(jìn)化,它們雖然形成了層級(jí)結(jié)構(gòu),但是進(jìn)化的規(guī)律如出一轍。這讓我不禁再往前思考了一步:公司文化這種抽象的鬼東西到底是什么?公司畢竟是由人組成的,你說(shuō)公司文化是由ceo/創(chuàng)始人決定的未免太過(guò)武斷了,從統(tǒng)計(jì)物理視角來(lái)講,不如說(shuō)是"每一個(gè)加盟公司的求同存異的個(gè)體所形成系統(tǒng)的最低勢(shì)能點(diǎn)"。
把個(gè)人-公司文化這種關(guān)系進(jìn)行類(lèi)比,我比較有興趣聊聊一組類(lèi)似的關(guān)系:數(shù)據(jù)科學(xué)程序語(yǔ)言-數(shù)據(jù)科學(xué)派別。
第一類(lèi)派別就是研究派。就像人會(huì)依附公司一樣,Julia,R,SAS這種交互式數(shù)據(jù)研究語(yǔ)言也會(huì)尋求對(duì)Python生態(tài)圈中jupyter notebook的依附,這就很尷尬了,jupyter何德何能讓性能的追逐者、追求省錢(qián)的學(xué)院派、老牌統(tǒng)計(jì)分析師一起依附過(guò)來(lái)呢?也許你會(huì)說(shuō)這玩意的重點(diǎn)在于,研究派人員對(duì)數(shù)據(jù)的交互式探索特別喜愛(ài),因?yàn)樗麄兡軓臄?shù)據(jù)中獲得令人驚訝、驚喜、百思而最終得其解的洞察。這一點(diǎn)說(shuō)穿了,那就是"讓人從dont know how to analyze走向know how to analyze"。數(shù)據(jù)驅(qū)動(dòng)的意思就是一份數(shù)據(jù)一個(gè)樣,A公司今年的經(jīng)驗(yàn)未必適合于B公司,也未必適合A公司明年的情況——這就主要講究一個(gè)開(kāi)腦洞獲得意外驚喜,因?yàn)橹钡阶詈笠豢蹋治鰩焸円苍S都不知道數(shù)據(jù)里面究竟包含了怎樣的奧妙。
第二類(lèi)派別是工程派。這里就得借用一個(gè)概念了:Domain Specific Language。這是一種粗放的概念,意思是『在某個(gè)領(lǐng)域內(nèi),使用特殊的約定,使代碼完成指定的工作』。不論是SQL,Regular Expression這種粗暴奔放的工具,還是Functional Programming實(shí)現(xiàn)數(shù)據(jù)管線(xiàn)、流式處理,或者是tensorflow、keras這種高度封裝的api實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的構(gòu)建(如果你們熟悉pylearn2的話(huà)也許還記得yaml一樣可以定義網(wǎng)絡(luò)),甚至是openblas,atlas,intel mkl這種矩陣計(jì)算工具,這種語(yǔ)言、工具的出現(xiàn)都在說(shuō)明一件事:我們離不開(kāi)高級(jí)抽象。我們最重要的目標(biāo),就是把know how to do交給其他人并忘記,轉(zhuǎn)而執(zhí)行define what to do。在容易抽象的環(huán)節(jié),程序總是扮演著節(jié)省人類(lèi)生命而非浪費(fèi)人類(lèi)生命的角色,那么define what to do就相當(dāng)于是這種抽象,用來(lái)define的工具就是人類(lèi)和人類(lèi)之間達(dá)成的協(xié)議。(至于計(jì)算機(jī)領(lǐng)域所說(shuō)的protocol,我看它們?cè)谀撤N意義上甚至可以稱(chēng)得上是標(biāo)準(zhǔn)了,因?yàn)楣?jié)省溝通成本,所以全人類(lèi)都用一種協(xié)議,就變成了標(biāo)準(zhǔn))在工程方面,一個(gè)高效執(zhí)行的pipeline一定離不開(kāi)以上提到的所有接近進(jìn)化完全的技能點(diǎn)。它能夠同時(shí)滿(mǎn)足兩點(diǎn):編碼效率極高,以及執(zhí)行效率接近最優(yōu)。
因此我的個(gè)人意見(jiàn)是,以上兩派數(shù)據(jù)科學(xué)工具最終形成派別。
結(jié)語(yǔ)
本文純屬胡思亂想系列,說(shuō)是知識(shí)言過(guò)其實(shí),不如說(shuō)成是我自己的偏見(jiàn),僅供參考。