# 伊恩·古德費洛：生成對抗網路（GAN）

> GAN 提出者講解對抗訓練的直覺來源、模型穩定性的困難與生成模型的未來。

- 原標題：Ian Goodfellow: Generative Adversarial Networks (GANs)
- 期數：特別節目
- 釋出日期：2019-04-18
- 嘉賓 / 主題：伊恩·古德費洛
- 網頁版：https://lex.qiaomu.ai/tw/ep/ian-goodfellow/
- 官方頁面：https://lexfridman.com/ian-goodfellow/
- 精讀字數：約 10358 字（閱讀約 23 分鐘）

> 本文為 lex.qiaomu.ai 基於原始訪談的 AI 改寫中文精讀，非官方翻譯；引用請註明出處並連結網頁版。

2014 年，蒙特利爾的一間酒吧。伊恩·古德費洛（Ian Goodfellow）跟實驗室的幾個人爭論一個想法：能不能讓兩個神經網路互相當對手，一個負責造假，一個負責識破，讓它們在對抗中一起變強。

在場的人幾乎都反對，理由很具體。你沒法在外層網路的訓練迴圈裡再套一個內層網路的訓練迴圈，兩個程序會失去同步。這個擔心來自經驗。當時他們都在做深度玻爾茲曼機，那裡面有正相和負相兩個同時執行的過程，一個讓真實資料更可能出現，一個讓模型自己採出來的樣本更不可能出現，在 MNIST 上跑得很好，一換到彩色照片就散架，兩個程序再也對不齊。

凌晨一點，古德費洛回到家，把程式碼寫了出來。

它跑通了。

五年後坐在這期播客裡，他說自己至今沒有一個能指認的單一原因，解釋為什麼 GAN 在影象生成上成立，深度玻爾茲曼機不行。有不少理論論文證明在某些設定下這個演算法確實收斂，但那些設定限制得太死，解釋不了實踐中看到的全部現象。他的結論很樸素：很多機器學習演算法，事前預測它表現如何幾乎不可能，只能跑實驗看結果。

## 深度學習是一個多步程式

古德費洛那本《深度學習》教材的開篇畫了一張俄羅斯套娃圖：深度學習是表示學習的子集，表示學習是機器學習的子集，機器學習是人工智慧的子集。這張圖暗含一件事，深度學習未必等於 AI 的全部。

他自己給深度學習下的定義是：任何涉及學習多個連續步驟引數的機器學習。寬度是並行的運算元，深度是序列的運算元。他把一張計算圖讀成流程圖，深度是圖上依次執行的步數，寬度是同時執行的步數。

這個定義跟 2006 年前後的主流敘事差別很大。那時候辛頓證明深度信念網路可以訓練，大家興奮的點是逐層抽象：第一層學邊緣，第二層學角，最後某一層學出識別具體物體的"祖母細胞"。古德費洛說，今天沒有人真的相信 ResNet 第 150 層是一個祖母細胞，第 100 層是輪廓檢測器。**當年的理解是每層學到一種新表徵，現在的理解是同一份表徵被反覆修改。**

> 每一步精煉的都是同一份表徵，它把現有的東西磨得更細。某種意義上這有點像推理。這算不上演繹意義上的推理，它是把一個想法拿出來，反覆打磨，打磨到足夠好用為止。（古德費洛）

他還提到，深度學習和淺層學習的分界線落在有沒有序列步驟上，表徵好不好是次要的。支援向量機可以有成千上萬個輸入特徵，每個特徵乘一個權重，這些乘法全是並行的，序列結構幾乎為零。深度學習多出來的那部分能力，來自多步。

## 人類不必打兩百萬局 Pong

說到今天的瓶頸，他先指向資料。深度學習需要大量資料，尤其是標註資料。有些無監督和半監督演算法能減少標註需求，但它們仍然要海量無標註資料。強化學習不需要標籤，代價是需要極多的互動次數。

> 人學會打 Pong，用不著先打兩百萬局、局局都輸。（古德費洛）

另一個瓶頸是定位。到今天為止，沒有人真的主張把深度學習單獨當作智慧的全部配料。AlphaGo 裡，深度學習只是一個估計價值函式的模組；大多數強化學習演算法裡，深度學習只是一個估計下一步該做什麼動作的模組。整套系統是拼起來的。

