編輯:David 拉燕
【新智元導讀】算法是怎樣産生的?瑞士洛桑大學博士後Florian Jaton《算法的憲法》一書另辟蹊徑從内部探索算法,揭示了算法的人性的一面。
算法,已經成為我們生活中越來越普遍的一部分。
然而,很多對算法的研究仍将它們視為自主運作的「黑盒子」。以這種孤立地觀點看待算法,将它們與人的因素分開,可能會導緻得出錯誤的了解和結論。
瑞士洛桑大學STS實驗室博士後研究員Florian Jaton的著作《算法的憲法》(The Constitution of Algorithms),通過從内部探索算法,揭示了算法的人性的一面。

Jaton此書的角度比較特别,從看似不相關的實體開始,如人、欲望、檔案、好奇心,然後研究所有這些是如何聚集在一起并互相作用,形成我們所說的「算法」的。
「當我在2013年開始對這個問題感興趣時,已經有大量關于算法的社會影響的文獻,而且一般來說是相當關鍵的,」Jaton說。「這些研究揭示了算法在我們生活中的作用方式,同時也強調了算法的不透明性。」
雖然這些研究很重要,但Jaton對算法的關注點不隻于此。
「我特别關注的是,算法大多被認為是由遠端代碼和晦澀的數學構成的抽象實體,那麼,确實如何對抽象、晦澀的實體采取行動?在我看來,對算法的批判性描述并沒有産生多少可總結的經驗。」
Jaton認為,問題在于,過去對算法的研究是從外部進行的,比如通過報告、軟體和學術論文等形式觀察算法。這種方法論過濾掉了 「前期對算法的形成發揮了重要作用的架構,而這些因素恰恰是很脆弱的。」
Jaton認為,一種可能的補救辦法似乎引入科學意義上的人類學,而不是隻靠檔案分析(盡管這類分析仍然很重要)。"
寫《算法的憲法》一書,Jaton花了兩年半的時間,作為一個研究科學家團隊的一員,他參與了一種計算機視覺算法的研究。
Jaton參與并記錄了讨論内容、資料收集、程式設計碰頭會、代碼調試實踐和理論的完善等環節。他意識到在實際社會環境中研究算法時,建立算法的很多重要工作都被忽略了。
Jaton将算法的構成分解為三個主要階段:摸底調查、程式設計和定型。
第一步:确定Ground Truth
實際上,當一群計算機科學家、研究人員或工程師聚集在一起建立一個算法時,最初是由一系列的元素驅動的,包括欲望、技能、手段和希望。
例如,一個研究小組可能想對以前發表的科學論文的結果進行質疑或超越,這些人有一套數學手段和程式設計技能,可以依靠這些技能來實作這一目标。
然後,他們可能有機會獲得有助于完成目标的計算資源、學術論文和數字工具。最後,他們可能希望在某個科學領域做出改變,比如改善醫學成像品質,或者解決一個以後可以産品化的問題,比如開發一個可以檢測制造廠工藝缺陷的算法。
但是,在開發出能夠滿足目标的算法之前,這些人必須經曆一個「問題化」和「實證化」的過程。在這個階段,研究人員必須精确定義想要解決的問題,并确定所需要的資料類型來驗證算法。
另一方面,一個物體檢測算法還必須确定圖像中物體的坐标,可能還有其他參數資訊:圖像是否隻包含一個物體或可能包含幾個物體?在使用該算法的環境中,光照條件是否有所不同?物體是在各種背景下出現,還是一直在同一背景下出現?
問題有了之後,研究人員需要通過收集正确的材料來建立「基本事實」(Ground Truth),使用來驗證算法和之後建立的模型。
以計算機視覺算法為例,研究人員需要收集符合問題描述的圖像資料集,并可用于訓練機器學習模型。
在「貓識别」算法中,是貓/不是貓的圖像标簽就是Ground Truth
然後,這些圖像必須被附以測試算法所需的資料。例如,如果他們正在建立一個物體檢測算法,他們必須用它所包含的物體的邊界框的資料來标注每張圖像。
重要的是要明白,我們思考問題和Ground Truth的方式,将在很大程度上影響算法及其效果。
比如一個物體檢測算法是由物體居中的Ground Truth推導出來的,它在類似的圖像上可能效果很好,但在包含多個分散物體的圖像上則會慘遭失敗。
實際上,正如Jaton在《算法的憲法》中指出的,「我們得到的是關于Ground Truth的算法。」
「是以,一旦一個算法産生了結果,人們的反應應該是:這個算法是從哪個Ground Truth資料庫中得到的?」
考察和記錄Ground Truth的過程,對于研究算法及其對社會的影響極為重要,特别是在開發算法的目的是為了執行敏感任務的時候。
已經有許多例子表明,不良的設計導緻算法犯了關鍵性的錯誤,比如會做出錯誤的、有偏見的決定,制造泡沫,散播假新聞等。
人們對了解和解決算法的風險問題越來越感興趣。如何對Ground Truth進行徹底的研究和記錄,這一過程将是解決算法風險的關鍵。
在《算法的構成》中,Jaton寫道:「隻要對算法的構成有影響的實際工作仍然是抽象的、不确定的,改善算法建構和開發的生态就仍然非常困難。」
程式設計過程
最終,一個算法總會走到程式設計階段。一系列的子產品和指令被建立,用以解決給定的問題,并用基本的事實加以檢驗。雖然這個過程通常簡化為純源代碼,但Jaton在他的書中寫道,程式設計要比把一系列指令堆在一起要複雜得多。
當存在主義者在探究是什麼讓程式存在的時候,他們看不到比形式更高層次的東西,而這些更高層次的東西才是需要被精确解釋的部分。用計算機來比喻思維,這是一種惡性循環。存在主義者最終會提出各種心理上的程式來解釋計算機程式和其發展。
這種觀點漏洞很多,根植于計算機發展的曆史中。科學家、研究人員和企業試圖把計算機框定成輸入-輸出的系統,這種系統是按照人類大腦中的思維模式創造的。
然而實際上,人類的思維是計算機程式的「有機版本」。也就是說,計算機程式是「原版」,人類思維隻是人腦複現計算機程式的模式的展現。
這些比喻将程式設計簡化為「給一個數字化的大腦(即計算機)提供一串指令」。這種簡化同樣改變了訓練和評估程式員的辦法。在新的了解下,将更加強調指令的編寫,而忽視其它所有對開發軟體有價值的實踐。
Jaton在他的書中記錄了他和他的團隊編寫指令,遇到bug,和其他組員探讨問題的經驗。
他強調,在過程中調整、改程序式,群組員多溝通精進代碼,還有其它的一些最終不會展現在代碼裡的步驟、操作,是非常重要的。通過讀他的書,程式員們可以對照自己程式設計、實施算法的過程,可以發現一些平時被忽略了的重要細節。
「我認為,在程式設計過程中最容易被忽視的方面就是,一些最終被删掉或是在最後的代碼中沒有展現的臨時編碼。」
Jaton表示,對程式設計實踐的微觀社會學分析才剛剛起步,是以現有的主張和觀點大部分都是探究性的。是以,這門學科未來的走向如何很難說。但他相信,通過微觀社會學研究掌握程式設計,會使算法的設計更具靈活性。
對程式設計實踐有更深入了解的程式員往往是優秀的程式員與衆不同的地方。優秀的程式員會把深入的了解帶到算法設計的社群中去。
算法的最終産生
最終,當一個算法落地且被檢驗之後,就成了一個數學對象,之後可以用在别的算法裡。一個算法必須能經受時間的考驗,證明其在應用中的價值,以及在其他科學研究或應用中的有用性。
一旦通過這些标準,該算法就不需要再被檢驗了。它就成了其它新算法的基礎或是組成部分,繼續為之後的應用服務。
但有一點需要強調一下,當問題、基本規則和最終的落實成為一個抽象實體之後,所有在建構算法過程中的小細節都不再可見。
一個算法在形成以後,會成為其它算法的基礎,成為檢驗其它算法的基本規則。
算法一旦形成,就會成為其他算法的基礎,它們将幫助:基礎規則的提供、程式設計、形成算法和其它相關操作。對算法構成的不同階段有更深入的了解能使我們更好地對其進行建設性的讨論,并探究它們的更廣泛影響。
Jaton表示,把算法了解成基本規則、程式設計、其它算法形成的聯合産物,雖然讓整體的概念複雜了不少。但是卻更加清晰明确。
這樣去審視算法的意義,去關注算法所形成的的複雜網絡,和它共同進化們的社會組成部分,我們就可以從更宏觀的角度去了解為什麼算法和人類正越來越不可分割。Jaton表示,「我們還需要在這個領域學習更多東西,不斷更新我們的視角。」
當我們看書的時候,有人會覺得算法在社會學上所展現的效果和功用和社會學的概念挺不一樣的。但是再多想想的話,這種差別其實是起反作用的。
設計新算法的人也是社會的一份子,他們設計算法,反過來也會被其它算法所影響,他們還會用别的算法來建構新的算法。
是以,不太可能徹底的把算法的效用和使用放在一邊閉口不提。我們有必要在算法的設計和實作中把社會學的功能囊括進去。
參考資料:
https://thenextweb.com/news/how-algorithms-are-made