今天看到了Hinton團隊的一項無監(jiān)督表示學(xué)習(xí)的新研究:SimCLR扯键,其中總結(jié)了對比損失為無監(jiān)督學(xué)習(xí)帶來的飛速進展围肥。于是決定把近三年來這方面的論文都讀一下虫蝶,2018桩卵、2019和2020每年各一篇,開始吧劲弦!
第一篇論文耳标,是2018年DeepMind團隊研究出的新的無監(jiān)督表示學(xué)習(xí)方法:Contrastive Predictive Coding,即對比預(yù)測編碼(CPC)邑跪。
論文下載
題目:《Representation Learning with Contrastive Predictive Coding》
地址:https://arxiv.org/pdf/1807.03748.pdf
相關(guān)內(nèi)容補充
- 表示學(xué)習(xí)(Representation Learning):學(xué)習(xí)數(shù)據(jù)的表征次坡,以便在構(gòu)建分類器或其他預(yù)測器時更容易提取有用的信息,無監(jiān)督學(xué)習(xí)也屬于表示學(xué)習(xí)画畅。
- 互信息(Mutual Information):表示兩個變量和之間的關(guān)系砸琅,定義為:,可以解釋為由X引入而使Y的不確定度減小的量轴踱,越大說明兩者關(guān)系越密切症脂。
- 對比損失(Contrastive Loss):計算成對樣本的匹配程度,主要用于降維中淫僻。計算公式為:诱篷,其中為兩個樣本的歐式距離,代表兩個樣本的匹配程度雳灵,代表設(shè)定的閾值棕所。損失函數(shù)的目的是讓原本分布相似的樣本在降維后也相似,原本不相似的在降維后也保持不相似悯辙。
- 噪聲對抗估計(Noise Contrastive Estimation, NCE):在NLP任務(wù)中一種降低計算復(fù)雜度的方法橙凳,將語言模型估計問題簡化為一個二分類問題。
- 負采樣(Negative Sampling, NEG):表示負采樣笑撞,是NCE的一個簡化版本,目的是提高訓(xùn)練速度钓觉,改善所得詞向量的質(zhì)量茴肥。采用了相對簡單的隨機負采樣,本文中選擇數(shù)據(jù)集中一個是正樣本荡灾,其他均為負樣本瓤狐。
問題提出
目前,表示學(xué)習(xí)的主要問題在于批幌,網(wǎng)絡(luò)學(xué)習(xí)到的特征往往都只適用于特定的任務(wù)础锐,其泛化性能有待提升。最近的無監(jiān)督學(xué)習(xí)都沿用了最普遍的方法:預(yù)測未來的荧缘、缺失的或上下文的特征皆警,因此無監(jiān)督學(xué)習(xí)可以定義為預(yù)測問題,將預(yù)測到的特征再用于表示學(xué)習(xí)截粗。
論文主要工作:
1信姓、將高維數(shù)據(jù)編碼到一個更容易對任務(wù)進行建模的低維隱空間中鸵隧;
2、在隱空間中運用了一個強大的自回歸模型意推,來預(yù)測未來特征或步驟豆瘫;
3、為了實現(xiàn)端到端的網(wǎng)絡(luò)訓(xùn)練菊值,使用了對抗噪聲估計作為損失函數(shù)外驱。
網(wǎng)絡(luò)模型
如圖所示,代表輸入的音頻序列腻窒,首先經(jīng)過一個非線性編碼器昵宇,它將輸入序列編碼成隱空間的序列,這時時間的分辨率會隨之降低定页;然后趟薄,再用一個自回歸模型將時刻之前的隱空間序列整合,得到當(dāng)前狀態(tài)的內(nèi)容隱空間表示典徊。
這篇論文認為杭煎,在預(yù)測未來數(shù)據(jù)的特征時,由于輸入數(shù)據(jù)維度很高卒落,再加上用單峰損失函數(shù)可能得不到細節(jié)信息羡铲,直接用一個基于的生成式模型去獲得數(shù)據(jù)特征的方法不是最有效的。因此在CPC中儡毕,對和的密度比建模也切,構(gòu)造了一個概率密度函數(shù): 使用雙線性模型,對每個k時刻進行線性映射腰湾,這個過程對非線性網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)也同樣適用雷恃。同時函數(shù)和、的互信息成正比费坊,通過最大化兩者的互信息來解析輸入數(shù)據(jù)在隱空間的共有特征倒槐。
網(wǎng)絡(luò)使用了重要性采樣(importance sampling)和對抗噪聲估計等技巧避免了直接對高維數(shù)據(jù)建模,直接從和中采樣得到正負樣本附井,再進行計算讨越。
和都可以作為下游任務(wù)的輸入,需要獲取過去輸入信號的信息時更適用永毅,不需要時更適用(比如圖像分類)把跨。
損失函數(shù)
編碼器和自回歸模型基于NCE(Noise Contrastive Estimator)聯(lián)合優(yōu)化損失函數(shù),也稱為InfoNCE沼死。給定數(shù)據(jù)集着逐,個隨機樣本中包含一個正樣本(從中采樣),和個負樣本(從中采樣),定義優(yōu)化函數(shù)為:
這是對正樣本正確分類的交叉熵損失滨嘱,其中是網(wǎng)絡(luò)的預(yù)測輸出峰鄙,再將的概率形式代入,得到損失函數(shù)的概率形式(原文式5)太雨。
最后可估計和的互信息:樣本數(shù)量越大吟榴,損失函數(shù)越小,兩個分布的互信息就越大囊扳。因此吩翻,最大化互信息可看做最小化損失函數(shù),最小化損失函數(shù)就需要最大化函數(shù)锥咸,經(jīng)過論證與負采樣的數(shù)量無關(guān)狭瞎。
實驗結(jié)果
論文對音頻、圖像搏予、文本和強化學(xué)習(xí)任務(wù)中分別進行了實驗熊锭,先用CPC模型對數(shù)據(jù)進行隱空間編碼,再預(yù)測訓(xùn)練數(shù)據(jù)未來的或缺失的特征雪侥,最后訓(xùn)練分類器對CPC得到的特征進行分類碗殷。相當(dāng)于是對高維數(shù)據(jù)的一種降維方法,降維的同時基于已有的數(shù)據(jù)分布情況速缨,預(yù)測出更多的特征信息锌妻。
對于有時間維度的數(shù)據(jù),例如音頻旬牲、文本仿粹,CPC模型對于當(dāng)前時刻以前的數(shù)據(jù)進行訓(xùn)練,得到每個時間點的隱空間向量原茅,再用自回歸模型結(jié)合之前的隱變量和當(dāng)前隱變量吭历,預(yù)測時間以后的特征分布;對于沒有時間維度的數(shù)據(jù)擂橘,如圖像毒涧,模型的自回歸部分根據(jù)隱變量得到特征圖的前2~5行,再根據(jù)已有信息預(yù)測剩余行的特征(輸出的是7x7的網(wǎng)格)贝室。
總結(jié)
1、論文的主要思想
本文提出了對比預(yù)測編碼(CPC)仿吞,這是一種用于提取緊湊潛在表示以對未來觀測進行編碼的框架滑频。CPC將自回歸建模和噪聲對比估計與預(yù)測編碼的直覺相結(jié)合,以一種無監(jiān)督的方式學(xué)習(xí)抽象表示唤冈。
利用編碼器和自回歸模型對高維數(shù)據(jù)進行降維峡迷,得到可表示信息,再用對比噪聲估計預(yù)測未來的表示信息。
2绘搞、編碼器和自回歸模型各自的作用
編碼器將輸入高維數(shù)據(jù)映射成低維空間的隱變量彤避,使用自回歸模型是為了將之前時刻和當(dāng)前時刻的隱變量匯總。
挖坑
1夯辖、負采樣的方式具體怎么簡化成二分類的問題琉预?
實質(zhì)是基于對比學(xué)習(xí)的模型訓(xùn)練方式,在MOCO的論文中蒿褂,作者對當(dāng)前主流的對比學(xué)習(xí)方法做了比較清楚的總結(jié):對比學(xué)習(xí)和GAN網(wǎng)絡(luò)以及NCE存在很大聯(lián)系圆米,可以將其看做是一個查字典的過程,在輸入高維連續(xù)的數(shù)據(jù)上建立字典啄栓,構(gòu)造一個對比損失函數(shù)娄帖,讓每個查詢樣本和它唯一對應(yīng)的鍵值關(guān)聯(lián)最大,和其他鍵值關(guān)聯(lián)最小昙楚。其中查詢樣本是輸入數(shù)據(jù)經(jīng)由編碼器在隱空間的低維表示向量近速,鍵值則是更具高層語義信息的內(nèi)容表示向量。
在本文中可以理解為堪旧,輸入的數(shù)據(jù)經(jīng)過一個編碼器得到低維空間特征削葱,再將經(jīng)過自回歸模型得到內(nèi)容表示,網(wǎng)絡(luò)的目的是讓當(dāng)前輸入的只和之間互信息最大崎场,其余視為負樣本的和互信息最小佩耳。損失函數(shù)的設(shè)計是基于N分類的softmax形式,中分子是正樣本的預(yù)測置信度(以互信息的形式)谭跨,分母是其他負樣本的預(yù)測置信度干厚,損失函數(shù)越小,說明樣本和正確鍵值之間距離越小螃宙,和錯誤鍵值之間距離越大蛮瞄。
2、無標注信息的數(shù)據(jù)經(jīng)過CPC得到特征谆扎,再對特征進行分類的時候以什么作為對比標簽挂捅?
根據(jù)DIM論文里的描述,DIM的目標在于訓(xùn)練一個編碼器堂湖,該編碼器能夠?qū)斎霐?shù)據(jù)進行比較好的特征解析闲先,當(dāng)把編碼器融合進下游任務(wù)時,比如分類任務(wù)无蜂,就需要在編碼器后面添加少量的卷積層或全連接層伺糠,這些網(wǎng)絡(luò)的目的是把編碼器得到的特征轉(zhuǎn)化為對應(yīng)的回歸值,從而得到分類的預(yù)測標簽斥季。因此后續(xù)添加上去的網(wǎng)絡(luò)層需要經(jīng)過訓(xùn)練训桶,訓(xùn)練的標簽就來源于數(shù)據(jù)累驮。
這個問題實際上是想問,既然做分類任務(wù)舵揭,為什么要先無監(jiān)督訓(xùn)練一個編碼器得到特征谤专,再有監(jiān)督地對特征訓(xùn)練一個分類器,這樣還是一個有監(jiān)督的分類方式午绳?后來發(fā)現(xiàn)分類任務(wù)只是評估編碼器表示能力的工具置侍,用于測試編碼器得到的特征是否包含所需要的類別信息,所以理所應(yīng)當(dāng)再用輸入數(shù)據(jù)的標簽去訓(xùn)練一個后接網(wǎng)絡(luò)箱叁。