直接壓縮一切!OpenAI首席科學(xué)家Ilya Sutskever這么看無監(jiān)督學(xué)習(xí)(2)
一種無監(jiān)督學(xué)習(xí)方法:分布匹配
接下來,Sutskever 展示了一種思考無監(jiān)督學(xué)習(xí)的潛在方式。他說這種無監(jiān)督學(xué)習(xí)方式一直沒有成為主流,但卻非常有趣。它有與監(jiān)督學(xué)習(xí)類似的特征,也就是必然有效。為什么會這樣?這涉及到一種名為分布匹配(distribution matching)的無監(jiān)督學(xué)習(xí)流程。
接下來簡單說明一下。假設(shè)有兩個數(shù)據(jù)源 X 和 Y,它們之間并無對應(yīng)關(guān)系;模型的目標(biāo)是找到函數(shù) F,使得 F (X) 的分布與 Y 的分布近似 —— 這是對 F 的約束(constraint)。
對于機器翻譯和語音識別等許多應(yīng)用場景,這個約束可能是有意義的。舉個例子,如果有一個英語句子的分布,使用函數(shù) F 后,可以得到接近法語句子分布的分布,那么就可以說我們得到了 F 的真實約束。
如果 X 和 Y 的維度都足夠高,那么 F 可能就有大量約束。事實上,你甚至有可能從那些約束中恢復(fù)完整的 F。這是無監(jiān)督學(xué)習(xí)的監(jiān)督學(xué)習(xí)(supervised learning of unsupervised learning)的一個示例,它必定有效,就像監(jiān)督學(xué)習(xí)必定有效一樣。
此外,替代密碼(subsitution cipher)也符合這一框架。
Sutskever 表示自己在 2015 年時獨立發(fā)現(xiàn)了這一現(xiàn)象。這讓他不禁思考:也許我們能用某種有意義的數(shù)學(xué)形式來描述無監(jiān)督學(xué)習(xí)。
當(dāng)然,上面描述的機器翻譯場景是簡化過的人工場景,并不符合真實的應(yīng)用情況,對應(yīng)的無監(jiān)督學(xué)習(xí)場景自然也是如此。
接下來,Sutskever 將闡述他提出的方法 —— 其能從數(shù)學(xué)上為無監(jiān)督學(xué)習(xí)提供說明以及確保無監(jiān)督學(xué)習(xí)的結(jié)果優(yōu)良。
眾所周知,壓縮就是一種預(yù)測,每個壓縮器都可以轉(zhuǎn)換為一個預(yù)測器,反之亦然。全體壓縮器與全體預(yù)測器之間存在一一對應(yīng)關(guān)系。
Sutskever 指出,為了能更清晰地說明對無監(jiān)督學(xué)習(xí)的思考,使用壓縮方面的論述方式更具優(yōu)勢。
基于此,他給出了一個思想實驗。
假設(shè)你有兩個數(shù)據(jù)集 X 和 Y,它們是你的硬盤上的兩個文件;然后你有一個很棒的壓縮算法 C。再假設(shè)你對 X 和 Y 進行聯(lián)合壓縮,也就是先將它們連接起來,然后將其饋送給壓縮器。
現(xiàn)在的重要問題是:一個足夠好的壓縮器會做什么?
Sutskever 給出了一個非常直覺式的答案:壓縮器會使用 X 中存在的模式來幫助壓縮 Y;反之亦然。
他表示,預(yù)測任務(wù)場景其實也存在類似的現(xiàn)象,但在壓縮語境中說起來似乎就更直觀一點。
如果你的壓縮器足夠好,那么對連接后文件的壓縮結(jié)果應(yīng)該不會差于分開壓縮的結(jié)果。
因此,通過連接所獲得的進一步壓縮效果是你的壓縮器注意到的某種共有的結(jié)構(gòu)。壓縮器越好,其能提取出的共有結(jié)構(gòu)就越多。
兩種壓縮結(jié)果之間的差就是共有結(jié)構(gòu),即算法互信息(algorithmic mutual information)。
對應(yīng)地,可以把 Y 視為監(jiān)督任務(wù)的數(shù)據(jù),X 視為無監(jiān)督任務(wù)的數(shù)據(jù),而你對這些信息有某種形式的數(shù)學(xué)推理 —— 可以使用 X 中的模式來幫助 Y 任務(wù)。
也要注意其如何實現(xiàn)了對分布匹配的泛化。如果是在分布匹配情況下,假如 X 是語言 1,Y 是語言 2,并且存在某個簡單函數(shù) F 可從一個分布轉(zhuǎn)換到另一個分布;那么優(yōu)良的壓縮器也能注意到這一點并將其利用起來,甚至可能在內(nèi)部恢復(fù)出該函數(shù)。
這樣一來,閉環(huán)就形成了。那么我們?nèi)绾斡脭?shù)學(xué)形式描述無監(jiān)督學(xué)習(xí)呢?
無監(jiān)督學(xué)習(xí)的數(shù)學(xué)形式化
注意這一部分的描述會交替使用壓縮場景和預(yù)測場景的描述。
首先假設(shè)我們有一個機器學(xué)習(xí)算法 A,其作用是壓縮 Y。算法 A 能夠訪問 X。令 X 為 1 號文件,Y 為 2 號文件。我們希望我們的機器學(xué)習(xí)算法 / 壓縮器能對 Y 進行壓縮并且其能在合適的時候使用 X。目標(biāo)是盡可能地壓縮 Y。
那么我們要問自己:使用這個算法最大的遺憾(regret)是什么?
Sutskever 解釋說:「如果我很好地完成了工作并且我的遺憾很低,就意味著我已經(jīng)從這未標(biāo)注的數(shù)據(jù)中獲得了所有盡可能的幫助。這些未標(biāo)注數(shù)據(jù)已經(jīng)盡可能地幫助了我。我對此毫無遺憾。」也就是說已經(jīng)沒有更好的預(yù)測值可供更好的壓縮算法使用了。「我已經(jīng)從我的未標(biāo)注數(shù)據(jù)中獲得了最大收益?!?/span>
Sutskever 認為這是向思考無監(jiān)督學(xué)習(xí)所邁出的重要一步。你不知道你的無監(jiān)督數(shù)據(jù)集是否真的有用,但如果你在監(jiān)督學(xué)習(xí)算法上的遺憾很低,那么不管有沒有用,你都已經(jīng)得到了最佳結(jié)果,不可能會有更好的結(jié)果了。
現(xiàn)在進入有些晦澀難懂的理論領(lǐng)域。
將 Kolmogorov 復(fù)雜度用作終極壓縮器能為我們提供超低遺憾的算法,但這其實并不是算法,因為它不可計算。
先簡單解釋一下 Kolmogorov 復(fù)雜度:就好比你給我一些數(shù)據(jù),為了壓縮它,我給你提供一個可能存在的最短的程序。Kolmogorov 復(fù)雜度就等于這個最短程序的長度。
令 C 是一個可計算的壓縮器,那么對于所有 X,Kolmogorov 壓縮器的復(fù)雜度小于壓縮器 C 的任意輸出加上實現(xiàn)該壓縮器所需的代碼字符數(shù)。
我們可以使用模擬論證(simulation argument)來證明這一點。假設(shè)有一個非常棒的壓縮器 C,那么它可能是一個計算機程序,如果將這個計算機程序交給 K 來運行,那么 K 所需的成本就是這個程序的長度。Kolmogorov 壓縮器可以模擬其它計算機程序和其它壓縮器,也因此它是不可計算的。它就像是一個能夠模擬所有計算機程序的自由程序,但它也是有可能存在的最好的壓縮器。
現(xiàn)在我們泛化 Kolmogorov 壓縮器,使其可以使用其它信息。我們知道 Kolmogorov 壓縮器是不可計算的,不可判定的,而像是搜索所有程序。這就像是使用神經(jīng)網(wǎng)絡(luò)通過 SGD(隨機梯度下降)調(diào)整參數(shù)來搜索程序。這個過程運行在有一定資源(內(nèi)存、 步驟數(shù))的計算機上,這就像是非常微小的 Kolmogorov 壓縮器。這兩者存在相似之處。
神經(jīng)網(wǎng)絡(luò)可以模擬小程序,它們是小小的計算機,有回路 / 電路。我們可以使用 SGD 訓(xùn)練這些計算機,從數(shù)據(jù)中找到它的「電路」。
模擬論證在這里也適用。如果你想設(shè)計一個更好的神經(jīng)網(wǎng)絡(luò)架構(gòu),你會發(fā)現(xiàn)這很困難,因為增添或修改連接這些操作雖然可以被其它神經(jīng)網(wǎng)絡(luò)架構(gòu)模擬,但實際卻難以做到。因為這些是能帶來巨大提升的罕見情況。正如從 RNN 到 Transformer 轉(zhuǎn)變。RNN 有一個瓶頸:隱藏狀態(tài)。但如果我們能找到一種方法,讓 RNN 可以擁有非常大的隱藏狀態(tài),那么它的性能表現(xiàn)可能會重新趕上 Transformer。
所以我們可以把條件 Kolmogorov 復(fù)雜度作為無監(jiān)督學(xué)習(xí)的解,如下所示:
其中 C 是一個可計算的壓縮器,K (Y|X) 是如果能使用 X,能輸出 Y 的最短程序的長度。
這是無監(jiān)督學(xué)習(xí)的超低遺憾的解,只不過它是不可計算的,但卻能提供一個有用的框架。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。