他押注的方向是多模態。今天訓練出來的模型，絕大多數只吃一種資料。人腦不一樣，視覺、聽覺、觸覺、騎車、開車、跟人說話、讀書，全在同一段人生裡積累。他的判斷是：**如果給模型一份真正整合的、能閉環互動的多模態資料集，再把它放大，今天這批演算法可能就夠了，能學出很有意思的東西。**

## 能形式化的意識，和不能形式化的意識

聊天中間兩人哲學了一會兒。古德費洛把"意識"拆成兩個版本。

一個是自我意識，也就是智慧體知道自己存在於世界裡，會基於這個事實做規劃。這個版本的定義對電腦科學家是可操作的，而且強化學習演算法已經在被迫建模自己對環境的影響。訓練得當的話，這種有限版本的自我意識已經存在了。

另一個版本是關於主觀體驗的，比如 qualia。他不知道怎麼把這個變成科學問題。你沒法設計一個實驗，判斷對面這個人是不是哲學殭屍，做著和人完全一樣的資訊處理卻沒有內在體驗。同樣，你也沒法設計一個實驗，判斷一套高階 AI 系統有沒有在這個意義上醒過來。

## 對抗樣本從"機器學習的毛病"變成了"安全責任"

他自己說，這幾年對對抗樣本的看法變了很多。一開始他把它當作機器學習的一個大缺陷，目標是縮小機器和人類面對對抗擾動時的反應差距。現在他更多把它看成一類安全漏洞。

> 我現在更多地把它們當作一種安全責任，而不是某種證明機器學習本身有獨特毛病、人類沒有的東西。（古德費洛）

關於能不能拿對抗樣本當提升準確率的工具，答案比想象中複雜。2014 年他做的第一個對抗訓練分類器，在 MNIST 上不但扛住了部分對抗樣本，乾淨資料上的準確率還提高了。這個結果復現過好幾次：用弱對抗樣本訓練，分類器會更準。

**但換成別的資料集，或者換成更強的對手，這個紅利就消失了。**面對真正強的對手，你得付出代價，準確率和魯棒性之間存在權衡。

他把這個思路放回工程傳統裡看。很多工程分支都會做最壞情況分析，保證系統在最壞情況下能用，也就順帶保證了它在真實世界裡那些 messy 的平均情況下能用。自動駕駛領域現在也是這個路子：主動去找系統會怎麼出錯，能扛住所有難例，就用一種經驗性的方式說明系統是靠得住的。

語音識別的例子更有畫面感。2016 年有一篇叫 Hidden Voice Commands 的論文，做出了人聽不懂、但手機能識別成攻擊者指定指令的聲音。之後攻擊方進展更快，防守方更慢。現在已經能做出這樣的音訊：人聽起來是一句正常的話，背景裡有點沙沙的雜音，手機卻把它識別成完全不同的另一句話。那些沙沙聲本身就是對抗擾動。

## 寫一章深度學習，只寫活下來的東西

彼得·諾維格邀請他為《人工智慧：一種現代方法》第四版寫深度學習章節。他的做法有點反常規：先等了一年才動筆。

幫他做出判斷的，恰恰是寫過一整本教材的經驗。第一本書出版之後，他能看到哪些話題在幾年裡站住了，哪些顯得多餘。這個後視視角讓他在寫單章時能大刀闊斧地砍。

另一個讓他安心的觀察是：這個領域穩定到 1980 年代的一些核心想法現在還在用。他剛入門時，1980 年代的東西幾乎全被否定了，後來有一部分又回來了。凡是撐過時間檢驗的，他才寫進去。

寫書有兩種哲學。一種是寫成覆蓋一切的參考手冊，一種是寫成高層摘要，給讀者一套理解這個領域的語言，告訴他們哪些概念最重要。第一本書他試圖兩者兼顧，這一章他選了後者。碰到"學習學習"這種飛快的領域，他乾脆只寫一段話：這裡有個快速演進的方向，你該知道它存在，它可能就是你現在專案裡想用的那個卷積網路模組的來源，但把最新的架構和效能對應關係逐條總結出來沒有意義。

## 反向傳播會退到一個角落，但不會死

辛頓說過我們得扔掉反向傳播，從頭再來。古德費洛的回應帶著一種工程史的耐心。

他的觀察是：**當一個演算法不再位於研究的關鍵路徑上，它不會死，它只是退到一批專門的場景裡。**邏輯迴歸對今天做語音識別或自動駕駛的研究者毫無吸引力，但它在醫學和金融裡分析高噪聲資料、在需要極快預測的場合裡，還有大量用途。

