Azhary Arliansyah

Articles / Mengapa ChatGPT Bisa Terwujud: Bagaimana Transformers Membangun Kembali Dunia Modern

Mengapa ChatGPT Bisa Terwujud: Bagaimana Transformers Membangun Kembali Dunia Modern

nlp transformer machine learning history
Mengapa ChatGPT Bisa Terwujud: Bagaimana Transformers Membangun Kembali Dunia Modern

Proses pengubahan sekuens, seperti yang terjadi pada Machine Translation, sangat bergantung pada pemetaan urutan input, (x1,,xn)(x_1, \dots, x_n), ke urutan output (y1,,ym)(y_1, \dots, y_m). Selama bertahun-tahun, model dominan untuk tugas-tugas ini didasarkan pada Recurrent Neural Networks (RNNs) dan Convolutional Neural Networks (CNNs) yang kompleks [1].

Namun, pada tahun 2017, paper "Attention Is All You Need" mengusulkan pendekatan yang radikal: meninggalkan rekurensi dan konvolusi sepenuhnya, dan hanya mengandalkan Attention Mechanisms.

Dalam artikel ini, kita akan mengeksplorasi keterbatasan pendahulu Transformer, dan mengapa self-attention menjadi terobosan yang kemudian membentuk AI modern.

Kita akan menggunakan contoh kasus yang bisa ditelusuri untuk melihat bagaimana jaringan yang berbeda memprosesnya: urutan input "The cat sat."

1. Bottleneck Sekuensial RNN dan LSTM

Recurrent Neural Networks, termasuk Long Short-Term Memory (LSTM) dan Gated Recurrent Units (GRU), telah lama ditetapkan sebagai state-of-the-art dalam pemodelan sekuens.

RNN secara intrinsik memproses token secara sekuensial. Untuk urutan input seperti "The cat sat.", jaringan menghasilkan urutan hidden states hth_t, sebagai fungsi dari hidden state sebelumnya ht1h_{t-1} dan input saat ini xtx_t.

ht=f(ht1,xt)h_t = f(h_{t-1}, x_t)

Meskipun LSTM unggul dalam mempertahankan konteks historis, sifat sekuensialnya menciptakan bottleneck besar: mereka tidak dapat diparalelkan. Untuk menghitung h3h_3 untuk "sat", model harus menunggu penyelesaian h1h_1 untuk "The" and h2h_2 untuk "cat".

Mari kita visualisasikan dependency ini menggunakan contoh kita. Kita asumsikan ada 4 token embedding: ["The", "cat", "sat", "."].

The [0.4, -0.1] cat [0.8, 0.3] sat [0.3, 0.7] . [-0.5, 0.2]
h1h_1
[0.2, 0.5]
h2h_2
[-0.1, 0.9]
h3h_3
[0.6, -0.2]
h4h_4
[0.1, 0.8] Dependency To Decoder (Optionally)

*Gambar 1: Pemrosesan sekuensial RNN. Perhatikan ketergantungan hijau—setiap langkah secara matematis memerlukan penyelesaian hidden state langkah sebelumnya ht1h_{t-1}.*

Mari kita lihat langkah-langkah matematis untuk token "sat" (x3x_3):

  1. Input: x3=[0.3,0.7]x_3 = [0.3, 0.7] tiba.
  2. Formula: h3=tanh(Wxx3+Whh2+b)h_3 = \tanh(W_x x_3 + W_h h_2 + b)
  3. Contoh Pengerjaan: Asumsikan Wx,WhW_x, W_h adalah matriks bobot identitas untuk kesederhanaan.
    h3activation([0.3,0.7]+[0.1,0.9])h_3 \approx \text{activation}([0.3, 0.7] + [-0.1, 0.9])
  4. Output: Kita mendapatkan h3=[0.6,0.2]h_3 = [0.6, -0.2].

