IF3270 · Pembelajaran Mesin - RNN, LSTM, Encoder-Decoder, Attention, Reinforcement Learning · UAS Semester II 2024-2025 (17 Juni 2025)

Soal + Pembahasan Lengkap UAS IF3270 Pembelajaran Mesin 2024-2025

RNNLSTMEncoder-DecoderAttentionQ-Learning
References: Lecture Slides IF3270 - RNN 1, RNN 2, Attention & Transformer, Reinforcement Learning

Bagian I - Pilihan Berganda (Nilai 30, @2.5)

Petunjuk Soal Beri tanda O pada pilihan yang tepat, dan tanda X pada pilihan yang salah. Pilihan yang tidak diberi tanda tidak mendapat nilai.


Soal 1

Soal: Terdapat spesifikasi arsitektur neural network “many-to-one” yang menerima input terdiri atas 3 fitur, sebuah hidden layer berupa RNN yang terdiri atas 4 neuron dengan 5 time-step, dan sebuah output layer yang terdiri atas dua neuron. Jika digambarkan dalam ‘unfolded network’ tanpa mengilustrasikan bias, maka arsitekturnya adalah sebagai berikut.

Soal 1 - Pilihan arsitektur unfolded network a–d

Soal 1 - Pilihan arsitektur unfolded network e

Analisis setiap pilihan (berdasarkan gambar soal):

  • a - 5 blok h(4), setiap blok menerima x(3), output y1 & y2 muncul dari dua timestep terakhir (t=4 dan t=5). → X ❌ - many-to-one seharusnya output hanya dari 1 timestep terakhir saja, bukan dua.

  • b - 5 blok h(4), tetapi input-nya adalah “Fitur 1 x1”, “Fitur 2 x1”, “Fitur 3 x1” (masing-masing 1 fitur per timestep berbeda), output y1 & y2 dari dua timestep terakhir. → X ❌ - Interpretasi fitur salah: seharusnya tiap timestep menerima vektor 3 fitur (x(3)x(3)), bukan 1 fitur per timestep. Lagi pula output dari 2 timestep.

  • c - Hanya 3 blok h(4), input x(3) tiap timestep, output y(2) dari timestep terakhir saja. → X ❌ - Jumlah timestep hanya 3, seharusnya 5.

  • d - 4 blok (h1, h2, h3, h4) dengan input masing-masing “Fitur 1”, “Fitur 2”, “Fitur 3” sebagai 3 timestep terpisah, output y(2) dari timestep terakhir. → X ❌ - 3 fitur diinterpretasikan sebagai 3 timestep (bukan vektor fitur dalam 1 timestep), dan hanya 4 blok hidden. Tidak sesuai.

  • e - 5 blok h(4), setiap blok menerima x(3) (vektor 3 fitur), output y(2) hanya dari timestep t=5 (terakhir) via bobot V. → O ✅ - Sesuai spesifikasi: 5 timestep, 4 neuron hidden, 3 fitur input, output hanya dari timestep terakhir = many-to-one.

PilihanJawaban
aX
bX
cX
dX
eO

Soal 2

Soal: Terdapat arsitektur neural network “many-to-many (equal input-output)” yang menerima dataset pasangan input-output sebagai berikut; sebuah hidden layer berupa RNN dengan 2 neuron dan 3 time-steps dengan fungsi aktivasi tanh, dan sebuah output layer dengan 1 neuron dan fungsi aktivasi sigmoid. Timestep dimulai dari t=1. Tabel pasangan input-output:

tx1x2x3y
10.10.20.30.4
20.40.50.60.5
30.70.80.90.6

Kunci InterpretasiMany-to-many equal: setiap baris = satu time-step. Tiga kolom input = 3 fitur yang diterima sekaligus pada timestep tersebut.

a. Untuk t=1, maka data inputnya adalah: ⟨0.1, 0.2, 0.3⟩.O ✅ - Baris pertama, kolom x1 x2 x3.

b. Untuk t=2, maka data inputnya adalah: ⟨0.2, 0.5, 0.8⟩.X ❌ - Input t=2 adalah baris kedua = ⟨0.4, 0.5, 0.6⟩. Pilihan ⟨0.2, 0.5, 0.8⟩ adalah nilai kolom x1 di t=1,2,3 dibaca ke bawah (interpretasi columnar yang salah untuk many-to-many equal).

c. Nilai neuron pertama di hidden layer t=2 adalah: tanh(0.4×0.1+0.5×0.1+0.6×0.1+0.2×x+0.1)\tanh(0.4 \times 0.1 + 0.5 \times 0.1 + 0.6 \times 0.1 + 0.2 \times x + 0.1)O ✅ - Input t=2 = ⟨0.4, 0.5, 0.6⟩, tiap fitur × bobot 0.1, plus kontribusi hidden sebelumnya 0.2×x0.2 \times x, plus bias 0.1.

d. Nilai neuron pertama di hidden layer t=2 adalah: tanh(0.2×0.1+0.5×0.1+0.8×0.1+0.2×x+0.1)\tanh(0.2 \times 0.1 + 0.5 \times 0.1 + 0.8 \times 0.1 + 0.2 \times x + 0.1)X ❌ - Nilai 0.2 dan 0.8 adalah data kolom x1 di t=1 dan t=3, bukan input t=2 yang benar ⟨0.4, 0.5, 0.6⟩.

e. Jika nilai hidden t=2 adalah z=[z1,z2]z = [z_1, z_2], nilai output t=2 adalah: sigmoid(0.3×z1+0.3×z2+0.3)\text{sigmoid}(0.3 \times z_1 + 0.3 \times z_2 + 0.3)O ✅ - 2 hidden neuron masing-masing berbobot 0.3, bias 0.3, ke 1 neuron output.

PilihanJawaban
aO
bX
cO
dX
eO

Soal 3

Soal: Terdapat spesifikasi arsitektur neural network sebagai berikut. Input terdiri atas 10 fitur. Hidden layer pertama adalah Simple RNN dengan enam neuron, hidden layer kedua adalah Simple RNN dengan lima neuron, hidden layer ketiga adalah Simple RNN dengan empat neuron, hidden layer keempat adalah dense layer dengan tiga neuron, dan sebuah output layer dengan dua neuron. Banyaknya parameter yang perlu dipelajari adalah:

  • a. 234
  • b. 225
  • c. 831
  • d. 148
  • e. 200

Formula Jumlah ParameterSimple RNN dengan nn neuron, menerima input dari dimensi mm: params=n×mWxh+n×nWhh+nbh=(m+n+1)×n\text{params} = \underbrace{n \times m}_{W_{xh}} + \underbrace{n \times n}_{W_{hh}} + \underbrace{n}_{b_h} = (m + n + 1) \times n

Dense layer dengan kk neuron, input dari dimensi mm: params=(m+1)×k\text{params} = (m + 1) \times k

Layer 1 - Simple RNN, 6 neuron, input m=10m=10: params1=(m+n+1)×n=(10+6+1)×6=17×6=102\text{params}_1 = (m + n + 1) \times n = (10 + 6 + 1) \times 6 = 17 \times 6 = 102

Layer 2 - Simple RNN, 5 neuron, input dari 6 neuron (m=6m=6): params2=(m+n+1)×n=(6+5+1)×5=12×5=60\text{params}_2 = (m + n + 1) \times n = (6 + 5 + 1) \times 5 = 12 \times 5 = 60

Layer 3 - Simple RNN, 4 neuron, input dari 5 neuron (m=5m=5): params3=(m+n+1)×n=(5+4+1)×4=10×4=40\text{params}_3 = (m + n + 1) \times n = (5 + 4 + 1) \times 4 = 10 \times 4 = 40

Layer 4 - Dense, 3 neuron, input dari 4 neuron (m=4m=4): params4=(m+1)×k=(4+1)×3=5×3=15\text{params}_4 = (m + 1) \times k = (4 + 1) \times 3 = 5 \times 3 = 15

Output Layer - Dense, 2 neuron, input dari 3 neuron (m=3m=3): params5=(m+1)×k=(3+1)×2=4×2=8\text{params}_5 = (m + 1) \times k = (3 + 1) \times 2 = 4 \times 2 = 8

Total: Total=102+60+40+15+8=225\text{Total} = 102 + 60 + 40 + 15 + 8 = \boxed{225}

Jawaban: b. 225


Soal 4

Soal: Tentukan pernyataan yang benar dari pernyataan-pernyataan berikut ini.

a. Context Vector berusaha menangkap informasi dari hidden unit timestep terakhir pada Encoder, jadi kita tidak bisa memanfaatkannya pada arsitektur “one-to-many”.X ❌ - Benar bahwa context vector berasal dari hidden state terakhir encoder, namun tidak benar bahwa ia tidak bisa dipakai untuk one-to-many. Context vector bisa menjadi initial hidden state decoder untuk berbagai konfigurasi arsitektur.

b. Context Vector hasil dari tahap encoder hanya digunakan oleh bagian Decoder timestep pertama saja.X ❌ - Pada arsitektur standar (tanpa attention), context vector c=hNxc = h_{N_x} digunakan sebagai initial hidden state s0s_0 decoder dan biasanya juga disertakan sebagai input di setiap timestep decoder, bukan hanya timestep pertama.

c. Dalam arsitektur Encoder-Decoder, tidak ada input dari dataset pelatihan yang menjadi masukan untuk tahap Decoder.X ❌ - Selama training (dengan teacher forcing), output target dari data pelatihan (yt1y_{t-1}) digunakan sebagai input decoder timestep berikutnya.

d. Dalam arsitektur Encoder-Decoder “many-to-many” di mana panjang input mungkin berbeda dengan panjang output, output dari timestep sebelumnya menjadi masukan untuk Decoder.O ✅ - Inilah mekanisme decoder autoregresif: st=f(st1,yt1,c)s_t = f(s_{t-1}, y_{t-1}, c) dan yt=g(st)y_t = g(s_t).

e. Salah satu contoh pemanfaatan Encoder-Decoder dengan arsitektur “many-to-one” adalah menerima masukan berupa video dan menghasilkan teks kalimat penjelasannya (video captioning).X ❌ - Video captioning menghasilkan kalimat = sequence token, bukan satu nilai. Arsitekturnya adalah many-to-many (encoder memproses sequence frame video, decoder menghasilkan sequence kata). Bukan many-to-one.

PilihanJawaban
aX
bX
cX
dO
eX

Soal 5

Soal: Model estimasi jumlah penumpang satu bulan berikutnya dari suatu perusahaan transportasi dikembangkan berdasarkan time series data 10 tahun terakhir. Model dapat dikembangkan dengan model RNN berdasarkan data 3 bulan sebelumnya, tentukan kebenaran pernyataan berikut ini.

a. Arsitektur one-to-many tidak dapat digunakan.O ✅ - Input adalah sequence 3 nilai (3 bulan sebelumnya) → arsitektur many-to-one yang tepat. One-to-many mengasumsikan input tunggal, tidak cocok.

b. Output layer dari model RNN ini memiliki satu neuron, sesuai untuk task regresi.O ✅ - Prediksi jumlah penumpang (nilai kontinu) = regresi → 1 neuron output, aktivasi linear.

c. Jumlah timestep dari model RNN ini adalah 10.X ❌ - Jumlah timestep = panjang input sequence = 3 (3 bulan sebelumnya). Data 10 tahun = ukuran dataset, bukan timestep.

d. Output akhir model berupa sequence 3 nilai.X ❌ - Output adalah 1 nilai (prediksi 1 bulan berikutnya).

PilihanJawaban
aO
bO
cX
dX

Soal 6

Soal: Mesin penerjemah mampu menerima teks bahasa sumber dan menghasilkan teks bahasa target. Jika mesin penerjemah dikembangkan dengan model RNN, tentukan kebenaran pernyataan berikut ini.

a. Arsitektur one-to-many atau many-to-one tidak dapat digunakan.O ✅ - Machine translation memerlukan many-to-many (seq2seq) karena baik input maupun output adalah sequence.

