[ICCV 2023] Sigmoid Loss for Language Image Pre-Training

Prologue

안녕하세요. 강희승입니다. 이번에는 SigLIP입니다. 기초교육 간 읽은 논문 중 최대한 X-review에 작성되지 않은 논문들을 리뷰해보려고 합니다.

SigLIP도 최근 자주 쓰이는 Visual Backbone으로 알고 있는데, 아마 대부분의 연구원 분들이 SigLIP 논문을 읽어보시진 못 하셨을 것 같습니다. 그런 의미에서 리뷰를 통해 내용을 공유 드리는 차원으로 결정하게 되었습니다. 아마 앞으로 작성할 몇몇 논문들도 비슷한 이유로 선정해서 리뷰하지 않을까 싶습니다.

그럼, ICCV 2023 oral paper인 SigLIP 리뷰 시작하겠습니다.

Motivation & Problems

CLIP이 등장한 이후 연구들에서 다양한 문제점들을 리포팅했습니다. 그 중 SigLIP은 CLIP의 global pairwise similarity 계산 방식이 비효율적라는 문제점을 지적하였습니다.

Webscale의 대규모 data로 Contrastive Learning을 기반으로 pre-trained CLIP은 VLM의 대표 명사가 되었습니다. 이후, Contrastive Learning은 Vision Language Model을 Pre-train할 때 표준적으로 사용하는 방법으로 자리 잡았습니다.

이때, Contrastive Learning은 Softmax를 기반한 Similarity 계산을 수행합니다. Positive image-text pair와 Negative image-text pair를 학습하게 되는데, batch-level softmax-based contrastive loss를 적용합니다. 이는 전체 Image와 전체 Text에 대해 각각 한번씩 pair-wise similarity를 계산하게 됩니다. 여기서 Softmax를 단순하게 구현한다면, 출력값이 불안정해집니다.

softmax(x_i) = \frac{e^{x_i}}{\sum_{j=1}^{N} e^{x_j}}

softmax의 수식은 위와 같은데, 1000과 같은 큰 숫자를 input으로 사용한다면 e^{1000} ≈ 1.97 \times 10^{434} 가 됩니다. 즉, 이러한 값들은 컴퓨터가 계산 및 표현할 수 있는 최대치를 넘게 되어(overflow) inf 로 나타내게 됩니다. 따라서, 안정적인 학습을 수행할 수 없습니다.

이를 위해 Softmax를 구현할 때, Global Normalization을 수행합니다. 이는 softmax를 적용하는 축(각 행 또는 열)의 max 값을 각 값에서 빼주는 단순한 작업입니다. 하지만, max 값을 찾기 위해 softmax를 적용하는 축 전체를 훑어야 합니다.

실제로 구현되는 Softmax Loss는 위와 같습니다. x,y는 각 Image, text embedding을 의미하여, 이에 대한 similarity를 기반한 계산을 수행합니다. 이때, image → text similarity와 text → image similarity 총 두번의 연산을 수행해야 합니다. 즉 Normalization 도 두번 수행해야하는 셈입니다. 이러한 구조는 Softmax Loss가 배치 전체와 결합되어 있는 형태임을 보여줍니다.

Method

Sigmoid Loss for Language Image Pre-Training

저자는 Global Normalization을 전혀 수행하지 않아도 되며, image-text pair 독립적인 Loss 연산을 수행할 수 있는 Sigmoid Loss를 제안하였습니다.

z_{i,j} 는 image-text pair가 positive 쌍일 경우 1, negative 쌍일 경우 -1이 됩니다. 이는 positive pair는 유사도가 높을수록, negative pair는 유사도가 낮을 수록 sigmoid의 결과가 커지도록 설계된 것입니다.

Image와 text embedding은 normalize되어 있어 유사도 값이 [-1, 1] 범위로 제한됩니다. 이를 그대로 sigmoid에 넣으면 output이 0.5 근처에 몰려 학습 신호가 약해지기 때문에, temperature parameter t를 곱해 유사도를 유의미한 logit 범위로 scaling 해줍니다.

Softmax Loss와 다르게 b라는 추가적인 변수를 추가하였습니다. 이는 Positive pair의 갯수는 N 인 반면, Negative pair의 갯수는 N^2 - N 입니다. Negative pair에 대해 데이터 불균형 및 편향이 존재하기 때문에, negative pair가 지배적 학습하게 될 수 있습니다. 즉, 모델은 positive pair에 대한 유사도를 maximize 하도록 학습이 되지 않고 대부분의 유사도를 낮추는 방식으로 학습되게 됩니다. 이를 방지하기 위해 b를 negative prior에 가깝게 초기화하여, 학습을 수행합니다. 전체 Pair가 negative prior에 가깝다면, Positive pair의 학습 신호가 더 강해지고, Contrastive learning의 의도대로 학습을 수행할 수 있게 됩니다.