所以他覺得反向傳播和梯度下降可以留著，只是它們未必是通往人類級或超人級 AI 所需的全部。

替代方向他給了一個具體的想象：把模型堆疊起來，低層的模型去預測高層模型的引數。這樣在頂層，你做的動作是預測不同的引數值會表現如何，梯度計算在這個位置退居其次。這種思路在貝葉斯最佳化裡已經出現了，高斯過程預測不同引數配置的表現，早就用在超引數最佳化上。問題在於，這些演算法都還沒能在某個 AI 級別的難題上把 state of the art 真正推上去。

## 機器的短期記憶還差得遠

他點名了一個至今沒做對的系統：短期記憶。

人類這邊，你告訴某人"今天會議三點開"，他聽一遍就記住了。不需要你重複"三點開、三點開、三點開"，讓他在這個事實上走很多步梯度。機器這邊，梯度下降要記住一條具體事實，必須在這條事實上反覆迭代很多次。

LSTM 名字裡就帶著"長短期記憶"，它的機制和人腦的短期記憶並不相同。注意力機制、神經圖靈機這類能寫儲存單元、能立刻用新事實更新自己的結構，都往這個方向試過，還沒拿下。他認為這塊正需要新的最佳化演算法，或者現有演算法的新用法，讓系統能閃電般地把一條具體事實寫進狀態裡。

## 1980 年代的書，可能會被重新翻開

聊到符號系統時，他承認那套東西在組裝事實上確實更強。1980 年代的系統能做圖搜尋、一階邏輯、蘊含推理，問題是對專家輸入的依賴太重，覆蓋面很窄。

他自己沒有往那個方向走。他做的是機器學習安全、生成模型。不過他能看到一條中間路線：可微的知識庫，或者某種讓模糊的機器學習演算法能和知識庫互動的介面。神經網路本身就是一個可微的知識庫。

他給的例子很小，也很說明問題。今天生成模型做出來的人臉經常不對稱，兩隻眼睛顏色不一樣的比例遠高於現實世界。如果有一個知識庫能裝下"人臉大致對稱""兩眼顏色大機率相同"這類常識，並且能把這個提示直接注入模型，模型就不用自己從海量資料裡重新發現這件事。

他的主張沒那麼激進：把 1980 年代那套技術擴充套件一下，讓它們和神經網路配合，可能是一條路。

## 兩個玩家，一場零和博弈

生成模型是能在一批資料上訓練、然後生成新資料的模型。你有一堆貓的照片，想生成更多貓的照片，或者估計一個關於貓的機率分佈，用來判斷一張新圖是貓的機率有多大。

生成模型內部還分門派。有些擅長造有些擅長造新資料，有些擅長估計密度函式，告訴你某條資料來自訓練分佈的可能性有多高。GAN 偏向造樣本這一側。少數變體比如 Glow 兩樣都能做。

造樣本這件事是從零開始的。它不會去拼照片，不會把這隻貓的眼睛貼到那隻貓的耳朵上。它先在訓練裡形成了某種關於機率分佈的表徵，然後生成一隻從來沒存在過的貓。

GAN 的特殊之處在於，它是一場博弈論意義上的兩人遊戲。生成器負責出圖，訓練剛開始時它出的完全是噪聲。判別器負責看圖判斷真假，一邊拿真實照片訓練它說"真"，一邊拿生成器的輸出訓練它說"假"。兩邊一起變強，最後收斂到一個納什均衡：生成器抓住了正確的機率分佈，判別器只能做到隨機猜測，因為真樣本和假樣本看起來同樣可能來自任一來源。

## 為什麼造出來的不是垃圾

這裡有個邏輯上的麻煩，他自己主動挑明瞭。

生成模型如果嚴格做到我們要求它做的事，它會做的唯一一件事就是背下訓練資料。基於最大似然的模型更是如此：在一份特定訓練集上取得最大似然的辦法，就是把所有機率質量堆在訓練樣本上，別處一點都不給。GAN 的博弈也是在訓練集上打的，在這個遊戲裡變得不可戰勝的辦法，就是字面意義上記住訓練樣本。

> 生成模型都有這個性質：如果它們真的做到了我們要求它們做的事，它們除了背下訓練資料之外什麼都不會做。（古德費洛）