b. Output layer dari model RNN memiliki jumlah neuron sebanyak jumlah vocabulary unik bahasa sumber dari data latih.X ❌ - Output layer berukuran vocabulary bahasa target, karena model memprediksi token dalam bahasa target.

c. Karena panjang input ≠ panjang output, model RNN tersebut dirancang untuk melakukan task sequence labeling.X ❌ - Sequence labeling = input dan output sama panjang (misal NER). Machine translation adalah seq2seq / sequence generation, bukan sequence labeling.

d. Karena panjang input ≠ panjang output, diperlukan arsitektur many-to-many dengan output akhir berupa sequence vocabulary sesuai indeks nilai dari output layer setiap timestep.O ✅ - Encoder-Decoder many-to-many; decoder menghasilkan distribusi softmax atas vocabulary di tiap timestep, dan token dipilih via argmax.

PilihanJawaban
aO
bX
cX
dO

Soal 7

Soal: Model analisis sentimen teks dikembangkan berdasarkan kumpulan review teks yang telah berlabel positif atau negatif. Model dapat dikembangkan dengan model RNN, tentukan kebenaran pernyataan berikut ini.

a. Arsitektur many-to-one tidak dapat digunakan.X ❌ - Justru many-to-one adalah arsitektur yang paling sesuai: banyak token → 1 label sentimen.

b. Output layer dari model RNN memiliki dua neuron sigmoid.X ❌ - Untuk klasifikasi biner standar, cukup 1 neuron sigmoid. Dua neuron sigmoid bukan pendekatan yang umum (yang umum adalah 2 neuron + softmax, atau 1 sigmoid).

c. Model RNN ini termasuk melakukan task regresi.X ❌ - Analisis sentimen adalah klasifikasi, bukan regresi.

d. Output akhir dari model diambil dari output layer timestep terakhir.O ✅ - Pada many-to-one, hanya hidden state timestep terakhir yang diumpankan ke output layer.

PilihanJawaban
aX
bX
cX
dO

Soal 8

Soal: Manakah dari pernyataan berikut yang benar mengenai perbedaan memori antara RNN dan FFNN?

a. FFNN dapat menyimpan konteks waktu jika jumlah layer cukup banyak.X ❌ - Menambah layer FFNN tidak memberikan kemampuan memori temporal; FFNN tidak punya recurrent connection.

b. RNN mampu mempelajari hubungan temporal dalam data.O ✅ - Hidden state hth_t membawa informasi dari timestep sebelumnya.

c. FFNN hanya mampu memetakan input ke output tanpa mengingat input sebelumnya.O ✅ - FFNN bersifat stateless; setiap forward pass independen.

d. RNN dapat menyimpan informasi jangka pendek atau panjang tergantung arsitekturnya.O ✅ - Simple RNN: short-term memory (vanishing gradient). LSTM/GRU: long-term memory.

PilihanJawaban
aX
bO
cO
dO

Soal 9

Soal: Bidirectional RNN (Bi-RNN) dibandingkan dengan RNN untuk ukuran arsitektur yang setara.

a. Bi-RNN menghasilkan keluaran pada output layer sejumlah dua kali keluaran RNN.X ❌ - Jumlah output layer tidak berubah; yang berbeda adalah representasi hidden (digabung dari 2 arah), bukan ukuran output layer.

b. Bi-RNN memerlukan jumlah time step setengah kali lipat jumlah time step RNN.X ❌ - Jumlah timestep sama; Bi-RNN memproses sequence yang sama, dua kali (forward + backward).

c. RNN dan Bi-RNN keduanya memproses data masukan dari masa lalu ke masa depan.X ❌ - RNN hanya forward. Bi-RNN memproses dua arah: forward (kiri→kanan) dan backward (kanan→kiri).

d. Bi-RNN memiliki jumlah parameter lebih banyak daripada RNN.O ✅ - Bi-RNN = 2 RNN (forward + backward) → parameternya ~2× RNN dengan ukuran setara.

PilihanJawaban
aX
bX
cX
dO

Soal 10

Soal: Manakah pernyataan yang benar mengenai Bi-RNN?

a. Bi-RNN hanya cocok untuk data teks.X ❌ - Bi-RNN dapat digunakan untuk semua data sekuensial: audio, time series, sinyal biologis, dll.

b. Hasil dari dua arah forward state dan backward state pada Bi-RNN digabungkan dengan cara penjumlahan.X ❌ - Penggabungan yang paling umum adalah concatenation [ht;ht][h_t^{\to}; h_t^{\leftarrow}], bukan penjumlahan.

c. Bi-RNN banyak digunakan pada persoalan sequence tagging, seperti sentiment analysis.O ✅ - Klaim umumnya benar: sequence tagging (NER, POS tagging, dll.) memang use case utama Bi-RNN karena butuh konteks dari dua arah.

Tapi contohnya kurang tepatSentiment analysis bukan contoh sequence tagging - ia adalah many-to-one classification (satu label untuk seluruh sequence), seperti yang sudah dibahas di Soal 7. Contoh sequence tagging yang lebih tepat: NER atau POS tagging (keduanya many-to-many, satu label per token). Pernyataan ini tetap dinilai O karena klaim utamanya (Bi-RNN untuk sequence tagging) benar, namun contoh yang diberikan di soal sebenarnya keliru/menyesatkan.

d. Bi-RNN mengabaikan urutan data masukan.X ❌ - Bi-RNN justru sangat bergantung urutan; ia memproses sequence secara berurutan dari dua arah.

PilihanJawaban
aX
bX
cO
dX

Soal 11

Soal: Dalam sequence labeling dengan LSTM, bagaimana cara umum mengonversi output hidden state menjadi label kelas?

  • a. Dengan membandingkan hidden state dengan semua input
  • b. Dengan menggunakan softmax layer setelah hidden state ✅
  • c. Dengan menghitung rata-rata semua hidden state
  • d. Dengan fungsi aktivasi sigmoid di input

Jawaban: b

Pada setiap timestep tt, hidden state hth_t diproyeksikan ke dimensi jumlah kelas: y^t=softmax(Vht+by)\hat{y}_t = \text{softmax}(V \cdot h_t + b_y)


Soal 12

Soal: Diberikan input sequence yang merepresentasikan token: X = [0.5, 0.3], [0.2, 0.1], [0.6, 0.8], dan target label sequence: Y = [B, A, C]. Digunakan model prediksi LSTM yang menghasilkan output berupa probabilitas per kelas seperti tabel berikut:

TokenTargetP(A)P(B)P(C)Prediksi (argmax)Benar?
T1B0.20.70.1B
T2A0.30.10.6C
T3C0.60.20.2A
  • Prediksi akhir: [B, C, A]
  • Token benar: hanya T1 → 1 token benar
  • Akurasi: 1333.3%\frac{1}{3} \approx 33.3\%

a. Banyaknya token yang diprediksi benar adalah dua token. → X ❌ (hanya 1) b. Akurasi hasil prediksi adalah 100%. → Xc. Prediksi kelas akhir untuk input sequence tersebut adalah [B, C, A]. → Od. Semua jawaban salah → X ❌ (karena c benar)

PilihanJawaban
aX
bX
cO
dX

Bagian II - LSTM Forward & Backward Pass (Nilai 20)

Setup Soal

Soal: Diketahui LSTM sederhana dengan arsitektur input dan hidden layer seperti gambar. Perhatikan input matriks X dengan 2 fitur, nilai matriks weight U, W, dan bias b. Untuk penyederhanaan, target yang tercantum pada input matriks adalah untuk target pada hidden unit. Fungsi aktivasi yang digunakan sesuai default pada unit LSTM.

a. [Nilai 10] Lakukan 1 kali forward pass, tuliskan nilai output pada hidden unit dari 2 time step. Hitung nilai error total dari tahap ini. Sertakan cara (formula) perhitungan lengkap untuk setiap gate dan neuron.

b. [Nilai 10] Lakukan 1 kali backward pass (BPTT) dengan menggunakan hasil forward pass pada bagian a. Gunakan nilai learning rate 0.5. Tuliskan nilai matriks weight terbaru. Sertakan cara (formula) perhitungan lengkap untuk setiap gate dan neuron.

Catatan: untuk semua perhitungan, gunakan ketelitian tiga angka di belakang koma.

Setup LSTM - diagram sel, matriks weight U/W/b, dan matriks input

Matriks Input:

idX1X2Target
id10.51.20.5
id21.51.00.75

→ id1 = timestep t=1t=1, id2 = timestep t=2t=2.

Initial state: h0=0h_0 = 0, c0=0c_0 = 0

Matriks Weight:

GateUU (input→hidden)WW (hidden→hidden)bb (bias)
Forget ffUf=[1, 1]U_f = [1,\ 1]Wf=0.5W_f = 0.5bf=1b_f = 1
Input iiUi=[1, 0]U_i = [1,\ 0]Wi=0.3W_i = 0.3bi=1b_i = -1
Candidate c~\tilde{c}Uc=[0, 0]U_c = [0,\ 0]Wc=0.5W_c = 0.5bc=1b_c = 1
Output ooUo=[0, 1]U_o = [0,\ 1]Wo=0.3W_o = 0.3bo=1b_o = -1

Fungsi Aktivasi LSTM Default

  • Gate (forget, input, output): sigmoid σ(z)=11+ez\sigma(z) = \dfrac{1}{1+e^{-z}}
  • Candidate cell state: tanh
  • Hidden output: ht=ottanh(ct)h_t = o_t \cdot \tanh(c_t)

[!abstract] Legenda Notasi (Bagian II)

SimbolArti di sini⚠️ Beda makna di bagian lain
hth_thidden state - short-term memory-
ctc_tcell state - long-term memorydi Bagian III, cc/ctc_t = context vector (beda total!)
UUbobot input → hidden (per gate)-
WWbobot hidden → hidden / recurrent (per gate)beda dari Wa,Wd,WcW_a, W_d, W_c di Bagian III
bbbias (per gate)-
ft,it,c~t,otf_t, i_t, \tilde c_t, o_tnilai gate forget / input / candidate / output-
η\etalearning ratedi Bagian IV ditulis α\alpha - simbol beda, konsep sama
δ()\delta_{(\cdot)}local gradient di suatu gate, =Lz()= \frac{\partial \mathcal{L}}{\partial z_{(\cdot)}}-

Formula LSTM (notasi skalar, 1 neuron):

ft=σ(Ufxt+Wfht1+bf)f_t = \sigma(U_f \cdot x_t + W_f \cdot h_{t-1} + b_f) it=σ(Uixt+Wiht1+bi)i_t = \sigma(U_i \cdot x_t + W_i \cdot h_{t-1} + b_i) c~t=tanh(Ucxt+Wcht1+bc)\tilde{c}_t = \tanh(U_c \cdot x_t + W_c \cdot h_{t-1} + b_c) ct=ftct1+itc~tc_t = f_t \cdot c_{t-1} + i_t \cdot \tilde{c}_t ot=σ(Uoxt+Woht1+bo)o_t = \sigma(U_o \cdot x_t + W_o \cdot h_{t-1} + b_o) ht=ottanh(ct)h_t = o_t \cdot \tanh(c_t)


2.a Forward Pass

Timestep t=1t=1: x1=[0.5, 1.2]x_1 = [0.5,\ 1.2], h0=0h_0=0, c0=0c_0=0

Forget gate f1f_1: zf1=Ufx1+Wfh0+bf=(1)(0.5)+(1)(1.2)+(0.5)(0)+1=0.5+1.2+0+1=2.7z_{f_1} = U_f \cdot x_1 + W_f \cdot h_0 + b_f = (1)(0.5) + (1)(1.2) + (0.5)(0) + 1 = 0.5 + 1.2 + 0 + 1 = 2.7 f1=σ(2.7)=11+e2.7=11+0.067=11.067=0.937f_1 = \sigma(2.7) = \frac{1}{1+e^{-2.7}} = \frac{1}{1+0.067} = \frac{1}{1.067} = \mathbf{0.937}