Seperti yang dapat kita lihat dengan jelas pada langkah 3, menghitung h3=[0.6,0.2]h_3 = [0.6, -0.2] sangat bergantung pada penyelesaian operasi untuk h2=[0.1,0.9]h_2 = [-0.1, 0.9]. Kita tidak dapat mulai menghitung "sat" sebelum "cat" benar-benar selesai. Untuk urutan yang sangat panjang, pipeline sekuensial ini menghalangi komputasi untuk berjalan secara paralel, membuat pelatihan menjadi sangat lambat dan menciptakan masalah Vanishing Gradient, di mana informasi dari token awal yang jauh ("The") menghilang.

2. Convolutional Routes: Parallel, but Local

Untuk mengatasi kurangnya paralelisasi sekuensial, model seperti Convolutional Sequence to Sequence (ConvS2S) dan ByteNet beralih ke Convolutional Neural Networks (CNNs).

CNN dapat memproses semua token sekaligus. Dengan menggunakan kernel (misalnya, ukuran k=2k=2), mereka menelusuri urutan input embedding secara paralel.

The cat sat . Kernel (k=2)
c1c_1
[0.3, 0.4]
c2c_2
[-0.2, 0.6] Dapat dihitung secara paralel!

*Gambar 2: Konvolusi 1D di atas urutan. Setiap output hanya melihat ke kk token lokal. Komputasi terjadi secara simultan.*

Mari kita lihat matematika untuk output CNN c1c_1:

  1. Input: Sebuah kernel berukuran k=2k=2 melihat ke x1x_1 ("The") dan x2x_2 ("cat") secara bersamaan.
  2. Formula: ci=activation(W[xi;xi+1]+b)c_i = \text{activation}(W * [x_i ; x_{i+1}] + b)
  3. Contoh Pengerjaan:
    c1W[[0.4,0.1];[0.8,0.3]]c_1 \approx W * [[0.4, -0.1] ; [0.8, 0.3]]
  4. Output: Kita mendapatkan c1=[0.3,0.4]c_1 = [0.3, 0.4].

Karena komputasi c1c_1 tidak bergantung pada output cic_i lainnya, kita dapat menghitung c1c_1 and c2c_2 pada waktu yang sama di perangkat keras GPU.

Meskipun ini menyelesaikan masalah paralelisasi RNN, ia memperkenalkan kelemahan arsitektur yang parah: restricted receptive fields.

Representasi c1c_1 hanya berisi informasi dari "The" dan "cat". Jika kita ingin menangkap ketergantungan jarak jauh (misalnya, menyesuaikan kata ganti pada token 50 dengan subjek pada token 1), kita harus menumpuk banyak lapisan konvolusional secara linier atau logaritmik (menggunakan konvolusi dilatasi). Jumlah operasi untuk menghubungkan posisi yang jauh tumbuh secara signifikan, membuatnya kompleks untuk mempelajari ketergantungan jangka panjang [1].

3. The Bridge: Bahdanau Attention Mechanisms

Sebelum seluruh arsitektur dirombak, Attention Mechanism lahir sebagai tambahan untuk model RNN untuk machine translation [2].

Dalam model Sequence-to-Sequence (Seq2Seq) tradisional, sebuah encoder memampatkan seluruh kalimat ke dalam satu context vector dengan panjang tetap, dan decoder menghasilkan output darinya. Namun, menekan kalimat berisi 20 kata ke dalam satu vektor menghilangkan detail dalam jumlah besar.

Atensi Bahdanau menyelesaikan ini dengan membiarkan decoder melihat kembali ke semua hidden states encoder hjh_j secara dinamis, menimbang seberapa relevan setiap kata input untuk token yang sedang didekodekan saat ini.

ci=j=1Txαijhjc_i = \sum_{j=1}^{T_x} \alpha_{ij} h_j

Di mana bobot atensi αij\alpha_{ij} dihitung melalui model penyelarasan (seringkali berupa jaringan feed-forward kecil).

Pembobotan dinamis ini menyelesaikan informasi bottleneck. Tetapi model dasarnya masih berupa RNN, yang menyebabkan keterlambatan pengurutan sekuens!

4. Asal Mula Transformer: Self-Attention

