Simulasi Attention
Mulai dari eksplorasi interaktif untuk melihat bagaimana attention bekerja. Simulasi akan membantu kamu memahami bagaimana model fokus pada token tertentu saat membuat prediksi.
Masalah Dengan RNN
Sebelum mempelajari attention, pahami keterbatasan utama RNN. Model ini memproses token secara berurutan sehingga token berikutnya baru bisa dihitung setelah token sebelumnya selesai. Ketergantungan ini membuat RNN sulit diparalelkan.
Setiap langkah perhitungan bergantung pada hidden state sebelumnya, mirip dengan fungsi rekursif yang memanggil dirinya sendiri.
Vanishing Gradient & Exploding Gradient
Pada RNN, gradient dikalikan matriks bobot yang sama di setiap time step. Jika bobot cukup kecil, gradient akan menghilang; jika terlalu besar, gradient meledak. Akibatnya, model cenderung melupakan konteks yang jauh di awal kalimat.
Jangan makan kue itu karena beracun dan kamu akan mati jika kamu makan kue itu...
RNN yang mengalami vanishing gradient bisa saja hanya mempelajari "makan kue itu" dan melupakan kata "Jangan" di awal kalimat.
Mekanisme Attention Dasar
Token yang memiliki makna berdekatan biasanya punya embedding yang mirip. Dengan memanfaatkan kedekatan embedding, kita dapat menghitung bobot attention sehingga model tahu token mana yang relevan untuk tugas tertentu.
Mekanisme Attention yang Lebih Baik
Pendekatan modern, seperti yang digunakan RoBERTa, menghitung attention weight secara otomatis dari data. Dengan demikian model dapat menyelaraskan token input dan output tanpa aturan manual.
Arsitektur Transformer
Paper Attention Is All You Need memperkenalkan arsitektur transformer: encoder-decoder yang dibangun sepenuhnya di atas self-attention, tanpa RNN atau CNN.
Setiap encoder dan decoder terdiri dari blok attention dan feed-forward network dengan residual connection serta layer normalization.
Embedding & Positional Encoding
Embedding mengubah token menjadi vektor numerik. Self-attention saja tidak mengetahui urutan, sehingga kita menambahkan positional encoding ke setiap embedding.
Formulanya:
PE(pos, 2i) = sin(pos / 10000^(2i / d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i / d_model))
Setiap posisi memiliki pola sinus-kosinus yang unik sehingga model dapat membedakan urutan token.
Scaled Dot-Product Attention
Scaled dot-product attention menghitung kesesuaian antara query dan key, lalu menggunakan skor tersebut untuk menggabungkan value.
Attention(Q, K, V) = softmax((QK^T) / sqrt(d_k)) V
Mekanisme ini memungkinkan model fokus ke bagian sequence yang relevan secara dinamis.
Langkah-Langkah Utama
- Bangun matriks
Q,K, danVdari input. - Hitung skor kesesuaian
QK^Tdan skala dengan\sqrt{d_k}. - Terapkan
softmaxuntuk mendapatkan distribusi perhatian. - Gunakan bobot tersebut untuk merata-rata value dan menghasilkan output.
Multi-Head Attention
Alih-alih satu attention head, transformer menggunakan banyak head paralel. Setiap head melihat hubungan yang berbeda antar token, sehingga model dapat menangkap sintaksis, semantik, dan dependensi jarak jauh sekaligus.
Kenapa Multi-Head?
- Menangkap beragam pola dan konteks secara simultan.
- Gradien lebih stabil selama training.
- Memberikan interpretasi yang lebih kaya (setiap head fokus ke aspek berbeda).
- Mudah diadaptasi ke berbagai domain seperti visi komputer dan audio.
- Skalabel untuk model besar karena dapat diparalelkan.
Feed Forward & Residual
Setelah attention, setiap posisi melewati feed-forward network (dua layer linear dengan ReLU). Operasi ini diterapkan per token secara independen.
H_i = ReLU(X_i W_1 + b_1)
FFN(X_i) = H_i W_2 + b_2
Transformer juga menambahkan residual connection dan layer normalization setelah blok attention maupun feed-forward. Teknik ini menstabilkan training dan menjaga aliran gradient.
Z = LayerNorm(X + MultiHead(X))
O = LayerNorm(Z + FFN(Z))
Decoder
Decoder memiliki dua self-attention: satu untuk output sebelumnya
(masked attention) dan satu lagi yang memanfaatkan key/value dari
encoder. Transfer W_K dan W_V membuat
decoder memahami hubungan input-output.
Linear Layer & Softmax
Output decoder diteruskan ke linear layer untuk diproyeksikan ke dimensi vocabulary. Softmax kemudian mengubah skor tersebut menjadi distribusi probabilitas token berikutnya.
"Saya pergi ke __" → {toko: 0.40, taman: 0.22, ...}
Token dengan probabilitas tertinggi dipilih sebagai prediksi, lalu proses berlanjut hingga model menghasilkan token akhir.