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