BiT : Big Transfer


Saya lagi baca hasil riset google tentang BiT : Big Transfer. Jadi di vision buat ngebangun model Deep neural network perlu banyak data berlabel. Contohnya CNN perlu ditraining dengan dataset OpenImages atau Places dengan jumlah data berlabel diatas 1 juta. Cuman gak semua task vision punya data berlabel sebanyak itu.

Pendekatan yang dilakukan biasanya menggunakan model yang udah di pre-training pada data generik (contohnya ImageNet). Alasannya, fitur visual yang dipelajari pada data generik dapat dipakai ulang untuk task lainnya. Walaupun pre-training ini bekerja dengan baik, namun ternyata masih memiliki kelemahan yaitu gak bisa cepat mempelajari konsep baru, dan menggunakannya pada konteks berbeda. Terinspirasi dari BERT dan T5 pada NLP, para peneliti ini percaya bahwa pre-training dengan skala besar dapat meningkatkan performa model komputer vision.

Di paper BIT – Big Transfer : General Visual Representation Learning mereka mengajukan pendekatan pre-training fitur umum menggunakan dataset image pada skala diatas standar saat ini (ILSVRC-2012). Khususnya penting untuk memilih layer normalisasi yang tepat dan melakukan skala ulang kapasitas arsitektur ketika jumlah data pre-training meningkat.

Pendekatan ini menghasilkan performa baik dalam berbagai task visual baru, termasuk pada settingan few-shot recognition dan real-word “objectNet” benchmark. Mereka membagikan model BiT yang dipretraining pada dataset publik, beserta kode dalam TF2, Jax dan Pytorch. Model ini bisa digunakan untuk mencapai performa yang baik walaupun hanya dengan label gamber per kelas yang sedikit.

Pre-training

Untuk menguji efek dari skala data, mereka menguji beberapa pilihan desain dari pre-training (seperti normalisasi dari aktivasi dan weight, model width/depth dan training schedules) pada 3 dataset: 1) ILSVRC-2012 (1,28 juta gambar dengan 1000 kelas) ImageNet-21k (14 juta gambar dengan 21 ribu kelas) dan JFT (300 juta gambar dengan 18 ribu kelas). Kemudian dengan dataset tersebut mereka coba berkonsentrasi pada bagian data besar yang masih kurang dieksplorasi.

Pengujian pertama adalah hubungan antara ukuran dataset dan kapasitas model. Mereka melakukan training arsitektur ResNet klasik, yang menghasilkan performa baik, arsitektur sederhana dan dapat digunakan ulang. Training dilakukan dengan varian dari jaringan 50 layer standar “R50x1” sampai dengan lebar 4x dan 152 layer deep “R152x4” pada setiap dataset diatas. Hasil pengujian menunjukan untuk mendapatkan hasil maksimal dari penabahan data, kita harus meningkatkan juga kapasitas model.

Hasil pengamatan berikutnya adalah, durasi training sangat penting. Bila kita melakukan pre-training pada dataset yang lebih besar tanpa menyesuaikan komputasi dan melakukan training lebih lama, performa yang dihasilkan menjadi jelek. Namun dengan melakukan adaptasi skedul pada dataset baru, peningkatannya akan menjadi signifikan.

Pada saat eksplorasi ditemukan juga modifikasi penting lainnya untuk meningkatkan performa. Yaitu dengan mengganti Batch normalization (BN, yang umum digunakan pada layer yang melakukan stabilisasi training dengan melakukan normalisasi aktivasi) dengan normalisasi group (GN), sangat baik untuk pre-training pada skala besar.

Alasan pertama: Parameter BN (rata-rata dan varianve dari aktivasi neural) perlu penyesuaian antara pre-training dan transfer, sementara GN adalah stateless, sehingga lebih mudah. Kedua, BN menggunakan statistik level-batch , sehingga tidak reliable pada ukuran size per-device yang kecil yang tidak bisa dihindarkan pada model besar. Karena GN tidak menghitung statistik batch level, maka masalah ini juga terselesaikan.

Transfer learning

Seperti model pada BERT, dilakukan juga fine-tune pada model BiT yang sudah di pre-training pada data dari berbagai task downstream, dengan jumlah data berlabel lebih sedikit. Karena model pre-training sudah memiliki pemahaman yang baik tentang fitur visual, maka strategi ini dapat berjalan dengan baik.

Fine-tuning memerlukan banyak pemilihan hyper-parameter seperti learning -rate, weight decay dll. Mereka mengusulkan pendekatan heuristik untuk pemilihan hyper-parameter. Metoda ini dinamakan HyperRule, yang berbasis pada karakteristik dataset high-level, seperti resolusi image dan jumlah contoh data berlabel. Mereka berhasil menerapkan BiT-HyperRule pada 20 task berbeda, diantaranya pada gambar biasa hingga gambar medis.

Ketika melakukan transfer BiT ke task dengan contoh yang sangat sedikit, mereka menemukan bahwa meningkatkan jumlah data generik pre-training secara simultan dan kapasitas arsitektur, kemampuan model untuk beradaptasi pada data baru meningkat drastis.

BiT diuju juga pada VTAB-1k yang merupakan kumpulan dari 19 task berbeda dengan hanya 1000 data pada setiap task. Hasil transfer learning model BiT-l pada semua task menghasilkan angka rata-rata 76,3% peningkatan 5,8% dibandingkan state-of-the art.

Strategi pre-training skala besar dan transfer sederhana terbukti efektif, walaupun pada jumlah data terbatas dengan menguji model BiT-L pada beberapa task vision standar seperti Oxford-pets, Flowers, CIFAR dll.

Mereka menyimpulkan bahwa bila kita memiliki model yang dipre-training pada jumlah data generik besar, sebuah strategi transfer learning sederhana dapat menghasilkan performa baik, baik pada dataset besar maupun yang hanya memiliki data sedikit, sampai hanya 1 data per kelas. Mereka membagi model BiT-M, yaitu R152x4 yang di pre-training pada ImageNet-21k beserta google colabs untuk transfer pada Jax, TF2 dan PyTorch.

Kodenya bisa dilihat disini:

https://github.com/google-research/big_transfer/blob/master/colabs/big_transfer_tf2.ipynb

Penjelasannya ada di blog berikut:

https://ai.googleblog.com/2020/05/open-sourcing-bit-exploring-large-scale.html

Tutorial:

https://blog.tensorflow.org/2020/05/bigtransfer-bit-state-of-art-transfer-learning-computer-vision.html

Semoga Bermanfaat!


Silahkan tuliskan tanggapan, kritik maupun saran