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.

  • e5 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: Arsitektur “many-to-many (equal input-output)”, hidden RNN 2 neuron, 3 time-steps, aktivasi tanh; output 1 neuron, aktivasi sigmoid. Tabel input-output (timestep dimulai t=1):

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: Input 10 fitur. Hidden 1: Simple RNN 6 neuron. Hidden 2: Simple RNN 5 neuron. Hidden 3: Simple RNN 4 neuron. Hidden 4: Dense 3 neuron. Output: Dense 2 neuron. Banyaknya parameter?

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 mengenai Context Vector dan Encoder-Decoder.

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 1 bulan berikutnya berdasarkan time series 10 tahun, menggunakan RNN dengan data 3 bulan sebelumnya.

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 (machine translation): teks bahasa sumber → teks bahasa target, dikembangkan dengan RNN.

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 (positif/negatif) dengan RNN.

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: 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) vs 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: 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 ✅ — Sequence tagging (NER, POS tagging, dll.) adalah use case utama Bi-RNN karena butuh konteks dari dua arah.

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: Input sequence X={[0.5,0.3],[0.2,0.1],[0.6,0.8]}X = \{[0.5, 0.3], [0.2, 0.1], [0.6, 0.8]\}, target Y=[B,A,C]Y = [B, A, C]. Output probabilitas LSTM:

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: LSTM sederhana, 1 hidden neuron (hR1h \in \mathbb{R}^1), input 2 fitur (xR2x \in \mathbb{R}^2). Target adalah nilai pada hidden unit.

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)

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: Encoder-Decoder untuk prediksi sekuens 2 elemen deret.

  • Encoder: input sequence panjang 3 timestep, vektor 4 fitur → menghasilkan hidden vector e1,e2,e3e_1, e_2, e_3
  • Decoder: menerima context vector → menghasilkan sequence 2 timestep yaitu y1y_1 dan y2y_2

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

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

Decoder RNN: n=2n=2 neuron, input = context vector 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}


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

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 m=2m=2 (dari context vector) 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)

Konteks: Context vector c=e3c = e_3 (hidden state terakhir encoder) → initial hidden state decoder s0=cs_0 = c.

Inisialisasi: s0=c=e3s_0 = c = e_3

Timestep t=1t=1 — input decoder: y0y_0 (bisa token <start> atau context vector cc): s1=f(Udy0+Wds0+bd)s_1 = f(U_d \cdot y_0 + W_d \cdot s_0 + b_d) y1=g(Vs1+by)y_1 = g(V \cdot s_1 + b_y)

Timestep t=2t=2 — input decoder: y1y_1 (output sebelumnya, autoregressive): s2=f(Udy1+Wds1+bd)s_2 = f(U_d \cdot y_1 + 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(Udyt1+Wdst1+bd)\boxed{s_t = f(U_d \cdot y_{t-1} + 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.


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

Dari soal a: Total parameter (tanpa attention) = 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)

dimana:

  • WaW_a: bobot untuk st1s_{t-1} (decoder), ukuran na×ndec=2×2=4n_a \times n_{\text{dec}} = 2 \times 2 = 4 parameter
  • UaU_a: bobot untuk hjh_j (encoder), ukuran na×nenc=2×2=4n_a \times n_{\text{enc}} = 2 \times 2 = 4 parameter
  • vav_a: vektor proyeksi, ukuran na=2n_a = 2 parameter

paramsattention=4+4+2=10\text{params}_{\text{attention}} = 4 + 4 + 2 = 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).

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:

st=f(Udyt1+Wdst1+Wcct+bd)\boxed{s_t = f(U_d \cdot y_{t-1} + W_d \cdot s_{t-1} + W_c \cdot c_t + 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(Udy0+Wds0+Wcc1+bd)s_1 = f(U_d \cdot y_0 + W_d \cdot s_0 + W_c \cdot c_1 + 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(Udy1+Wds1+Wcc2+bd)s_2 = f(U_d \cdot y_1 + W_d \cdot s_1 + W_c \cdot c_2 + 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 perbandingan.

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)

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]


(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.

Setelah Episode I — hanya Q((2,1),E) berubah:

     x=1            x=2                 x=3        x=4
y=4 |              |                   |           | [PIT]   |
y=3 | [WUMPUS]     | [GOLD]            | [PIT]     |         |
y=2 | Q(E)= -4    |                   |           |         |
y=1 | START        |                   | [PIT]     |         |

Setelah Episode II — tambahan Q((2,2),E) berubah:

     x=1            x=2                 x=3        x=4
y=4 |              |                   |           | [PIT]   |
y=3 | [WUMPUS]     | [GOLD]            | [PIT]     |         |
y=2 | Q(E)= -4    | Q(E)= +4         |           |         |
y=1 | START        |                   | [PIT]     |         |

Setelah Episode III — tambahan Q((1,2),N) berubah:

     x=1            x=2                 x=3        x=4
y=4 |              |                   |           | [PIT]   |
y=3 | [WUMPUS]     | [GOLD]            | [PIT]     |         |
y=2 | Q(E)= -4    | Q(E)= +4         |           |         |
y=1 | START        | Q(N)= -4         | [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