Input gate i1i_1: zi1=Uix1+Wih0+bi=(1)(0.5)+(0)(1.2)+(0.3)(0)+(1)=0.5+0+01=0.5z_{i_1} = U_i \cdot x_1 + W_i \cdot h_0 + b_i = (1)(0.5) + (0)(1.2) + (0.3)(0) + (-1) = 0.5 + 0 + 0 - 1 = -0.5 i1=σ(0.5)=11+e0.5=11+1.649=12.649=0.378i_1 = \sigma(-0.5) = \frac{1}{1+e^{0.5}} = \frac{1}{1+1.649} = \frac{1}{2.649} = \mathbf{0.378}

Candidate cell c~1\tilde{c}_1: zc~1=Ucx1+Wch0+bc=(0)(0.5)+(0)(1.2)+(0.5)(0)+1=0+0+0+1=1.0z_{\tilde{c}_1} = U_c \cdot x_1 + W_c \cdot h_0 + b_c = (0)(0.5) + (0)(1.2) + (0.5)(0) + 1 = 0 + 0 + 0 + 1 = 1.0 c~1=tanh(1.0)=0.762\tilde{c}_1 = \tanh(1.0) = \mathbf{0.762}

Cell state c1c_1: c1=f1c0+i1c~1=(0.937)(0)+(0.378)(0.762)=0+0.288=0.288c_1 = f_1 \cdot c_0 + i_1 \cdot \tilde{c}_1 = (0.937)(0) + (0.378)(0.762) = 0 + 0.288 = \mathbf{0.288}

Output gate o1o_1: zo1=Uox1+Woh0+bo=(0)(0.5)+(1)(1.2)+(0.3)(0)+(1)=0+1.2+01=0.2z_{o_1} = U_o \cdot x_1 + W_o \cdot h_0 + b_o = (0)(0.5) + (1)(1.2) + (0.3)(0) + (-1) = 0 + 1.2 + 0 - 1 = 0.2 o1=σ(0.2)=11+e0.2=11+0.819=11.819=0.550o_1 = \sigma(0.2) = \frac{1}{1+e^{-0.2}} = \frac{1}{1+0.819} = \frac{1}{1.819} = \mathbf{0.550}

Hidden state h1h_1: h1=o1tanh(c1)=(0.550)tanh(0.288)=(0.550)(0.280)=0.154h_1 = o_1 \cdot \tanh(c_1) = (0.550) \cdot \tanh(0.288) = (0.550)(0.280) = \mathbf{0.154}


Timestep t=2t=2: x2=[1.5, 1.0]x_2 = [1.5,\ 1.0], h1=0.154h_1=0.154, c1=0.288c_1=0.288

Forget gate f2f_2: zf2=(1)(1.5)+(1)(1.0)+(0.5)(0.154)+1=1.5+1.0+0.077+1=3.577z_{f_2} = (1)(1.5) + (1)(1.0) + (0.5)(0.154) + 1 = 1.5 + 1.0 + 0.077 + 1 = 3.577 f2=σ(3.577)=11+e3.577=11+0.028=0.973f_2 = \sigma(3.577) = \frac{1}{1+e^{-3.577}} = \frac{1}{1+0.028} = \mathbf{0.973}

Input gate i2i_2: zi2=(1)(1.5)+(0)(1.0)+(0.3)(0.154)+(1)=1.5+0+0.0461=0.546z_{i_2} = (1)(1.5) + (0)(1.0) + (0.3)(0.154) + (-1) = 1.5 + 0 + 0.046 - 1 = 0.546 i2=σ(0.546)=11+e0.546=11+0.579=0.633i_2 = \sigma(0.546) = \frac{1}{1+e^{-0.546}} = \frac{1}{1+0.579} = \mathbf{0.633}

Candidate cell c~2\tilde{c}_2: zc~2=(0)(1.5)+(0)(1.0)+(0.5)(0.154)+1=0+0+0.077+1=1.077z_{\tilde{c}_2} = (0)(1.5) + (0)(1.0) + (0.5)(0.154) + 1 = 0 + 0 + 0.077 + 1 = 1.077 c~2=tanh(1.077)=0.792\tilde{c}_2 = \tanh(1.077) = \mathbf{0.792}

Cell state c2c_2: c2=f2c1+i2c~2=(0.973)(0.288)+(0.633)(0.792)=0.280+0.501=0.781c_2 = f_2 \cdot c_1 + i_2 \cdot \tilde{c}_2 = (0.973)(0.288) + (0.633)(0.792) = 0.280 + 0.501 = \mathbf{0.781}

Output gate o2o_2: zo2=(0)(1.5)+(1)(1.0)+(0.3)(0.154)+(1)=0+1.0+0.0461=0.046z_{o_2} = (0)(1.5) + (1)(1.0) + (0.3)(0.154) + (-1) = 0 + 1.0 + 0.046 - 1 = 0.046 o2=σ(0.046)=11+e0.046=11+0.955=0.512o_2 = \sigma(0.046) = \frac{1}{1+e^{-0.046}} = \frac{1}{1+0.955} = \mathbf{0.512}

Hidden state h2h_2: h2=o2tanh(c2)=(0.512)tanh(0.781)=(0.512)(0.653)=0.334h_2 = o_2 \cdot \tanh(c_2) = (0.512) \cdot \tanh(0.781) = (0.512)(0.653) = \mathbf{0.334}


Hitung Error Total

Target: h^1=0.5\hat{h}_1 = 0.5, h^2=0.75\hat{h}_2 = 0.75. Gunakan MSE: Lt=12(hth^t)2\mathcal{L}_t = \frac{1}{2}(h_t - \hat{h}_t)^2

L1=12(h1h^1)2=12(0.1540.5)2=12(0.346)2=12(0.120)=0.060\mathcal{L}_1 = \frac{1}{2}(h_1 - \hat{h}_1)^2 = \frac{1}{2}(0.154 - 0.5)^2 = \frac{1}{2}(-0.346)^2 = \frac{1}{2}(0.120) = \mathbf{0.060}

L2=12(h2h^2)2=12(0.3340.75)2=12(0.416)2=12(0.173)=0.086\mathcal{L}_2 = \frac{1}{2}(h_2 - \hat{h}_2)^2 = \frac{1}{2}(0.334 - 0.75)^2 = \frac{1}{2}(-0.416)^2 = \frac{1}{2}(0.173) = \mathbf{0.086}

Ltotal=L1+L2=0.060+0.086=0.146\boxed{\mathcal{L}_{\text{total}} = \mathcal{L}_1 + \mathcal{L}_2 = 0.060 + 0.086 = 0.146}

Ringkasan Forward Pass:

Variabelt=1t=2
ftf_t0.9370.973
iti_t0.3780.633
c~t\tilde{c}_t0.7620.792
ctc_t0.2880.781
oto_t0.5500.512
hth_t0.1540.334
tanh(ct)\tanh(c_t)0.2800.653

2.b Backward Pass (BPTT), η=0.5\eta = 0.5

Tidak Keluar di Ujian Menurut info terbaru, BPTT tidak akan keluar di ujian - bagian ini boleh dilewati/tidak perlu dipelajari lagi.

Notasi & Turunan

  • σ(z)=σ(z)(1σ(z))\sigma'(z) = \sigma(z)(1-\sigma(z)), sehingga ftzft=ft(1ft)\frac{\partial f_t}{\partial z_{f_t}} = f_t(1-f_t)
  • tanh(z)=1tanh2(z)\tanh'(z) = 1 - \tanh^2(z), sehingga c~tzc~t=1c~t2\frac{\partial \tilde{c}_t}{\partial z_{\tilde{c}_t}} = 1-\tilde{c}_t^2
  • Dari MSE: Ltht=hth^t\frac{\partial \mathcal{L}_t}{\partial h_t} = h_t - \hat{h}_t
  • Update rule: WWηLWW \leftarrow W - \eta \cdot \frac{\partial \mathcal{L}}{\partial W}

Backward t=2

Gradient dL/dh₂: Lh2=h2h^2=0.3340.750=0.416\frac{\partial \mathcal{L}}{\partial h_2} = h_2 - \hat{h}_2 = 0.334 - 0.750 = -0.416

Gradient ke gate output o2o_2: Lo2=Lh2tanh(c2)=(0.416)(0.653)=0.272\frac{\partial \mathcal{L}}{\partial o_2} = \frac{\partial \mathcal{L}}{\partial h_2} \cdot \tanh(c_2) = (-0.416)(0.653) = -0.272 δo2=Lo2o2(1o2)=(0.272)(0.512)(10.512)=(0.272)(0.512)(0.488)=0.068\delta_{o_2} = \frac{\partial \mathcal{L}}{\partial o_2} \cdot o_2(1-o_2) = (-0.272)(0.512)(1-0.512) = (-0.272)(0.512)(0.488) = -0.068

Gradient ke cell state c2c_2: Lc2=Lh2o2(1tanh2(c2))=(0.416)(0.512)(10.6532)=(0.416)(0.512)(0.574)=0.122\frac{\partial \mathcal{L}}{\partial c_2} = \frac{\partial \mathcal{L}}{\partial h_2} \cdot o_2 \cdot (1 - \tanh^2(c_2)) = (-0.416)(0.512)(1-0.653^2) = (-0.416)(0.512)(0.574) = -0.122

Gradient ke candidate c~2\tilde{c}_2: Lc~2=Lc2i2=(0.122)(0.633)=0.077\frac{\partial \mathcal{L}}{\partial \tilde{c}_2} = \frac{\partial \mathcal{L}}{\partial c_2} \cdot i_2 = (-0.122)(0.633) = -0.077 δc~2=Lc~2(1c~22)=(0.077)(10.7922)=(0.077)(0.373)=0.029\delta_{\tilde{c}_2} = \frac{\partial \mathcal{L}}{\partial \tilde{c}_2} \cdot (1-\tilde{c}_2^2) = (-0.077)(1-0.792^2) = (-0.077)(0.373) = -0.029

Gradient ke input gate i2i_2: Li2=Lc2c~2=(0.122)(0.792)=0.097\frac{\partial \mathcal{L}}{\partial i_2} = \frac{\partial \mathcal{L}}{\partial c_2} \cdot \tilde{c}_2 = (-0.122)(0.792) = -0.097 δi2=Li2i2(1i2)=(0.097)(0.633)(10.633)=(0.097)(0.633)(0.367)=0.022\delta_{i_2} = \frac{\partial \mathcal{L}}{\partial i_2} \cdot i_2(1-i_2) = (-0.097)(0.633)(1-0.633) = (-0.097)(0.633)(0.367) = -0.022

Gradient ke forget gate f2f_2: Lf2=Lc2c1=(0.122)(0.288)=0.035\frac{\partial \mathcal{L}}{\partial f_2} = \frac{\partial \mathcal{L}}{\partial c_2} \cdot c_1 = (-0.122)(0.288) = -0.035 δf2=Lf2f2(1f2)=(0.035)(0.973)(10.973)=(0.035)(0.973)(0.027)=0.001\delta_{f_2} = \frac{\partial \mathcal{L}}{\partial f_2} \cdot f_2(1-f_2) = (-0.035)(0.973)(1-0.973) = (-0.035)(0.973)(0.027) = -0.001

Gradient weight dari t=2 (bobot WW terhubung ke ht1=h1=0.154h_{t-1} = h_1 = 0.154; bobot UU ke x2x_2; bias ke 1):

