Ini episode yang paling lama saya tunda, karena Transformer terasa seperti gunung. Padahal begitu naik, pemandangannya sederhana: satu ide besar bernama attention, plus keberanian membuang semua mekanisme lama. Hampir semua LLM (Large Language Model) yang Anda pakai hari ini — GPT, Claude, Gemini — adalah turunan arsitektur ini dari paper “Attention Is All You Need”. Episode ini catatan cara saya akhirnya paham attention tanpa tenggelam di rumus.
Masalah yang Dipecahkan Attention
Sebelum Transformer, model bahasa dominan memproses teks berurutan (RNN/LSTM): token demi token, kiri ke kanan, seperti membaca lewat celah kertas. Dua masalah fatal: pertama, tidak bisa diparalelkan — token ke-100 harus menunggu token ke-99 selesai, padahal GPU jago paralel. Kedua, memori jangka panjang buruk: informasi dari awal kalimat panjang tergerus sepanjang perjalanan.
Attention membalik pendekatannya: setiap token boleh “melihat” langsung semua token lain dan menimbang mana yang relevan. Analogi programmer: alih-alih iterasi serial dengan variabel state yang terus dioverwrite, attention adalah lookup dengan bobot relevansi — seperti join antar tabel di mana setiap baris menarik informasi dari baris-baris lain sesuai skor kecocokan.
Query, Key, Value
Inti attention adalah trio Query-Key-Value. Setiap token diproyeksikan jadi tiga vektor:
- Query: “apa yang sedang saya cari?” — seperti parameter pencarian.
- Key: “apa label/iklan saya?” — seperti index yang dicocokkan.
- Value: “isi informasi yang saya tawarkan.”
Skor relevansi = dot product Query satu token dengan Key semua token. Skor dinormalisasi softmax jadi bobot, lalu Value semua token dijumlahkan tertimbang oleh bobot itu. Hasilnya: representasi baru tiap token yang sudah “menyerap” konteks relevan. Contoh favorit: pada kalimat “kucing mengejar bola karena ia lelah”, attention membantu model menghubungkan “ia” dengan “kucing”, bukan “bola”.
import torch import torch.nn.functional as F d = 8 # dimensi embedding Q = torch.randn(4, d) # 4 token x d K = torch.randn(4, d) V = torch.randn(4, d) scores = Q @ K.T / d**0.5 # (4, 4): skor tiap token thd semua token weights = F.softmax(scores, dim=-1) out = weights @ V # (4, d): representasi kontekstual print(weights.shape) # (4, 4) print(out.shape) # (4, 8)
Itu self-attention utuh dalam enam baris. Pembagian dengan √d menjaga skala skor agar softmax tidak terlalu tajam. Multi-head attention hanyalah menjalankan mekanisme ini beberapa kali paralel dengan proyeksi berbeda, lalu menggabungkan hasilnya — tiap head belajar jenis relasi yang berbeda.
GPT: Decoder-Only dan Next-Token Prediction
Paper aslinya punya encoder dan decoder untuk terjemahan. GPT mengambil separuh decoder saja, lalu melatihnya dengan tujuan yang sangat sederhana: prediksi token berikutnya. Beri triliunan kata dari internet, model belajar pola bahasa, fakta, bahkan gaya penalaran — semuanya dari satu objective itu. Trik pentingnya bernama causal masking: token dilarang melihat masa depan, supaya prediksi token berikutnya tetap jujur saat training.
| Komponen | Peran |
|---|---|
| Token embedding | Token jadi vektor (episode 15) |
| Positional encoding | Info urutan, karena attention buta posisi |
| Multi-head self-attention | Token saling menukar informasi konteks |
| Feed-forward layer | Olahan per-token, tempat mayoritas parameter |
| Output softmax | Distribusi probabilitas token berikutnya |
Jujur soal batas pemahaman saya: detail presisi di dalam LLM modern — teknik scaling, RLHF, sampling strategy — masih wilayah yang saya pelajari bertahap. Tapi mental model di atas cukup kokoh untuk membaca artikel teknis dan tidak lagi merasa tertipu oleh jargon. Attention bukan sihir; ia perkalian matriks yang dirancang cerdas.
Komentar Terbaru