日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

自监督学习和对比学习

發(fā)布時(shí)間:2025/3/8 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自监督学习和对比学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這篇主要探討SimCLR,不需要用監(jiān)督學(xué)習(xí)(supervision)的方式,采用自監(jiān)督(self-supervised)的方式使得模型學(xué)到很多有用的patterns。眾所周知,使用對(duì)比學(xué)習(xí)(修改樣本,loss等小trick)就可以顯著提高模型的泛化能力,所以我們都需要掌握這項(xiàng)"技藝"。

Self-Supervised Learning(SSL):

自監(jiān)督學(xué)習(xí)是目前機(jī)器學(xué)習(xí)中一個(gè)非常流行的分支,不管監(jiān)督學(xué)習(xí)已經(jīng)多么精準(zhǔn),最終能顯著提升監(jiān)督模型效果的永遠(yuǎn)是更多的有標(biāo)簽的數(shù)據(jù)。但是真實(shí)情況是,很多任務(wù)很難有大量標(biāo)注的數(shù)據(jù)。SSL目標(biāo)就是從無(wú)標(biāo)注數(shù)據(jù)獲取標(biāo)注,并用他們來訓(xùn)練,在NLP中,我們隨機(jī)mask掉部分文本,讓模型去做完型填空。在幾個(gè)G的語(yǔ)料庫(kù)上這樣學(xué)習(xí)后,模型就已經(jīng)學(xué)到了很多語(yǔ)法知識(shí),單詞語(yǔ)意等。

研究證明,將這一思想推廣到計(jì)算機(jī)視覺沒啥用。想象一下,通過前幾幀預(yù)測(cè)視頻中的下一幀。乍一看,這與NLP中的掩蔽非常相似,但問題是,網(wǎng)絡(luò)可以做出無(wú)數(shù)看似合理的預(yù)測(cè),并且無(wú)法計(jì)算每一幀的概率,因?yàn)槲覀兲幱谝粋€(gè)超高維、連續(xù)的空間中。

Contrastive Learning: 當(dāng)研究?jī)蓚€(gè)物體時(shí),我們很容易區(qū)分它們,即使以前從未見過它們。例如,一只狗和一把椅子,盡管它們的顏色可能彼此相似,但會(huì)有非常明顯的特征,而一對(duì)狗,盡管它們的品種差異很小,但屬于同一類別,我們會(huì)認(rèn)識(shí)到這一事實(shí)。換句話說,通過辨別一個(gè)物體的視覺特征,能夠在它和其他事物之間形成對(duì)比。

如下圖所示,可以從一個(gè)物體中提取三個(gè)屬性:I)它的顏色有多暗(0表示白色,1表示黑色),II)它有多可愛(0表示一點(diǎn)也不可愛,1表示非常可愛),以及III)它有多“舒適”(0表示一點(diǎn)也不舒適,1表示非常舒適),因此椅子比椅子和狗有更高的余弦相似性。

對(duì)比學(xué)習(xí)的工作原理類似,目的是從圖像中提取特征,同時(shí)努力將相似的圖片(也稱為正對(duì))放在一起,而將不同的圖片(也稱為負(fù)對(duì))放在很遠(yuǎn)的地方。目前對(duì)比學(xué)習(xí)已經(jīng)做了大量的研究,本文從《A Simple Framework for Contrastive Learning of Visual Representations》一文中的提出的SimCLR入手,SimCLR基本可以認(rèn)為是學(xué)對(duì)比學(xué)習(xí)的基石了。

SimCLR:在圖像分類任務(wù)中,如果每張照片都屬于一個(gè)類,最基本的就要構(gòu)造正負(fù)樣本對(duì),前者是來自一個(gè)類別的實(shí)例,后者是來自兩個(gè)類別的兩個(gè)數(shù)據(jù)點(diǎn)。然而,這將破壞SSL的目的,因此我們必須設(shè)計(jì)一種解決方案,處理成堆的未標(biāo)記數(shù)據(jù)。SimCLR的方法是將每個(gè)圖像視為一個(gè)單獨(dú)的類別,并對(duì)其進(jìn)行擴(kuò)充,以便為每個(gè)所謂的類生成實(shí)例。例如,與配對(duì)(需要監(jiān)督)不同,下圖每行都是正例,隨機(jī)取兩行,取yige:

  • 正例對(duì): (藍(lán)色的椅子, 白色的椅子)
  • 負(fù)例對(duì): (藍(lán)色的椅子,狗)

有趣的是,數(shù)據(jù)增強(qiáng)在自我監(jiān)督模型的準(zhǔn)確性方面起著決定性的作用,即使它可能會(huì)損害監(jiān)督訓(xùn)練。作者對(duì)各種數(shù)據(jù)增強(qiáng)進(jìn)行了實(shí)驗(yàn),并提出了三種精度最高的增強(qiáng)方法:

  • Crop, resize, flip: The picture is cropped (the area of the cropped piece is between 8% to 100% of the original size, and the aspect ratio between 3/4 and 4/3), resized back to its original dimensions, and flipped horizontally (with a 50% chance).
  • Colour distortion: Colour jitter (alter the brightness, contrast, saturation, and hue) with a hyperparameter to control its intensity in composition with greying out the picture, with probabilities of 80% and 20% respectively.
  • Gaussian blur: A Gaussian kernel 10% of the size of the picture blurs the image half the time. The standard deviation for creating the kernel is randomly picked from the range [0.1, 2.0].
  • 代碼也比較簡(jiǎn)單:

    from torchvision import transforms # Size used in SimCLR size = 224 crop_resize_flip = transforms.Compose([transforms.RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(3/4, 4/3)),transforms.RandomHorizontalFlip(p=0.5)])# Higher means stronger s = 1.0 # 0.8*s and 0.2*s are from the paper colour_jitter = transforms.ColorJitter(brightness=0.8*s, contrast=0.8*s, saturation=0.8*s, hue=0.2*s) colour_jitter = transforms.RandomApply([colour_jitter], p=0.8) colour_distortion = transforms.Compose([colour_jitter,transforms.RandomGrayscale(p=0.2)])kernel_size = int(0.1*size) # The size of the kernel must be odd kernel_size = kernel_size if kernel_size%2 == 1 else kernel_size+1 gaussian_blur = transforms.GaussianBlur(kernel_size, sigma=(0.1, 2.0)) gaussian_blur = transforms.RandomApply([gaussian_blur], p=0.5)augment = transforms.Compose([crop_resize_flip,colour_distortion,gaussian_blur])

    這幾項(xiàng)簡(jiǎn)單的數(shù)據(jù)增強(qiáng)技術(shù)如何能夠提供截然不同的圖像版本,從而提高SSL的性能。接下來,我們將數(shù)據(jù)輸入模型,并指示它在不同的圖像之間進(jìn)行對(duì)比,以獲得沒有任何標(biāo)簽的有用視覺模式。

    有了數(shù)據(jù)增強(qiáng),就可以先隨機(jī)采樣一個(gè)batch,每個(gè)batch兩次增強(qiáng),讓同一張圖的不同view在latent space里靠近,不同圖的view在latent space里遠(yuǎn)離,如下圖所示。SimCLR使用ResNet-50(4x)作為模型,并在無(wú)監(jiān)督學(xué)習(xí)后訓(xùn)練了一個(gè)linear classifier,最后取得了相當(dāng)好的效果。


    自監(jiān)督學(xué)習(xí)和對(duì)比學(xué)習(xí)

    總結(jié)

    以上是生活随笔為你收集整理的自监督学习和对比学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。