LWft=2=δf2h1=(0.001)(0.154)0.000\frac{\partial \mathcal{L}}{\partial W_f}\bigg|_{t=2} = \delta_{f_2} \cdot h_1 = (-0.001)(0.154) \approx 0.000 LWit=2=δi2h1=(0.022)(0.154)=0.003\frac{\partial \mathcal{L}}{\partial W_i}\bigg|_{t=2} = \delta_{i_2} \cdot h_1 = (-0.022)(0.154) = -0.003 LWct=2=δc~2h1=(0.029)(0.154)=0.004\frac{\partial \mathcal{L}}{\partial W_c}\bigg|_{t=2} = \delta_{\tilde{c}_2} \cdot h_1 = (-0.029)(0.154) = -0.004 LWot=2=δo2h1=(0.068)(0.154)=0.010\frac{\partial \mathcal{L}}{\partial W_o}\bigg|_{t=2} = \delta_{o_2} \cdot h_1 = (-0.068)(0.154) = -0.010

LUft=2=δf2x2T=(0.001)[1.5, 1.0]=[0.001, 0.001]\frac{\partial \mathcal{L}}{\partial U_f}\bigg|_{t=2} = \delta_{f_2} \cdot x_2^T = (-0.001)[1.5,\ 1.0] = [-0.001,\ -0.001] LUit=2=δi2x2T=(0.022)[1.5, 1.0]=[0.034, 0.022]\frac{\partial \mathcal{L}}{\partial U_i}\bigg|_{t=2} = \delta_{i_2} \cdot x_2^T = (-0.022)[1.5,\ 1.0] = [-0.034,\ -0.022] LUct=2=δc~2x2T=(0.029)[1.5, 1.0]=[0.043, 0.029]\frac{\partial \mathcal{L}}{\partial U_c}\bigg|_{t=2} = \delta_{\tilde{c}_2} \cdot x_2^T = (-0.029)[1.5,\ 1.0] = [-0.043,\ -0.029] LUot=2=δo2x2T=(0.068)[1.5, 1.0]=[0.102, 0.068]\frac{\partial \mathcal{L}}{\partial U_o}\bigg|_{t=2} = \delta_{o_2} \cdot x_2^T = (-0.068)[1.5,\ 1.0] = [-0.102,\ -0.068]

Lbft=2=δf2=0.001,Lbit=2=δi2=0.022\frac{\partial \mathcal{L}}{\partial b_f}\bigg|_{t=2} = \delta_{f_2} = -0.001, \quad \frac{\partial \mathcal{L}}{\partial b_i}\bigg|_{t=2} = \delta_{i_2} = -0.022 Lbct=2=δc~2=0.029,Lbot=2=δo2=0.068\frac{\partial \mathcal{L}}{\partial b_c}\bigg|_{t=2} = \delta_{\tilde{c}_2} = -0.029, \quad \frac{\partial \mathcal{L}}{\partial b_o}\bigg|_{t=2} = \delta_{o_2} = -0.068


Backward t=1

Total gradient ke h1h_1 (dari L1\mathcal{L}_1 langsung + backprop dari t=2 melalui recurrent connection):

Dari L1\mathcal{L}_1 langsung: L1h1=h1h^1=0.1540.500=0.346\frac{\partial \mathcal{L}_1}{\partial h_1} = h_1 - \hat{h}_1 = 0.154 - 0.500 = -0.346

Dari t=2, gradient mengalir balik ke h1h_1 melalui semua gate di t=2 yang bergantung pada h1h_1: L2h1=Wfδf2+Wiδi2+Wcδc~2+Woδo2\frac{\partial \mathcal{L}_2}{\partial h_1} = W_f \cdot \delta_{f_2} + W_i \cdot \delta_{i_2} + W_c \cdot \delta_{\tilde{c}_2} + W_o \cdot \delta_{o_2} =(0.5)(0.001)+(0.3)(0.022)+(0.5)(0.029)+(0.3)(0.068)= (0.5)(-0.001) + (0.3)(-0.022) + (0.5)(-0.029) + (0.3)(-0.068) =0.000+(0.007)+(0.014)+(0.020)=0.042= -0.000 + (-0.007) + (-0.014) + (-0.020) = -0.042

Total: Lh1=0.346+(0.042)=0.388\frac{\partial \mathcal{L}}{\partial h_1} = -0.346 + (-0.042) = -0.388

Gradient ke gate output o1o_1: Lo1=Lh1tanh(c1)=(0.388)(0.280)=0.109\frac{\partial \mathcal{L}}{\partial o_1} = \frac{\partial \mathcal{L}}{\partial h_1} \cdot \tanh(c_1) = (-0.388)(0.280) = -0.109 δo1=(0.109)o1(1o1)=(0.109)(0.550)(0.450)=0.027\delta_{o_1} = (-0.109) \cdot o_1(1-o_1) = (-0.109)(0.550)(0.450) = -0.027

Gradient ke cell state c1c_1 (dari h1h_1 langsung + dari c2=f2c1+c_2 = f_2 \cdot c_1 + \ldots): Lc1dari h1=Lh1o1(1tanh2(c1))=(0.388)(0.550)(10.2802)=(0.388)(0.550)(0.922)=0.197\frac{\partial \mathcal{L}}{\partial c_1}\bigg|_{\text{dari }h_1} = \frac{\partial \mathcal{L}}{\partial h_1} \cdot o_1 \cdot (1-\tanh^2(c_1)) = (-0.388)(0.550)(1-0.280^2) = (-0.388)(0.550)(0.922) = -0.197

Lc1dari c2=Lc2f2=(0.122)(0.973)=0.119\frac{\partial \mathcal{L}}{\partial c_1}\bigg|_{\text{dari }c_2} = \frac{\partial \mathcal{L}}{\partial c_2} \cdot f_2 = (-0.122)(0.973) = -0.119

Lc1=0.197+(0.119)=0.316\frac{\partial \mathcal{L}}{\partial c_1} = -0.197 + (-0.119) = -0.316

Gradient ke candidate c~1\tilde{c}_1: Lc~1=Lc1i1=(0.316)(0.378)=0.119\frac{\partial \mathcal{L}}{\partial \tilde{c}_1} = \frac{\partial \mathcal{L}}{\partial c_1} \cdot i_1 = (-0.316)(0.378) = -0.119 δc~1=(0.119)(10.7622)=(0.119)(0.419)=0.050\delta_{\tilde{c}_1} = (-0.119)(1-0.762^2) = (-0.119)(0.419) = -0.050

Gradient ke input gate i1i_1: Li1=Lc1c~1=(0.316)(0.762)=0.240\frac{\partial \mathcal{L}}{\partial i_1} = \frac{\partial \mathcal{L}}{\partial c_1} \cdot \tilde{c}_1 = (-0.316)(0.762) = -0.240 δi1=(0.240)i1(1i1)=(0.240)(0.378)(0.622)=0.057\delta_{i_1} = (-0.240) \cdot i_1(1-i_1) = (-0.240)(0.378)(0.622) = -0.057

Gradient ke forget gate f1f_1: Lf1=Lc1c0=(0.316)(0)=0\frac{\partial \mathcal{L}}{\partial f_1} = \frac{\partial \mathcal{L}}{\partial c_1} \cdot c_0 = (-0.316)(0) = 0 δf1=0\delta_{f_1} = 0

Gradient weight dari t=1 (bobot WW terhubung ke h0=0h_0 = 0; semua kontribusi W=0W = 0):

LWft=1=δf1h0=(0)(0)=0\frac{\partial \mathcal{L}}{\partial W_f}\bigg|_{t=1} = \delta_{f_1} \cdot h_0 = (0)(0) = 0 LWit=1=δi1h0=(0.057)(0)=0\frac{\partial \mathcal{L}}{\partial W_i}\bigg|_{t=1} = \delta_{i_1} \cdot h_0 = (-0.057)(0) = 0 LWct=1=δc~1h0=(0.050)(0)=0\frac{\partial \mathcal{L}}{\partial W_c}\bigg|_{t=1} = \delta_{\tilde{c}_1} \cdot h_0 = (-0.050)(0) = 0 LWot=1=δo1h0=(0.027)(0)=0\frac{\partial \mathcal{L}}{\partial W_o}\bigg|_{t=1} = \delta_{o_1} \cdot h_0 = (-0.027)(0) = 0

LUft=1=δf1x1T=(0)[0.5, 1.2]=[0, 0]\frac{\partial \mathcal{L}}{\partial U_f}\bigg|_{t=1} = \delta_{f_1} \cdot x_1^T = (0)[0.5,\ 1.2] = [0,\ 0] LUit=1=δi1x1T=(0.057)[0.5, 1.2]=[0.028, 0.068]\frac{\partial \mathcal{L}}{\partial U_i}\bigg|_{t=1} = \delta_{i_1} \cdot x_1^T = (-0.057)[0.5,\ 1.2] = [-0.028,\ -0.068] LUct=1=δc~1x1T=(0.050)[0.5, 1.2]=[0.025, 0.060]\frac{\partial \mathcal{L}}{\partial U_c}\bigg|_{t=1} = \delta_{\tilde{c}_1} \cdot x_1^T = (-0.050)[0.5,\ 1.2] = [-0.025,\ -0.060] LUot=1=δo1x1T=(0.027)[0.5, 1.2]=[0.013, 0.032]\frac{\partial \mathcal{L}}{\partial U_o}\bigg|_{t=1} = \delta_{o_1} \cdot x_1^T = (-0.027)[0.5,\ 1.2] = [-0.013,\ -0.032]

Lbft=1=δf1=0,Lbit=1=δi1=0.057\frac{\partial \mathcal{L}}{\partial b_f}\bigg|_{t=1} = \delta_{f_1} = 0, \quad \frac{\partial \mathcal{L}}{\partial b_i}\bigg|_{t=1} = \delta_{i_1} = -0.057 Lbct=1=δc~1=0.050,Lbot=1=δo1=0.027\frac{\partial \mathcal{L}}{\partial b_c}\bigg|_{t=1} = \delta_{\tilde{c}_1} = -0.050, \quad \frac{\partial \mathcal{L}}{\partial b_o}\bigg|_{t=1} = \delta_{o_1} = -0.027


Total Gradient (akumulasi t=1 dan t=2)

LWf=0+0.000=0.000,LWi=0+(0.003)=0.003\frac{\partial \mathcal{L}}{\partial W_f} = 0 + 0.000 = 0.000, \quad \frac{\partial \mathcal{L}}{\partial W_i} = 0 + (-0.003) = -0.003 LWc=0+(0.004)=0.004,LWo=0+(0.010)=0.010\frac{\partial \mathcal{L}}{\partial W_c} = 0 + (-0.004) = -0.004, \quad \frac{\partial \mathcal{L}}{\partial W_o} = 0 + (-0.010) = -0.010

LUf=[0+(0.001), 0+(0.001)]=[0.001, 0.001]\frac{\partial \mathcal{L}}{\partial U_f} = [0+(-0.001),\ 0+(-0.001)] = [-0.001,\ -0.001] LUi=[(0.028)+(0.034), (0.068)+(0.022)]=[0.062, 0.090]\frac{\partial \mathcal{L}}{\partial U_i} = [(-0.028)+(-0.034),\ (-0.068)+(-0.022)] = [-0.062,\ -0.090] LUc=[(0.025)+(0.043), (0.060)+(0.029)]=[0.068, 0.089]\frac{\partial \mathcal{L}}{\partial U_c} = [(-0.025)+(-0.043),\ (-0.060)+(-0.029)] = [-0.068,\ -0.089] LUo=[(0.013)+(0.102), (0.032)+(0.068)]=[0.115, 0.100]\frac{\partial \mathcal{L}}{\partial U_o} = [(-0.013)+(-0.102),\ (-0.032)+(-0.068)] = [-0.115,\ -0.100]

Lbf=0+(0.001)=0.001,Lbi=(0.057)+(0.022)=0.079\frac{\partial \mathcal{L}}{\partial b_f} = 0+(-0.001) = -0.001, \quad \frac{\partial \mathcal{L}}{\partial b_i} = (-0.057)+(-0.022) = -0.079 Lbc=(0.050)+(0.029)=0.079,Lbo=(0.027)+(0.068)=0.095\frac{\partial \mathcal{L}}{\partial b_c} = (-0.050)+(-0.029) = -0.079, \quad \frac{\partial \mathcal{L}}{\partial b_o} = (-0.027)+(-0.068) = -0.095


