Fungsi nilai-aksi

Reinforcement Learning dengan Gymnasium di Python

Fouad Trad

Machine Learning Engineer

Fungsi nilai-aksi (Q-value)

  • Return ekspektasi dari:
    • Mulai pada state $s$
    • Mengambil aksi $a$
    • Mengikuti kebijakan
  • Mengestimasi kelayakan aksi dalam state

Gambar yang menunjukkan rumus menghitung q_value untuk state dan aksi, Q(s,a) sebagai jumlah reward langsung setelah aksi dan nilai terdiskon dari state baru untuk kebijakan tertentu.

Reinforcement Learning dengan Gymnasium di Python

Grid world

Gambar yang menunjukkan environment kustom dengan 2 gunung dan sebuah berlian.

  • Nilai-state

Gambar yang menunjukkan nilai-state yang telah kita hitung untuk semua state.

Reinforcement Learning dengan Gymnasium di Python

Q-value - state 4

Gambar yang menunjukkan agen pada state 4.

  • Agen mulai di state 4

Gambar yang menunjukkan nilai-state yang telah kita hitung untuk semua state.

Reinforcement Learning dengan Gymnasium di Python

Q-value - state 4

Gambar yang menunjukkan 4 aksi yang dapat dilakukan agen di state 4 beserta reward-nya.

  • Agen bisa bergerak naik, turun, kiri, kanan

Gambar yang menunjukkan nilai-state yang telah kita hitung untuk semua state.

Reinforcement Learning dengan Gymnasium di Python

State 4 - aksi turun

Gambar yang menunjukkan agen bergerak turun dari state 4 ke state 7.

  • Reward: -2, nilai-state: 5

Gambar yang menunjukkan nilai-state yang telah kita hitung untuk semua state.

Reinforcement Learning dengan Gymnasium di Python

State 4 - aksi turun

Gambar yang menunjukkan agen bergerak turun dari state 4 ke state 7, dan q-value terkait bernilai 3.

  • $Q(4, \text{down}) = -2 + 1 \times 5 = 3$

Gambar yang menunjukkan nilai-state yang telah kita hitung untuk semua state.

Reinforcement Learning dengan Gymnasium di Python

State 4 - aksi kiri

Gambar yang menunjukkan agen bergerak ke kiri dari state 4 ke state 3, dan q-value terkait bernilai 1.

  • $Q(4, \text{left}) = -1 + 1 \times 2 = 1$

Gambar yang menunjukkan nilai-state yang telah kita hitung untuk semua state.

Reinforcement Learning dengan Gymnasium di Python

State 4 - aksi naik

Gambar yang menunjukkan agen bergerak naik dari state 4 ke state 1, dan q-value terkait bernilai 7.

  • $Q(4, \text{up}) = -1 + 1 \times 8 = 7$

Gambar yang menunjukkan nilai-state yang telah kita hitung untuk semua state.

Reinforcement Learning dengan Gymnasium di Python

State 4 - aksi kanan

Gambar yang menunjukkan agen bergerak ke kanan dari state 4 ke state 5, dan q-value terkait bernilai 9.

  • $Q(4, \text{right}) = -1 + 1 \times 10 = 9$

Gambar yang menunjukkan nilai-state yang telah kita hitung untuk semua state.

Reinforcement Learning dengan Gymnasium di Python

Semua Q-value

Gambar yang menunjukkan q-value yang kita hitung untuk semua pasangan state-aksi.

Reinforcement Learning dengan Gymnasium di Python

Menghitung Q-value

def compute_q_value(state, action):

if state == terminal_state: return None
_, next_state, reward, _ = env.unwrapped.P[state][action][0] return reward + gamma * compute_state_value(next_state)

Gambar yang menunjukkan rumus menghitung q_value untuk state dan aksi, Q(s,a) sebagai jumlah reward langsung setelah aksi dan nilai terdiskon dari state baru untuk kebijakan tertentu.

Reinforcement Learning dengan Gymnasium di Python

Menghitung Q-value

Q = {(state, action): compute_q_value(state, action)
     for state in range(num_states) 
     for action in range(num_actions)}

print(Q)
Reinforcement Learning dengan Gymnasium di Python

Menghitung Q-value

{(0, 0): 0, (0, 1): 1, (0, 2): 7, (0, 3): 0, 
 (1, 0): 0, (1, 1): 5, (1, 2): 8, (1, 3): 7, 
 (2, 0): 7, (2, 1): 9, (2, 2): 8, (2, 3): 8, 
 (3, 0): 1, (3, 1): 2, (3, 2): 5, (3, 3): 0, 
 (4, 0): 1, (4, 1): 3, (4, 2): 9, (4, 3): 7, 
 (5, 0): 5, (5, 1): 10, (5, 2): 9, (5, 3): 8, 
 (6, 0): 2, (6, 1): 2, (6, 2): 3, (6, 3): 1, 
 (7, 0): 2, (7, 1): 3, (7, 2): 10, (7, 3): 5, 
 (8, 0): None, (8, 1): None, (8, 2): None, (8, 3): None}

Gambar yang menunjukkan q-value yang kita hitung untuk semua pasangan state-aksi.

Reinforcement Learning dengan Gymnasium di Python

Meningkatkan kebijakan

Gambar yang menunjukkan q-value yang kita hitung untuk semua pasangan state-aksi.

Reinforcement Learning dengan Gymnasium di Python

Meningkatkan kebijakan

  • Untuk tiap state, pilih aksi dengan Q-value tertinggi

Gambar yang menunjukkan q-value yang kita hitung untuk semua pasangan state-aksi, dengan q-value maksimum per state diberi lingkaran.

Reinforcement Learning dengan Gymnasium di Python

Meningkatkan kebijakan

Gambar yang menunjukkan kebijakan lama dan Q-value terkait Kebijakan lama

Gambar yang menunjukkan kebijakan baru saat memilih aksi dengan q-value maksimum.

Reinforcement Learning dengan Gymnasium di Python

Meningkatkan kebijakan

improved_policy = {}


for state in range(num_states-1): max_action = max(range(num_actions), key=lambda action: Q[(state, action)])
improved_policy[state] = max_action
print(improved_policy)
{0: 2, 1: 2, 2: 1, 
 3: 2, 4: 2, 5: 1, 
 6: 2, 7: 2}
Reinforcement Learning dengan Gymnasium di Python

Ayo berlatih!

Reinforcement Learning dengan Gymnasium di Python

Preparing Video For Download...