那為什麼我們得到的不是一堆訓練集的複製品？他的前實習生 Vishnu Nair 寫過一篇論文，從統計學習理論的角度論證了背下訓練資料其實相當難，需要很多學習步、需要對很多變數的大量觀察。

但這也沒解釋另一件事：為什麼生成的是一張有說服力的新圖，而不是垃圾。可能的影象有多少，模型訓練時見過的影象有多少，這兩個數字之間的差距大到不可思議。

他給了一半答案。有一篇叫 Deep Image Prior 的論文證明，拿一個卷積網路，引數完全不用學，只用它的架構，就已經能用來補全影象、去噪。這說明卷積網路的架構本身編碼了關於影象結構的重要資訊。**我們看到的影象生成進展，可能有相當一部分來自架構，而不是來自學習。**

這個推論往遠處走一步就不太樂觀了。語音上還能做出像樣的模型，但生物資料集比如微陣列測量各種酶含量這種，深度學習模型見得很少。視覺上的成功部分歸功於我們逆向工程了人類視覺系統，這個技巧未必能原樣搬到任意型別的資料上。

## 從讀茶葉到寒武紀大爆發

2014 年那篇論文只證明了一件事：這東西能跑。用 MNIST 的手寫數字，用多倫多大學人臉庫的小尺寸灰度人臉，同事 Bing Xu 做出了第一個 GAN 人臉模型，人臉勉強能認出來。換成 CIFAR-10 那些 32×32 的車、貓、狗，認不出物體。

但當時的深度學習研究者習慣了看失敗樣本，習慣到能像讀茶葉一樣讀它們。讀茶葉的人看出，這些茶葉渣至少和以前的不一樣。未必更好，但有些東西很反常。這就夠讓人興奮了。

下一個大臺階是 LAPGAN，Emily Denton 和 Soumith Chintala 在 Facebook AI 研究院做的。他們用一套從低解析度逐級放大到高解析度的複雜流程，第一次讓 GAN 生成出真正好的高解析度照片。

同年晚些時候，Alec Radford、Luke Metz 和 Soumith Chintala 發表了 DCGAN。這個名字現在聽著不太唯一，因為幾乎所有 GAN 都是深度卷積的。但這篇論文給了一份真正好用的配方：只用一個模型，不需要多級流程，直接生成逼真的人臉。古德費洛打了這個比方：**這就像動物有了脊椎骨，之後突然冒出各種魚和四足動物。**DCGAN 成了此後大量模型的骨架，到今天還在被當 baseline 用。

## 一百個標籤頂六萬個

GAN 後來更有智力含量的進展，不在畫質，在用途。

判別器可以改造成分類器。它本來只判斷"真或假"，改一下就能判斷"這是貓、狗、車還是卡車"。OpenAI 的 Tim Salimans 那篇 Improved Techniques for Training GANs 裡，古德費洛是共同作者，但他明說這部分功勞不屬於自己。

關鍵數字在這裡：MNIST 上把錯誤率做到 1% 以下，傳統分類器需要大約六萬個標註樣本。用這個半監督 GAN 方案，一百個標註樣本就夠了。**標註量減少了大約六百倍。**當然它還是用了遠多於一百張的圖片，只是不需要每張都標上"這是 1、這是 2"。

麻煩在於，要生成可識別的特定類別物體，你還是得有標籤，因為模型得知道"貓"這個類別意味著什麼。

Google Brain 的一篇半監督 GAN 論文往前推了一步。他們的目標放在生成可識別的物體上，標籤多少是次要約束。基於 BigGAN，他們只用 10% 的標籤就達到了 BigGAN 的效果。BigGAN 原本在 ImageNet 上訓練，那是一百二十萬張全部標註的圖。做法近似於聚類：判別器學著把物體歸到幾組，這個分組理解幫它形成更真實的影象概念，因為它知道每張生成的圖都得來自某個原型組，不能是任意一堆畫素。

完全沒有類別標籤會怎樣？你會得到看起來像草地、水面、磚牆、泥土的東西，裡面沒什麼主體。部分原因是 ImageNet 的大圖裡，物體並不佔滿整個畫面。模型學會了造出真實的畫素集合，卻沒學會"物體才是主角，每張圖裡都得有"。

## 馬和斑馬會帶出草地

CycleGAN 的馬變斑馬是個經典例子，古德費洛用它說明一件更深的事。