Efficient “Chunked” Implementation

Contrastive learning은 data parallelism을 사용합니다. Loss를 계산시에, 여러 GPU devices에 분할한다면, Softmax의 경우 Global Normalization을 수행하기 때문에, 모든 embedding을 all-gather 해야하며 이는 비용이 굉장히 큽니다. 또한, O(B^2) 에 해당하는 pairwise similarity matrix를 실제로 생성해야 합니다.

하지만 Sigmoid Loss는 독립적으로 계산이 가능하기 때문에, 위와 같은 이미지처럼, chunking된 데이터들 각 device마다 수행할 수 있습니다. 각 장치에서 계산되는 batch의 크기는 b = \frac{|B|}{D}로 정의 됩니다(D = device 갯수). 이를 다시 공식화 한다면 다음과 같습니다.

수식에서 확인할 수 있듯, 각 device는 local batch 내의 positive, negative pair의 Loss를 계산하며, all-gather할 필요 없이, 단순 합을 통해 빠르고 효율적으로 계산할 수 있습니다. 덕분에 적은 수의 device로도 100만개가 넘는 batch로 학습을 할 수 있게 하였습니다.

Results

저자는 SigLiT과 SigLIP을 제시하였습니다. 각각은 기존의 LiT와 CLIP을 기반으로 Softmax 에서 Sigmoid로 변경한 모델들 입니다. (LiT는 기존 CLIP의 비효율적인 학습 비용을 줄이고, 이미 충분한 vision 모델의 knowledge를 보존하기 위해 image encoder를 freeze한 후 text encoder만 학습한 모델입니다.)

Scaling batch size to the limit

Contrastive Learning은 큰 batch size에서 좋은 성능을 보인다는 의견이 기존에는 지배적이었습니다. 하지만, 대부분은 64k 정도의 batch까지밖에 확장하지 못하였습니다. 하지만, SigLiT을 통해 저자는 1M 까지 키우는 데 성공하였습니다.

SigLiT의 성능은 기존의 직관과 다르게 32K에서 saturate 되고, 256k에서 최고 성능을 보인다고 언급하였습니다. 또한 SigLIP의 경우에는 32k에서 peak를 찍고, 성능의 하락을 보입니다. 이는 32k 보다 batch 크기를 키우는 것은 큰 성능의 향상을 보이지 않을 뿐더러, 일부 모델의 경우에는 성능의 하락을 보일 수 있다는 것을 보입니다.

추가로, 큰 batch와 작은 batch로 training time에 따른 성능 변화를 보였습니다. 해당 지표에서 큰 batch의 경우 성능을 확실히 Outperform하는 것을 확인 할 수 있습니다. 단, 짧은 training time으로 학습한 경우, 절대적 업데이트 단계 수를 줄이게 되어 일정 성능에 도달하기까지 더 많은 시간이 소요된다는 점은 유의해야 한다고 언급하였습니다.

Negative Ratio in Sigmoid Loss

Sigmoid Loss는 per-example losses의 합으로 이루어져 있기 때문에, Negative pair를 조절할 수 있다고 하였습니다. 위에서 설명한 것처럼, 16k의 batch 크기를 예로 해당 배치 내에 positive pair는 16k개가 있는 반면, negative pair는 268M개로 엄청난 갯수 차이를 보입니다. 따라서, 저자는 Negative pair 수에 대해 다음 4가지 조건으로 ablation 실험을 수행하였습니다.

  • Random : 말 그대로 랜덤으로 선택합니다.
  • Hard : highest loss 즉 hardest negative pair만 보존합니다.
  • Easy : lowest loss 즉 easiest negative pair만 보존합니다.
  • Hard + Matching total pairs seen : fixed step을 통해 학습되기 때문에, negative pair를 일부만 선별한다면, 학습과정에서 접한 pair의 수가 감소합니다. 따라서, masking ratio에 비례하여, 학습의 단계 수를 증가시킵니다.

Figure 6은 해당 실험에 대한 결과입니다. Easiest case만 보존한 경우는 성능이 가파르게 감소하는 것을 확인 할 수 있습니다. 그에 반해, hardest case만 보존한 경우, 기존 성능을 거의 그대로 유지합니다. 이는 예상대로, negative pair와 관련된 학습은 대부분 harder case에서 비롯됨을 보입니다. 전체 학습 pair의 수를 공정하게 맞추기 위해 training step을 늘렸을 때 성능이 소폭 향상되었다는 점 또한, 해당 근거를 뒷받침합니다.

