SimCLR – contrastive learning


Saya lagi baca tulisan di google blog tentang SimCLR (A Simple Framework for Contrastive learning of Visual Representation. Blog ini ditulis Ting Chen dan Geoffrey Hinton. Perkembangan model NLP BERT dan T5, telah menunjukan bahwa dengan label kita bisa mendapatkan performa yang bagus. Caranya dengan melakukan pretraining pada sebuah dataset besar yang tidak diberi label, kemudian melakukan fine-tuning pada dataset berlabel yang ukurannya lebih kecil. Selain itu, pretraining pada dataset gambar besar tanpa label, dapat meningkatkan performa dari computer vision, contohnya di Exemplar-CNNInstance DiscriminationCPCAMDIMCMCMoCo dll. Semua metoda diatas termasuk dalam self-supervised learning (SSL). SSL adalah teknik untuk mengubah permasalahan unsupervised menjadi supervised dengan membuat surrogate label (label pengganti) dari dataset yang tidak berlabel.

Namun teknik SSL untuk gambar jauh lebih kompleks dibandingkan nlp, membutuhkan modifikasi arsitektur yang besar, maupun pada training, sehingga belum banyak digunakan. SimCLR “A Simple Framework for Contrastive Learning of Visual Representations”, menyederhanakan dan juga meningkatkan performa SSL pada image. SimCLR mencapai performa (85.8% top-5 akurasi hanya dengan menggunakan 1% dari gambar berlabel pada dataset ImageNet . SimCLR juga dapat dengan mudah disisipkan pada arsitektur supervised learning yang ada.

SimCLR mempelajari representasi umum (generic) dari gambar pada dataset tidak berlabel, kemudian dapat di fine tuning dengan sedikit gambar berlabel untuk mendapatkan performa yang baik pada sebuah task klasifikasi. Representasi umum dipelajari dengan memaksimalkan kesamaan (maximizing agreement) antara tampilan yang ditransformasikan (transformed view) dari sebuah gambar yang sama, dan meminimalkan kesamaan (minimizing agreement) dari gambar yang berbeda, menggunakan metoda contrastive learning.

Meng-update parameter-parameter neural network dengan menggunakan metoda contrastive menyebabkan representasi dari tampilan2 (gambar) yang berhubungan (corresponding) untuk mendekat (attract each other) sementara tampilan2 yang tidak berhubungan saling menjauh.

Awalnya SimCLR secara acak mengamil sampel dari dataset original, kemudian melakukan transformasi dari setiap sampel menggunakan sebuah kombinasi dari teknik augmentasi sederhana (random cropping, random color distorion dan gaussian blur), menghasilkan dua set corresponding views. Alasan dari dibuatnya transformasi sederhana dari sebuah gambar adalah:

  1. Untuk mendapatkan representasi yang konsisten dari gambar yang sama menggunakan transformasi
  2. Karena data pretraining hanya memiliki label yang sedikit, kita tidak mengetahui secara teoritis gambar yang mana yang mengandung obyek kelas
  3. Transformasi sederhana pada gambar, cukup untuk membuat neural network mempelajari representasi sederhana, walaupun transformasi yang lebih rumit juga dapat dilakukan.

SimCLR kemudian menghitung representasi gambar menggunakan CNN berbasis arsitektur resnet. Kemudian SimCLR menghitung proyeksi non-linear dari reresentasi gambar menggunakan sebuah  fully-connected network (seperti MLP), yang memperkuat fitur invarian dan memaksimalkan kemampuan jaringan untuk mengenali berbagai transformasi yang berbeda dari gambar yang sama. SimCLR menggunakan stochastic gradient descent  untuk mengupdate CNN dan MLP untuk meminimalkan loss function dari contrastive objective. Setelah pre-training dari gambar tidak berlabel, kita dapat menggunakan output CNN sebagai representasi gambar atau dapat di fine tune dengan gambar berlabel untuk mendapatkan performa yang bagus untuk downstream task.

Performa SimCLR cukup baik melampaui metoda SSL dan semi supervised learning lainnya pada imagenet. Kode dan pretrained modelnya bisa dilihat pada repository GitHub ini.

blognya bisa dilihat disini:

https://ai.googleblog.com/2020/04/advancing-self-supervised-and-semi.html

video presentasinya:


Silahkan tuliskan tanggapan, kritik maupun saran