- Vision Transformers (ViTs) adalah kelas model deep learning yang mencapai performa terbaik untuk tugas klasifikasi gambar
- Menerapkan arsitektur transformer yang dirancang untuk pemrosesan bahasa alami (NLP) pada data gambar
- Panduan ini membantu memahami bagaimana model-model ini bekerja dan seperti apa aliran data saat melewati model, dengan menggunakan visualisasi dan penjelasan sederhana
Poin utama
- Gambar dibagi menjadi patch berukuran sama, yaitu p x p
- Vektor yang mengenkode setiap patch memiliki ukuran tetap d
- Sisanya adalah array berukuran n x d (n adalah jumlah patch gambar, d adalah ukuran embedding patch)
- Untuk melatih model secara efektif, array embedding patch diperluas dengan vektor tambahan yang disebut token klasifikasi (token cls)
- Karena tidak ada informasi posisi, ditambahkan vektor embedding posisi yang diinisialisasi secara acak
- Setelah vektor embedding posisi ditambahkan, array berukuran (n+1) x d dimasukkan sebagai input ke transformer
- Di dalam transformer
- 10.1 Vektor embedding patch input transformer di-embedding secara linear menjadi beberapa vektor besar: Q - vektor query, K - vektor key, V - vektor value
- 10.2 Untuk menghitung skor attention A, semua vektor query Q dikalikan dengan semua vektor key K
- 10.3 Setelah matriks skor attention A terbentuk, fungsi
softmax diterapkan pada semua baris agar jumlah setiap baris menjadi 1
- 10.4 Untuk menghitung informasi konteks teragregasi bagi vektor embedding patch pertama, fokus diberikan pada baris pertama dari matriks attention dan elemennya digunakan sebagai bobot untuk vektor value V
- 10.5 Proses ini kemudian diulang untuk semua baris dalam matriks skor attention, sehingga menghasilkan N+1 vektor informasi konteks teragregasi (satu untuk tiap patch + satu untuk token klasifikasi); tahap ini menyelesaikan head attention pertama
- 10.6 Karena ini adalah multi-head attention, seluruh proses dari langkah 10.1 - 10.5 diulangi lagi dengan menggunakan pemetaan QKV yang berbeda
- 10.7 Tahap terakhir layer attention. Semua head digabungkan lalu dipetakan menjadi vektor berukuran d, sama seperti embedding patch
- 10.8 Pada tahap-tahap sebelumnya, layer attention telah selesai, dan jumlah embedding yang tersisa sama persis ukurannya dengan input
- 10.9 Transformer banyak menggunakan residual connection, yang berarti cukup menambahkan input dari layer sebelumnya ke output layer saat ini
- 10.10 Hasil dari residual connection (penjumlahan) menghasilkan vektor dengan ukuran yang sama
- 10.11 Output ini melewati jaringan saraf feed-forward dengan fungsi aktivasi nonlinier
- 10.12 Setelah tahap transformer ada residual connection lain, tetapi diabaikan di sini. Dengan demikian layer transformer selesai. Hasilnya, transformer menghasilkan output dengan ukuran yang sama seperti input
- Seluruh tahap komputasi untuk transformer, dari langkah 10.1 hingga 10.12, kemudian diulang beberapa kali (misalnya 6 kali)
- Langkah terakhir adalah mengidentifikasi output token klasifikasi. Vektor ini akan digunakan pada tahap akhir Vision Transformer
- Pada tahap akhir, token output klasifikasi ini dan satu jaringan saraf fully connected lainnya digunakan untuk memprediksi probabilitas klasifikasi dari gambar input
- Vision Transformer dilatih menggunakan fungsi loss cross-entropy standar yang membandingkan probabilitas kelas yang diprediksi dengan label kelas sebenarnya
- Model dilatih menggunakan backpropagation dan gradient descent, yang memperbarui parameter model untuk meminimalkan fungsi loss
1 komentar
Saya melihat tulisan yang Anda perkenalkan dan merasa akan lebih baik jika dijelaskan bersama gambar, jadi saya meminta izin kepada penulis dan menerjemahkan teks aslinya: