( 참고 : https://velog.io/@sjinu/Similarity-Learning-Contrastive-Learning#:~:text=%EB%8C%80%EC%A1%B0%EC%A0%81%20%ED%95%99%EC%8A%B5(Contrastive%20Learning)%EC%9D%98,representation)%EC%9D%84%20%ED%95%99%EC%8A%B5%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9D%B4%EB%8B%A4. )

1. Similarity Learning (SL)

output : 유사도

model의 핵심

  • 비슷한건 높은 유사도
  • 상이한건 낮은 유사도


(1) Regression SL

Data : 2개의 데이터(x)에 대한 유사도 (y label)가 이미 주어져 있음

  • 한계점 : 현실에서, 두 데이터의 유사도를 어떻게 정의..?


(2) Classification SL

Data : 2개의 데이터(x)에 대한 유사 여부 (y label)가 1/0 값으로 이미 주어져 있음

  • 한계점 : “얼마나” 유사한지에 대한 정도 X


(3) Ranking SL

Data : \(\left(x_{i}, x_{i}^{+}, x_{i}^{-}\right)\)

Model : \(f\left(x, x^{+}\right)>f\left(x, x^{-}\right)\)를 보장하도록!

장점

  • 사전에 y label (유사도 정보)가 필요없다.
  • Contrastive Learning (대조적 학습) 이라고도 함


Contrastive Learning

비슷한건 가깝게, 다른건 멀게!

( = Distance Metric Learning )


2. Distance Metric Learning

(1) Metric Learning

데이터들 사이의 distance function을 학습하는 방법론

  • metric = distance ( function )


Metric이 되기 위한 조건

  • (1) Non-negativity: \(f(x, y) \geq 0\)

  • (2) Identity of Discernible: \(f(x, y)=0 \Leftrightarrow x=y\)
  • (3) Symmetry: \(f(x, y)=f(y, x)\)
  • (4) Triangle Inequality: \(f(x, z) \leq f(x, y)+f(y, z)\)


(2) 두 종류의 Metric

a) Pre-defined metric

  • 학습 (X)
  • ex) Euclidean, Manhattan distance..


b) Learned Metric

  • 학습 (O)
  • Ex) Mahalanobis : \(f(x,y) = (x-y)^T M (x-y)\)
    • \(M\) : 주어진 데이터로부터 계산된 행렬


(3) Deep Metric Learning

딥러닝을 사용해서 푸는 많은 데이터들은 매우 고차원

  • ex) Image, Text, Speech …

\(\rightarrow\) 거리 비교가 쉽지/직관적이지 않음!


따라서, 해당 고차원의 이미지를 non-linear projection하여 저차원의 manifold를 찾아야!

\(\rightarrow\) NN을 사용해서!


ex) Siamese CNN (샴 CNN)

Input : 2개의 이미지

Output : 2개의 이미지 사이의 거리


ex) Triplet Network ( Ranking Similarity )

Input : 3개의 이미지

  • 1개의 이미지 : Query Image ( 알고자 하는 이미지 )
  • 2개의 이미지 :
    • (1) POSITIVE 이미지 ( Query Image와 유사 )
    • (2) NEGATIVE 이미지 ( Query Image와 상이 )


3. Loss Function : Contrastive Loss

  • Loss : \(\sum\) (loss of POSITIVE pairs) + \(\sum\) (loss of NEGATIVE pairs)

    • ex) loss of POSITIVE pairs

      • \(L\left(x_{p}, x_{q}\right)=\mid \mid x_{p}-x_{q} \mid \mid ^{2}\)….. 2개가 서로 가까워 지도록
    • ex) loss of NEGATIVE pairs

      • \(L\left(x_{n}, x_{q}\right)=\max \left(0, m^{2}-\mid \mid x_{n}-x_{q}\mid \mid^{2}\right)\) …. 2개가 서로 멀어 지도록

        ( = Hinge Loss , where \(m\) = margin )

      • 의미 : margin 이상 만큼 차이가 난다면, 손실 부여 X

  • 정리 : \(\operatorname{Loss}\left(x_{p}, x_{q}, y\right)=y *\mid \mid x_{p}-x_{q}\mid \mid^{2}+(1-y) * \max \left(0, m^{2}-\mid \mid x_{p}-x_{q}\mid \mid^{2}\right)\).

    • \(y\)는 positive / negative pair의 label
      • positive pair : \(y=1\)
      • negative pair : \(y=0\)


Positive Margin

  • Positive Pair이어도, 너무 같은 공간에 놓이는 것을 방지하기 위해 positive margin 부여 가능!
    • (PM (O)) \(\left[d_{p}-m_{\text {pos }}\right]_{+}+\left[m_{n e g}-d_{n}\right]_{+}\)
    • (PM (X)) \(d_{p} +\left[m_{n e g}-d_{n}\right]_{+}\).


4. 요약

Contrastive Learning의 핵심 :

  • (1) model (DL)
  • (2) metric
    • ex) cosine similarity, euclidean distance …

Categories:

Updated: