本文節錄自《美學程式設計》,全書內容請見:https://aesthetic-programming.net/zh-tw/
第五章:自動產生器
setup()
上一章討論了潛藏在與輸入裝置互動過程之下的資料擷取,本章則以輸入和輸出的觀念為基礎,介紹所謂的抽像機器。抽象機器又稱圖靈機,基本概念是由自主運作的機器進行規則建立。首開圖靈機概念的學者,是數學家兼電腦科學家艾倫・圖靈(Alan Turing),關於此種機器最早的描述,正是收錄在他於一九三六年發表的著名文章〈論可計算數及其在判定問題上的應用〉中[1]。圖靈以「通用計算機器」一詞概括其理論,描述機器為何「可用於計算任何可計算的序列」[2],亦即機器如何運行,並遵循預定的指令序列來處理輸入和產生輸出。
更具體來說,圖靈機可以進行六種基本操作(當時「電腦」這種東西尚未出現),包括讀取、寫入、左移、右移、改變狀態和暫停/終止。圖靈提出,這些操作可以透過一個無限循環的磁帶(類似於現代電腦中的記憶體)來執行,而磁帶上包含各項指令,如要讀取和寫入哪些符號,以及如何左右移動等等。這些指令構成了圖靈機[3],以及現代運算的基本原理,並具有運算數字任務和自動化各種過程的功能。這些源自基礎運算的指令,似乎支持了當代(資訊)資本主義中更廣泛的生產、消費和分配過程,這點我們在上一章中已有稍微討論。
第六章:物件抽象化
setup()
在程式設計中,物件是一個關鍵概念,但這個詞更為普遍的意義,則是一項具備與主體詞語相關屬性的事物。簡言之,在哲學慣例中,主體是觀察者(在此可以說是程式設計師),而物件則是與之不同,被觀察的事物(例如程式本身)。有些人認為,我們必須更加重視非人類的事物,以便更深入地理解物件的存在,以及它們與其他物件和主體之間的互動,遵循上述論點,我們將在本章中學習進一步操作物件,並理解其複雜性。
在之前的章節中,我們使用了不同的物件,例如圓、矩形和多邊形。您可以在這些物件上套用如顏色、大小和位置等不同的屬性,此外,物件也能展現一些行為,例如各種變形和互動功能(參見第三章〈無限迴圈〉和第四章〈資料擷取〉),而這些幾何物件以內建的 p5.js 函式作為一組預先定義的參數和屬性。在本章中,我們將致力於建構自己的物件、屬性和行為,以期能重現真實世界的某些面向。在這裡,物理性的物件需要被轉譯為物件的概念,因此便涉及了抽象的過程,在這個過程中,某些細節和脈絡資訊自然會被省略,這點無可避免,我們稍後將回頭探討此議題。
抽象是「物件導向程式設計」(OOP)的一項關鍵概念,它是一種程式設計範例模式,以資料或物件為基礎組織程式,而非函式和邏輯[4],主要目標是透過針對某些細節進行抽象,並提供具體模型,從而處理物件的複雜性。針對這一概念更廣泛的意義,以及具體和抽象運算之間的關係,比亞特麗斯・法茲(Beatrice Fazi)和馬修・弗勒(Matthew Fuller)概述如下:「運算這件事不僅只是從世界進行抽象,從而建立模型並予以重現;透過這樣的抽象過程,運算本身也參與其中。」[5]回顧前面的章節以及許多關於資料擷取和遊戲化的示例,我們就能清楚地看到運算確實可以塑造某些行為和動作。換句話說,在 OOP 中,物件所涉及之事,不僅是與真實世界交涉的一種現實性和重現的形式,也不只是由物件組成的函式和邏輯,還包括了更廣泛的關係,以及「『運算間』和『與運算之間』的互動(interactions between and with the computational)。」[6]
事實上,抽象存在於許多不同的層次和運算規模之中。最低層次的抽象中,資訊流是以二進制(以 2 為基數的數字系統)數字 0 和 1 的形式儲存、處理和重現。[7]換句話說,我們理解文字、圖像、影片或聲音等所有媒體格式的方式,與電腦將它們作為資料(或更準確地說,作為二進制數字)來理解的方式截然不同。[8]依循此脈絡,我們可以漸次從機器程式碼和電路切換形式的低階抽象,轉向高階抽象,例如圖像化的使用者介面,或這本書中所使用「p5.js」,一種「能產生出可以支援電腦且人類可讀懂的程式碼」[9]的高級程式語言。
第十章:機器反學習
setup()
圖 10.1:約瑟夫・維森鮑姆(Joseph Weizenbaum)的 ELIZA 關鍵字偵測基本流程圖(1996),圖片版權:Communications of the ACM [10]
無論從程序方面還是邏輯方面來看,本章都始於一張描述聊天機器人如何工作的流程圖。我們以這個與機器學習相關[11]的歷史範例為引子,進入了這本書的最後一個章節,廣義來說,機器學習是一種用於分析實驗或觀察資料的模型、統計方法和操作演算法的集合。有鑒於大量資料正在被產生和探勘、機器學習在日常語音控制裝置(如 Apple 的 Siri 或亞馬遜的 Echo[12])中的廣泛應用,以及在邊境控制人臉辨識軟體中顯得更陰險惡意的應用方式,機器學習會成為一項大生意倒也不足為奇。
機器學習是亞瑟・塞謬爾(Arthur Samuel)於一九五九年在 IBM 進行遊戲開發研究時創造的術語,最終目標是減少甚至完全消除對「苛細的程式設計工作」的需求。[13]關於電腦是如何開始為自己編寫程式,在針對人工智慧較早期的討論中便已現端倪。至於電腦是否能夠對輸入做出令人信服的回應這類猜測,則反映在相對簡單的聊天機器人示例中,這個機器人會利用關鍵字來產生「有足夠知識」的回應或提出後續問題。ELIZA 是最早期的聊天機器人之一,由麻省理工學院的約瑟夫・維森鮑姆於一九六四至一九六六年之間創造建。它模擬了羅傑式心理治療師與患者之間的對話,提示用戶進行輸入,然後以原始的「自然語言處理」[14],利用以關鍵字關聯性和語言模式的簡易對話腳本(見圖 10.1)來將這種對話輸入轉換為看似有意義且通常為反問形式的輸出。雖然表面上看起來很簡單,但這些回應卻非常有說服力(稍後您將對此有親身體驗)。
與 ELIZA 對話時會出現一種「幻覺」[15],讓機器看起來好像人類一般。我們會希望科技能夠擬人化,而 ELIZA 顯然利用了此一願望,此外更應用了所謂的智慧,它不僅能夠保持看似相關且個人化的對話,而維森鮑姆更指出,「有些受試者很難相信 ELIZA 不是人類」[16]。此處我們再次援引了圖靈測試。[17]機器能否以類似於人類的輸出,對輸入做出令人信服的回應,或者更準確地說,機器是否能模仿理性思考?有趣的是,ELIZA 的名稱源自蕭伯納劇作《賣花女》(Pygmalion)[18]中的角色伊莉莎・杜立特(Eliza Doolittle),該劇以工人階級的賣花女為主角,一位語音學教授與朋友打賭,說他將屈尊俯就地教導賣花女紳士淑女的禮儀以及與工人階級考克尼方言相對的「得體的英語」,從而提升賣花女的社會階級(有趣的是,考克尼方言本身的如密碼般的編碼形式,就是一種對向上的社會流動的拒絕)。[19]我們或許可以說,時下語音助手技術的運作原理與賣花女的故事類似,因為它們不僅可以處理內容,還能夠學習人類語言的風格。
[1] Alan Mathison Turing, “On Computable Numbers, with an Application to the Entscheidungsproblem,” Proceedings the London Mathematical Society 2, no.1 (1937): 230-265.
[2] Turing, “On Computable Numbers,” 241.
[3] 視覺化的圖靈機可參考下列網站:https://turingmachine.io
[4]「Simula」是由奧利-約翰・達爾(Ole-Johan Dahl)和克利斯登・奈加特(Kristen Nygaard)在二十世紀六〇年代於奧斯陸的挪威運算中心開發的,被認為是第一個物件導向的程式語言。「Smalltalk」最初是在二十世紀六〇年代末,由 Xerox 公司的帕洛奧圖研究中心開發,並於一九七二年發布,原是用於教育目的,較 Simula 更常被引用。有關物件導向程式語言歷史的更多資訊,請參閱:Ole-Johan Dahl, “The Birth of Object Orientation: the Simula Languages,” Object-Orientation to Formal Methods, Olaf Owe, Stein Krogdahl, Tom Lyche, eds., Lecture Notes 2004), in Computer Science 2635 (Berlin/Heidelberg: Springer, 2004),
https://link.springer.com/chapter/10.1007/978-3-540-39993-3_3
[5] Beatrice M. Fazi and Matthew Fuller, “Computational Aesthetics,” in Christiane Paul, ed., A Companion to Digital Art (Hoboken, NJ: Wiley Blackwell, 2016), 281-296.
[6] Matthew Fuller & Andrew Goffey, “The Obscure Objects of Object Orientation,” in Matthew Fuller, ed., How to be a Geek: Essays on the Culture of Software (Cambridge: Polity, 2017).
[7] Limor Fried & Federico Gomez Suarez (n.d), “Binary & Data,” Khan Academy,請參閱:https://www.khanacademy.org/computing/computers-and-internet/xcae6f4a7ff015e7d:digital-information/xcae6f4a7ff015e7d:bits-and-bytes/v/khan-academy-and-codeorg-binary-data
[8] 電腦理解顏色的方式就是一個數字邏輯的例子。各個顏色都包含數值 0-255 之間的範圍,因此一共有 256 個可能值。每種顏色(紅、綠、藍)在電腦記憶體中儲存圖像資訊時,皆使用 8 位元色彩圖形。具體而言,紅色是以 8 位元色彩圖形的形式呈現,每一個位元都有兩種可能性(二進制),因此得出可能值的數量為 2^8,即 256。
[9] 正如第一章〈入門〉中對高階程式語言通常性理解的討論,全喜卿尖銳地指出了軟體在刪除和可重複使用性方面的政治意涵。高階程式語言不會揭露詳細的機器作業/指令,因此軟/硬體之間被強制地二元分離,機器的物理性和具體性也遭到忽略。程式設計的專業,便是建立在機器的隱藏性之上。請參見:Wendy Hui Kyong Chun, “On Software, or the Persistence of Visual Knowledge,” Grey Room 18 (2005): 26–51, https://d oi.org/10.1162/1526381043320741
[10] 經 ACM Communications 授權重新出版,來源:ELIZA-a Computer Program for the Study of Natural Language Communication between Man and Machine, Joseph Weizenbaum, 9, 1 and 1966 版權所有;授權乃是透過 Copyright Clearance Center, Inc. 傳達。為使用本書中的流程圖圖片,我們已支付了少量授權費用。在此為付費給違反我們的免費和開放存取原則的付費牆商業模式表示歉意,但我們也考量到維森鮑姆的研究在運算史上的重要性,以及這個流程圖如何展示了 Eliza 的詳細邏輯。
[11] 需要點明的是,雖說機器學習是人工智慧的一部分,但人工智慧是一個更廣泛的概念。人工智慧、機器學習和深度學習這幾個術語經常被互換使用,但三者之間有一些關鍵的區別,解釋如下:「您可以將深度學習、機器學習和人工智慧視為一個套著一個的俄羅斯娃娃組,從尺寸最小的娃娃開始,然後漸次發展。深度學習是機器學習的一個子集,而機器學習又是人工智慧的一個子集,人工智慧是所有電腦程式的總稱。換句話說,所有的機器學習都是人工智慧,但並非所有人工智慧都是機器學習,以此類推。」參見帕斯邁德(Pathmind)的著作:“A.I. Wiki: A Beginner’s Guide to Important Topics in AI, Machine Learning, and Deep Learning,” https://pathmind.com/wiki/ai-vs-machine-learning-vs-deep-learning 。
[12] 詳細說明請參閱凱特・克勞佛(Kate Crawford)和維拉丹・約勒(Vladan Joler)的文章和圖表:“Anatomy of an AI System: The Amazon Echo as an anatomical map of human labor, data and planetary resources,” (2018),https://anatomyof.ai/ 。
[13] 機器學習是亞瑟・塞謬爾於一九五九年在 IBM 進行遊戲開發研究期間創造的一個術語,最終目的是透過概括化學習來實現模式辨識,從而減少甚至消除對「詳細程式設計工作」的需求。參見:Arthur L. Samuel, “Some Studies in Machine Learning Using the Game of Checkers,” IBM Journal of research and development 3, no.3 (1959): 210-229。
[14] 自然語言處理研究電腦如何理解人類語言的含義,處理電腦與人類透過該自然語言所進行的互動。這涉及人工智慧、電腦科學和語言學領域,並包括文字轉語音、語音助手和(語言)翻譯程式等應用程式。
[15] Joseph Weizenbaum, “ELIZA — a Computer Program for the Study of Natural Language Communication between Man and Machine,” Communications of the ACM 9, no.1 (1966): 36-45.
[16] Weizenbaum. “ELIZA*, 42.
[17] 參見:Alan M. Turing. “Computing machinery and intelligence,” Mind 49 (1950): 433-460。
[18] 英文劇名「皮格馬利翁」(Pygmalion)取材於希臘神話中,雕刻家皮格馬利翁愛上了自己親手刻的雕像,而維納斯將雕像便成了活生生的人。
[19] 起源於倫敦東區的考克尼押韻俚語是一種編碼語言,亦即這種語言被故意創造為令其他聽眾(特定社群或階級群體之外的人)難以理解的形式。以考克尼押韻俚語做為程式設計語言的命名規則,也是可以想像的,請參閱: https://news.ycombinator.com/item?id=9402410 。
–
《美學程式設計》台灣版工作小組
我們是一群背景各異的計畫參與者——藝術家、軟體工程師、編輯、策展人、譯者、大學教授等,我們目前正在進行《美學程式設計》(Aesthetic Programming)這本書的台灣版。追隨著自由及開源的精神,我們希望透過共同翻譯與編輯這本書,開闢一些不同的可能性,反思運算文化的普遍性及其對社會和政治影響。