馬通常站在草地上，斑馬通常站在更乾燥的地面上。這兩個屬性在訓練資料裡是耦合的。所以你讓它把馬變成斑馬時，它經常連背景一起改，草地變得乾枯。**它學到的是聯合分佈裡的相關性，沒有學會把"斑馬"這個屬性從"乾旱地面"裡切出來。**

同一個現象在無標籤生成裡反覆出現，也構成了"要生成可識別物體就得有標籤"的另一面證據。

## 領域對抗：讓特徵認不出自己來自哪個世界

領域自適應要解決的問題很實際。你在 ImageNet 這種乾淨資料集上訓練模型，部署到使用者手機上。使用者拍的是暗光照片、運動中的照片、構圖歪斜的照片。模型一到新領域，效能經常崩得很難看，因為輸入的樣子和訓練時差太遠。

領域對抗的做法是訓練一個特徵提取器，讓提取出的特徵在兩個領域裡統計性質相同。遊戲的另一方是領域識別器，它看特徵提取器的輸出，猜這些特徵來自哪個領域。這個結構和真假判別器很像。

特徵提取器要做兩件事：讓領域識別器猜不出來，同時提出對分類有用的特徵。有些情況下結果是兩個領域表現拉平，代價是原來那個領域的效能被拉低了。也有不少情況兩邊都真正變好了。

他把博弈這個框架往外推得更遠。安全領域的攻防，本質上就是一個攻擊者想搞壞你的系統、防守者想建一個扛得住的系統。他甚至說，生成模型可以用來做資料增強，只是他沒聽說過"訓練一個 GAN 造資料、再用這些資料訓分類器"這個最樸素的版本真的成功過。

他給了一個更聰明的版本：在同一份訓練集上訓練一大堆不同的生成模型，從每個模型取樣，把樣本合起來訓練分類器。每個生成模型泛化的方向可能略有不同，抓到不同的變異軸，分類器能從所有這些資料裡學到更豐富的東西。有點像整合，只不過整合的是生成器。

## 從病歷到合成病人

GAN 有一類用途和"造更多同款資料"無關，和"造出性質不同的資料"有關。

差分隱私合成資料就是這種。你手上有真實的醫療記錄，想訓一個分類器釋出出去，但別人可能從分類器反推出訓練資料裡的個人隱私。Casey Greene 實驗室的論文展示了做法：用差分隱私訓練 GAN，從 GAN 裡採出來的樣本繼承和引數一樣的隱私保證。你可以造出一批假病人的資料給其他研究者用，他們幾乎可以做任何分析，因為這些資料不來自真人，而差分隱私機制對"原始資料被保護到什麼程度"給出了明確的數學保證。

公平性上的應用更繞一點。有個常見的誤解：想讓預測不受性別影響，把性別這一列從輸入裡刪掉就行了。不夠。性別可以從很多別的特徵裡被推斷出來。你拿到了名字，沒拿到性別欄位，但一個叫 Ian 的人，性別基本不用猜。

真正想要的是這樣一個模型：它能吃進很多屬性，做出準確、資訊充分的預測，同時能確信它在內部沒有偷偷把性別或者別的敏感變數反向工程出來。做法和領域對抗幾乎一樣。一方是特徵提取器，另一方是特徵分析器，目標是讓分析器猜不出你想保護的那個敏感變數的取值。古德費洛對這套思路的評價是"相當聰明，而且簡單"。

他還給了另一個更遠的方向。用 CycleGAN 那種結構，把某一群體的記錄轉換成另一群體的等價記錄。馬變斑馬、白天變黑夜都見過了，公平性上可以想象成：把 A 組的一個人轉換成 B 組裡條件相當的一個人，然後看系統對這兩份本該等價的輸入，給出的待遇是否一致。

> 要讓這個轉換過程本身是公平的，有太多地方容易出錯。我不覺得這離真正能用還差一點點。但如果你能把轉換過程設計得非常小心，它可能給你一種審計手段：把這個人從這組換到另一組，系統是不是還按它該有的方式對待他？（古德費洛）

## 深度偽造：接下來幾年會顛一下

被問到深度偽造，他的時間尺度判斷很清楚。**他擔心的是未來幾年，二十年之後反倒沒那麼擔心。**

接下來會有一段顛簸的文化過渡期。人們第一次遇上"存在非常逼真的影片和音訊，但它們是假的"這件事，會有一段混亂。二十年後再看，人們大體上會明白，不該因為看到了影片就相信它是真的。人們會期待內容帶有密碼學簽名，或者別的能證明真實性的機制。

