Memahami Transformer lewat Ilustrasi
(jalammar.github.io)- Menjelaskan struktur dan prinsip kerja model Transformer secara visual, serta menunjukkan bagaimana mekanisme attention meningkatkan pembelajaran paralel dan performa terjemahan
- Model terdiri dari tumpukan encoder dan decoder, dan setiap encoder memiliki dua lapisan: self-attention dan jaringan saraf feedforward
- Proses perhitungan self-attention dijelaskan langkah demi langkah hingga tingkat vektor dan matriks, lalu diperluas dengan multi-head attention agar dapat mempelajari beragam ruang representasi
- Memvisualisasikan secara konkret komponen inti seperti positional encoding, residual connection, layer normalization, dan masked attention pada decoder
- Artikel ini merupakan referensi populer yang membantu memahami konsep dasar Transformer dengan mudah, dan juga digunakan dalam kuliah serta materi ajar universitas besar seperti MIT dan Stanford
Gambaran umum Transformer
- Transformer adalah model terjemahan mesin saraf berbasis attention yang menunjukkan performa lebih tinggi pada tugas tertentu dibanding Google Neural Machine Translation sebelumnya
- Keunggulan utamanya adalah mudah diparalelkan, dan direkomendasikan sebagai model referensi di Google Cloud TPU
- Model tersusun dari tumpukan encoder dan decoder, dan tiap encoder memiliki struktur yang sama tetapi tidak berbagi bobot
- Input encoder melewati lapisan self-attention untuk menggabungkan informasi konteks, lalu diteruskan ke jaringan saraf feedforward
- Decoder menambahkan lapisan attention encoder-decoder di atas struktur encoder agar dapat berfokus pada bagian relevan dari kalimat masukan
Alur tensor dan embedding
- Kalimat masukan diubah menjadi vektor 512 dimensi untuk setiap kata melalui algoritme word embedding
- Setiap lapisan encoder menerima dan memproses daftar vektor dengan ukuran yang sama, sementara panjang kalimat ditetapkan sebagai hyperparameter
- Lapisan feedforward memproses vektor di tiap posisi secara independen, sehingga komputasi paralel dimungkinkan
Konsep self-attention
- Self-attention memungkinkan tiap kata merujuk pada kata lain dalam kalimat untuk mempelajari representasi yang lebih baik
- Contoh: dalam “The animal didn’t cross the street because it was too tired”, kata “it” berkaitan dengan “animal”
- Berbeda dengan pemeliharaan hidden state pada RNN, Transformer menggabungkan informasi konteks melalui self-attention
Tahapan perhitungan self-attention
- Dari setiap embedding kata, dibuat vektor Query, Key, Value (dimensi 64)
- Dot product antara Query dan Key digunakan untuk menghitung skor keterkaitan antar kata
- Skor dibagi dengan √64 lalu diterapkan softmax untuk dinormalisasi menjadi distribusi probabilitas
- Setiap vektor Value dikalikan dengan skor softmax lalu dijumlahkan untuk menghasilkan output attention akhir
- Pada implementasi nyata, proses ini dilakukan dengan operasi matriks agar lebih efisien
Multi-head attention
- Menggunakan beberapa attention head (default 8) untuk mempelajari berbagai ruang representasi
- Tiap head memiliki matriks bobot Q/K/V yang independen
- Output dari beberapa head kemudian digabungkan (concat) dan dikombinasikan dengan matriks bobot tambahan WO
- Dengan cara ini, model dapat menangkap berbagai aspek konteks secara bersamaan
Positional encoding
- Karena Transformer tidak secara langsung memproses urutan, vektor posisi ditambahkan ke setiap embedding kata
- Vektor posisi dibuat menggunakan fungsi sin dan cos, sehingga memberikan informasi jarak relatif antar kata
- Pendekatan ini juga dapat diperluas ke kalimat yang lebih panjang daripada data pelatihan
- Pembaruan tahun 2020 juga memperkenalkan metode untuk menyelang-nyelingkan (interleave) dua sinyal tersebut
Residual connection dan normalisasi
- Setiap sublapisan (self-attention, feedforward) menerapkan residual connection dan layer normalization
- Struktur ini membantu mencegah vanishing gradient dan meningkatkan stabilitas pelatihan
Struktur decoder
- Decoder menerima vektor Key/Value dari output encoder untuk melakukan attention encoder-decoder
- Masking digunakan agar model tidak merujuk pada kata di masa depan
- Pada tahap akhir, lapisan Linear dan lapisan Softmax menghasilkan distribusi probabilitas kata
- Misalnya, jika ukuran kosakata adalah 10.000, maka setiap vektor output diubah menjadi distribusi probabilitas berdimensi 10.000
Pelatihan dan fungsi loss
- Saat pelatihan, distribusi probabilitas output model dibandingkan dengan distribusi jawaban benar (one-hot encoding)
- Cross-entropy atau KL divergence digunakan untuk menghitung galat, lalu bobot disesuaikan melalui backpropagation
- Beam search mempertahankan beberapa kandidat terjemahan sekaligus untuk meningkatkan akurasi
Riset lanjutan dan referensi
- Makalah terkait: Attention Is All You Need, Training Tips for the Transformer Model, Self-Attention with Relative Position Representations, dan lainnya
- Materi implementasi: paket Tensor2Tensor, panduan Harvard NLP PyTorch, Colab Notebook
- Transformer kemudian berkembang ke versi yang diperluas di LLM-book.com (Chapter 3), yang membahas model terbaru seperti Multi-Query Attention dan embedding posisi RoPE
Kesimpulan
- Transformer adalah arsitektur berbasis attention yang dapat diparalelkan, dan telah menjadi model inti dalam deep learning modern
- Artikel ini adalah referensi representatif yang menjelaskan struktur, matematika, dan intuisi Transformer secara visual, dan digunakan sebagai bahan rujukan dalam kuliah di Stanford, MIT, Harvard, dan universitas besar lainnya
1 komentar
Opini Hacker News
Saya membaca tulisan ini saat belajar dasar-dasar transformer. Visualisasinya benar-benar membantu
Namun dalam pekerjaan nyata yang menerapkan LLM, mengetahui struktur transformer hampir tidak banyak berguna. Meski begitu, ada rasa tenang secara psikologis karena setidaknya memahami secara samar cara kerjanya di dalam
Mencoba menjelaskan perilaku LLM hanya dari strukturnya adalah jebakan. Model-model terbaru menunjukkan emergent phenomena yang sulit diprediksi karena reinforcement learning dan hal lain semacam itu
Dulu saya yakin LLM tidak akan pandai matematika atau coding, tetapi saya sepenuhnya salah. Pada akhirnya, ada batas dalam menyimpulkan kemampuan model hanya dari arsitekturnya
Belakangan ini saat liburan saya sedang meninjau ulang dengan mengimplementasikan transformer sendiri di PyTorch. Menarik dan menyenangkan
Untuk pemula, saya merekomendasikan materi Sebastian Raschka, LLMs from Scratch.
Kalau ada yang sudah membaca buku Jay Alammar yang terbit pada 2024, saya penasaran apakah buku itu layak direkomendasikan dari sudut pandang yang mutakhir
Karena itu memberi intuisi untuk cepat memahami batasan model. Ini nasihat yang pernah saya dengar langsung dari Clem Delangue di Hugging Face, dan setelah itu saya mempelajari arsitektur LLM lebih dalam; itu sangat membantu
Saya juga memberi nasihat serupa kepada lulusan coding bootcamp — Anda bisa bekerja hanya dengan Python dan React, tetapi memahami arsitektur komputer dan bahasa tingkat rendah akan membuat Anda menjadi developer yang jauh lebih kuat dalam jangka panjang
Token bukan potongan kata, dan pemrosesan bahasa maupun gambar hanya bermakna pada tahap input. Menurut saya kesalahpahaman ini ikut membuat orang meremehkan potensi transformer
Tetapi justru ini adalah fenomena yang meningkatkan kualitas kode. Berkat positional encoding pada causal transformer, model bisa meninggalkan token sementara untuk penalaran lokal lalu dengan mudah melupakannya
Artinya, ia bekerja seperti scratchpad sekali pakai. Solusinya adalah melakukan post-processing pada output LLM, bukan menekan model agar tidak menghasilkan komentar
Sejak rilis ChatGPT, proporsi ketiga kelompok ini hampir tidak berubah, dan jarang sekali ada yang bisa diyakinkan dengan bukti
Visualisasi dari tim Transformer Explainer benar-benar luar biasa.
Melihat Transformer Explainer bersama video 3blue1brown membuat pemahamannya jadi jauh lebih mantap
Dalam komentar yang ditinggalkan langsung oleh penulis Jay Alammar, ia memperkenalkan beberapa materi belajar transformer lain yang bagus
Tautan terkait
Materi penjelasan transformer sekarang sudah begitu banyak sampai terasa seperti tutorial monad.
Ada orang yang merasa telah mendapat pencerahan, padahal sebenarnya masih bingung, lalu tetap ingin menyebarkannya ke mana-mana
Saat belajar konsep matematika atau elektronika juga begitu; penjelasan pertama sering terasa sulit, tetapi setelah melihat beberapa versi, pada akhirnya pemahaman akan semakin dalam
Mungkin saya yang ketinggalan zaman, tetapi saya penasaran apakah transformer sudah sepenuhnya menggantikan arsitektur deep learning lama seperti U-net
Misalnya, CNN masih sangat kuat, terutama untuk tugas vision khusus seperti pencitraan medis
Dalam model yang invariant terhadap rotasi, graph neural network, model point cloud, dan sebagainya, transformer justru bisa kurang cocok
Artinya, masih ada banyak arsitektur alternatif
Makalah terkait: CNNs can still do just as well
Saya punya buku ini, dan saat tim memutuskan untuk memasukkan LLM ke dalam sistem, ini benar-benar menjadi penyelamat
Pada akhirnya LLM adalah sistem sintetis yang meniru penalaran manusia, jadi meskipun tahu struktur internalnya, tetap sulit memprediksi pola kesalahannya
Yang lebih penting adalah membangun feeling lewat pengalaman dan eksperimen
Saya rasa bagian dalam transformer pada akhirnya akan menjadi kurang penting, seperti bagian dalam compiler.
Kebanyakan developer akan lebih tertarik pada “bagaimana memakainya” daripada implementasi internalnya
Seperti sistem operasi, compiler, dan hardware seperti GPU/TPU yang terus disempurnakan, transformer juga harus terus ditingkatkan, jadi peran orang dengan pengetahuan ini justru akan menjadi semakin penting
Tulisan yang luar biasa, dan tampaknya menginspirasi proyek Illustrated Evo 2 yang lebih baru
Tautan blog NVIDIA Research
Orang sering menganggap Key/Query/Value sebagai konsep yang istimewa, padahal transformer pada dasarnya hanyalah struktur perluasan dari perkalian matriks
Jika satu layer pada neural network biasa adalah
matrix * input, maka transformer menghitunginput * MatrixA,input * MatrixB,input * MatrixClalu menggabungkannyaPada akhirnya semuanya adalah pengulangan operasi matriks. Untuk detailnya lihat blog PyTorch
Attention juga dipelajari tanpa bergantung pada posisi, mengubah rentang besar input menjadi nilai baru, dan banyak head belajar aspek yang berbeda secara paralel. Ini mirip dengan konsep kernel pada convolution
Panduan ini benar-benar sangat luas. Menggunakannya bersama alat seperti Claude Code untuk menghasilkan pseudocode PyTorch sangat membantu untuk memahami konsep secara visual
Ini materi yang sangat cocok untuk dipelajari dengan fokus penuh selama beberapa jam