-
Self-Supervised Learning (3)학교 수업/ADL 2023. 10. 19. 21:50
SimCLR(2020)부터 다시 시작해본다. SimCLR은 strong augmentation을 사용한다. 각각 다르게 augmented된 image ˜xi와 ˜xj를 사용하여 feature를 extract해서 hi와 hj 라는 representation을 얻고, projection layer인 MLP를 통과시켜서 나온 zi와 zj를 InfoNCE의 input으로 넣는다.
SimCLR SimCLR loss loss는 N개의 sample을 다르게 augment한 두장의 이미지를 positive, 나머지 2N-2개의 sample들을 negative로 만들어 zi와 zj의 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에 들어가는 거라고 한다. 이게 무슨 말이냐 하면, 일단 그림을 보자.
Memory Bank 이미지가 들어오면 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(vTfi/τ)Zi Zi=n∑j=1exp(vjTfi/τ) 이고 Zi는 normalizing constant 이다. 그리고 noise distribution Pn=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)P(i|v)+mPn(i) 이다. 그래서 approximated training objective는 negative log-posterior distribution을 minimize하는 것이다. 이제까지 반복됐던 NCE loss에 대입해보면, P(i|v)는 positive일 확률, mPn(i)는 negative일 확률이다. 근데 mPn(i)가 무슨 말인지 모르겠다. noise sample이 data sample보다 m times 라는 가정을 한다는데 그럼 negative sample의 개수가 positive 개수의 m배라는거고 noise distribution이 1/n 이라는게 무슨말이지? 음 sample i가 negative일 확률인 것 같다. 그래서 총 mPn(i)가 되는거다. 이해완.. 그러면 training objective는, JNCE(θ)=−EPd[logh(i,v)]−m⋅EPn[log(1−h(i,v′))] 이고, Pd는 actual data distribution, v는 xi의 feature, v′은 다른 image gkswkddml feature으로 Pn에 의해 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) (1) 2023.09.26 Continual Learning (2) (0) 2023.09.21