Dalam paper "Attention Is All You Need", para peneliti menyadari sesuatu yang mendalam: Jika Atensi sangat kuat dalam menghubungkan kata-kata yang jauh antara encoder dan decoder, mengapa tidak menggunakannya untuk menghubungkan kata-kata dalam urutan yang sama, dan menghapus RNN/CNN sepenuhnya?

Ini melahirkan Self-Attention.

Dalam Self-Attention, setiap token melihat setiap token lainnya dalam urutan secara bersamaan untuk menghitung representasinya sendiri. Jarak komputasi antara dua token mana pun dikurangi menjadi O(1)\mathcal{O}(1).

Bagaimana cara kerjanya? Dengan membuat tiga vektor untuk setiap token: Query (QQ), Key (KK), dan Value (VV). Mari kita periksa langkah demi langkah dengan contoh kita.

Pertama, proyeksi linier menghasilkan tiga vektor berbeda dari input embedding yang sama untuk setiap token:

  • Query (QQ): "Apa yang saya cari?"
  • Key (KK): "Apa yang saya isi?"
  • Value (VV): "Jika Anda cocok dengan Key saya, inilah informasi aktual yang saya berikan."

Persamaan Scaled Dot-Product Attention yang terkenal menghitung interaksinya:

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

Mari kita asumsikan embedding 2 dimensi sederhana (dk=2d_k=2). Ketika token 2 ("cat") menghasilkan Query-nya Qcat=[0.0,0.5]Q_{cat} = [0.0, 0.5], kita melakukan dot product terhadap semua Keys untuk melihat siapa yang cocok:

  1. QcatKthe=[0.0,0.5][0.5,0.1]=0.05Q_{cat} \cdot K_{the} = [0.0, 0.5] \cdot [0.5, -0.1] = -0.05
  2. QcatKcat=[0.0,0.5][0.1,0.5]=0.25Q_{cat} \cdot K_{cat} = [0.0, 0.5] \cdot [-0.1, 0.5] = 0.25
  3. QcatKsat=[0.0,0.5][0.1,0.4]=0.20Q_{cat} \cdot K_{sat} = [0.0, 0.5] \cdot [0.1, 0.4] = 0.20
  4. QcatK.=[0.0,0.5][0.2,0.2]=0.10Q_{cat} \cdot K_{.} = [0.0, 0.5] \cdot [0.2, 0.2] = 0.10

Menerapkan softmax menormalkan skor-skor ini menjadi probabilitas (bobot atensi):

Attention Weights (K) TheQ: ThecatQ: catsatQ: sat.Q: . 0.290.220.240.250.210.280.270.240.210.280.270.240.250.250.250.25

*Gambar 3: Matriks bobot Self-Attention untuk "The cat sat.". Setiap baris mewakili token yang bertindak sebagai Query yang mencoba menemukan Keys yang relevan di seluruh urutan.*

Seperti yang divisualisasikan pada Gambar 3, token "cat" memfokuskan atensinya paling tinggi pada dirinya sendiri (0.280.28) dan kata kerja predikatnya "sat" (0.270.27).

Akhirnya, mari kita lihat bagaimana representasi numerik untuk "cat" dihasilkan menggunakan Values (VV).

  1. Input: Bobot atensi untuk "cat": [0.21, 0.28, 0.27, 0.24], dan vektor Value urutan tersebut (asumsikan sama dengan input embedding: Vthe=[0.4,0.1]V_{the}=[0.4, -0.1], dst).
  2. Formula: zcat=αcat,jVjz_{cat} = \sum \alpha_{cat, j} V_j
  3. Contoh Pengerjaan:
    zcat=0.21×[0.4,0.1]+0.28×[0.8,0.3]+0.27×[0.3,0.7]+0.24×[0.5,0.2]z_{cat} = 0.21 \times [0.4, -0.1] + 0.28 \times [0.8, 0.3] + 0.27 \times [0.3, 0.7] + 0.24 \times [-0.5, 0.2]
  4. Output: Setelah perhitungan, zcat=[0.269,0.3]z_{cat} = [0.269, 0.3]