저자는 학습이 끝난 시점에서 학습된 bias와 positive,negative 설정에 대한 평균 logit 값을 살펴 보았습니다. Negative pair의 수가 적을 수록 bias와 logit의 평균 값은 positive 방향으로 상승하는 경향을 보였습니다. 이는 negative pair가 적어졌기 때문에, 상대적으로 positive pair의 prior가 강해졌고, 그에 맞추어 bias,logit 증가한 것으로 보입니다. 이때, Hard Negative pair를 더 많이 포함할 경우, positive pair의 logit 즉 유사도가 일정하게 유지 되는 것을 확인할 수 있습니다. 즉, negative 의 절대적 수의 감소가 있었지만, negative case가 hard 하기 때문에 positive에 대한 학습이 여전히 어려웠다고 해석할 수 있습니다.

이 결과를 바탕으로 데이터의 불균형이 크게 고려할 정도의 문제는 아니지만, 더 많은 negative sample을 효율적으로 포함하는 방법이 좋은 접근법임에도 간단한 task는 아니다라고 저자는 언급합니다.

Bias term in Sigmoid Loss

저자는 8k batch와 900M의 samples로 pretrained된 SigLIP을 기반으로 bias, temperature parameter ablation 실험을 수행하였습니다. 데이터셋은 ImageNet, Oxford-IIIT Pet, Cifar100을 사용하였습니다.

Bias를 -10으로 초기화할 경우 모든 task에 대해 일관된 성능 향상을 보입니다. 즉 negative prior에 가깝게 초기화가 된다면, 초기 단계에서 발생 가능한 negative 방향으로의 over-correction 을 방지할 수 있습니다. 반면, 0으로 초기화 할 경우 해당 문제를 해결하지 못하여, 성능이 저조합니다.

Temperature는 작은 값으로 초기화 할 때 좋은 성능을 보이는 것을 확인할 수 있습니다. 이는 해당 값이 작을 수록, exponential 함수의 값이 안정적이기 때문이라고 해석할 수 있을 것 같습니다.

Label Noise Robustness

기존의 연구들은 classification task에서 sigmoid loss를 기반하여 학습된 모델이 label noise에 대해 강건성이 향상된다는 점을 입증하였습니다. 이러한 특성이 Contrastive learning에 Sigmoid loss를 적용해도 동일한 경향을 보일지 확인하기 위해 해당 실험을 진행하였습니다. 저자는 다음과 같은 방식으로 noise를 부여하였습니다.

  • Image : 확률 p로 이미지를 uniform random noise를 가지는 이미지로 대체합니다.
  • Text : 확률 p로 tokenized된 text를 random sample된 토큰들로 새로운 sequence를 구성합니다.
  • Batch Alignment : Batch의 p%만큼 순서를 섞습니다.
  • Image & Text : Image,text 모두 적용합니다.
  • Image & Text & Batch Alignment : 세가지 모두 적용합니다.

결과를 확인했을 때 확률을 키워 noise를 증가시킬 수록 성능 하락 경향은 유사하나, Softmax Loss를 사용하는 것보다 더 성능이 좋은 것을 확인할 수 있습니다.

해당 부분에 대해서는 Sigmoid Loss를 사용해서 단순 Softmax Loss보다 기존 성능이 높기 때문에 보이는 경향이 아닌가 하는 의문이 있습니다. 해당 실험의 결과가 Noise의 증가에 따른 성능 하락의 크기가 줄어드는 것을 보인 것이 아니기 때문에, 실제 강건함을 보이는 것인지는 잘 납득이 되지는 않는 것 같습니다.

Conclusion

기존의 Contrastive Learning의 구조적인 문제를 제시하고, Sigmoid Loss를 제안하면서 기존의 문제를 해결하면서 더 효율적으로 학습하며, 성능적으로도 우수한 것을 보였습니다. 또한 단순히 효율 및 성능적인 부분만 언급한 것이 아니라, Contrastive Learning은 Batch의 크기가 클 수록 더 좋은 성능을 보일 것이라는 기존의 직관을 1M까지 batch를 성공적으로 키워 실험하였고, 해당 실험을 통해 32k에서 saturate되며 성능 향상이 미미하거나, 하락하는 것을 보였습니다. 다만, 모든 모델들이 32k에서 이러한 경향을 보인다는 것은 아니고, 무조건적인 batch 크기 증가가 성능의 향상으로 이어지는 것은 아니다라는 것을 보여준 것입니다. 또한, Negative pair의 수와 구성을 더 효율적으로 설계할 수 있다는 새로운 관점을 제시하였습니다.


이러한 SigLIP은 결과적으로 효율성과 확장성 덕분에 CLIP에 이어 VLM vision backbone으로 자주 채택되는 것 같습니다.

다음 리뷰는 해당 논문의 후속 논문 SigLIP 2를 리뷰해보도록 하겠습니다!

