《算法的憲法》揭密「黑盒子」:算法關(guān)乎數(shù)學(xué),更關(guān)乎人
算法,已經(jīng)成為我們生活中越來越普遍的一部分。
然而,很多對(duì)算法的研究仍將它們視為自主運(yùn)作的「黑盒子」。以這種孤立地觀點(diǎn)看待算法,將它們與人的因素分開,可能會(huì)導(dǎo)致得出錯(cuò)誤的理解和結(jié)論。
瑞士洛桑大學(xué)STS實(shí)驗(yàn)室博士后研究員Florian Jaton的著作《算法的憲法》(The Constitution of Algorithms),通過從內(nèi)部探索算法,揭示了算法的人性的一面。
Jaton此書的角度比較特別,從看似不相關(guān)的實(shí)體開始,如人、欲望、文件、好奇心,然后研究所有這些是如何聚集在一起并相互作用,形成我們所說的「算法」的。
「當(dāng)我在2013年開始對(duì)這個(gè)問題感興趣時(shí),已經(jīng)有大量關(guān)于算法的社會(huì)影響的文獻(xiàn),而且一般來說是相當(dāng)關(guān)鍵的,」Jaton說?!高@些研究揭示了算法在我們生活中的作用方式,同時(shí)也強(qiáng)調(diào)了算法的不透明性?!?/span>
雖然這些研究很重要,但Jaton對(duì)算法的關(guān)注點(diǎn)不只于此。
「我特別關(guān)注的是,算法大多被認(rèn)為是由遠(yuǎn)程代碼和晦澀的數(shù)學(xué)構(gòu)成的抽象實(shí)體,那么,確實(shí)如何對(duì)抽象、晦澀的實(shí)體采取行動(dòng)?在我看來,對(duì)算法的批判性描述并沒有產(chǎn)生多少可總結(jié)的經(jīng)驗(yàn)。」
Jaton認(rèn)為,問題在于,過去對(duì)算法的研究是從外部進(jìn)行的,比如通過報(bào)告、軟件和學(xué)術(shù)論文等形式觀察算法。這種方法論過濾掉了 「前期對(duì)算法的形成發(fā)揮了重要作用的框架,而這些因素恰恰是很脆弱的。」
Jaton認(rèn)為,一種可能的補(bǔ)救辦法似乎引入科學(xué)意義上的人類學(xué),而不是只靠文件分析(盡管這類分析仍然很重要)。"
寫《算法的憲法》一書,Jaton花了兩年半的時(shí)間,作為一個(gè)研究科學(xué)家團(tuán)隊(duì)的一員,他參與了一種計(jì)算機(jī)視覺算法的研究。
Jaton參與并記錄了討論內(nèi)容、數(shù)據(jù)收集、編程碰頭會(huì)、代碼調(diào)試實(shí)踐和理論的完善等環(huán)節(jié)。他意識(shí)到在實(shí)際社會(huì)環(huán)境中研究算法時(shí),創(chuàng)建算法的很多重要工作都被忽略了。
Jaton將算法的構(gòu)成分解為三個(gè)主要階段:摸底調(diào)查、編程和定型。
第一步:確定Ground Truth
實(shí)際上,當(dāng)一群計(jì)算機(jī)科學(xué)家、研究人員或工程師聚集在一起創(chuàng)建一個(gè)算法時(shí),最初是由一系列的元素驅(qū)動(dòng)的,包括欲望、技能、手段和希望。
例如,一個(gè)研究小組可能想對(duì)以前發(fā)表的科學(xué)論文的結(jié)果進(jìn)行質(zhì)疑或超越,這些人有一套數(shù)學(xué)手段和編程技能,可以依靠這些技能來實(shí)現(xiàn)這一目標(biāo)。
然后,他們可能有機(jī)會(huì)獲得有助于完成目標(biāo)的計(jì)算資源、學(xué)術(shù)論文和數(shù)字工具。最后,他們可能希望在某個(gè)科學(xué)領(lǐng)域做出改變,比如改善醫(yī)學(xué)成像質(zhì)量,或者解決一個(gè)以后可以產(chǎn)品化的問題,比如開發(fā)一個(gè)可以檢測(cè)制造廠工藝缺陷的算法。
但是,在開發(fā)出能夠滿足目標(biāo)的算法之前,這些人必須經(jīng)歷一個(gè)「問題化」和「實(shí)證化」的過程。在這個(gè)階段,研究人員必須精確定義想要解決的問題,并確定所需要的數(shù)據(jù)類型來驗(yàn)證算法。
另一方面,一個(gè)物體檢測(cè)算法還必須確定圖像中物體的坐標(biāo),可能還有其他參數(shù)信息:圖像是否只包含一個(gè)物體或可能包含幾個(gè)物體?在使用該算法的環(huán)境中,光照條件是否有所不同?物體是在各種背景下出現(xiàn),還是一直在同一背景下出現(xiàn)?
問題有了之后,研究人員需要通過收集正確的材料來建立「基本事實(shí)」(Ground Truth),使用來驗(yàn)證算法和之后建立的模型。
以計(jì)算機(jī)視覺算法為例,研究人員需要收集符合問題描述的圖像數(shù)據(jù)集,并可用于訓(xùn)練機(jī)器學(xué)習(xí)模型。
在「貓識(shí)別」算法中,是貓/不是貓的圖像標(biāo)簽就是Ground Truth
然后,這些圖像必須被附以測(cè)試算法所需的數(shù)據(jù)。例如,如果他們正在創(chuàng)建一個(gè)物體檢測(cè)算法,他們必須用它所包含的物體的邊界框的數(shù)據(jù)來標(biāo)注每張圖像。
重要的是要明白,我們思考問題和Ground Truth的方式,將在很大程度上影響算法及其效果。
比如一個(gè)物體檢測(cè)算法是由物體居中的Ground Truth推導(dǎo)出來的,它在類似的圖像上可能效果很好,但在包含多個(gè)分散物體的圖像上則會(huì)慘遭失敗。
實(shí)際上,正如Jaton在《算法的憲法》中指出的,「我們得到的是關(guān)于Ground Truth的算法?!?/span>
「因此,一旦一個(gè)算法產(chǎn)生了結(jié)果,人們的反應(yīng)應(yīng)該是:這個(gè)算法是從哪個(gè)Ground Truth數(shù)據(jù)庫中得到的?」
考察和記錄Ground Truth的過程,對(duì)于研究算法及其對(duì)社會(huì)的影響極為重要,特別是在開發(fā)算法的目的是為了執(zhí)行敏感任務(wù)的時(shí)候。
已經(jīng)有許多例子表明,不良的設(shè)計(jì)導(dǎo)致算法犯了關(guān)鍵性的錯(cuò)誤,比如會(huì)做出錯(cuò)誤的、有偏見的決定,制造泡沫,散播假新聞等。
人們對(duì)理解和解決算法的風(fēng)險(xiǎn)問題越來越感興趣。如何對(duì)Ground Truth進(jìn)行徹底的研究和記錄,這一過程將是解決算法風(fēng)險(xiǎn)的關(guān)鍵。
在《算法的構(gòu)成》中,Jaton寫道:「只要對(duì)算法的構(gòu)成有影響的實(shí)際工作仍然是抽象的、不確定的,改善算法構(gòu)建和開發(fā)的生態(tài)就仍然非常困難?!?/span>
編程過程
最終,一個(gè)算法總會(huì)走到編程階段。一系列的模塊和指令被創(chuàng)建,用以解決給定的問題,并用基本的事實(shí)加以檢驗(yàn)。雖然這個(gè)過程通常簡(jiǎn)化為純?cè)创a,但Jaton在他的書中寫道,編程要比把一系列指令堆在一起要復(fù)雜得多。
當(dāng)存在主義者在探究是什么讓程序存在的時(shí)候,他們看不到比形式更高層次的東西,而這些更高層次的東西才是需要被精確解釋的部分。用計(jì)算機(jī)來比喻思維,這是一種惡性循環(huán)。存在主義者最終會(huì)提出各種心理上的程序來解釋計(jì)算機(jī)程序和其發(fā)展。
這種觀點(diǎn)漏洞很多,根植于計(jì)算機(jī)發(fā)展的歷史中。科學(xué)家、研究人員和企業(yè)試圖把計(jì)算機(jī)框定成輸入-輸出的系統(tǒng),這種系統(tǒng)是按照人類大腦中的思維模式創(chuàng)造的。
然而實(shí)際上,人類的思維是計(jì)算機(jī)程序的「有機(jī)版本」。也就是說,計(jì)算機(jī)程序是「原版」,人類思維只是人腦復(fù)現(xiàn)計(jì)算機(jī)程序的模式的體現(xiàn)。
這些比喻將編程簡(jiǎn)化為「給一個(gè)數(shù)字化的大腦(即計(jì)算機(jī))提供一串指令」。這種簡(jiǎn)化同樣改變了訓(xùn)練和評(píng)估程序員的辦法。在新的理解下,將更加強(qiáng)調(diào)指令的編寫,而忽視其它所有對(duì)開發(fā)軟件有價(jià)值的實(shí)踐。
Jaton在他的書中記錄了他和他的團(tuán)隊(duì)編寫指令,遇到bug,和其他組員探討問題的經(jīng)驗(yàn)。
他強(qiáng)調(diào),在過程中調(diào)整、改進(jìn)程序,和組員多溝通精進(jìn)代碼,還有其它的一些最終不會(huì)體現(xiàn)在代碼里的步驟、操作,是非常重要的。通過讀他的書,程序員們可以對(duì)照自己編程、實(shí)施算法的過程,可以發(fā)現(xiàn)一些平時(shí)被忽略了的重要細(xì)節(jié)。
「我認(rèn)為,在編程過程中最容易被忽視的方面就是,一些最終被刪掉或是在最后的代碼中沒有體現(xiàn)的臨時(shí)編碼。」
Jaton表示,對(duì)編程實(shí)踐的微觀社會(huì)學(xué)分析才剛剛起步,所以現(xiàn)有的主張和觀點(diǎn)大部分都是探究性的。因此,這門學(xué)科未來的走向如何很難說。但他相信,通過微觀社會(huì)學(xué)研究掌握編程,會(huì)使算法的設(shè)計(jì)更具靈活性。
對(duì)編程實(shí)踐有更深入理解的程序員往往是優(yōu)秀的程序員與眾不同的地方。優(yōu)秀的程序員會(huì)把深入的理解帶到算法設(shè)計(jì)的社群中去。
算法的最終產(chǎn)生
最終,當(dāng)一個(gè)算法落地且被檢驗(yàn)之后,就成了一個(gè)數(shù)學(xué)對(duì)象,之后可以用在別的算法里。一個(gè)算法必須能經(jīng)受時(shí)間的考驗(yàn),證明其在應(yīng)用中的價(jià)值,以及在其他科學(xué)研究或應(yīng)用中的有用性。
一旦通過這些標(biāo)準(zhǔn),該算法就不需要再被檢驗(yàn)了。它就成了其它新算法的基礎(chǔ)或是組成部分,繼續(xù)為之后的應(yīng)用服務(wù)。
但有一點(diǎn)需要強(qiáng)調(diào)一下,當(dāng)問題、基本規(guī)則和最終的落實(shí)成為一個(gè)抽象實(shí)體之后,所有在構(gòu)建算法過程中的小細(xì)節(jié)都不再可見。
一個(gè)算法在形成以后,會(huì)成為其它算法的基礎(chǔ),成為檢驗(yàn)其它算法的基本規(guī)則。
算法一旦形成,就會(huì)成為其他算法的基礎(chǔ),它們將幫助:基礎(chǔ)規(guī)則的提供、編程、形成算法和其它相關(guān)操作。對(duì)算法構(gòu)成的不同階段有更深入的了解能使我們更好地對(duì)其進(jìn)行建設(shè)性的討論,并探究它們的更廣泛影響。
Jaton表示,把算法理解成基本規(guī)則、編程、其它算法形成的聯(lián)合產(chǎn)物,雖然讓整體的概念復(fù)雜了不少。但是卻更加清晰明確。
這樣去審視算法的意義,去關(guān)注算法所形成的的復(fù)雜網(wǎng)絡(luò),和它共同進(jìn)化們的社會(huì)組成部分,我們就可以從更宏觀的角度去理解為什么算法和人類正越來越不可分割。Jaton表示,「我們還需要在這個(gè)領(lǐng)域?qū)W習(xí)更多東西,不斷更新我們的視角?!?/span>
當(dāng)我們看書的時(shí)候,有人會(huì)覺得算法在社會(huì)學(xué)上所體現(xiàn)的效果和功用和社會(huì)學(xué)的概念挺不一樣的。但是再多想想的話,這種區(qū)別其實(shí)是起反作用的。
設(shè)計(jì)新算法的人也是社會(huì)的一份子,他們?cè)O(shè)計(jì)算法,反過來也會(huì)被其它算法所影響,他們還會(huì)用別的算法來構(gòu)建新的算法。
因此,不太可能徹底的把算法的效用和使用放在一邊閉口不提。我們有必要在算法的設(shè)計(jì)和實(shí)現(xiàn)中把社會(huì)學(xué)的功能囊括進(jìn)去。