Update Weight (Wbaru=WlamaηLWW_{\text{baru}} = W_{\text{lama}} - \eta \cdot \frac{\partial \mathcal{L}}{\partial W}, η=0.5\eta = 0.5)

Wfbaru=0.5(0.5)(0.000)=0.500W_f^{\text{baru}} = 0.5 - (0.5)(0.000) = \mathbf{0.500} Wibaru=0.3(0.5)(0.003)=0.3+0.002=0.302W_i^{\text{baru}} = 0.3 - (0.5)(-0.003) = 0.3 + 0.002 = \mathbf{0.302} Wcbaru=0.5(0.5)(0.004)=0.5+0.002=0.502W_c^{\text{baru}} = 0.5 - (0.5)(-0.004) = 0.5 + 0.002 = \mathbf{0.502} Wobaru=0.3(0.5)(0.010)=0.3+0.005=0.305W_o^{\text{baru}} = 0.3 - (0.5)(-0.010) = 0.3 + 0.005 = \mathbf{0.305}

Ufbaru=[1,1](0.5)[0.001,0.001]=[1+0.001, 1+0.001]=[1.001, 1.001]U_f^{\text{baru}} = [1,1] - (0.5)[-0.001,-0.001] = [1+0.001,\ 1+0.001] = \mathbf{[1.001,\ 1.001]} Uibaru=[1,0](0.5)[0.062,0.090]=[1+0.031, 0+0.045]=[1.031, 0.045]U_i^{\text{baru}} = [1,0] - (0.5)[-0.062,-0.090] = [1+0.031,\ 0+0.045] = \mathbf{[1.031,\ 0.045]} Ucbaru=[0,0](0.5)[0.068,0.089]=[0+0.034, 0+0.044]=[0.034, 0.044]U_c^{\text{baru}} = [0,0] - (0.5)[-0.068,-0.089] = [0+0.034,\ 0+0.044] = \mathbf{[0.034,\ 0.044]} Uobaru=[0,1](0.5)[0.115,0.100]=[0+0.058, 1+0.050]=[0.058, 1.050]U_o^{\text{baru}} = [0,1] - (0.5)[-0.115,-0.100] = [0+0.058,\ 1+0.050] = \mathbf{[0.058,\ 1.050]}

bfbaru=1(0.5)(0.001)=1+0.001=1.001b_f^{\text{baru}} = 1 - (0.5)(-0.001) = 1 + 0.001 = \mathbf{1.001} bibaru=1(0.5)(0.079)=1+0.040=0.960b_i^{\text{baru}} = -1 - (0.5)(-0.079) = -1 + 0.040 = \mathbf{-0.960} bcbaru=1(0.5)(0.079)=1+0.040=1.040b_c^{\text{baru}} = 1 - (0.5)(-0.079) = 1 + 0.040 = \mathbf{1.040} bobaru=1(0.5)(0.095)=1+0.048=0.953b_o^{\text{baru}} = -1 - (0.5)(-0.095) = -1 + 0.048 = \mathbf{-0.953}

Ringkasan Matriks Weight Baru:

GateUbaruU^{\text{baru}}WbaruW^{\text{baru}}bbarub^{\text{baru}}
ff[1.001, 1.001]0.5001.001
ii[1.031, 0.045]0.302-0.960
c~\tilde{c}[0.034, 0.044]0.5021.040
oo[0.058, 1.050]0.305-0.953

Bagian III - Encoder-Decoder & Attention (Nilai 25)

Setup Soal

Soal: Diberikan arsitektur encoder decoder untuk prediksi sekuens 2 elemen deret, encoder menerima input berupa sekuens dengan panjang 3 timestep dari vektor 4 nilai fitur dan menghasilkan hidden vector e1, e2, dan e3. Decoder menerima input context vector untuk menghasilkan sequence 2 timestep yaitu y1 dan y2.

a. [Nilai 5] Tentukanlah jumlah parameter dari model tersebut jika encoder berupa satu layer RNN dengan 2 neuron dan decoder berupa satu layer RNN dengan 2 neuron dan satu layer output Fully Connected 1 neuron.

b. [Nilai 5] Tentukanlah jumlah parameter dari model tersebut jika encoder berupa satu layer LSTM dengan 2 neuron dan decoder berupa satu layer LSTM dengan 2 neuron dan satu layer output Fully Connected 1 neuron.

c. [Nilai 5] Berikanlah formula untuk tahapan inferensi pada decoder dari model soal a. Gunakanlah f sebagai fungsi aktivasi untuk neuron pada hidden layer dan g sebagai fungsi aktivasi untuk neuron pada output layer.

d. [Nilai 5] Tentukanlah jumlah parameter dari model tersebut jika encoder berupa satu layer RNN dengan 2 neuron dan decoder berupa satu layer RNN dengan 2 neuron dan satu layer output Fully Connected 1 neuron, dan dilengkapi dengan satu attention unit.

e. [Nilai 5] Berikanlah formula untuk tahapan inferensi pada decoder dengan satu attention unit dari model soal d; ⍺t menyatakan attention weights pada timestep t. Gunakanlah f sebagai fungsi aktivasi untuk neuron pada hidden layer dan g sebagai fungsi aktivasi untuk neuron pada output layer.

[!abstract] Legenda Notasi (Bagian III)

SimbolArti di sini⚠️ Catatan
e1,e2,e3e_1, e_2, e_3 = hjh_jhidden state encoder pada timestep jjdua notasi untuk hal yang sama: eje_j dipakai di setup soal, hjh_j dipakai di formula attention §3.e - keduanya = output encoder, jangan tertukar dengan alignment score etje_{tj} di bawah
cc / ctc_tcontext vector (ringkasan info encoder utk decoder)di Bagian II, ctc_t = cell state LSTM (beda total!)
sts_thidden state decoderdi Bagian IV, ss = state lingkungan RL (beda total!)
Ud,Wd,bdU_d, W_d, b_dbobot input→hidden, hidden→hidden, bias decoder - input decoder = context vector (cc tanpa attention, ctc_t dengan attention), bobot ini sama persis dipakai di kedua versi (3.c & 3.e)analog U,W,bU, W, b Bagian II tapi unit terpisah dari encoder
V,byV, b_ybobot & bias proyeksi hidden decoder sts_t → output, dipakai di kedua versi (3.c tanpa attention maupun 3.e dengan attention)gg hanya fungsi dari sts_t - attention tidak menambah bobot baru di sini, ia hanya mengubah cctc \to c_t pada input
f,gf, gfungsi aktivasi hidden layer / output layer decoder-
etje_{tj}alignment score antara st1s_{t-1} (decoder) dan hjh_j (encoder)subscript ganda tjtj - jangan disamakan dengan eje_j (hidden state encoder) di atas!
αtj\alpha_{tj}attention weight = softmax dari etje_{tj}di Bagian IV, α\alpha = learning rate (beda total - perhatikan konteks!)
Wa,Ua,vaW_a, U_a, v_aparameter alignment Bahdanaubeda dari Ud,WdU_d, W_d (decoder) maupun U,WU, W LSTM Bagian II
nan_adimensi hidden layer attention/alignment (hyperparameter desain - tidak diberi soal, diasumsikan =2=2 di §3.d)jangan disamakan dengan nn / nenc,ndecn_{\text{enc}}, n_{\text{dec}} (ukuran hidden encoder-decoder) - “satu attention unit” di soal \neq "na=1n_a=1"!

3.a Jumlah Parameter - Encoder RNN(2) + Decoder RNN(2) + FC(1)

Diagram unrolled Soal 3.a - Encoder RNN(2) di kiri-bawah, context vector c=e3, Decoder RNN(2) + FC di kanan-atas, beserta breakdown parameter (total 27)

Formula ParameterSimple RNN (nn neuron, input mm dimensi): params=n×mU:input→hidden+n×nW:hidden→hidden+nb=(m+n+1)×n\text{params} = \underbrace{n \times m}_{U: \text{input→hidden}} + \underbrace{n \times n}_{W: \text{hidden→hidden}} + \underbrace{n}_{b} = (m+n+1) \times n

Dense/FC (kk neuron, input mm dimensi): params=(m+1)×k\text{params} = (m+1) \times k

Encoder RNN: n=2n=2 neuron, input m=4m=4 fitur paramsenc=(m+n+1)×n=(4+2+1)×2=7×2=14\text{params}_{\text{enc}} = (m+n+1) \times n = (4+2+1) \times 2 = 7 \times 2 = 14

[!important] Patokan Utama: Teks Soal Eksplisit Soal asli menyatakan: “Decoder menerima input context vector untuk menghasilkan sequence 2 timestep yaitu y1 dan y2.” Ini adalah definisi arsitektur, bukan deskripsi longgar - artinya input decoder = context vector, berdimensi nenc=2n_{\text{enc}} = 2. Semua perhitungan & formula di bawah mengikuti definisi ini secara konsisten.

[!info] Catatan: Konvensi Context Vector Ini Berbeda dari “Standar Buku Teks” Wajar jika konvensi ini terasa janggal - biasanya context vector dipakai untuk menginisialisasi hidden state decoder, bukan jadi input di setiap timestep. Berikut tiga konvensi yang umum dijumpai, supaya jelas di mana posisi soal ini:

  • Sutskever et al. (2014) - “standar buku teks/textbook”: context vector cc hanya dipakai untuk inisialisasi (s0=cs_0 = c); input riil decoder di tiap timestep adalah token output sebelumnya yt1y_{t-1} (autoregresif).
  • Cho et al. (2014), “RNN Encoder-Decoder”: cc ditambahkan sebagai sinyal kondisi di setiap timestep, berdampingan dengan yt1y_{t-1} dan ht1h_{t-1}: ht=f(ht1,yt1,c)h_t = f(h_{t-1},\, y_{t-1},\, c).
  • Konvensi soal ini (dinyatakan eksplisit di teks soal): versi yang disederhanakan - cc diumpankan sebagai satu-satunya input decoder di setiap timestep, yt1y_{t-1} dihilangkan sama sekali. Kemungkinan besar ini dipilih agar dimensi input decoder tetap konstan & bersih untuk keperluan latihan menghitung parameter.

Karena teks soal mendefinisikan arsitekturnya secara eksplisit, kita ikuti definisi soal - bukan konvensi buku teks - demi konsistensi jawaban.

Decoder RNN: n=2n=2 neuron, input = context vector cc (dari encoder) = dimensi m=2m=2 paramsdec=(m+n+1)×n=(2+2+1)×2=5×2=10\text{params}_{\text{dec}} = (m+n+1) \times n = (2+2+1) \times 2 = 5 \times 2 = 10

FC Output: k=1k=1 neuron, input dari hidden decoder m=2m=2 paramsFC=(m+1)×k=(2+1)×1=3\text{params}_{\text{FC}} = (m+1) \times k = (2+1) \times 1 = 3

Total=14+10+3=27\boxed{\text{Total} = 14 + 10 + 3 = 27}


Side-by-side: Interpretasi 1 vs Interpretasi 2 untuk 3.a (kenapa bisa 25 vs 27?)

[!question] Sumber Perbedaannya Cuma Satu: Apa “Input Decoder” Itu? Semua perbedaan angka (25 / 27 / 29) berakar dari satu pertanyaan: apa yang sebetulnya diumpankan ke decoder RNN di tiap timestep, dan berapa dimensinya (mm)? Begitu mm ditentukan, sisanya tinggal substitusi ke paramsdec=(m+n+1)×n\text{params}_{\text{dec}} = (m+n+1)\times n. Dua pembacaan yang paling sering muncul:

Interpretasi 1 - Context Vector Hanya untuk Inisialisasi (→ 25)

