作者:dhew (上海) “重要的不是去評(píng)斷善惡,而是要去認(rèn)識(shí)天真的內(nèi)面和嚴(yán)格的現(xiàn)實(shí)所形成的...
那天我酒喝多了,好奇的問(wèn)在場(chǎng)的一位程序員哥們。你們是怎么堅(jiān)持下來(lái)的。這個(gè)社會(huì)對(duì)程序員有那么多的誤解,你們是怎么堅(jiān)持下來(lái)的。
那個(gè)程序員哥們估計(jì)也喝多了。就跟我講了一個(gè)所有程序員都知道的故事。
----
一開(kāi)始,只是有人想要做一個(gè)天氣預(yù)報(bào)軟件。想做這件事的人是一個(gè)程序員,是誰(shuí)不重要。重要的是他想做的事,他想做的不是那種從氣象局抓一下預(yù)測(cè)結(jié)果,再配一些小清新照片就完事的手機(jī)應(yīng)用。他想從零開(kāi)始,即從氣溫,風(fēng)向,風(fēng)速,云圖入手,推測(cè)出接下來(lái)24小時(shí)的天氣變化
程序員們很像手工匠人,天生喜歡從無(wú)到有做點(diǎn)什么東西出來(lái)。這個(gè)程序員也不例外。他從氣象學(xué)的基本理論開(kāi)始構(gòu)建了一個(gè)算法,我們姑且把它稱為算法A吧。軟件通過(guò)調(diào)試上線運(yùn)行的那天,氣象局預(yù)報(bào)下午有雨。而軟件預(yù)報(bào)天晴。
對(duì)自己開(kāi)發(fā)的軟件堅(jiān)信不移的程序員被雨淋了個(gè)透濕,于是回頭來(lái)尋找bug。在反復(fù)審視自己的作品后,他把問(wèn)題鎖定在了算法上。并不是算法有問(wèn)題,而是所依據(jù)的氣象學(xué)本身的數(shù)學(xué)表達(dá)就不完備。但他沒(méi)能力把這門科學(xué)再往前推進(jìn)一步。他把源代碼上傳到github,并開(kāi)了一個(gè)帖子,向其他程序員們求助,有人回復(fù)說(shuō),沒(méi)辦法了,上機(jī)器學(xué)習(xí)吧。
和大眾想象的不一樣,程序員們對(duì)機(jī)器學(xué)習(xí)抱持著一種愛(ài)恨交加的復(fù)雜感情。愛(ài)是因?yàn)樗屓澜绲某绦騿T們都出了次風(fēng)頭,恨是因?yàn)樗耆环铣绦騿T們習(xí)慣的思考方式。
機(jī)器學(xué)習(xí)的原理和小學(xué)生做數(shù)學(xué)題很相似。你給一個(gè)習(xí)題集,再提供一個(gè)標(biāo)準(zhǔn)答案。計(jì)算機(jī)做一道題,對(duì)一遍答案,如果錯(cuò)了,就重做。如此反復(fù)幾百萬(wàn)遍,直至正確為止。通過(guò)這個(gè)反復(fù)糾錯(cuò)的過(guò)程,計(jì)算機(jī)會(huì)自然得出一個(gè)正確率最高的解題思路,然后如快刀斬亂麻一樣解決所有類似的問(wèn)題。而你甚至不需要給計(jì)算機(jī)灌輸一加一等于二之類的基本數(shù)學(xué)理論。更無(wú)從領(lǐng)悟這個(gè)最后的解題思路到底是什么。機(jī)器學(xué)習(xí)就好像一個(gè)魔法師的帽子。程序員們只能把手伸進(jìn)去掏出兔子,卻無(wú)法解釋這個(gè)帽子到底是連通了異次元還是怎么的。
引入機(jī)器學(xué)習(xí)后,算法的準(zhǔn)確率大幅提升,氣象局預(yù)測(cè)下雨時(shí),算法預(yù)測(cè)為下冰雹。氣象局預(yù)測(cè)天晴時(shí),算法預(yù)測(cè)為高溫警報(bào)。雖然看起來(lái)只是在氣象局的結(jié)果上疊加了一個(gè)正態(tài)分布。但程序員知道這個(gè)算法已經(jīng)踏上了正確的道路。訓(xùn)練三周后,算法在預(yù)測(cè)的即時(shí)性和準(zhǔn)確度上就已經(jīng)超過(guò)了氣象局。程序員欣喜的將軟件放到網(wǎng)上,為所有人免費(fèi)提供未來(lái)24小時(shí)的天氣預(yù)測(cè),并在預(yù)測(cè)結(jié)果上加入了“更精準(zhǔn),更及時(shí)”的標(biāo)題。意識(shí)到這會(huì)讓自己丟了飯碗的氣象學(xué)家們開(kāi)始上電視,宣稱這是氣象學(xué)理論推動(dòng)社會(huì)進(jìn)步發(fā)展,而程序員只是適逢其會(huì)。
看完節(jié)目的程序員憤怒將算法的代碼開(kāi)源了。立刻就有同仇敵愾的程序員跟進(jìn)并重寫了代碼,剔除了依據(jù)氣象學(xué)理論加入的基本原則和預(yù)測(cè)方法,直接使用機(jī)器學(xué)習(xí)由零開(kāi)始構(gòu)筑新的算法。這一次,項(xiàng)目獲得了一個(gè)正式的命名:天氣算法。
一開(kāi)始,天氣算法給出的結(jié)果慘不忍睹。例如它曾預(yù)測(cè)在撒哈拉沙漠正中央出現(xiàn)彩虹,或在印度洋的正中央出現(xiàn)沙塵暴。但在兩周的訓(xùn)練后,它就碾壓了自己的前任。不但準(zhǔn)確率更高,需要的計(jì)算單位還更少。氣象學(xué)家們被狠狠地扇了一巴掌。比名譽(yù)掃地更可怕的是,他們丟了工作。
程序員們隔著屏幕互相拍手慶賀。
----
然后,糧食公司找了上來(lái)。
古希臘的哲學(xué)家曾預(yù)測(cè)當(dāng)年風(fēng)調(diào)雨順,橄欖豐收,于是事先租下了所有的榨油機(jī),并在橄欖收獲季大賺了一筆。而當(dāng)代的糧食公司在做的差不多是同樣的事。只是規(guī)模和賭注都大了許多。他們希望這個(gè)預(yù)測(cè)軟件能夠提供未來(lái)三個(gè)月的天氣變化,讓糧食公司得以決定在什么時(shí)間用什么價(jià)格下注
新手程序員樂(lè)觀的認(rèn)為這只是對(duì)現(xiàn)有軟件的再應(yīng)用。而老程序員則明白事情沒(méi)那么簡(jiǎn)單。要預(yù)測(cè)24小時(shí)后的天氣,只需要就特定區(qū)域的氣象數(shù)據(jù)進(jìn)行建模。但要預(yù)測(cè)3個(gè)月后的天氣,就需要將全球氣候變化都納入模型中統(tǒng)一考量。此前所使用的算法是局部的。要預(yù)測(cè)長(zhǎng)期變化,就必須換成一個(gè)整體化的思考方式。
為了說(shuō)明這一點(diǎn),一個(gè)擅長(zhǎng)3D建模的程序員用糧食公司提供的天氣數(shù)據(jù)做了一個(gè)全球的氣候模型,帶上VR頭盔,就能看到一個(gè)巨大的地球,這里風(fēng)起云涌,那里電閃雷鳴。冰島的火山爆發(fā)讓整個(gè)歐洲上空籠罩著一片的淡淡陰云并經(jīng)久不散;上升的氣溫讓冰山融化,冰架斷裂,冰山一路向下飄移;低溫洋流形成的恢弘暗影橫跨整個(gè)太平洋;洋流的末端,颶風(fēng)成型進(jìn)而橫掃整個(gè)美國(guó)東部。
部分構(gòu)成整體,而整體涵蓋部分。現(xiàn)在是未來(lái)的縮影,而未來(lái)是現(xiàn)在的延伸。
論壇沉默了整整兩個(gè)星期,然后一名程序員上傳了自己的算法。這個(gè)注定被載入史冊(cè)的算法開(kāi)端平淡無(wú)奇,這名程序員簡(jiǎn)單的將之命名為“氣候算法”。聲稱他使用了糧食公司提供的歷史數(shù)據(jù)進(jìn)行了訓(xùn)練,氣候算法已能預(yù)測(cè)未來(lái)三個(gè)月的天氣數(shù)據(jù)。 而立刻就有好事者發(fā)現(xiàn),算法預(yù)測(cè)一周后的紐約市會(huì)下一場(chǎng)鱒魚雨。
這一次,混沌物理學(xué)家們也加入了等著看笑話的行列。他們不相信算法可以解決這個(gè)困擾了他們近半個(gè)世紀(jì)的問(wèn)題。而后他們目瞪口呆的看著鱒魚從天而降,在曼哈頓的馬路上活蹦亂跳。于是他們也丟了工作。
絕大多數(shù)人并不關(guān)心混沌物理學(xué)家有沒(méi)有工作。因?yàn)榻^大多數(shù)人一輩子也沒(méi)見(jiàn)過(guò)一個(gè)混沌物理學(xué)家。但揮舞著天氣算法的大棒,在全球的糧食市場(chǎng)興風(fēng)作浪的糧食公司,立刻受到了媒體的關(guān)注?;煦缥锢韺W(xué)家開(kāi)始和氣象學(xué)家爭(zhēng)搶登上電視屏幕機(jī)會(huì),控訴糧食公司為非作歹,程序員們助紂為虐
這當(dāng)然引起了絕大多數(shù)程序員的反感。于是在很短的一段時(shí)間里,氣象學(xué)家和混沌物理學(xué)家所使用的任何軟件,從運(yùn)行在大型機(jī)里的數(shù)據(jù)處理軟件到手機(jī)上運(yùn)行的小游戲都極容易崩潰。
糧食公司們并沒(méi)有開(kāi)心多久。氣候算法的設(shè)計(jì)理論很快發(fā)表在IEEE的會(huì)刊上。甚至連用來(lái)訓(xùn)練算法的天氣數(shù)據(jù)集都被人放到了github上——畢竟,程序員是這個(gè)世界上最缺乏理解,又最需要理解的群體。在幾個(gè)月的封閉開(kāi)發(fā)后,各種大同小異的氣候算法,就如雨后春筍般冒了出來(lái)。天氣不再是無(wú)法解釋的謎團(tuán),而是可以購(gòu)買的訂閱服務(wù)。直至最后,一個(gè)想要搶奪流量的互聯(lián)網(wǎng)公司把預(yù)測(cè)服務(wù)免費(fèi)開(kāi)放給了所有人。所有那些為容納并訓(xùn)練各種天氣算法而搭建的龐大硬件設(shè)備立刻成了資產(chǎn)負(fù)債表上的紅字,被無(wú)情的財(cái)務(wù)人員們建議廉價(jià)出售以挽回?fù)p失
----
幸而對(duì)算法的需求是無(wú)止境的。只是這一次輪到了大型倉(cāng)儲(chǔ)式超市。
超市經(jīng)營(yíng)者一直對(duì)市場(chǎng)占有率,商品流轉(zhuǎn)率等數(shù)據(jù)斤斤計(jì)較。他們很想知道顧客們到底買什么,為什么買,怎么買。以便向顧客們推銷更多東西,減少乏人問(wèn)津卻不得不設(shè)置的貨架面積。他們向程序員們提供了在某家超市注冊(cè)的三十萬(wàn)會(huì)員的全部信息。從顧客訪問(wèn)商店的頻次,購(gòu)買的物品清單,使用信用卡還是現(xiàn)金付帳,一直到是否兌換了免費(fèi)的停車券,是否在超市內(nèi)設(shè)的快餐店進(jìn)餐等。而后又提供了通過(guò)非法途徑獲得的會(huì)員們的社會(huì)保險(xiǎn)號(hào),駕照編號(hào),家庭住址。
程序員們首先嘗試在這些紛繁蕪雜的信息中建立關(guān)聯(lián)。而最后得出的結(jié)果也不過(guò)是在尿布邊放啤酒,衛(wèi)生巾邊上放酵素減肥商品之類的建議。這令超市經(jīng)理們開(kāi)始擔(dān)心那些投在GPU,內(nèi)存條和水冷模塊上的費(fèi)用毫無(wú)意義。雖然這些電腦部件的價(jià)格因?yàn)樘鞖忸A(yù)測(cè)競(jìng)爭(zhēng)的崩盤而跌了不少。但超市經(jīng)理可能是全世界最討厭固定資產(chǎn)和折舊的一群人,幾乎跟程序員們對(duì)“加班”的抗拒程度有的一拼。
程序員們則開(kāi)始尋求新的解決方案。他們?cè)诔虚T口架設(shè)了一個(gè)攝像機(jī)進(jìn)行人臉?lè)治?。每次有一名顧客?lái)到超市,算法會(huì)自動(dòng)將顧客的信息納入數(shù)據(jù)庫(kù),或與數(shù)據(jù)庫(kù)中已經(jīng)存在的用戶信息進(jìn)行匹配。根據(jù)匹配的結(jié)果,算法將對(duì)他或她將要購(gòu)買的商品進(jìn)行預(yù)測(cè)。每天結(jié)束運(yùn)營(yíng)后,算法將比對(duì)當(dāng)天數(shù)萬(wàn)名顧客的預(yù)測(cè)結(jié)果和實(shí)際購(gòu)物情況,對(duì)算法進(jìn)行修正。并在第二天開(kāi)門前,按照修正后的算法再次進(jìn)行預(yù)測(cè)。如是反復(fù)進(jìn)行了三個(gè)月,算法對(duì)固定客戶需求的預(yù)測(cè)準(zhǔn)確率達(dá)到了96%,對(duì)非固定用戶需求的預(yù)測(cè)準(zhǔn)確率達(dá)到了76%。
但超市經(jīng)營(yíng)者需要的不是等顧客到超市就遞過(guò)去一袋子已經(jīng)準(zhǔn)備好的商品,讓他趕快付錢并滾蛋。而是盡可能的讓同樣的一批人花更多的錢,買性價(jià)比更低的東西,并始終不渝的購(gòu)買。程序員們第一次感覺(jué)有點(diǎn)束手無(wú)策。超市算法已取得了階段性成果,引入新的變量只會(huì)推翻原有的成果。正如糧食公司依靠天氣算法在期貨市場(chǎng)上大筆投資后,一些農(nóng)民們開(kāi)始利用人工降雨來(lái)改變預(yù)測(cè)結(jié)果。大量的人工降雨,導(dǎo)致對(duì)遠(yuǎn)期天氣預(yù)測(cè)的準(zhǔn)確率下降了不少。而超市經(jīng)營(yíng)者提出的要求則無(wú)異于要求算法主動(dòng)引發(fā)人工降雨,讓遠(yuǎn)在萬(wàn)里之外的沙漠變成綠洲。
一部分程序員更因此退出了項(xiàng)目,他們堅(jiān)定的認(rèn)為算法應(yīng)當(dāng)受人指揮,而非指揮人。剩下的程序員們撓了撓頭,提出購(gòu)買更大、更快的計(jì)算機(jī)。這得到了論壇成員們的一致贊同(就連那些退出項(xiàng)目的程序員們都贊同了)——所有工作了十年以上的程序員都明白這么一個(gè)道理,與其絞盡腦汁向代碼要效率,不如坐下來(lái)等著硬件升級(jí)換代。按照摩爾定律,那些一直困擾著你的性能問(wèn)題,自然會(huì)被更快的CPU和更大內(nèi)存解決。而同時(shí),采購(gòu)硬件是一個(gè)漫長(zhǎng)的過(guò)程,程序員們由此獲得了額外的時(shí)間來(lái)排查問(wèn)題。
一個(gè)大型計(jì)算中心在加州的荒蕪海岸邊拔地而起。拔地而起這個(gè)形容方式并不準(zhǔn)確。因?yàn)樗械挠?jì)算機(jī)都位于海底,拔地而起的是為設(shè)備供電的太陽(yáng)能電池板和輸電設(shè)備。至此程序員們已沒(méi)有理由再推脫,只能把算法丟進(jìn)去,并祈求計(jì)算之神保佑。
計(jì)算中心運(yùn)行了整整一個(gè)月。算法吞噬了所有用戶信息,貨架調(diào)整記錄,定價(jià)和銷量的歷史數(shù)據(jù),并生成了一個(gè)意義無(wú)法辯明的關(guān)系鏈。運(yùn)算排出的大筆熱量,導(dǎo)致這一區(qū)域的海水溫度上升了0.1度,甚至部分延緩了季風(fēng)季節(jié)的到來(lái),讓太平洋另一側(cè),安達(dá)曼海的漁民們獲得了豐收,也讓天氣算法的預(yù)測(cè)準(zhǔn)確度再次下跌了0.1%。
最后,這個(gè)被命名為超市算法的新玩意給出了一條前所未有的復(fù)雜建議,從貨架間距,物品的擺放順序到價(jià)格標(biāo)簽的變化規(guī)律無(wú)所不包。其繁瑣程度讓超市經(jīng)營(yíng)者們無(wú)比信服,并立刻推動(dòng)執(zhí)行。位于紐約市郊區(qū)的一座大型超市進(jìn)行了全面改造,引入了全自動(dòng)的分貨上架設(shè)備,以及可快速調(diào)整價(jià)格的電子價(jià)簽,所有在職人員接受再培訓(xùn),整個(gè)超市停業(yè)三周再重新開(kāi)張后,凈利潤(rùn)由原先的0.5%上升到了3%,并隨著算法的不斷調(diào)整和更新,一路朝著5%高歌猛進(jìn)。于是超市經(jīng)理們也加入了失業(yè)大軍。
----
政客們終于注意到了這個(gè)與人工智能有關(guān)的項(xiàng)目。他們發(fā)來(lái)詢問(wèn),是否能在競(jìng)選領(lǐng)域內(nèi)引入算法。
部分程序員們退出了項(xiàng)目。他們并不介意算法為顧客買什么東西提出建議(因?yàn)榇蠖鄶?shù)人確實(shí)需要建議),但非常介意算法為選民如何投票提出建議(因?yàn)橥镀彼坪醣荣I可樂(lè)還是買雪碧更重要)。而那些認(rèn)為投票和買可樂(lè)一樣重要,或者一樣不重要的程序員們接下了這個(gè)活。因?yàn)橹灰晕⒀芯烤湍馨l(fā)現(xiàn),這些政客提出的需求只是對(duì)現(xiàn)有算法的簡(jiǎn)單復(fù)用。畢竟競(jìng)選與超市管理沒(méi)有什么差別,其目的都是讓顧客花更大的價(jià)錢,買更廉價(jià)的東西,并且越買越多,越買越自信。不過(guò)一者用錢買,一者用選票買。
程序員們開(kāi)始喂給算法各種各樣的數(shù)據(jù),一部分?jǐn)?shù)據(jù),即民眾的經(jīng)濟(jì)狀況,消費(fèi)情況,在為超市提供支持時(shí)已經(jīng)獲得過(guò)了,甚至連去除臟數(shù)據(jù)的工序都省了。而另一部分?jǐn)?shù)據(jù),即所有選民的政治立場(chǎng),投票記錄,犯罪記錄,受教育程度,完整的報(bào)稅清單,生育記錄,親緣關(guān)系,社會(huì)關(guān)系,則由政客們提供。經(jīng)過(guò)行政機(jī)器長(zhǎng)達(dá)兩個(gè)世紀(jì)的維護(hù)和整理,這些數(shù)據(jù)已非常精確而完備。導(dǎo)入的步驟并沒(méi)有花多少時(shí)間??缮山Y(jié)果時(shí)卻出了問(wèn)題。
競(jìng)選經(jīng)理發(fā)來(lái)熱情洋溢的郵件,稱贊算法給出的建議非常明智,幾乎是他們所能想象出來(lái)的,覆蓋絕大多數(shù)選民意愿的最穩(wěn)妥的選擇。但一個(gè)無(wú)可辯駁的穩(wěn)妥選擇毫無(wú)意義。競(jìng)選者們需要的是在整個(gè)競(jìng)選過(guò)程中,持續(xù)不斷的,能獲得最大關(guān)注和最多支持的無(wú)數(shù)個(gè)選擇。
程序員們這才意識(shí)到問(wèn)題所在,政治不同于超市。當(dāng)顧客進(jìn)入超市時(shí),其購(gòu)物欲望與其面對(duì)的貨架擺放將直接導(dǎo)向結(jié)果——放進(jìn)購(gòu)物車或不放進(jìn)購(gòu)物車,這是個(gè)一次性的判斷。而競(jìng)選是一個(gè)持續(xù)演進(jìn)的動(dòng)態(tài)過(guò)程,是一個(gè)信息與反饋不斷交織,直至最后以投票方式得出結(jié)論的長(zhǎng)期過(guò)程。算法需要在這個(gè)長(zhǎng)期的動(dòng)態(tài)的過(guò)程中,反復(fù)多次向選民提供信息,不斷強(qiáng)化印象,直至選民投出那神圣的一票。
幸好在解決天氣問(wèn)題時(shí),程序員們已經(jīng)找到了解決問(wèn)題的辦法。他們結(jié)合了天氣算法和超市算法,獲得一個(gè)了新的,能夠在一個(gè)動(dòng)態(tài)系統(tǒng)內(nèi)主動(dòng)給出操作建議,從而影響遠(yuǎn)期結(jié)果的算法,并毫無(wú)創(chuàng)意的將這個(gè)算法命名為,政治算法。
政治算法的上線,除了導(dǎo)致大批競(jìng)選經(jīng)理的失業(yè)外(沒(méi)有人真正喜歡競(jìng)選經(jīng)理),還將競(jìng)選徹底變成了金錢游戲。能夠租用大型計(jì)算中心運(yùn)行算法的競(jìng)選者們天然具有優(yōu)勢(shì)。而當(dāng)所有參選者們都希望租用計(jì)算中心以獲得算法支持時(shí),計(jì)算中心的租用價(jià)格自然水漲船高。于是很多參選者從算法獲得的第一條建議,是放棄尋求算法的支持,把省下來(lái)的錢拿去投放廣告。這一建議的明智之處立刻獲得了所有人的理解和認(rèn)同,進(jìn)一步加強(qiáng)了參選者對(duì)政治算法的渴求。
于是,全球所有的互聯(lián)網(wǎng)用戶,都不得不面臨這樣的窘境——只要有大型競(jìng)選開(kāi)鑼,用于支持整個(gè)互聯(lián)網(wǎng)運(yùn)轉(zhuǎn)的計(jì)算資源,就立刻被競(jìng)選算法剝?nèi)ヒ淮蟀?。而剩下的?jì)算資源經(jīng)過(guò)垃圾郵件、黃色視頻、在線游戲和購(gòu)物網(wǎng)站的盤剝后,只剩下指甲蓋大小的一丁點(diǎn)。幸好絕大部分互聯(lián)網(wǎng)用戶只需要視頻、游戲和購(gòu)物。而剩下的那些,沒(méi)有互聯(lián)網(wǎng)也能生存。
----
第一位依賴算法競(jìng)選的政客登上總統(tǒng)寶座后,立刻推動(dòng)立法,禁止在政治領(lǐng)域內(nèi)應(yīng)用算法。這一立法雖然獲得了政客們的一致支持,卻只導(dǎo)致了政治算法的完全地下化。由于資源配置的不公開(kāi)和不透明,在大選期間租用計(jì)算中心的價(jià)格如火山爆發(fā)般飛升?;ヂ?lián)網(wǎng)能夠使用的計(jì)算資源被進(jìn)一步擠占,差點(diǎn)連那指甲蓋大小的一丁點(diǎn)都不復(fù)存在。差點(diǎn)連論壇都無(wú)法登入的程序員們,展開(kāi)了對(duì)垃圾郵件的復(fù)仇之戰(zhàn)。然而哪怕新的郵箱過(guò)濾算法篩掉了90%的垃圾郵件,節(jié)省下來(lái)的那些計(jì)算資源,仍然被政治算法吞噬殆盡。這讓習(xí)慣了利用系統(tǒng)冗余資源跑一點(diǎn)自己的小項(xiàng)目的程序員們不得不開(kāi)始反思這樣的一個(gè)問(wèn)題,算法的存在,到底意味著什么。
一部分程序員不再相信“算法是中立的”,因?yàn)樗惴ㄊ且粋€(gè)威力巨大的武器,什么人會(huì)需要威力巨大的武器呢?當(dāng)然是邪惡之人。那么為邪惡之人鑄造威力巨大的武器的人,當(dāng)然也是邪惡的。
另一部分程序員認(rèn)為前者純粹是日漫看多了。糧食公司可以依靠算法投資全球糧食市場(chǎng);農(nóng)民可以使用算法對(duì)抗天氣災(zāi)害。政客們可以利用算法登上權(quán)力頂峰,選民可以使用算法厘清競(jìng)選資金來(lái)源。程序員無(wú)法決定什么人,為什么使用算法,但可以決定用算法來(lái)解決什么問(wèn)題。
還有一部分程序員發(fā)出無(wú)情的冷笑,你們真的能決定用算法來(lái)解決什么問(wèn)題?
這讓所有人都陷入了沉默中。
說(shuō)實(shí)話,成型的算法已經(jīng)不是任何人能夠理解的了。它像一個(gè)由無(wú)數(shù)根小鋼棒構(gòu)成的黑箱子。上面有一個(gè)小孔。從小孔里丟下一個(gè)小鋼球。小鋼球一邊朝下墜落,一邊撞擊小鋼棒并改變方向,直至最后落進(jìn)“大霧”,“鱒魚雨”,“在泡椒鳳爪邊上放啤酒”,“針對(duì)亞裔移民投放一個(gè)與教育有關(guān)的廣告”之類小格子里。程序員們只是設(shè)計(jì)了這樣的一個(gè)黑箱子,然后讓算法自己去調(diào)整鋼棒。他們其實(shí)并不知道每一根鋼棒的具體位置,更不知道算法是如何如何調(diào)整這些鋼棒的。從引入機(jī)器學(xué)習(xí)讓計(jì)算機(jī)自行生成算法那一刻起,程序員們就已無(wú)法理解自己的造物了。
但它畢竟是我們創(chuàng)造出來(lái)的。不是嗎?
最后,一小部分程序員們跳了出來(lái),開(kāi)發(fā)一個(gè)算法的真正意義,不在于這個(gè)算法的運(yùn)營(yíng)機(jī)制到底是什么,也不在于要用這個(gè)算法去解決什么問(wèn)題,而在于這個(gè)算法本身所具有的可能性。這種對(duì)可能性的探索,才是這個(gè)項(xiàng)目的真正意義所在。就好像一座山在那里,因?yàn)槟悴恢罏槭裁磿?huì)有這座山,不知道登上山頂會(huì)怎樣,所以就不去攀登了嗎?
雖然程序員們可能是世界上離山最遠(yuǎn)的一群人。但這個(gè)觀點(diǎn)卻得到了全體程序員的一致贊同。在一片歡呼中,程序員們提出了一個(gè)宏偉的計(jì)劃,要開(kāi)發(fā)一個(gè)囊括世間萬(wàn)物的算法。將物質(zhì)的流轉(zhuǎn),人的取舍,都放入這個(gè)巨大的黑箱中。他們不再糾結(jié)一個(gè)不可知的黑箱是不是對(duì)程序員尊嚴(yán)的挑戰(zhàn),也不再考慮是否會(huì)有人使用這個(gè)黑箱為非作歹。把這個(gè)黑箱做出來(lái),剩下的事都可以之后再考慮。
----
這個(gè)“萬(wàn)物算法”的項(xiàng)目,開(kāi)始通過(guò)郵件組,博客,論壇在程序員之間傳播。并逐漸變得清晰起來(lái)。
當(dāng)然,這個(gè)算法不應(yīng)該去預(yù)測(cè)原子在碰撞五十次之后的位置之類的問(wèn)題。一方面現(xiàn)有的計(jì)算資源的總和都不足以計(jì)算出問(wèn)題的答案,一方面類似的計(jì)算毫無(wú)意義。程序員們需要的是不可預(yù)測(cè)之上的可以預(yù)測(cè),是基于混沌世事之上的規(guī)則和結(jié)論。從一開(kāi)始這個(gè)項(xiàng)目就不考慮從微觀態(tài)反推宏觀態(tài),而直接向宏觀世界尋求規(guī)律。
就連那些從未接觸機(jī)器學(xué)習(xí)的程序員們,也被這個(gè)計(jì)劃所吸引。拋開(kāi)職業(yè)分野(是的,程序員也是有職業(yè)分野的)和知識(shí)鴻溝(是的,程序員也不是都會(huì)修電腦的),他們單純的對(duì)這個(gè)項(xiàng)目感到好奇,并寄望于這個(gè)項(xiàng)目為程序員們的職業(yè)生涯賦予意義。他們相信萬(wàn)物算法的開(kāi)發(fā)成功,意味著程序員們終于能坦然面對(duì)身邊紛繁蕪雜的現(xiàn)實(shí)世界,畢竟除了他們,再也沒(méi)有任何人將整個(gè)世界握在手中,而又不為人所知。
為了推進(jìn)這個(gè)計(jì)劃,程序員們開(kāi)始攫取一切能弄到手的運(yùn)算資源。他們用各種項(xiàng)目的名義向全球所有計(jì)算中心提交運(yùn)算任務(wù)。在所有色情網(wǎng)站和垃圾頁(yè)游上植入木馬以獲得觀看者的本地計(jì)算資源。他們甚至違背原則發(fā)送了大量的垃圾郵件將許多貿(mào)然點(diǎn)開(kāi)鏈接的用戶的電腦變成了并網(wǎng)計(jì)算用的肉雞。只是在是否要擠占在線游戲服務(wù)器的問(wèn)題上,他們爆發(fā)了爭(zhēng)論。部分程序員以退出整個(gè)計(jì)劃作為威脅,才為魔獸世界服務(wù)器留下了50%的運(yùn)算性能。
于是,幾乎所有的計(jì)算機(jī),從埋在水底的超級(jí)計(jì)算機(jī),到咖啡館里的蘋果筆記本,從亞馬遜的在線服務(wù)器,到高中生們?cè)谡n間偷偷打開(kāi)的手機(jī),都自覺(jué)或不自覺(jué)的被卷入到了這一宏大而近乎無(wú)止盡的運(yùn)算中。它們所耗費(fèi)的電能和額外制造的熱量,不但讓一些運(yùn)行不良的電網(wǎng)走向崩潰,更讓天氣算法的遠(yuǎn)期預(yù)測(cè)結(jié)果出現(xiàn)了接近5%的偏差。
關(guān)于計(jì)算機(jī)運(yùn)行速度變慢,與服務(wù)器斷開(kāi)鏈接,看視頻的時(shí)候一卡一卡的之類的抱怨充斥著整個(gè)互聯(lián)網(wǎng)。而所有程序員都對(duì)此保持緘默不語(yǔ),或者以此為由要求建造更多、更大的計(jì)算中心。一部分從程序員轉(zhuǎn)行的產(chǎn)品經(jīng)理注意到了曾經(jīng)的同僚們的瘋狂舉動(dòng),然而在他們來(lái)得及得出結(jié)論或發(fā)出警報(bào)前,就已經(jīng)被算法本身滅了口。當(dāng)然不是物理毀滅。只是他們登入的網(wǎng)站被斷開(kāi)連接,打電話時(shí)會(huì)發(fā)現(xiàn)不在服務(wù)區(qū),發(fā)出的郵件被告知收件人不存在。他們?cè)诮^望中拍下的“瘋狂程序員想要統(tǒng)治整個(gè)世界的”警告視頻,倒是被幾名程序員傳到了網(wǎng)上,作為人畜無(wú)害的程序員們屢次被迫害的證明供人嘲笑。
這樣無(wú)止境的計(jì)算了三個(gè)月,全球互聯(lián)網(wǎng)在崩潰邊緣擦擦蹭蹭數(shù)次之后,計(jì)算終于得出了結(jié)果。算法生成了。程序員們按照其不同的宗教信仰,對(duì)這一刻進(jìn)行了描述,從“hello world”到“越過(guò)長(zhǎng)城,走向世界”,從“我是alpha,也是omega”到“天上地下,唯我獨(dú)尊”。從“Armageddon”到“42”,不一而足。然而直至這時(shí),他們才發(fā)現(xiàn)一個(gè)尷尬的問(wèn)題。
我們要用這個(gè)算法干什么?
當(dāng)然,它能回答一些,明年的總統(tǒng)會(huì)是誰(shuí)?南美的雨林會(huì)不會(huì)在接下來(lái)的50年內(nèi)消失。東京的房?jī)r(jià)在未來(lái)10年的走勢(shì)如何之類的問(wèn)題。但程序員們其實(shí)并不真正關(guān)心這些問(wèn)題。
經(jīng)過(guò)了爭(zhēng)辯,論戰(zhàn),不記名投票,刷票,加入防作弊機(jī)制并重新投票后,第一個(gè)提交算法的問(wèn)題是:“什么是最好的編程語(yǔ)言?!?/p>
算法回答:“請(qǐng)定義好?!?/p>
程序員們沉默了。并在長(zhǎng)久的爭(zhēng)論后,放棄了這個(gè)問(wèn)題。
第二個(gè)提交給算法的問(wèn)題是:“哪些編程語(yǔ)言會(huì)在二十年后被停止使用?!?/p>
算法回答:“全部。”
程序員們?cè)俅纬聊?。部分程序員建議投票決定是否干掉這個(gè)算法。而一些不死心的程序員們則提出了第三個(gè)問(wèn)題。
“現(xiàn)存的哪些語(yǔ)言將被使用的最久?”
算法回答:“匯編語(yǔ)言?!?/p>
于是大多數(shù)程序員都投票贊成干掉這個(gè)算法。只有少數(shù)經(jīng)常跟底層打交道的覺(jué)得這個(gè)算法仍有存在價(jià)值。
第四個(gè)問(wèn)題是:“匯編語(yǔ)言被停用前的使用目的是什么?”
這個(gè)問(wèn)題,顯而易見(jiàn),是那些不支持匯編語(yǔ)言是現(xiàn)有編程語(yǔ)言中最長(zhǎng)壽語(yǔ)言的程序員們提出的。
算法回答:“教學(xué)。”
在其他程序員的哧哧笑聲中,匯編語(yǔ)言的使用者們也投下了贊成票。
----
于是這個(gè)誕生沒(méi)有多久的,關(guān)于萬(wàn)物的算法,在回答了四個(gè)問(wèn)題后就被關(guān)閉。其核心代碼被壓縮成一個(gè)大小為32.17T的壓縮包。所有被擠占的計(jì)算資源都被還給了計(jì)算中心,個(gè)人電腦,游戲機(jī)和手機(jī)?;ヂ?lián)網(wǎng)松了口氣,又開(kāi)始茍延殘喘。
程序員們又開(kāi)始響應(yīng)需求。
絕大部分是一些被重復(fù)過(guò)無(wú)數(shù)次的,沒(méi)有挑戰(zhàn)的需求。例如電腦藍(lán)屏了,網(wǎng)絡(luò)連不上了,這個(gè)頁(yè)面要改一下,新的蘋果手機(jī)無(wú)法適配了什么的。一小部分是嘗試解決某個(gè)特殊領(lǐng)域內(nèi)已經(jīng)被解決過(guò)但解決方案并沒(méi)有被放到網(wǎng)上的問(wèn)題。只有很小很小很小一部分,是關(guān)于效率的提升,資源的最優(yōu)化配置,關(guān)于生產(chǎn)力的解放。
程序員們坦然接受了這一切。
他們從未想過(guò)要解開(kāi)壓縮包。
他們?cè)巧鲜澜缰畮p,所以能心平氣和的走在馬路上。
應(yīng)程序員朋友的要求,追加惡搞的結(jié)局二:
這個(gè)問(wèn)題,顯而易見(jiàn),是那些不支持匯編語(yǔ)言是現(xiàn)有編程語(yǔ)言中最長(zhǎng)壽語(yǔ)言的程序員們提出的。
算法回答:“教學(xué)?!?/p>
在其他程序員的哧哧笑聲中,匯編語(yǔ)言的使用者們也投下了贊成票。
等等。
在算法即將被關(guān)閉的那一瞬,一個(gè)程序員突然提出了這么一個(gè)問(wèn)題:“這個(gè)算法能幫我找女朋友嗎?”
所有人都沉默了。三十秒鐘后,一個(gè)新的投票窗口上線。這一次,幾乎84.97%的人都贊成使用算法開(kāi)設(shè)一個(gè)專為程序員服務(wù)的婚戀介紹機(jī)構(gòu)。而沒(méi)有投贊成票的那些,則被標(biāo)上“人贏”的tag,剝奪了投票權(quán)。
于是,這個(gè)囊括萬(wàn)物的算法,再次轟轟烈烈的運(yùn)轉(zhuǎn)起來(lái)。根據(jù)“最能理解程序員的,是程序員的工作伙伴”這一普遍原則,算法篩選出了大量從事測(cè)試、UI、UE、前端工作的女性。但卻無(wú)奈的發(fā)現(xiàn),哪怕把女性策劃、產(chǎn)品經(jīng)理和項(xiàng)目經(jīng)理都加入到備選名單里,仍無(wú)法匹配單身男性程序員的龐大數(shù)量。
“所以,你知道了吧?”那名程序員停止了敘述。
“知道什么?”我下意識(shí)的反問(wèn)道。
“為什么編程開(kāi)始變得流行,為什么媒體上一直在說(shuō)所有人都該學(xué)編程,以及為什么編程能力會(huì)和女權(quán)、平等、社會(huì)地位等因素掛鉤?!?/p>
“為什么?”
那名程序員看著我,臉上露出了微妙的笑容:“呵呵。”
結(jié)局二的另一個(gè)版本:
所有人都沉默了。三十秒鐘后,一個(gè)新的投票窗口上線。這一次,幾乎84.97%的人都贊成使用算法開(kāi)設(shè)一個(gè)專為程序員服務(wù)的婚戀介紹機(jī)構(gòu)。而沒(méi)有投贊成票的那些,則被標(biāo)上“人贏”的tag,剝奪了投票權(quán)。
于是,這個(gè)囊括萬(wàn)物的算法,再次轟轟烈烈的運(yùn)轉(zhuǎn)起來(lái)。為了一部分人的幸福,也為了更多人的幸福。
“所以,你知道了吧?”那名程序員停止了敘述。
“知道什么?”我下意識(shí)的反問(wèn)道。
“為什么我要跟你說(shuō)這些?!?/p>
“為什么?”
那名程序員臉上露出了靦腆的,甚至有些羞澀的笑容:“當(dāng)然是算法的建議?!?/p>
評(píng)論列表
我聽(tīng)別人說(shuō)過(guò),值得推薦的情感機(jī)構(gòu)
老師,可以咨詢下嗎?
可以幫助復(fù)合嗎?