이상으로 SigLIP 리뷰를 마치겠습니다. 읽어주셔서 감사합니다.

Author: 강 희승

4 thoughts on “[ICCV 2023] Sigmoid Loss for Language Image Pre-Training

  1. 안녕하세요 희승님! 리뷰 감사합니다
    클립과 시그립의 핵심 차이는 softmax에서 sigmoid로 바꾼것이다~ 정도만 알고만 있지 이렇게 내용을 자세히 들여다 보긴 처음이네요!

    CLIP의 softmax는 batch 내의 다른 image-text pair들과의 유사도를 함께 고려해서 학습하고 SigLIP은 각각의 pair를 독립적으로 학습하는 것으로 이해했습니다.

    한가지 궁금한게 그렇다면 이렇게 다른 pair들과의 상대적인 유사도를 직접 고려하지 않아도 embedding space가 잘 형성되는 이유가 따로 있을까요? 특히 retrieval처럼 여러 후보 사이의 similarity가 중요한 경우에도 sigmoid loss가 잘 동작하는 이유가 궁금합니다!

    1. 안녕하세요, 찬미님. 댓글 감사합니다!

      SigLIP은 독립적으로 유사도를 계산하지만, 이것이 positive pair에 대한 유사도만 계산하는 것은 아닙니다. 논문에서 의미하는 ‘독립적’ 이라는 것은 Loss를 계산할 때, 축 전체의 embedding 값을 필요로 하지 않는다는 것입니다. Softmax의 수식을 보면, 분모에 축 전체의 embedding 값의 합을 구해야합니다. 또한, 그 전에 scaling을 위한 Global Normalization을 수행하기 위해 축 전체를 훑어야합니다. 즉, Loss를 계산하기 위해서 개별 유사도가 아닌 축 전체 유사도가 필요한 것입니다.
      (여기서 축이라는 것은 image -> text라면 해당 방향으로의 행 또는 열을 의미합니다.)

      하지만, Sigmoid의 경우 하나의 유사도 값만으로도 Loss를 계산할 수 있으며, 전체 Loss는 Positive,Negative pair의 Sigmoid Loss값들의 단순 합으로 구할 수 있습니다.
      더 단순하게 설명하자면, Softmax는 이 image가 text 후보들과의 유사한 정도를 계산한다면, Sigmoid는 개별 image와 text 유사도 자체를 계산한다고 생각하시면 될 것 같습니다.

      감사합니다.

  2. 안녕하세요. 좋은 리뷰 감사합니다.

    덕분에 해당 논문을 알게 된 것 같습니다. 유명한 방법론인가봐요. 덕분에 왜 해당 방법론이 나오게 됐는지 이해할 수 있었습니다.

    여기서 핵심은 global normalization을 수행하지 않아도 되는 것이 키라고 생각했는데요. 해당 방법론에서는 모델이 positivie pair에 대한 유사도를 maximizing하는 것이 아닌 대부분의 유사도를 낮추는 방식을 방지하기 위해서 b를 negative prior에 가깝게 초기화하는 등의 조치를 취했는데요. 대부분의 유사도를 낮추는 방식으로 작용하게 되면 계산량이 늘어나기 때문에 이를 막고자 하는 걸까요? 아니면 애초에 목적이 positive pair에 대한 유사도를 max하는 것이 중요하기 때문에 의도에 맞게 동작시키기 위해서 그런걸까요?

    1. 안녕하세요, 주연님. 댓글 감사합니다!

      데이터 특성상, Positive pair와 Negative pair의 개수는 (N-1)배 만큼 차이가 납니다. 따라서, 이를 그대로 학습하게 된다면, Negative prior가 지배적으로 학습하게 됩니다. Positive pair의 학습 신호보다, Negative pair의 학습 신호가 더 커서 모델이 유사도를 단순히 낮추는 것이 잘 학습하는 것이라고 인지하는 것입니다. 따라서, Contrastive Learning의 의도대로 Positive pair의 유사도를 높히기 위해, bias를 통해 negative prior에 가깝게 초기화하여 positive pair의 학습 신호를 상대적으로 높히는 방식으로 설계하였습니다.

      이 또한, b를 추가한다고, 특정 negative pair에 대해 loss를 구하지 않는 것이 아닙니다. 오히려 b는 learnable parameter이기 때문에, 계산해야할 parameter는 해당 설계에서 더 늘어난 셈입니다. 하지만, 전체 연산 속도에 영향을 끼칠 정도는 아닙니다.

      따라서, 유사도를 낮추는 방식으로 작용하는 것과 계산량과는 무관하며, 말씀하신 positive pair의 유사도를 maximize하기 위한 의도에 의한 것이라고 생각하시면 될 것 같습니다!

      감사합니다.

Leave a Reply