안녕하세요 콥스랩(COBS LAB)입니다.
오늘 소개해 드릴 논문은 ‘Intriguing Properties of Contrastive Losses’입니다.
해당 내용은 유튜브 ‘딥러닝 논문 읽기 모임' 중 ‘Intriguing Properties of Contrastive Losses’ 영상 스크립트를 편집한 내용으로, 영상으로도 확인하실 수 있습니다. (영상링크:https://youtu.be/uzsI-dEoK2c)
오늘 발표한 논문은 2021년 NIPS에서 발표가 되었고요. 논문의 저자인 Ting Chen는 Google 리서치에서 발표한 SimCLR의 주 저자이기도 합니다.
논문 내용은 Contrastive loss로 학습시켰을 때 나타나는 세 가지 특성입니다. 첫 번째 특성 같은 경우에는 Contrastive loss를 일반화한 후에 그로부터 나오는 여러 종류의 Contrastive loss 패밀리들의 성능은 어떻게 나오는가에 대한 내용입니다.
두 번째 특성은 다양한 객체가 이미지에 있을 때 Contrastive learning은 representation을 얼마나 잘 학습하는지 알아보는 내용입니다.
마지막 세 번째는 Contrastive learning에서 Augmentation이 중요합니다. 그와 관련해서 발생하는 feature suppression에 대한 내용입니다.
본 논문을 이해하기 위해서 먼저 Contrastive learning 그리고 SimCLR에 대해서 간단하게 짚고 넘어가겠습니다. 먼저 Contrastive learning이란 학습 데이터들을 대조함으로써 representation을 학습하는 방법입니다. 서로 다른 이미지로부터 Augment 된 데이터, 즉 negative pair끼리는 서로 밀어내도록 학습이 됩니다.
같은 이미지로부터 Augment 된 데이터, 즉 positive pair끼리는 서로 가까워지도록 학습이 됩니다. 밀어내고 가까워지는 것을 정의하는 metric 같은 경우는 Euclidian distance가 될 수도 있고 Cosine similarity가 될 수도 있습니다.
이러한 Contrastive learning에는 다양한 종류들이 있습니다. 예를 들어서 N-pair, InfoNCE, Triplet, Lifted Structured 등이 있습니다. 널리 쓰이는 방법은 Cross-Entropy를 이용하는 SimCLR와 같은 방법들입니다. 최종적으로는 레이블 정보 없이도 supervised learning의 성능에 준하는 성능을 낼 수 있게 됩니다
Contrastive learning 방법인 SimCLR를 기본으로 실험을 진행했습니다. SimCLR는 서로 다른 이미지에서 나온 view끼리는 서로 멀어지도록, 같은 이미지에서 나온 view끼리는 가까워지도록 학습합니다. SimCLR 학습과정은 크게 두 단계로 나누어집니다. 먼저 representation을 학습을 시킬 때는 레이블 정보 없이 Contrastive learning을 통해서 학습이 진행됩니다. 이후에 classification task를 수행하기 위해서는 네트워크를 적은 양의 레이블 정보로 fine-tune 합니다.
뒤에 나오는 모든 실험들에서 SimCLR를 학습시킬 때는 기본적으로 두 단계의 학습과정을 통해 학습합니다. 그때 representation을 학습할 때 한 이미지로부터 여러 view를 만들기 위해서 Augmentation을 합니다. SimCLR에서 사용한 Augmentation은 Random Cropping 그리고 Color Distortion입니다. 다른 여러 Augmentation 종류도 있는데 Random Cropping 그리고 Color Distortion을 조합한 경우가 가장 높은 성능을 보여주었습니다.
Contrastive loss들의 성능 비교입니다. Contrastive loss는 보통 첫 번째 식과 같이 Cross-Entropy를 기반으로 한 loss가 많이 사용이 됩니다. 먼저 alignment loss를 minimize 하는 것은 Augment 된 view끼리 일치하도록 해 주고, distribution loss는 representation이 prior distribution과 일치하도록 해줍니다. 따라서 Contrastive loss 형태를 아래에 있는 식과 같이 바꿔줄 수가 있습니다.
Contrastive loss는 Mutual Information 하고도 연관이 있습니다. latent variable U 그리고 V Mutual Information 식입니다. Mutual Information은 uncertainty 그리고 entropy로 이루어져 있습니다. Contrastive loss의 첫 번째 항에서 두 view의 similarity를 증가시키는 것은 두 latent variable U와 V uncertainty를 줄이는 것과 같다고 볼 수 있습니다. 두 번째 항에서 다른 모든 view와의 similarity를 감소시키는 것은 Mutual Information에서 entropy를 높이는 것으로 이해할 수 있습니다.
두 번째 항은 uniform hypersphere를 엔트로피 prior distribution으로 가정을 해서 단순 log sum exp항을 사용하였습니다. 이 항을 minimize 함으로써 entropy를 높이면 representation들이 uniform 하게 분포하게 되고 다양한 정보를 담을 수 있습니다. 만약에 두 번째 항이 제대로 minimize이 되지 않는다면 오른쪽 위 그림처럼 모든 차원의 feature들이 분포하지 않고 낮은 차원에만 존재하게 되면서 차원 붕괴 현상이 발생을 하고 성능이 낮아지는 현상이 벌어지게 됩니다.
두 번째 항이 가정하는 prior가 만약에 uniform hypersphere가 아닌 uniform hypercube 혹은 아니면 normal distribution일 때 성능이 어떻게 나온 지를 알아보았습니다. 다만 uniform hypersphere 외에 다른 sphere들 같은 경우에는 LogSumExp로 계산이 불가능하고 분포 간의 거리를 계산해주는 Sliced Wasserstein Distance를 이용해서 loss를 계산했습니다.
결과입니다. 맨 왼쪽에 (a) CIFAR-10 데이터에 대해서 학습한 경우에 학습이 200 epoch이 넘어가면 성능상 거의 차이가 없었습니다. (b) ImageNet은 2 layer의 projection head에서는 차이가 어느 정도 있습니다. 그러나 3 layer이상 혹은 non-linear projection head를 사용할 경우에는 그러한 차이마저도 사라지게 됩니다.
이 내용은 representation learning with CPC(Contrastive Predictive coding)라는 논문의 어팬딕스에서 가져온 내용입니다
맨 아래 식에서 negative sample들이 개수가 증가하면 Mutual Information이 low boundry를 높이게 되고 더 좋은 representation을 얻을 수 있게 됩니다. 그래서 배치 사이즈를 SimCLR에서 엄청나게 크게 잡는 이유이기도 합니다.
논문에선 깊은 projection head를 사용하는 것은 큰 배치 사이즈를 사용하는 것과 유사한 기능이 있다고 설명합니다.
그래서 아래 결과에서 projection head의 깊이가 깊어질수록, 그리고 batch size가 깊어질 때, 커질 때와 마찬가지로 성능이 좋아지는 것을 확인할 수 있습니다.
이미지에 여러 객체가 있을 때 과연 Contrastive learning은 학습을 잘할 수 있을지 알아봤습니다. SimCLR 그리고 BYOL 모두 instance level에서 object를 정의를 하고 학습을 진행합니다. 그래서 이미지가 단일 representation vector로 변환이 되고, 즉 local region을 측정하지 않고 global representation에 대해서 동작합니다. 여기에서 두 가지 의문점이 제기가 됩니다. 첫 번째, 이미지 안에 여러 개의 객체가 있는 경우에 Contrastive learning은 잘 동작을 할 것인가, 두 번째, global representation 뿐만 아니라 객체에 부분적인 특징점들도 잘 잡아낼 수 있을 것인가입니다.
SimCLR를 통해서 객체가 여러 개인 경우 학습이 되는지 알아보도록 하겠습니다. 보통 self-supervised learning을 할 때 가장 많이 쓰이는 데이터셋들이 MNIST, CIFAR-10 그리고 ImageNet이 있습니다. 이 경우들은 모두 학습하려는 물체가 중앙에 위치해 있습니다. 그래서 본 논문에서는 객체가 여러 개인 통제 가능한 환경을 만들기 위해서 새로운 MultiDigit이라는 데이터셋을 만들었습니다. MultiDigit은 MNIST 데이터셋을 여러 개 합쳐 만든 데이터셋입니다. 각 데이터에 크기는 112 X 112 사이즈고 다만, 숫자들을 어떻게 이미지에 배치할 것인가에 따라서 두 가지 strategy가 있습니다. 첫 번째로 Random입니다. 숫자들을 랜덤 한 위치에 배치하는 경우입니다. In-Grid는 4 X 4의 격자를 만들어서 격자 중에 랜덤 하게 배치하는 경우입니다.
두 종류의 배치 방법에 따라서 SimCLR 그리고 supervised learning을 했을 때 성능을 측정했습니다. 학습방법은 112 MultiDigit 데이터로 ResNet-18을 사전 학습시킨 뒤에 28 X 28 크기의 MNIST로 나머지 classifier를 학습 및 최종 평가를 진행했습니다. Digit이 8개 들어있을 때까지는 성능이 떨어지지 않고 supervised learning만큼 나오는 것을 확인할 수 있습니다. 즉 Contrastive learning 또한 여러 객체가 있는 이미지로부터 학습을 할 수 있다는 의미이고, 다만 숫자들을 배치할 때 랜덤으로 한 경우에는 그 숫자들이 겹치기 때문에, 예를 들어 12 개 이상의 숫자가 들어있는 경우에는 성능이 In-Grid 보다는 더 빨리 떨어지는 것을 확인할 수 있습니다.
다음에는 SimCLR가 지엽적인 특징들을 학습할 수 있는지에 대해서 알아보도록 하겠습니다.
이를 알아보기 위해서는 SimCLR로 학습시킨 네트워크의 중간 피쳐들, Intermediate feature들에 대해서 K-means를 적용시켜서 visualization을 진행했습니다. 만약에 SimCLR가 지엽적인 feature들을 잘 잡아낸다면 그림의 비슷한 부분끼리 grouping이 잘 될 것으로 예상을 할 수 있습니다. 그래서 학습은 ImageNet으로 사전 학습한 ResNet 50 2x로 ImageNet 그리고 COCO 데이터들을 추론을 했고, ResNet의 2, 3 ,4번째 block뒤에 나오는 피쳐들에 대해서 grouping을 진행했습니다. 그리고 supervised learning 및 RGB raw pixel에 대한 clustering 결과와 비교를 진행했습니다.
결과입니다. 왼쪽 그림 (a)는 SimCLR 그리고 supervised learning 그리고 raw pixel에 대해서 K-means로 clustrering 한 결과입니다. K값은 2, 4, 6, 8이 사용되었고 K 값이 커질수록 SimCLR랑 supervised learning 둘 모두 다 개의 얼굴 부위에 따라 grouping이 잘되는 것을 확인할 수 있습니다. 즉, SimCLR와 supervised learning 모두 local feature들을 학습한다는 의미입니다.
오른쪽 그림은 SimCLR의 clustering에서 Intermediate feature들. 즉, block 2, 3, 4 뒤에 나오는 feature들에 대해서 clustering 개수를 2, 4, 6, 8로 했을 때 결과입니다. 이 결과를 세로축 기준으로 살펴보면 뒤에 나오는 feature 들일수록 clustering이 좀 더 object 그리고 파트와 관련된 feature끼리 묶이는 것이 볼 수가 있습니다. 그리고 먼저 앞에서 나오는 feature들일수록 edge와 관련된 feature들끼리 clustering 된 것을 알 수 있습니다.
다른 예시로 COCO 데이터셋에 대한 clustering 결과입니다.(a), (b) 그림 모두의 경우에서 SimCLR랑 supervised learning 둘 다 객체 클래스에 따라 잘 묶이는 것을 볼 수 있습니다. (a) 그림 같은 경우에는 사진이 배경, 사람의 얼굴, 사람의 상의, 하의 이렇게 파트에 따라서 잘 묶여있는 것을 볼 수 있고 (b) 그림에서도 집안의 가구 종류에 따라서 grouping이 된 것을 확인할 수 있습니다.
Contrastive learning에서 알고자 한 특성. feature suppression에 대해서 설명드리겠습니다. SimCLR애 서 Augmentation이 매우 중요한 요소입니다. 특히 Color Augmentation 없이 학습을 진행할 경우에는 성능이 크게 하락합니다. 만약에 컬러 데이터에 어떠한 왜곡 또는 Augment 없이 학습시키는 경우에 Consistency를 높이기 쉬운 컬러 정보만을 학습하게 되고, 이로 인해 다른 피처들은 학습되지 않습니다. 그래서 이 컬러라는 피쳐가 다른 피쳐들을 억제한다고 하여 feature suppression이라고 합니다. 그림 (a) 위아래 모두 각각 한 장 이미지로부터 Cropping을 한 뒤의 컬러 히스토그램입니다. 데이터 간 Consistency로 높이는 Contrastive learning의 특성상 다 positive pair인데 단순히 컬러 분포만 가지고도 같은 이미지로부터 나온 건지, 서로 다른 건지 알 수 있습니다. 그래서 나머지 컬러만 가지고 구별한 Positive 그리고 Negative를 구별한 것이 가능하기 때문에 컬러 이외에 다른 피쳐들은 굳이 학습하지 않아도 Contrastive learning이 진행이 되고 loss는 감소합니다. 반면에 Color Distortion을 진행을 했을 때는 그림 (b)처럼 컬러 피처만으로는, 컬러 히스토그램만 가지고는 서로 positive인지 negative인지 알 수 없습니다. 따라서 이제 컬러 정보 외에 다양한 정보들을 학습할 수 있게 됩니다. 이러한 현상을 feature suppression이라고 하고, 이때 color feature와 object class는 competing feature 관계에 있다고 말합니다.
이 논문에서는 흔히 알고 있는 Augmentation 외에 feature suppression을 일으키는, 또 다른 알려지지 않은 요인은 없는지 알아보고자 했습니다. 제어 가능한 실험 환경을 만들기 위해서 총 세 가지 종류의 데이터셋을 만들었습니다. 첫 번째는 DigitOnlmageNet 데이터셋입니다. lmageNet 데이터 위에 MNIST 데이터를 겹치는 데이터셋입니다. lmageNet 사진 위에 MNIST 데이터셋을 겹침으로써 lmageNet feature 그리고 MNIST feature가 서로 competing feature 관계가 되도록 만들어주고 어느 쪽이 feature에 대해서 더 학습이 잘 되는지 실험을 통해서 알아봤습니다.
실험은 DigitOnlmageNet 데이터셋을 만들 때 총 6만 개의 MNIST 데이터셋 중에서 몇 개의 유니크한 MNIST 데이터셋을 가지고 합성을 했느냐에 따라서 성능을 측정을 했습니다. (a) 그림 supervised learning 같은 경우에는 lmageNet에 대한 정확도가 사용한 MNIST의 개수에 영향이 거의 없는 것을 확인할 수 있습니다. 반면에 그림 (b)는 MNIST 데이터 개수가 많아질수록 MNIST에 대한 정확도는 높아지지만 lmageNet에 대한 성능은 점점 감소하는 trade-off가 발생을 하게 됩니다. 이를 통해서 두 가지를 알 수가 있습니다. 첫 번째는 MNIST의 간단한 feature가 lmageNet의 복잡한 feature보다 우선해서 학습이 되면서 lmageNet의 feature가 학습된 것을 억제한다는 것, 두 번째는 SimCLR 같은 Contrastive loss를 통해서는 이러한 competing feature 간 trade-off가 존재해서 두 종류의 feature에 대해서 동시에 학습할 수가 없다는 것입니다.
feature suppression에 대한 두 번째 실험으로는 두 개 숫자 데이터를 랜덤 하게 위치시키되, 각 숫자의 크기를 다르게 함으로써 어떤 객체에 크기 feature가 학습이 어떤 영향을 미치는지 알아본 실험입니다. 실험을 위해서 MultiDigit 데이터셋을 만들었습니다. 이 데이터 안에 들어간 두 개의 숫자가 있는데 첫 번째 숫자의 크기는 20 x 20으로 고정입니다. 대신에 두 번째 숫자의 크기는 20 x 20에서 80 x 80으로 증가하면서 학습이 진행되었고, 학습은 MultiDigit으로 SimCLR 그리고 supervised learning 방식으로 각각 ResNet-18을 사전학습시켰고 이후에 단일 MNIST 데이터로 classifier를 학습 그리고 평가를 했습니다.
결과입니다. supervised learning의 경우 크기가 변동하는 두 번째 숫자에 크게 관계없이 첫 번째 숫자에 대한 구별 능력이 변동이 없어서 높은 정확도를 보이게 됩니다. 반면에 SimCLR 같은 경우에는 두 번째 숫자의 크기가 커질수록 작은 크기 20 x 20 크기 첫 번째 숫자에 대한 구별 능력은 현저하게 하락을 하게 됩니다. 첫 번째 행, supervised 경우에는 첫번째 두번째 숫자 모두 다 99% 이상의 정확도를 보여주는 반면에 두번째 세번째 항 SimCLR 같은 경우에는 두 번째 숫자의 크기가 커지면 커질수록 첫번째 Digit에 대한 구별 능력은 현저하게 떨어집니다. 그래서 거의 Random 네트워크의 성능에 비슷할 정도로 떨어지게 됩니다. 이를 통해서 Contrastive learning은 이미지 안에서 Dominant 한 물질, 좀 큰 물체가 작은 물체의 학습을 방해한다 라는 것을 알 수 있습니다.
마지막은 RandomBit 실험입니다. RGB 3 채널의 데이터에다가 RandomBit의 채널을 추가해서 총 4 채널이 데이터를 만들어 SimCLR에게 학습시키는 실험입니다. RandomBit는 1에서 log 2n 중에 랜덤으로 sampling 하는 값이고 n은 통제할 수 있는 통제 변인입니다. 다음으로 학습 시에 Augmentation은 RGB채널에만 적용하고 RandomBit 채널에는 적용하지 않습니다. 왜냐하면 RandomBit 채널이 두 개의 Augment 된 view가 있을 때 두 개의 view에 공통적으로 동일한 RandomBit 채널이 들어가게 함으로써 Competing 관계를 RGB feature랑 RandomBit feature로 만들기 위해서 RGB 채널에만 Augmentation을 적용했습니다.
결과입니다. RandomBit의 크기를 통제하는 n의 값이 10 부근부터 급격하게 SimCLR의 성능이 낮아지게 됩니다. 즉 RGB 채널에 있는 모든 정보들을 무시하고 positive pair에 공통적으로 들어가 있는 RandomBit channel 단위 Consistency만을 높이도록 학습이 진행되어서 RGB 데이터의 정보는 모두 다 무시되는 것으로 이해할 수 있습니다. 이런 현상은 다른 Contrastive loss인 BYOL를 쓰고 다른 다양한 배치 사이즈를 제공시켜 보고 momentum contrast를 사용하더라도 계속해서 동일한 현상이 발생하는 것을 확인했습니다.
결론입니다. 첫 번째는 Contrastive learning을 다양한 prior를 가지고 수행을 했을 때 projection head의 깊이가 커지거나 batch size가 커지면 큰 차이가 없습니다. 두 번째는 Contrastive learning도 여러 객체가 있는 이미지로부터 학습할 수 있고 물체의 특징 그리고 부분을 인식하는 어떤 계층적인 학습도 할 수 있습니다. 세 번째는 Contrastive learning을 할 때 feature suppression이 발생합니다. 복잡한 특징보다는 간단한 특징, 그리고 작은 객체보다는 큰 객체, 그리고 RGB 정보보다는 RandomBit의 채널에 있는 쉬운 정보를 먼저 학습해서 나머지 competing feature들을 억제하게 됩니다.
종합해서 정리를 하면 Contrastive learning은 label 정보가 없음에도 불구하고 supervised learning처럼 좋은 특성을 가지고 있습니다. 그러나 Contrastive learning의 Mutual Information을 높이는 학습 방법이 꼭 좋은 representation을 학습한다고 말할 수는 없다 라는 것이 이 논문의 요지입니다.
댓글