Dengan menjumlahkan vektor yang berbobot ini, model menghasilkan representasi yang terpadu secara matematis (zcatz_{cat}) yang telah mengontekstualisasikan keberadaan "sat" secara instan, tanpa ketergantungan sekuensial (tidak seperti RNN) dan tanpa batasan jendela lokal (tidak seperti CNN). Jarak dari kata mana pun ke kata lainnya tepat 1 langkah! Itulah mengapa Transformer sangat unggul.

5. Multi-Head Attention: Melihat dari Berbagai Sudut

Sebuah operasi atensi tunggal mungkin terlalu fokus pada satu jenis hubungan (misalnya, kata kerja yang berdekatan). Untuk mengatasinya, Transformer menerapkan Multi-Head Attention. Alih-alih menghitung atensi sekali, model menghitungnya hh kali secara paralel di berbagai subspace (dengan menggunakan bobot proyeksi yang berbeda untuk Q,K,VQ, K, V).

Perhitungan paralel ini bertindak mirip dengan beberapa feature channels dalam CNN tetapi tanpa batasan jendela lokal. Setiap head melihat struktur tata bahasa/semantik yang berbeda secara dinamis.

6. Arsitektur Transformer

Karena Self-Attention beroperasi secara universal dan instan di atas seluruh urutan, model tersebut secara asli tidak tahu tentang urutan token. Kata "cat" di posisi 2 atau posisi 100 terlihat identik bagi mekanisme atensi.

Untuk memperbaiki ini, makalah aslinya memperkenalkan Positional Encodings—frekuensi sinus dan kosinus yang ditambahkan ke input embedding sehingga kata-kata yang identik memiliki fingerprints matematika yang berbeda secara unik tergantung pada posisi tepatnya.

Dengan self-attention menggantikan rekurensi dan konvolusi, Vaswani et al. menyatukannya dalam arsitektur Sequence-to-Sequence yang lengkap:

  1. Encoder Layer: Tumpukan lapisan Multi-Head Self-Attention diikuti oleh point-wise Feed-Forward Networks.
  2. Decoder Layer: Mirip dengan encoder, tetapi menggunakan Masked Self-Attention (sehingga tidak dapat melihat kata target di masa depan selama pembuatan teks terjemahan) dan mekanisme Encoder-Decoder Attention kedua, di mana Query berasal dari decoder dan Keys/Values berasal dari output akhir encoder.

7. Pergeseran Permanen dalam AI

Dengan membuang dependency sekuensial (RNN) dan batas local reception (CNN), Transformer mencapai dua keunggulan global yang masif:

  1. Global Distance O(1): Setiap kata berjarak tepat satu langkah matematika dari setiap kata lainnya.
  2. Infinite parallelization: Operasi matriks dapat menghitung seluruh urutan secara bersamaan. Pengurangan drastis dalam waktu pelatihan secara fundamental memungkinkan para peneliti untuk menskalakan jaringan menjadi jutaan, lalu miliaran parameter, mengawali terbitnya Large Language Models (LLMs) seperti GPT, BERT, dan PaLM.

"Attention Is All You Need" melakukan persis seperti yang dinyatakan dalam judulnya: ia melucuti wrapper konvolusi dan rekurensi, membuktikan bahwa self-attention saja adalah mesin yang jauh lebih unggul.

References

1. Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and Uszkoreit, Jakob and Jones, Llion and Gomez, Aidan N and Kaiser, Lukasz and Polosukhin, Illia (2017). Attention is all you need. Advances in neural information processing systems.
2. Bahdanau, Dzmitry and Cho, Kyunghyun and Bengio, Yoshua (2014). Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473.
3. Brown, Tom and Mann, Benjamin and Ryder, Nick and Subbiah, Melanie and Kaplan, Jared D and Dhariwal, Prafulla and Neelakantan, Arvind and Shyam, Pranav and Sastry, Girish and Askell, Amanda and others (2020). Language models are few-shot learners. Advances in neural information processing systems.
4. OpenAI (2023). GPT-4 Technical Report. arXiv preprint arXiv:2303.08774.