Asumsi arsitektur (gaya Sutskever et al., 2014 - “textbook standard”): c=e3c=e_3 hanya dipakai untuk menginisialisasi hidden state decoder (s0=cs_0 = c), lalu “dibuang”. Input riil yang diumpankan ke decoder di setiap timestep adalah prediksi token sebelumnya yt1R1y_{t-1} \in \mathbb{R}^1 (autoregresif/AR) - berdimensi 1 karena FC output cuma 1 neuron.

Diagram Interpretasi 1 Soal 3.a - context vector c=e3 hanya menginisialisasi s0 lalu dibuang; input riil decoder tiap timestep = y_{t-1} berdimensi 1 (autoregresif), breakdown parameter total 25

Encoder RNN (sama seperti sebelumnya): paramsenc=(4+2+1)×2=14\text{params}_{\text{enc}} = (4+2+1)\times 2 = \mathbf{14}

Decoder RNN: n=2n=2 neuron, input =yt1= y_{t-1}, dimensi m=1m = \mathbf{1} (bukan cc!) paramsdec=(m+n+1)×n=(1+2+1)×2=4×2=8\text{params}_{\text{dec}} = (m+n+1)\times n = (1+2+1)\times 2 = 4\times 2 = \mathbf{8}

FC Output (sama seperti sebelumnya): paramsFC=(2+1)×1=3\text{params}_{\text{FC}} = (2+1)\times 1 = \mathbf{3}

Totalinterp.1=14+8+3=25\boxed{\text{Total}_{\text{interp.1}} = 14 + 8 + 3 = \mathbf{25}}

Syarat Tersembunyi di Interpretasi Ini Supaya s0=cs_0 = c valid, dimensi cc harus sama dengan ndecn_{\text{dec}} - di soal ini kebetulan nenc=ndec=2n_{\text{enc}} = n_{\text{dec}} = 2, jadi syaratnya otomatis terpenuhi tanpa perlu matriks proyeksi tambahan. Ini bukan bukti bahwa interpretasi ini “benar”, hanya kebetulan numerik yang membuatnya tetap valid untuk dihitung.

Interpretasi 2 - Context Vector Jadi Input Eksplisit Tiap Timestep, Tanpa AR (→ 27)

Asumsi arsitektur (gaya Cho et al., 2014, disederhanakan - ini yang dipakai sebagai jawaban utama di atas): cc bukan sekadar inisialisasi, melainkan diumpankan langsung sebagai input decoder di setiap timestep (UdcU_d \cdot c pada formula sts_t); yt1y_{t-1} tidak dipakai sama sekali (tanpa AR/teacher forcing) - persis seperti yang dinyatakan literal di teks soal: “decoder menerima input context vector”. Karena itu s0s_0 diinisialisasi 0\vec 0 (bukan cc - kalau s0=cs_0=c juga, cc “masuk dua kali”).

Diagramnya sudah ditampilkan di awal §3.a (lihat gambar di atas) - input decoder =c= c, dimensi m=2m = \mathbf{2}: paramsdec=(2+2+1)×2=10Totalinterp.2=14+10+3=27\text{params}_{\text{dec}} = (2+2+1)\times 2 = \mathbf{10} \quad\Rightarrow\quad \boxed{\text{Total}_{\text{interp.2}} = 14 + 10 + 3 = \mathbf{27}}

Kenapa Catatan Ini Memilih Interpretasi 2 Dua alasan, sekaligus argumen kenapa Interpretasi 1 - walau valid sebagai pembacaan independen untuk 3.a - jadi sulit dipertahankan begitu dipasangkan dengan 3.d–3.e:

  1. Kecocokan literal dengan teks soal: kalimat “decoder menerima input context vector” paling natural dibaca sebagai ”cc = input decoder”, bukan ”cc = nilai inisialisasi”. Kalau yang dimaksud inisialisasi, kalimat yang lebih wajar adalah “decoder diinisialisasi dengan context vector”.
  2. Konsistensi struktural dengan 3.d/3.e: attention butuh “slot” input yang menerima context vector dinamis ctc_t di tiap timestep (itulah esensi attention - cc berubah-ubah, bukan dihitung sekali lalu dibuang). Interpretasi 2 sudah menyediakan slot ini sejak 3.a, sehingga 3.d tinggal “mengganti isi slot” (cctc \to c_t) tanpa mengubah struktur ataupun bobot UdU_d - persis seperti framing soal “model dari soal a … dilengkapi attention”. Interpretasi 1 tidak punya slot semacam itu (karena cc “dibuang” setelah inisialisasi), sehingga 3.d terpaksa membangun jalur input baru yang tidak ada di 3.a - itu sudah mengubah arsitektur decoder, bukan sekadar “menambah attention unit”.

3.b Jumlah Parameter - Encoder LSTM(2) + Decoder LSTM(2) + FC(1)

Diagram unrolled Soal 3.b - Encoder LSTM(2) di kiri-bawah, context vector c=e3, Decoder LSTM(2) + FC di kanan-atas, beserta breakdown parameter (total 99)

Formula Parameter LSTMLSTM (nn neuron, input mm dimensi): terdapat 4 gate, masing-masing punya set weight sendiri: params=(m+n+1)×4n\text{params} = (m+n+1) \times 4n

Encoder LSTM: n=2n=2 neuron, input m=4m=4 fitur paramsenc=(m+n+1)×4n=(4+2+1)×4×2=7×8=56\text{params}_{\text{enc}} = (m+n+1) \times 4n = (4+2+1) \times 4 \times 2 = 7 \times 8 = 56

Decoder LSTM: n=2n=2 neuron, input = context vector cc = dimensi m=2m=2 (konsisten dengan 3.a) paramsdec=(m+n+1)×4n=(2+2+1)×4×2=5×8=40\text{params}_{\text{dec}} = (m+n+1) \times 4n = (2+2+1) \times 4 \times 2 = 5 \times 8 = 40

FC Output: k=1k=1 neuron, input m=2m=2 paramsFC=(2+1)×1=3\text{params}_{\text{FC}} = (2+1) \times 1 = 3

Total=56+40+3=99\boxed{\text{Total} = 56 + 40 + 3 = 99}


3.c Formula Inferensi Decoder (RNN, tanpa Attention)

Diagram Encoder-Decoder Soal 3.c - context vector c = e3 diumpankan konstan ke setiap timestep decoder

Konteks: Sesuai definisi di soal, context vector c=e3c = e_3 (hidden state terakhir encoder) menjadi input decoder yang diumpankan di setiap timestep (bukan yt1y_{t-1} - soal eksplisit bilang “decoder menerima input context vector”, dan ini juga konsisten dengan dimensi m=2m=2 yang dipakai pada perhitungan parameter 3.a/3.b).

Inisialisasi: s0=0s_0 = \vec{0}

s0=0s_0=\vec{0} vs s0=cs_0=c - bukan “dua pilihan bebas”, tapi dua arsitektur berbeda! Versi sebelumnya catatan ini menulis ”s0=0s_0=\vec{0} (atau dapat pula s0=cs_0=c, sesuai konvensi)” - kalimat itu menyesatkan karena terdengar seolah s0s_0 boleh diisi salah satu dari dua nilai secara bebas/tertukar dalam arsitektur yang sama. Padahal keduanya adalah dua desain seq2seq yang berbeda dan tidak bisa dicampur:

Konvensi soal ini (dipakai di §3.c–3.e)Konvensi Sutskever et al. (2014)
Peran ccinput decoder di setiap timestep (UdcU_d \cdot c dalam formula sts_t)hanya untuk inisialisasi, lalu dibuang
Inisialisasi s0s_00\vec{0} - netral, karena cc toh sudah masuk lewat UdcU_d \cdot c pada t=1t=1; mengisi s0=cs_0=c di sini berarti cc “masuk dua kali” (redundan, dan tidak konsisten dengan dimensi m=2m=2 yang dipakai pada hitungan parameter §3.a/3.b)s0=cs_0 = c - di sinilah cc satu-satunya cara info encoder masuk ke decoder
Input riil tiap timestepcc (konstan/dinamis ctc_t tergantung dengan/tanpa attention)token output sebelumnya yt1y_{t-1} (autoregresif) - lihat baris 698 di atas

Jadi untuk soal ini, jawabannya hanya s0=0s_0=\vec{0} - bukan “boleh pilih salah satu”. s0=cs_0=c disebut semata sebagai perbandingan supaya kamu tidak bingung kalau menjumpai konvensi itu di soal/sumber lain (mis. Kuis 2 yang memakai gaya Sutskever). Jangan menulis kedua opsi itu sebagai jawaban yang setara di lembar ujian - pilih satu yang konsisten dengan definisi arsitektur yang diberikan soal, dan di sini definisinya eksplisit menyebut “decoder menerima input context vector” \Rightarrow konvensi kolom kiri \Rightarrow s0=0s_0=\vec{0}.

Timestep t=1t=1: s1=f(Udc+Wds0+bd)s_1 = f(U_d \cdot c + W_d \cdot s_0 + b_d) y1=g(Vs1+by)y_1 = g(V \cdot s_1 + b_y)

Timestep t=2t=2: s2=f(Udc+Wds1+bd)s_2 = f(U_d \cdot c + W_d \cdot s_1 + b_d) y2=g(Vs2+by)y_2 = g(V \cdot s_2 + b_y)

Formula umum untuk timestep tt:

st=f(Udc+Wdst1+bd)\boxed{s_t = f(U_d \cdot c + W_d \cdot s_{t-1} + b_d)} yt=g(Vst+by)\boxed{y_t = g(V \cdot s_t + b_y)}

dimana ff = fungsi aktivasi hidden layer decoder, gg = fungsi aktivasi output layer, dan cc = context vector (konstan, sama di semua timestep - ini yang membedakannya dari versi attention di 3.e di mana context vector berubah tiap timestep).


3.d Jumlah Parameter - Encoder RNN(2) + Decoder RNN(2) + FC(1) + 1 Attention Unit

Kenapa Tinggal Tambah, Bukan Rombak Ulang? Karena slot input decoder sudah berupa context vector (dim 2) sejak versi tanpa-attention (3.a), menambahkan attention tidak mengubah struktur decoder maupun FC - ia hanya mengganti context vector yang tadinya konstan (cc) menjadi dinamis (ctc_t, dihitung ulang tiap timestep). Dimensinya tetap sama (2), jadi memakai matriks UdU_d yang sama persis, tidak perlu bobot baru. Yang benar-benar baru hanyalah alignment network yang menghitung ctc_t.

Dari soal a: Total parameter (tanpa attention) =27= 27

Parameter Attention Unit (Bahdanau-style):

etj=align(st1,hj)=vatanh(Wast1+Uahj)e_{tj} = \text{align}(s_{t-1}, h_j) = v_a^\top \tanh(W_a s_{t-1} + U_a h_j)

[!question] Apa itu nan_a, dan kenapa =2=2? nan_a = dimensi hidden layer attention/alignment network - banyak neuron pada lapisan tersembunyi yang menampung representasi gabungan tanh(Wast1+Uahj)Rna\tanh(W_a s_{t-1} + U_a h_j) \in \mathbb{R}^{n_a}, sebelum diproyeksikan oleh vav_a menjadi skalar alignment score etjRe_{tj} \in \mathbb{R}. Persis seperti nn menentukan ukuran hidden state RNN/LSTM, nan_a menentukan “lebar” jaringan attention - murni hyperparameter desain, bukan sesuatu yang bisa diturunkan dari m,nm, n, atau kk.

Jujur saja: soal TIDAK memberikan nilai nan_a, dan tidak ada cara untuk “menurunkannya” dari mm, nn, atau kk yang sudah diketahui - beda dengan nenc,ndecn_{\text{enc}}, n_{\text{dec}} yang eksplisit disebut (“RNN dengan 2 neuron”). Ini murni celah informasi di soal, jadi alasan di balik angka manapun yang dipilih hanyalah konvensi/asumsi, bukan fakta matematis yang bisa dibuktikan. Dua pembacaan yang sama-sama masuk akal:

