[논문 읽기] PCL(2020), Prototypical Contrastive Learning of Unsupervised Representations
Prototypical Contrastive Learning of Unsupervised Representations
Junnan Li, Pan Zhou, Caiming Xiong, Steven C.H Hoi, arXiv 2020
PDF, SSL By SeonghoonYu August 11th, 2021
Summary
Clustering + NCE Loss 를 결합하여 self-supervised learning을 수행합니다.
기존의 contrastive learning의 문제점은 instance discrimination을 수행하기 때문에 비슷한 특징을 지닌 instance들을 negative로 정의하여 서로 밀어냈었습니다. 즉, low-level semantics를 포착하여 discriminative task를 수행했습니다.
이 문제점을 해결하기 위하여 해당 논문은 비슷한 특징을 공유하는 instance를 prototype(=clustering)으로 묶어 instance 단위가 아닌 prototype(=clustering) 단위로 contrastive learning을 수행합니다. 따라서 semantic structure of data를 encode 할 수 있고 high level semantics을 포착합니다.
Momentum Encoder의 출력값으로 E-step clustering을 수행합니다. ProtoNCE를 최적화하여 신경망을 M-step update를 합니다.
ProtoNCE Loss는 다음과 같습니다.
NCE Loss와 clustering과 관련된 loss를 MLE로 도출합니다. 자세한 과정은 논문에 나와있습니다(제가 수학을 잘 못해서 설명을 못합니다. 흑흑).
위 식에서 $\phi$는 clustering의 응집도를 측정하는 파라미터 입니다. NCE Loss에서의 temperature과 동일한 역할을 수행합니다.
Experiment
PCL은 MOCO와 동일한 setting으로 구현했고 PCLv2는 MLP를 추가하고 더 강한 augmentation 와 성능을 향상시키는 여러가지를 사용합니다.
t-SNE 시각화입니다.
What I like about the paper
- Clustering을 pseudo label로 활용하는 논문은 자주 봤지만 Contrastive learning으로 사용한 참신한 아이디어
- momentum encoder의 출력값으로 clustering을 수행하기 때문에 초기 수렴이 굉장히 오래 걸릴 것 같다.
my github about what i read