已經有公司在做這件事。一家叫 Truepic 的創業公司提供驗證影象來源的機制。他承認這些機制未必扛得住國家級行為者的攻擊，但有人在動手，這條路最終會走通。

他不相信會有那種"看著畫素就能判斷真假"的終極檢測器。恰恰相反，過度依賴檢測器是危險的：**如果你做了一個很好的假圖檢測器，然後有人騙過了它，檢測器說這張圖不假，那這張圖的可信度比沒有檢測器的時候還高。**檢測器給了一種虛假的背書。

他看好的是幕後的估計系統，以及更強的認證體系。想象每臺手機都用硬體裡嵌的私鑰給拍出來的所有內容簽名。你沒法憑影象本身斷定它是真的，但你能確定：某個掌握這臺手機私鑰的人，在某個時間戳，簽了這張圖並上傳到某個伺服器。國家級機構如果真想滲透，可以植入自己選的私鑰，或者撬開晶片讀出私鑰，但那會讓資源不那麼充足的對手造假變得難得多。

## 一小時出結果的時代過去了

回到酒吧那個故事。被問到深度學習裡還有沒有這種能被快速驗證的突破性想法，他的回答分兩半。

有，而且很多。但 GAN 在一小時這個尺度上是個離群點。所謂低資源想法，是指在演算法層面做一件很不一樣的事，然後拿到很大回報。核心機器學習技術這塊，比如更好的分類器、更好的強化學習演算法、更好的生成模型，他覺得這種機會不太多了。

> 如果今天有那個想法，要證明它有用會難得多。我需要把它跑到 ImageNet 這種規模上，或者高解析度資料集上，那些要訓練很久。你沒法一小時訓完然後知道這東西是新的、是激動人心的。2014 年，能在 MNIST 上跑通就夠了。（古德費洛）

但有些領域還處在那個人人都是外行的階段。**公平性和可解釋性，我們連該怎麼做都還不知道。**

可解釋性這塊，他認為連正確的定義都還沒有。而定義一個真正有用的概念，甚至不需要跑任何實驗，就能對領域產生巨大影響。

他拿差分隱私作類比。Cynthia Dwork 和合作者給出隱私的數學定義之前，這個概念很模糊。有了定義之後，你就能設計隨機化演算法訪問資料庫，並用數學上定量的方式保證每個人的隱私被保護。**定義一到，演算法很快就跟著來了。**

現在大家談可解釋性，談的其實是各自的觀點，每個人腦子裡對"可解釋"的理解都不一樣。如果能定義一個可測量的、和可解釋性相關的量，那本身就是巨大的躍遷，哪怕還沒有能提升這個量的新演算法。

## AGI 需要的是同一段人生裡的各種體驗

聊到通用人工智慧，他先排除兩條路。靠固定資料集訓練，或者靠坐在那裡拼命思考，都到不了。

智慧體必須在同一段生命週期裡真正與環境互動，獲得各種各樣的體驗。今天的情況是，一堆模型各幹一件事，每個都只在一個資料集或一個強化學習環境上訓練。確實有論文讓一套引數在多個環境裡都表現良好，但沒有一個智慧體能夠從一種體驗無縫過渡到另一種，把一生中做過的所有事真正整合起來。

多智慧體環境也類似。那些環境往往高度同質，全是同一類動作類電子遊戲。他不認為存在這樣一個智慧體，能從打遊戲切到讀《華爾街日報》，再切到預測某個分子作為藥物的有效性。

他自己給智慧設的測試標準，比圖靈測試更工程化。

> 不用先去 CIFAR 網站下載資料、再寫 Python 指令碼解析它，你直接把一個智慧體指向 CIFAR-10 這個問題，它自己去下載、解壓、訓練模型，然後開始給你預測。我覺得，一個不需要別人替它把流水線上每一步都裝好的系統，是真的明白自己在幹什麼。（古德費洛）

他特意和 AutoML 劃清界限。AutoML 走的路子是：人類已經把膠水程式碼全搭好了，機器只需要在這個框架內把架構設計得很好。他說的更進一步：如果系統自己知道怎麼預處理資料，從而成功完成任務，那你就很難說它沒有在某種意義上真正理解了任務。他不確定這是不是智慧的哲學定義，但這是他很想造出來的東西，有用，而且能說服他 AI 真的往前走了一步。