Pembacaannan_aparamsattn=na(nenc+ndec+1)\text{params}_{\text{attn}} = n_a(n_{\text{enc}}+n_{\text{dec}}+1)Total
”Satu attention unit” dibaca harfiah = lapisan attention berisi 1 neuron (mengikuti pola “RNN dengan 2 neuron”, “FC 1 neuron” di soal yang sama persis)111×5=51 \times 5 = 527+5=3227+5=\mathbf{32}
nan_a disamakan dengan nenc=ndec=2n_{\text{enc}}=n_{\text{dec}}=2 - konvensi umum ketika ukuran attention tak disebutkan eksplisit, supaya ketiga ruang vektor selaras222×5=102 \times 5 = 1027+10=3727+10=\mathbf{37}

Catatan ini memilih na=2n_a=2 (baris kedua) dengan pertimbangan: kata “unit” - bukan “neuron” seperti di kalimat-kalimat lain pada soal yang sama - kemungkinan besar merujuk ke modul/mekanisme attention secara keseluruhan (istilah umum “attention unit/attention layer” di literatur), bukan spesifikasi lebar layer-nya. Tapi ini tetap dugaan berbasis konteks linguistik, bukan kepastian matematis - baris pertama (na=1n_a=1) sama validnya kalau dibaca harfiah. Yang sebenarnya lebih menentukan nilai ujian: tuliskan asumsimu secara eksplisit (“karena soal tidak menyebutkan nan_a, saya asumsikan na=n_a=\dots karena \dots”) lalu substitusi ke formula umum - itulah yang biasanya dinilai pemeriksa, bukan kecocokan angka semata.

Setiap matriks memetakan vektor input ke ruang attention berdimensi nan_a:

  • WaRna×ndecW_a \in \mathbb{R}^{\,n_a \times n_{\text{dec}}}: bobot untuk st1s_{t-1} (decoder, dim ndec=2n_{\text{dec}}=2)     na×ndec=2×2=4\;\to\; n_a \times n_{\text{dec}} = 2 \times 2 = \mathbf{4} parameter
  • UaRna×nencU_a \in \mathbb{R}^{\,n_a \times n_{\text{enc}}}: bobot untuk hjh_j (encoder, dim nenc=2n_{\text{enc}}=2)     na×nenc=2×2=4\;\to\; n_a \times n_{\text{enc}} = 2 \times 2 = \mathbf{4} parameter
  • vaRnav_a \in \mathbb{R}^{\,n_a}: vektor proyeksi tanh()Rna\tanh(\cdot)\in\mathbb{R}^{n_a} \to skalar etje_{tj}     na=2\;\to\; n_a = \mathbf{2} parameter
  • (catatan: formula align\text{align} di soal tidak menyertakan bias bab_a. Sebagian varian Bahdanau menambahkan tanh(Wast1+Uahj+ba)\tanh(W_a s_{t-1} + U_a h_j + b_a), yang akan menyumbang +na+\,n_a parameter ekstra - tapi karena formula yang diberikan tidak memuatnya, kita ikuti apa adanya dan tidak menambah bab_a.)

Formula umum (agar terlihat jelas bagaimana tiap suku bergantung pada nan_a): paramsattention=nandecWa  +  nanencUa  +  nava  =  na(ndec+nenc+1)\text{params}_{\text{attention}} = \underbrace{n_a \cdot n_{\text{dec}}}_{W_a} \;+\; \underbrace{n_a \cdot n_{\text{enc}}}_{U_a} \;+\; \underbrace{n_a}_{v_a} \;=\; n_a\,(n_{\text{dec}} + n_{\text{enc}} + 1)

Substitusi na=ndec=nenc=2n_a = n_{\text{dec}} = n_{\text{enc}} = 2: paramsattention=2×(2+2+1)=2×5=10\text{params}_{\text{attention}} = 2 \times (2 + 2 + 1) = 2 \times 5 = \mathbf{10}

Total=27+10=37\boxed{\text{Total} = 27 + 10 = 37}


3.e Formula Inferensi Decoder dengan Attention (αt\alpha_t)

Dengan attention, context vector berbeda di setiap timestep decoder (ctc_t, bukan cc tunggal yang konstan seperti di 3.c) - namun ia tetap menempati slot input yang sama pada decoder cell (dimensi sama, bobot UdU_d sama).

Hitung alignment score antara st1s_{t-1} dan setiap hidden encoder hjh_j (j=1,2,3j=1,2,3): etj=align(st1,hj)e_{tj} = \text{align}(s_{t-1}, h_j)

Hitung attention weights via softmax: αtj=exp(etj)k=13exp(etk)\alpha_{tj} = \frac{\exp(e_{tj})}{\sum_{k=1}^{3} \exp(e_{tk})}

Hitung context vector pada timestep tt: ct=j=13αtjhjc_t = \sum_{j=1}^{3} \alpha_{tj} \cdot h_j

Formula decoder dengan attention (cukup ganti cctc \to c_t dari formula 3.c - tidak ada bobot baru di decoder/FC):

st=f(Udct+Wdst1+bd)\boxed{s_t = f(U_d \cdot c_t + W_d \cdot s_{t-1} + b_d)} yt=g(Vst+by)\boxed{y_t = g(V \cdot s_t + b_y)}

Lengkap untuk t=1t=1 dan t=2t=2:

Timestep t=1: e1j=align(s0,hj),j{1,2,3}e_{1j} = \text{align}(s_0, h_j), \quad j \in \{1,2,3\} α1j=exp(e1j)k=13exp(e1k),jα1j=1\alpha_{1j} = \frac{\exp(e_{1j})}{\sum_{k=1}^{3}\exp(e_{1k})}, \quad \sum_j \alpha_{1j} = 1 c1=α11h1+α12h2+α13h3c_1 = \alpha_{11} h_1 + \alpha_{12} h_2 + \alpha_{13} h_3 s1=f(Udc1+Wds0+bd)s_1 = f(U_d \cdot c_1 + W_d \cdot s_0 + b_d) y1=g(Vs1+by)y_1 = g(V \cdot s_1 + b_y)

Timestep t=2: e2j=align(s1,hj),j{1,2,3}e_{2j} = \text{align}(s_1, h_j), \quad j \in \{1,2,3\} α2j=exp(e2j)k=13exp(e2k)\alpha_{2j} = \frac{\exp(e_{2j})}{\sum_{k=1}^{3}\exp(e_{2k})} c2=α21h1+α22h2+α23h3c_2 = \alpha_{21} h_1 + \alpha_{22} h_2 + \alpha_{23} h_3 s2=f(Udc2+Wds1+bd)s_2 = f(U_d \cdot c_2 + W_d \cdot s_1 + b_d) y2=g(Vs2+by)y_2 = g(V \cdot s_2 + b_y)


Bagian IV - Reinforcement Learning (Nilai 25)

4.1 Tabel Perbandingan Supervised Learning vs Reinforcement Learning (Nilai 6)

Soal: Lengkapi tabel berikut ini, yang membandingkan antara supervised learning dan reinforcement learning. Jawaban yang dituliskan di luar tabel tidak dinilai. (Nilai 6)

Pilihan yang diberikan pada tiap baris tabel soal:

  • Informasi yang diperlukan oleh agen pembelajar - pilih: pasangan aksi yang harus dilakukan dan kondisi tertentu / informasi reward
  • Hasil observasi yang dipelajari berupa data sekuensial - pilih: Ya / Tidak / Belum Tentu
  • Apakah yang dipelajari oleh agen? - jawab dengan singkat
AspekSupervised LearningReinforcement Learning
Informasi yang diperlukan oleh agenPasangan aksi yang harus dilakukan dan kondisi tertentu (labeled input-output pairs)Informasi reward (sinyal reward dari lingkungan setelah tiap aksi)
Hasil observasi berupa data sekuensialBelum Tentu (bisa i.i.d. seperti klasifikasi gambar, bisa sekuensial seperti time series)Ya (agen berinteraksi dengan lingkungan secara sekuensial: state→action→reward→new state)
Apakah yang dipelajari oleh agen?Fungsi pemetaan dari input ke output (mapping f:XYf: X \to Y)Policy (kebijakan) terbaik - yaitu aksi mana yang harus diambil pada setiap state agar cumulative reward maksimal

4.2 Wumpus World - TD Q-Learning (Nilai 19)

Soal: Terdapat persoalan “Wumpus World” sebagai berikut. Setiap ruang memiliki koordinat posisi; misal dalam gambar agen di ruang (1,1); wumpus di ruang (3,1), gold berada di ruang (3,2); salah satu ruang berisi pit adalah ruang (1,3).

Agen diharapkan dapat mencapai ruang berisi gold dan tidak masuk ke dalam ruang berisi pit ataupun wumpus, dengan Reinforcement Learning (RL). Aksi agen hanyalah N (North), E (East), S (South), atau W (West). Informasi yang bisa diterima agen dari lingkungan hanyalah reward dan posisi ruang. Reward melakukan aksi pada suatu state untuk mencapai state lain adalah 0 (nol), kecuali aksi yang membuat agen berada di terminal-state. Ruang berisi wumpus, pit, dan gold adalah terminal-state. Reward menuju ruang berisi gold dari ruang yang bertetangga (selain terminal-state) adalah +10. Reward menuju ruang berisi wumpus atau pit dari ruang yang bertetangga (selain terminal-state) adalah -10. Setelah agen melakukan percobaan pemilihan aksi tiga episode sebagai berikut, tentukan aksi terbaik yang bisa dilakukan pada suatu ruang (selain terminal-state) berdasarkan nilai Q(s,a) hasil update terakhir dengan Temporal Difference Q-Learning. Inisialisasi semua nilai Q(s,a) dengan nilai nol (0). Nilai step (learning rate) 0.4 dan discount factor adalah 0.6.

Episode:

  • I: (1,1)(2,1)(3,1)(1,1) \to (2,1) \to (3,1)
  • II: (1,1)(1,2)(2,2)(3,2)(1,1) \to (1,2) \to (2,2) \to (3,2)
  • III: (1,1)(1,2)(1,3)(1,1) \to (1,2) \to (1,3)

a. [Nilai 12] Tuliskan ‘update’ nilai Q(s,a) dengan rinci sesuai episode yang dituliskan.

b. [Nilai 3] Gambarkan grid dengan nilai update Q(s,a) untuk setiap satu episode.

c. [Nilai 4] Gambarkan aksi terbaik di setiap ruang selain terminal-state berdasarkan nilai Q(s,a) terakhir.

Setup Grid (dari gambar soal)

Wumpus World - grid 4×4 dengan posisi Start, Wumpus, Gold, Pit, dan Breeze/Stench

Berdasarkan gambar soal (grid 4×4, koordinat (x,y)(x,y) dengan xx = kolom, yy = baris):

y=4 | Stench  |                       | Breeze | PIT    |
y=3 | WUMPUS  | Breeze, Stench, GOLD  | PIT    | Breeze |
y=2 | Stench  |                       | Breeze |        |
y=1 | START   | Breeze                | PIT    | Breeze |
      x=1            x=2                x=3      x=4

Notasi Koordinat pada Soal Soal menulis posisi ruang sebagai (a,b)=(baris,kolom)(a,b) = (\text{baris}, \text{kolom}), dihitung mulai dari (1,1)(1,1) di pojok kiri-bawah (tempat agen start) - bukan (x,y)=(kolom,baris)(x,y) = (\text{kolom}, \text{baris}) seperti pada grid di atas. Dengan notasi soal ini, posisi-posisi pada gambar konsisten dengan teks soal:

  • Wumpus = baris 3 kolom 1 → ditulis soal sebagai (3,1)(3,1) → pada grid (x,y)(x,y) di atas = (x=1,y=3)(x{=}1, y{=}3)
  • Gold = baris 3 kolom 2 → ditulis soal sebagai (3,2)(3,2) → pada grid (x,y)(x,y) = (x=2,y=3)(x{=}2, y{=}3) - sel yang sama juga memuat Breeze & Stench, sesuai gambar
  • Pit = baris 1 kolom 3 → ditulis soal sebagai (1,3)(1,3) → pada grid (x,y)(x,y) = (x=3,y=1)(x{=}3, y{=}1) (dua pit lain yang terlihat pada gambar berada di (x=3,y=3)(x{=}3,y{=}3) dan (x=4,y=4)(x{=}4,y{=}4))

