-
Self-Supervised Learning (3)학교 수업/ADL 2023. 10. 19. 21:50
SimCLR(2020)부터 다시 시작해본다. SimCLR은 strong augmentation을 사용한다. 각각 다르게 augmented된 image $\tilde{x}_i$와 $\tilde{x}_j$를 사용하여 feature를 extract해서 $h_i$와 $h_j$ 라는 representation을 얻고, projection layer인 MLP를 통과시켜서 나온 $z_i$와 $z_j$를 InfoNCE의 input으로 넣는다.
loss는 N개의 sample을 다르게 augment한 두장의 이미지를 positive, 나머지 2N-2개의 sample들을 negative로 만들어 $z_i$와 $z_j$의 cosine similarity를 계산하는 함수로 positive/(positive+negative) 를 계산한다.
아, 아까 교수님께 메일로 질문드린 것중 추가적인 질문이 있는데, contrasitive learning은 similar한건 가깝게, dissimilar한건 멀게 만든다고 하는데, augment된것만 비슷한게 아니지 않나? 강아지중에서도 같은 class에 있는 것들 중 다르게 생긴 것들이 많은데 어쨌든 같은 class이지 않나.. 물론 세분화해서 annotation할 수는 있지만 그럼 또 downstream task에서 annotation을 빡세게 해야지 그 representation들이 세분화된 class로 transfer되지 않을까?
그다음은 Memory Bank(2018)을 소개한다. negative sample들을 처리하기 위해 커진 batchsize를 해결하기 위한 방법이다. SimCLR 보다 더 일찍 나왔지만, SimCLR의 large batch size 문제를 해결할 수 있는 방법이다. instance contrastive learning을 이용하는데, 각 image가 unique class에 들어가는 거라고 한다. 이게 무슨 말이냐 하면, 일단 그림을 보자.
이미지가 들어오면 feature vector를 뽑고 128 dimension의 space에 project 하고 L2 norm을 적용한다. 여기서 또 이해가 안되는건, 그럼 Memory bank는 negative sample이 없나? reference인 " Unsupervised Feature Learning via Non-Parametric Instance-level Discrimination "논문에 의하면, 이거는 instance level discrimination이고, each image instance는 distinct class로 여겨지며, classifier는 각 instance class들을 구별하기 위해 train된다고 한다. 무슨 말인지 모르겠다. 그냥 각 이미지들을 하나의 클래스로 보고 서로들의 similarity를 NCE로 계산하겠다는건가? 좀더 읽어보겠다. 일단 multi-classification problem을 binary classification problem으로 바꾸는데, binary classification은 data samples와 noise samples로 나누는 걸 말한다.
구체적으로 말하면, memory bank에 있는 feature representation $v$가 $i$-th example과 일치할 확률은,
$$P(i|v) = {{\exp(v^T f_i / \tau)} \over {Z_i}}$$ $$Z_i = \sum_{j=1}^n \exp({v_j}^T f_i / \tau)$$ 이고 $Z_i$는 normalizing constant 이다. 그리고 noise distribution $P_n = 1/n$으로 정의한다. 앞선 연구에 따라 noise samples은 m x data samples 만큼 frequent하다 가정한다고 하는데 앞선 연구가 뭘 말하는지 인용이 안되어있다. 어쨌든 feature $v$와 sample i 의 posterior probability는 $$h(i,v):= P(D=1|i,v) = {{P(i|v)}\over{P(i|v)+mP_n(i)}}$$ 이다. 그래서 approximated training objective는 negative log-posterior distribution을 minimize하는 것이다. 이제까지 반복됐던 NCE loss에 대입해보면, $P(i|v)$는 positive일 확률, $mP_n(i)$는 negative일 확률이다. 근데 $mP_n(i)$가 무슨 말인지 모르겠다. noise sample이 data sample보다 m times 라는 가정을 한다는데 그럼 negative sample의 개수가 positive 개수의 m배라는거고 noise distribution이 1/n 이라는게 무슨말이지? 음 sample i가 negative일 확률인 것 같다. 그래서 총 $mP_n(i)$가 되는거다. 이해완.. 그러면 training objective는, $$J_{NCE}(\theta) = -E_{P_d}[\log h(i,v)]-m\cdot E_{P_n}[\log(1-h(i,v'))]$$ 이고, $P_d$는 actual data distribution, $v$는 $x_i$의 feature, $v'$은 다른 image gkswkddml feature으로 $P_n$에 의해 randomly sampled sample의 feature이다. $v, v'$은 둘다 non-parametric memory bank $V$에서 sample된다.
그러니까 총 n개의 feature를 다 뽑아놓고 자기 자신은 positive, 나머지 n-1장은 negative로 간주하고 binary classification처럼 discrimination하겠다는 거다. 근데 그럼 memory bank는 update되지 않는 것 같다. 아직까지는 그렇게 생각한다. 뭔가 배운 내용이랑 좀 다른 것 같지만..? positive sample만 새로 noise 끼우면 되니까? augmentation도 안하려나? 안한다. augmentation에 대한 언급이 전혀 없다. 음.. 그리고 위의 objective function이 최종이 아니다. 그리고 잠깐.. 약간 묘한 부분이 있다.
'학교 수업 > ADL' 카테고리의 다른 글
Self-Supervised Learning (2) (1) 2023.10.19 Self-Supervised Learning (1) (0) 2023.10.12 Continual Learning (4) (0) 2023.10.06 Continual Learning (3) (0) 2023.09.26 Continual Learning (2) (0) 2023.09.21