具體想象是：你給它一個維基百科的 URL，或者乾脆打一段話說明你想要什麼，它自己去決定該搜什麼、下載什麼、準備哪些原料。

## 被當成機器人的兩個人

聊到最後，主持人提到一個細節：古德費洛說話很穩，沒有"呃""嗯"這些填充詞，容易剪輯。網上有人因此說他和主持人兩個人都可能是機器人。

被要求證明自己是人類，他的回答繞回了自己的研究。

> 用今天的技術證明我是真人，其實挺容易的。今天這場對話沒有因為我的訓練資料而突然拐去聊股市之類的東西。但一般地說，想僅憑內容本身證明某樣東西是真的，極其困難。這是我研究裡最重要的收穫之一：你幾乎可以模擬任何東西，所以你必須退回到一個單獨的通道去證明真實性。（古德費洛）

他開玩笑說自己應該在出生的時候把自己上鍊，"但我沒做，所以我沒法用我自己這套研究方法"。

## 最該解決的問題：讓模型動起來

最後一個問題，他挑的是對抗樣本魯棒性。讓機器學習在面對一個想幹涉、想控制它的對手時保持安全，是今天的研究者能在所有領域裡解決的最重要的問題之一：影象、語言、駕駛。

但他更擔心的是還沒出現的領域。2002 年問大家手機安全的重要問題是什麼，沒人能預料到今天我們拿手機幹這麼多事。AI 也會是這樣，商業機會究竟在哪裡起飛，事前預測不出來。

能事前確定的是：幾乎任何用機器學習做的事，你都會希望別人沒法只靠給它看一張奇怪的二維碼、或者一個奇怪的輸入圖案，就讓它做對方想做的事而不是你想做的事。這套方法論能跨領域，他同意這個判斷。

他提到一類自己看好的解法，不落在某個具體方法上，而是一個類別：**讓模型每次預測都發生變化。**

現在的做法是訓練完就凍結，此後所有輸入都用同一套規則分類。從安全形度這是一隻活靶子。同樣的輸入永遠得到同樣的輸出，攻擊者只要不斷試，找到一個對自己有利的錯誤，然後把這個錯誤重複使用就行。

> 讓模型更新自己的預測、讓攻擊者更難預判會拿到什麼結果，會讓對手更難真正控制系統、讓它做他們想做的事。（古德費洛）

代價是模型永遠保持一點神秘感，因為它一直在變。這句話聽起來像個玩笑，背後卻是他整套研究裡最實在的一條經驗：**內容本身可以被完美偽造，可信性必須來自內容之外的通道。**這條經驗同時適用於一段影片、一張人臉，和一個永遠輸出相同答案的模型。

## 可以立刻做的事

- 評估模型時把對抗魯棒性當成獨立指標測一遍。別隻看乾淨資料上的準確率，用強力攻擊跑一次最壞情況分析，把結果和準確率一起彙報。
- 如果你的系統涉及交易、語音指令、身份驗證這類可被利用的輸出，就假設攻擊者能拿到你的模型或者能反覆查詢它，先做一遍演練：讓自己人去找一個對自己有利的錯誤。
- 處理敏感屬性時，別隻把欄位從輸入裡刪掉。檢查模型能否從姓名、郵編、裝置型號這些代理特徵裡反推出敏感變數，必要時用領域對抗式的特徵分析器去驗證。
- 需要釋出資料或模型又怕洩露個體資訊時，優先考慮差分隱私訓練加合成資料這條路徑，它能給出量化的隱私保證，而不是模糊的承諾。
- 動手做生成模型前，先想清楚你要的是造樣本還是估密度。GAN 偏前者，自迴歸模型和流模型在密度估計上更自然，選型錯了後面每一步都彆扭。
- 做小樣本任務時，試試判別器半監督的思路：一百個標籤的效果可能頂得上六萬個，先跑這個 baseline 再考慮標更多資料。
- 想讓模型認識常識，別指望它從資料裡自己發現。設計時留一個注入先驗的介面，比如可微的外部知識庫，人臉大致對稱這種事實沒必要讓模型自己重新學一遍。
- 判斷一個 AI 系統是不是真理解任務，看它能不能自己把流水線搭起來。只會在別人準備好的資料上訓練的模型，再高的分數也說明不了這件事。