Karena episode pada soal juga memakai notasi (baris,kolom)(\text{baris}, \text{kolom}) yang sama, semua state akhir episode di bawah ini cocok dengan jenis terminal-nya tanpa konversi tambahan.

Terminal states (notasi soal, baris-kolom): Wumpus di (3,1), Gold di (3,2), Pit di (1,3), (3,3), dan (4,4).

Reward:

  • Transisi normal (non-terminal): R=0R = 0
  • Menuju Gold: R=+10R = +10
  • Menuju Wumpus atau Pit: R=10R = -10
  • State terminal: Q-value = 0

Parameter: α=0.4\alpha = 0.4, γ=0.6\gamma = 0.6, inisialisasi semua Q(s,a)=0Q(s,a) = 0

Formula Q-Learning (off-policy TD):

Q(s,a)Q(s,a)+α[R+γmaxaQ(s,a)Q(s,a)]Q(s, a) \leftarrow Q(s, a) + \alpha \Big[R + \gamma \max_{a'} Q(s', a') - Q(s, a)\Big]

[!abstract] Legenda Notasi (Bagian IV)

SimbolArti di sini⚠️ Beda makna di bagian lain
α\alphalearning ratedi Bagian III, αtj\alpha_{tj} = attention weight (beda total - bukan kebetulan namanya sama, tapi konsepnya beda!)
γ\gammadiscount factorsama persis dengan γ\gamma pada formula Return di catatan ML Last Term
RRreward sesaat dari transisi sss \to s'-
Q(s,a)Q(s,a)action-value function (estimasi cumulative reward)-
s,a,ss, a, s'state sekarang, aksi, state berikutnyass di Bagian III = hidden state decoder (beda total!)

(i) Update Nilai Q(s,a) per Episode

Episode I: (1,1)(2,1)(3,1)(1,1) \to (2,1) \to (3,1)

Step 1: (1,1)E(2,1)(1,1) \xrightarrow{E} (2,1), s=(1,1)s=(1,1), a=Ea=E, s=(2,1)s'=(2,1)

R=0R = 0 (transisi normal), maxaQ((2,1),a)=max{0,0,0,0}=0\max_{a'} Q((2,1), a') = \max\{0,0,0,0\} = 0

Q((1,1),E)Q((1,1),E)+α[R+γmaxaQ((2,1),a)Q((1,1),E)]Q((1,1), E) \leftarrow Q((1,1), E) + \alpha\left[R + \gamma \max_{a'} Q((2,1), a') - Q((1,1), E)\right] =0+0.4[0+0.600]=0+0.4(0)=0= 0 + 0.4\left[0 + 0.6 \cdot 0 - 0\right] = 0 + 0.4(0) = \mathbf{0}

Step 2: (2,1)E(3,1)(2,1) \xrightarrow{E} (3,1), s=(2,1)s=(2,1), a=Ea=E, s=(3,1)s'=(3,1) [Terminal: Wumpus]

R=10R = -10, maxaQ((3,1),a)=0\max_{a'} Q((3,1), a') = 0 (terminal state)

Q((2,1),E)0+0.4[10+0.600]Q((2,1), E) \leftarrow 0 + 0.4\left[-10 + 0.6 \cdot 0 - 0\right] =0+0.4(10)=4= 0 + 0.4 \cdot (-10) = \mathbf{-4}


Episode II: (1,1)(1,2)(2,2)(3,2)(1,1) \to (1,2) \to (2,2) \to (3,2)

Step 1: (1,1)N(1,2)(1,1) \xrightarrow{N} (1,2), s=(1,1)s=(1,1), a=Na=N, s=(1,2)s'=(1,2)

R=0R = 0, maxaQ((1,2),a)=max{0,0,0,0}=0\max_{a'} Q((1,2), a') = \max\{0,0,0,0\} = 0

Q((1,1),N)0+0.4[0+0.600]=0Q((1,1), N) \leftarrow 0 + 0.4\left[0 + 0.6 \cdot 0 - 0\right] = \mathbf{0}

Step 2: (1,2)E(2,2)(1,2) \xrightarrow{E} (2,2), s=(1,2)s=(1,2), a=Ea=E, s=(2,2)s'=(2,2)

R=0R = 0, maxaQ((2,2),a)=max{0,0,0,0}=0\max_{a'} Q((2,2), a') = \max\{0,0,0,0\} = 0

Q((1,2),E)0+0.4[0+0.600]=0Q((1,2), E) \leftarrow 0 + 0.4\left[0 + 0.6 \cdot 0 - 0\right] = \mathbf{0}

Step 3: (2,2)E(3,2)(2,2) \xrightarrow{E} (3,2), s=(2,2)s=(2,2), a=Ea=E, s=(3,2)s'=(3,2) [Terminal: Gold]

R=+10R = +10, maxaQ((3,2),a)=0\max_{a'} Q((3,2), a') = 0 (terminal state)

Q((2,2),E)0+0.4[10+0.600]Q((2,2), E) \leftarrow 0 + 0.4\left[10 + 0.6 \cdot 0 - 0\right] =0+0.410=+4= 0 + 0.4 \cdot 10 = \mathbf{+4}


Episode III: (1,1)(1,2)(1,3)(1,1) \to (1,2) \to (1,3)

Step 1: (1,1)N(1,2)(1,1) \xrightarrow{N} (1,2), s=(1,1)s=(1,1), a=Na=N, s=(1,2)s'=(1,2)

R=0R = 0, maxaQ((1,2),a)=max{Q(N),Q(E),Q(S),Q(W)}=max{0,0,0,0}=0\max_{a'} Q((1,2), a') = \max\{Q(N), Q(E), Q(S), Q(W)\} = \max\{0, 0, 0, 0\} = 0

Q((1,1),N)0+0.4[0+0.600]=0Q((1,1), N) \leftarrow 0 + 0.4\left[0 + 0.6 \cdot 0 - 0\right] = \mathbf{0}

Step 2: (1,2)N(1,3)(1,2) \xrightarrow{N} (1,3), s=(1,2)s=(1,2), a=Na=N, s=(1,3)s'=(1,3) [Terminal: Pit]

R=10R = -10, maxaQ((1,3),a)=0\max_{a'} Q((1,3), a') = 0 (terminal state)

Q((1,2),N)0+0.4[10+0.600]Q((1,2), N) \leftarrow 0 + 0.4\left[-10 + 0.6 \cdot 0 - 0\right] =0+0.4(10)=4= 0 + 0.4 \cdot (-10) = \mathbf{-4}


Ringkasan Semua Update:

EpisodeStepTransisiRQ sebelumQ sesudah
I1(1,1)E(2,1)(1,1) \xrightarrow{E} (2,1)000
I2(2,1)E(3,1)(2,1) \xrightarrow{E} (3,1)-100-4
II1(1,1)N(1,2)(1,1) \xrightarrow{N} (1,2)000
II2(1,2)E(2,2)(1,2) \xrightarrow{E} (2,2)000
II3(2,2)E(3,2)(2,2) \xrightarrow{E} (3,2)+100+4
III1(1,1)N(1,2)(1,1) \xrightarrow{N} (1,2)000
III2(1,2)N(1,3)(1,2) \xrightarrow{N} (1,3)-100-4

★ = masuk ke terminal state


(ii) Grid dengan Nilai Q(s,a) setiap Episode

Pemetaan State Soal → Grid (x,y)(x,y) State (a,b)(a,b) pada soal (baris, kolom) terletak di sel grid (x=b, y=a)(x{=}b,\ y{=}a). Jadi Q((2,1),)(x=1,y=2)Q((2,1),\cdot) \to (x{=}1,y{=}2), Q((1,2),)(x=2,y=1)Q((1,2),\cdot) \to (x{=}2,y{=}1), Q((2,2),)(x=2,y=2)Q((2,2),\cdot) \to (x{=}2,y{=}2) - semuanya berdekatan dengan START di (x=1,y=1)(x{=}1,y{=}1), sesuai jalur eksplorasi tiga episode.

Tiga episode di atas hanya menghasilkan tiga nilai Q(s,a)Q(s,a) non-nol secara kumulatif - masing-masing satu panah baru per episode (lihat panah merah di bawah; panah abu-abu = update episode sebelumnya yang sudah “menempel”). Catatan: di grid (x,y)(x,y), aksi soal EE (a+1a{+}1) bergerak ke arah +y+y, dan aksi soal NN (b+1b{+}1) bergerak ke arah +x+x - bukan kompas baku, melainkan mengikuti orientasi sumbu pada gambar grid.

Akumulasi nilai Q(s,a) Wumpus World setelah Episode I, II, dan III

  • Setelah Episode I: Q((2,1),E)=4Q((2,1),E) = -4 → grid (x=1,y=2)E(x=1,y=3)(x{=}1,y{=}2)\xrightarrow{E}(x{=}1,y{=}3) [Wumpus]
  • Setelah Episode II: tambahan Q((2,2),E)=+4Q((2,2),E) = +4 → grid (x=2,y=2)E(x=2,y=3)(x{=}2,y{=}2)\xrightarrow{E}(x{=}2,y{=}3) [Gold]
  • Setelah Episode III: tambahan Q((1,2),N)=4Q((1,2),N) = -4 → grid (x=2,y=1)N(x=3,y=1)(x{=}2,y{=}1)\xrightarrow{N}(x{=}3,y{=}1) [Pit]

(iii) Aksi Terbaik di Setiap State (Non-Terminal)

Aksi terbaik = argmaxaQ(s,a)\arg\max_a Q(s, a).

Tabel nilai Q final (hanya yang non-nol):

StateQ(N)Q(E)Q(S)Q(W)Aksi Terbaik
(1,1)0000Tie - semua 0
(2,1)0-400N, S, atau W (hindari E→Wumpus)
(1,2)-4000E, S, atau W (hindari N→Pit)
(2,2)0+400E → menuju Gold ✅
(1,4)0000Tie - belum dijelajahi
(2,3)0000Tie - belum dijelajahi
0000Tie - belum dijelajahi

Grid aksi terbaik (→ = E, ↑ = N, ↓ = S, ← = W):

     x=1         x=2         x=3       x=4
y=4 | ?          | ?          | ?        | [PIT]    |
y=3 | [WUMPUS]   | [GOLD]     | [PIT]    | ?        |
y=2 | ↑/↓/←      | →          | ?        | ?        |
y=1 | ?          | →/↓/←      | [PIT]    | ?        |

Interpretasi Setelah 3 episode, Q-learning baru belajar dari 3 jalur yang dieksplor. State yang belum dikunjungi (semua Q=0) belum memiliki preferensi aksi. Hanya 3 state yang mendapat update bermakna:

  • (2,1): Hindari E (menuju Wumpus, Q=-4)
  • (1,2): Hindari N (menuju Pit, Q=-4); E adalah arah menuju (2,2) yang dari sana bisa ke Gold
  • (2,2): E adalah aksi terbaik jelas (Q=+4), menuju Gold

Referensi

  • Slide IF3270 - RNN 1 (Parameter counting, Forward Propagation)
  • Slide IF3270 - RNN 2 (BPTT, Encoder-Decoder)
  • Slide IF3270 - Attention dan Transformer (Encoder-Decoder with Attention, Bahdanau)
  • Slide IF3270 - Reinforcement Learning (Q-Learning, TD Learning)
  • Hochreiter & Schmidhuber (1997) - Long Short-Term Memory
  • Bahdanau et al. (2014) - Neural Machine Translation by Jointly Learning to Align and Translate
  • Sutton & Barto (2018) - Reinforcement Learning: An Introduction, Ch. 6