歡迎光臨
每天分享高質量文章

上帝就在機器裡:複雜演演算法背後隱藏的可怕現實

(給演演算法愛好者加星標,修煉程式設計內功

轉自:36氪/喜湯

https://36kr.com/p/5170867.html

 

上帝就是黑箱。

 

編者按:本文節選自Carl Miller的《諸神之死:新的全球權力攫取》(The Death of the Gods: The new global power grab)。原文標題God is in the machine。

2012年,喬治亞第比利斯,一名員工展示“警察用平板電腦”

版權來源:David Mdzinarishvili/路透社

 

研究員和我的秘密談話

“如果有人知道我說了這些,我會失業的。”

我沒有回覆他。這是我渴求已久的會面,我不敢搞砸。對方向前探身,距離我更近了些:“有人會仔仔細細地看你的書,會從蛛絲馬跡裡發現我的身份。”

他曾經是才華橫溢的研究員、學者,直到他的朋友創辦了家小型科技公司,他參與進來,一同呵護公司的成長。最終這家公司長大了,然後又被一家科技巨頭收購了。這就是他了。

他為這家科技巨頭研發了核心演演算法,獲得了一大筆錢;還簽署了正式法律檔案,禁止與任何人談論他的工作。但隨著時間流逝,他的擔憂——實際上是他的內疚與日俱增。“這是沒有責任的權力,”他暫停了一下繼續說,“權力這麼大,責任卻這麼少。還不是名義上的抽象權力,這是日常生活中的真實權力,是物質的、文化的、金融的權力。這個世界必須知道它是怎麼運作的。‘丹麥,恐怕發生了些不可告人的壞事呢。’”他有點誇張地取用了《哈姆雷特》。

他決定冒次險。“如果他們發現這是我說的,我會被趕出辦公室,從科技領域被驅逐出去。這是最好的情況了。”他不只跟我談他的工作,還向我展示了一些東西。

這位研究員從包裡拿出自己的膝上型電腦,輕敲了幾分鐘,帶著一種合時宜的莊重,把螢幕轉向我。“這是所有的東西。”白色的螢幕上有著整整齊齊地排列在盒子裡的指令。

第一步:“In [3]”。

接下來:“In [8],in [9]”

這些單詞五顏六色,有綠色、紫色、紅色、粗體、斜體……不一而足。我看向研究員,他臉上露出了自豪的笑容。這就是它了,真正影響人們生活的演演算法。它看上去……十分普通。

23個世紀前,希臘數學家埃拉托色尼(Eratosthenes)坐在亞歷山大圖書館內,試圖找到一種識別質數的方法。他把1-100這100個數字寫成10行,每行10個數字。他先劃掉1;接著他圈出當前數列中最小的數字——2,然後刪掉所有2的倍數;圈出3,然後刪掉所有3的倍數……他創造了一個演演算法,本質上非常簡單。就像所有演演算法一樣,他的“篩子”接受輸入,遵循一系列描述準確地步驟,並生成輸出。輸入,處理,輸出:這就是演演算法的全部。

縱觀歷史,演演算法一直被用來解決各種各樣的問題。它們有時被應用於天文計算,有時又用來製作時鐘,甚至還可以把秘密資訊轉化為密碼。研究員說:“直到90年代,演演算法仍然處於非常簡單的狀態。以前的演演算法是非常清晰的。比如,你把Google的原始演演算法拿出來,你能很直觀地看出它基本上就是關於受歡迎程度的演演算法:你只需要把人們點選次數更多的東西呈現出來(或者讓它排名更高)。總的來說,設計它的人理解它的整個工作。”有些演演算法就更複雜了,但輸入-處理-輸出的整個流程通常清晰、可理解,至少對設計和使用它們的人來說是這樣的。

他螢幕上的演演算法也是為解決問題而設計的。它以一種重要的方式對現實進行了排序和重組,試圖將重要的和不相關的區分開。但它不同於非常簡單的演演算法(Really Simple Algorithms,RSAs)。“它比看上去複雜多了,”研究員說,一邊用鉛筆在方括號裡的一些單詞上劃來劃去,“但我需要告訴你原因。”就這樣,我們開始了他的創作之旅。

首先,它引入了“庫”的概念。庫是定義、指令和操作的特定語音。接著,研究員向我展示了它是如何帶來資料的。他說:“喂給演演算法盡可能多的資料,越多越好。事實上,我們處理的資料比大多數團隊多得多。”他把游標移到給演演算法提供海量資料的指令碼上。吉位元組、太位元組、拍位元組的資料有序排列在頁面上。

透過指令15,“函式”新增完成。研究員高亮了每一個函式,說:“每個函式都是一個小工廠。它們是演演算法的基本組成部分——子演演算法。”他展示了自己是如何構建這些“積木”(building block)的:將“get component”、“filter by station”、“sort_nodes_in_degree”等短語串(string)在一起。然後是主要的stage。他說:“這是演演算法起作用的一端,我就把‘積木’堆在這裡。”他應該向我展示這些函式是如何聯絡起來的,但我不懂這些。我說:“我不明白,你如何做到跟蹤什麼在做什麼的?”

每一個子演演算法函式——他的“積木”,都是另一個完整的房子。每一個都是複雜的指令和處理過程,有些本身就是由子演演算法“積木”組成的。螢幕看上去很簡單,但我看到的是積木套積木的藍圖:短短幾頁程式碼裡就又數百萬條指令。它的設計者就坐在我旁邊,但就連他也在努力解釋這些stages,當他試著在頭腦中保持一層又一層的抽象概念時,他也在追溯這些步驟並糾正自己。他似乎講完了,但又停了下來,說:“我真的不記得最後一點是怎麼來的了。”

當然,這位研究員明白自己在處理中餵了什麼資料,他知道設計的目的,也知道演演算法要解決的問題及它處理後的輸出。然而,在試著解釋一個多小時之後,他筋疲力盡地坐在椅子上,說:“是,正如你看到的,輸入和輸出之間的差距很難理解。”他在演演算法中註入了大量的資訊,他說這是一種“趨勢”,因為在那個科技巨頭裡,他能做到,也就意味著每個人都能做到。但資料的總量意味著很難判斷其中的顯著輸入是什麼。“從人類的角度來看,你不確定哪些輸入是重要的,很難知道驅動輸出的究竟是什麼。作為人,很難回溯到為什麼要做出這樣的決定。”

在這個科技巨頭內部,演演算法很少單獨存在。相反,它們存在於網路中,糾纏在一起,相互利用,相互增強。研究員說:“我依賴於其他演演算法產生的訊號。”其他演演算法把自己的輸出喂給他的演演算法。就像汽車裝配線,他和他的同事們一樣,在一個巨大的流水線中僅處理一個小的、特定的部分,然後這些小部分彙集起來,形成更為龐大的結果輸出,最終呈現在人們面前的是一個龐然大物。

演演算法也在不斷變化。資料輸入是實時流入演演算法的,但是演演算法的實際權重、度量和權衡並不是靜態的。研究員在機器學習中編織的一些函式,機器學習是機器不斷學習和適應最重要的圖式、相關性和關係的技術。這意味著隨著世界的變化,演演算法被喂的資料也隨之變化,演演算法也就在不斷發生變化,只不過越來越複雜,越來越具有與其他演演算法密不可分。

我們坐在那裡,看著電腦中他的程式碼以多種顏色的字型呈現。這位研究員沉思著說道:“這一切都與複雜性有關。輸入的複雜性、分析的複雜性、輸出是如何組合、結構化和使用的複雜性。”他被僱來設計該行程的原因之一是它可以透過自身成為複雜本身來解決複雜性。它抓住了各種令人眼花繚亂的因素、訊號和影響,它們每時每刻都在以我們根本無法做到的方式相互碰撞,然後獲得結果。

演演算法已經發生了變化,從非常簡單(Really Simple)到無比複雜(Ridiculously Complicated)。它們有能力完成以前從未完成過的任務,有能力解決以前從未解決過的問題。它們能,真的能比人類更好地面對這個深不可測的複雜世界。但正因為它們可以,它們工作的方式本身也變得愈發深不可測:從一個演演算法到下一個演演算法的輸入迴圈;透過更多指令、更多程式碼的資料處理。如此周而複始,帶來的是一個令人抓狂甚至敬畏的系統。演演算法的複雜性、動態性和完全不可理解性意味著在輸入和輸出之間的部分——沒有人能確切地知道它們在做什麼。演演算法什麼都能學習,而你根本不知道它學習到了什麼,或者在你以為的學習之外還習得了其他什麼東西,說句不好聽的,對此我們完全處於抓瞎狀態。

“事實是,從專業角度講,我只能在出問題後才能看到問題的本質。而且我們完全不可能理解到底發生了什麼。”——好吧,考慮到我眼前的這位研究員對自己造就的東西的一部分也是相當茫然的,如果連他都是這樣,普羅大眾就更不用說了。

研究員得意地輕輕一揮手,按下一個鍵,演演算法就開始執行。20秒後,演演算法執行結束。白紙黑字呈現著輸出。當然我無法具體描述,但這是我們每天都要用的一個輸出。演演算法製造了一種現實,我們基於此做決定,它可以改變我們的生活。

研究員瀏覽了一堆指令,把一行指令變成了兩行。演演算法重新執行,又出現了輸出。但這一次,輸出少了四分之一。

我不由地皺了皺眉,下意識地問道:“發生了什麼?你為什麼要改那裡?你知道兩行是錯的,但你怎麼知道一行就是對的?”

他指著殘缺的結果回答道:“這就是問題所在。這是一個啟發函式(heuristic),我之前試過,似乎能執行。然後我就繼續測試它,結果看上去是正確的。我不能說這是真的,我只能說它透過了最低評價標準。整個演演算法充滿了可能是其他東西的引數。真理已經死了,”他嘆息道,“只有輸出還活著,能為我們所用。”

我問:“誰來檢查這些呢?”

“我自己。”

“你的老闆呢?他能檢查嗎?”

“你已經看到想真正理解它有多難了。有時我和它作鬥爭,而且我創造了它啊。現實情況是,如果演演算法看起來像是在做它應該做的事情,人們就不會抱怨,也就沒有多少動力去梳理所有這些指令和程式碼,看看究竟發生了什麼。”你在網上看到的——你閱讀的新聞,你瀏覽的產品,出現在你眼前的廣告——它們都依賴於不一定非得是真實的“值”。因為根據這位研究員的說法,它們都不是真的,它們只是透過了最低評價標準而已。

Jure Leskovec的保釋演演算法

Jure Leskovec說話帶著濃重的斯洛維尼亞口音,堅持著發大舌音。回到學術界之前,Jure曾在Facebook工作過一段時間,還在Pinterest擔任過首席科學家。我們坐在他位於斯坦福的辦公室裡,斯坦福和加州其他科技中心一樣,似乎在迅速擴張。就在我們聊天的時候,熾熱的白色塵土從他的窗戶下方的施工地飄了上來,似乎在預示著將來這裡的場景會和現在一樣熱火朝天。

他抓起一支筆,走向一個巨大的白板(這佔據了他辦公室一整面牆)。他最近的工作時設計一種演演算法,幫助刑事法院的法官在是否批准保釋的問題上做出更好的決定。他邊在黑板上畫出一個大黑色矩形,裡面有一個巨大的J,邊說:“有一個法官、一個被告,法官試圖做出一個決定:如果被告獲得保釋,他會不會犯罪?我可以訓練一個機器學習演演算法來回答這個問題:‘如果我釋放你,你會不會再次犯罪?’”

Jure興奮地在辦公室裡勾畫草圖,白板上的塗鴉變得更加豐富。他收集了一些人的犯罪記錄資料,其中一些人在獲得保釋之後選擇了再次犯罪,另一些人沒有。他還透過比較寬容和嚴格的法官這種方法,構建關於那些被釋放但通常會被關押的人的資料,以及他們是否也犯了其他罪行的資料。

他說:“關鍵是,演演算法比人類法官的表現好30%。迄今為止,這些機器學習演演算法主要被用於網際網路中的‘猜你喜歡’,你肯定明白這個的。我想說的是,這些風險很低。你可能看到一條不喜歡的廣告。你可能因為看了不好的電影而不開心。這是最壞的情況了。但如果將這些演演算法應用到高風險領域——”

“這種應用越來越多嗎?”我插嘴說。

 “我認為這種應用越來越多了。然後就必須保證我們開發的方法,以及關於我們使用這些方法的途徑、驗證它們的方法的標準都是非常嚴格的。”

據《華爾街日報》的報道,美國至少有15個州已經使用自動風險評估工具來幫助法官做出假釋決定。Predpol和許多其他公司一樣,能夠使用演演算法根據過去的犯罪行為預測未來可能發生犯罪的地區。Pegged是一家提供智慧獵頭服務(以人工智慧為動力,以大量資料為動力)的公司,能夠幫助找到特定工作的最佳人選。演演算法被用作合同談判代表,可以在瞬間決定提供和接受哪些條款。演演算法不僅變得越來越複雜,而且承擔著越來越重要的工作,你已經看到了——保釋判決也好,別的什麼也罷,換句話說,如果將來有更多的領域引入了演演算法來進行決策或者說輔助決策的話,我一點也不會吃驚的。

Jure說:“我認為一場巨大的革命即將到來,關於在社會中如何做決定的革命。”他並不是說演演算法應該取而代之,只是說它們應該用來支援人類的決策,“剛才保釋的例子——我可以說演演算法做得更好。我提倡讓我們用這些演演算法來幫助人類法官。他們有時候很艱難;他們只有一分鐘的時間來做決定;他們經常沒有關於他們是否做出了正確的決定的反饋;法官之間也沒有知識共享。我認為很明顯,當人與機器能夠訪問相同的資料時,機器就會打敗人。我們一遍又一遍地看到這個結果。而要做到這一切,只要給它足夠的資料就行了。”他的想法的確讓人不由地思考演演算法以及我們人類的未來,在我看來,人類已經賦予了演演算法真正的決策權,容許它們在那些隱藏著的複雜過程中完成決策,而我們其實對過程一無所知,這才是讓人有點不寒而慄的事情。

“數學毀滅武器(Weapons of math destruction)”是作家Cathy O’neil對那些令人討厭、有害的演演算法的描述,它們不像人類決策者那樣面臨同樣的挑戰。假釋演演算法(不是Jure的演演算法)會基於收入或(間接的)種族偏見做出決定。招聘演演算法會基於錯誤的身份而拒絕候選人。在某些情況下,比如維持治安,它們可能會建立反饋迴圈:將警察派往犯罪較多的地區,然後導致更多的罪犯被髮現,也許在無意中造就了自我實現的預言。

對演演算法“討厭”或者認為演演算法“有害”的想法,毋寧說是我們對自己無法掌控未知事物的恐懼的對映。沒錯,演演算法也許助力甚至取代了我們的決策,但問題就在於很多情況下,我們根本不知道這個過程。研究員冒著巨大的風險向我展示了他所創造的東西,因為他的演演算法,就像大多數真正影響我們的演演算法一樣,是專有的和隱藏的,它們是昂貴的智慧財產權。不管它們是有意還是無意隱藏起來的,我們都無法理解,也無法挑戰。正如學者Frank Pasquale所描述的那樣,這是一個“黑箱社會”,被一種全新的保密制度所危害的社會,這種制度掩蓋了那些影響我們生活的自動判斷。

正如Jure所懷疑的那樣,如果機器判斷在重要決策方面明顯優於人類判斷,那麼使用它的理由只會越來越充分。在輸入和輸出之間的某個地方——過程本身的決策部分——是一種能夠以有意義的方式塑造我們生活的東西,但它已經變得越來越難以理解,而我們還要眼睜睜地看著它“攻城略地”,在本該由我們說了算的情況下堂而皇之地取代我們。

Jure強調說:“我們需要加快步伐,想出以公正的方式評估-審查-演演算法的方法。我們要能理解和解釋他們的決定。我們不想要最優演演算法,我們想要一個足夠簡單的演演算法,專家看了之後會說:‘別怕,不會有什麼瘋狂的事情發生的。’我認為我們需要做好準備,認真考慮如何把這些東西應用於社會日常,為它們在高風險的決策環境中一展身手鋪平道路。因此關鍵問題就在於,我們該如何除錯這些東西才能確保它們的決策質量好效率高。”

現實中發生的事情比任何單一演演算法都要深刻。有時,它們幾乎處於新哲學的前沿。“上帝就是機器,”研究員告訴我,“黑匣子就是真相。如果有用,就有用。我們甚至不應該試圖弄清楚機器輸出的是什麼——它們會選擇那些我們甚至不知道的樣式。”

 

推薦閱讀

(點選標題可跳轉閱讀)

史上最汙技術解讀,我竟然秒懂了!

圖論的各種基本演演算法

覺得本文有幫助?請分享給更多人

關註「演演算法愛好者」加星標,修煉程式設計內功

喜歡就點一下「好看」唄~

    閱讀原文

    贊(0)

    分享創造快樂