Setiap langkah, agen harus memilih satu aksi dari himpunan yang diizinkan lingkungan, dan himpunan inilah yang disebut ruang aksi. Topik ini membedakan aksi diskret dan aksi kontinu, lalu menunjukkan bagaimana keduanya direpresentasikan pada Gymnasium melalui Discrete dan Box. Setelah membaca topik ini, perbedaan antara ruang aksi berhingga dan ruang aksi kontinu menjadi jelas, beserta konsekuensinya pada kebijakan yang akan memilih aksi.
Aksi diskret#
Aksi diskret adalah aksi yang berasal dari himpunan berhingga dan terurut, sehingga agen memilih salah satu dari sejumlah pilihan yang dapat dihitung. Pada CartPole-v1, ruang aksi berbentuk Discrete(2), yaitu dorong ke kiri atau dorong ke kanan, sehingga setiap aksi adalah bilangan bulat 0 atau 1. Pada FrozenLake-v1, ruang aksi berbentuk Discrete(4), yaitu gerak ke atas, bawah, kiri, atau kanan. Representasi seperti ini cocok untuk masalah dengan pilihan yang dapat dihitung, dan kebijakannya cukup mengeluarkan satu indeks bilangan bulat per langkah.
Karena himpunannya berhingga, sampling pada Discrete mengikuti distribusi seragam bila tidak ditentukan lain, sehingga setiap aksi memiliki peluang yang sama untuk dipilih. Kebijakan yang sesungguhnya tidak harus seragam: ia dapat berupa kebijakan deterministik yang selalu memilih aksi yang sama, atau kebijakan stokastik yang memilih aksi menurut probabilitas tertentu. Discrete hanya menentukan himpunan pilihan yang tersedia, bukan bagaimana agen memilih di antaranya. Pilihan distribusi itu sendiri diserahkan kepada kebijakan, dan merupakan objek yang dipelajari agen sepanjang pelatihan.
Aksi kontinu#
Aksi kontinu adalah aksi yang berupa vektor bilangan real, sehingga agen memilih nilai pada rentang tertentu, bukan indeks dari himpunan berhingga. Contoh khasnya adalah torsi pada sendi robot, kecepatan roda, atau posisi tuas, yang masing-masing dapat bernilai apa pun di dalam batas bawah dan atas. Ruang aksi seperti ini direpresentasikan sebagai Box, yaitu produk Kartesius dari interval-interval tersebut, dengan bentuk vektor dan tipe data yang ditentukan. Karena jumlah kemungkinan tak berhingga, kebijakan tidak dapat lagi berupa tabel, melainkan harus mengeluarkan distribusi kontinu, misalnya Gaussian, yang kemudian diambil sampelnya untuk mendapatkan aksi.
Konsekuensi utamanya adalah bahwa pencarian pada ruang tak berhingga tidak dapat dilakukan dengan enumerasi, sehingga algoritma kontinu mengandalkan gradien dan aproksimasi fungsi, bukan pembaruan tabel. Pada instalasi Gymnasium dasar tanpa dependensi mujoco atau box2d, tidak ada lingkungan bawaan dengan aksi kontinu yang dapat dipakai langsung. Oleh karena itu, ruang aksi kontinu dijelaskan di sini melalui konstruktor gymnasium.spaces.Box, bukan melalui lingkungan tertentu. Konstruktor ini menerima batas bawah, batas atas, bentuk, dan tipe data, lalu menyediakan metode sample() yang menghasilkan vektor acak di dalam rentang tersebut. Cara yang sama dipakai oleh lingkungan-lingkungan robotika ketika dependensinya terpasang, sehingga konsepnya dapat dipindahkan tanpa perubahan.
Ruang aksi di Gymnasium#
Kode berikut membuat dua ruang aksi secara langsung dari gymnasium.spaces, yaitu Discrete(3) dan Box berbentuk (2,) dengan rentang -1,0 hingga 1,0. Setiap ruang diberi benih yang sama melalui seed(0) agar hasil sampling dapat direproduksi, lalu diambil sampelnya lima kali. Keluaran memperlihatkan bahwa Discrete menghasilkan bilangan bulat pada rentang 0 hingga 2, sedangkan Box menghasilkan vektor dua angka real di dalam rentang yang ditentukan. Perbedaan bentuk keluaran inilah yang menentukan bagaimana kebijakan harus mengeluarkan aksi.
import warnings
warnings.filterwarnings("ignore")
import numpy as np
from gymnasium import spaces
np.random.seed(0)
disc = spaces.Discrete(3)
disc.seed(0)
print("Discrete(3):", disc)
print("n:", disc.n)
print("sampel:", [int(disc.sample()) for _ in range(5)])
box = spaces.Box(low=-1.0, high=1.0, shape=(2,), dtype=np.float32)
box.seed(0)
print("Box:", box)
print("shape:", box.shape)
print("sampel:")
for _ in range(5):
s = box.sample()
print(" " + np.array2string(np.asarray(s), precision=4))Discrete(3): Discrete(3)
n: 3
sampel: [2, 1, 1, 0, 0]
Box: Box(-1.0, 1.0, (2,), float32)
shape: (2,)
sampel:
[ 0.2739 -0.4604]
[-0.9181 -0.9669]
[0.6265 0.8255]
[0.2133 0.459 ]
[0.0872 0.8701]Pada keluaran Discrete(3), lima sampel adalah 2, 1, 1, 0, 0, yang semuanya berada di rentang 0 hingga 2 dan terdistribusi menurut benih yang dipasang. Pada keluaran Box, setiap sampel berupa larik dua angka, dan setiap angka berada di dalam rentang -1,0 hingga 1,0, dengan tanda dan magnitudo yang bervariasi. Aksi diskret dan kontinu keduanya valid sebagai keluaran kebijakan, tetapi bentuknya menentukan rancangan algoritma: kebijakan diskret mengeluarkan probabilitas atas himpunan berhingga, sedangkan kebijakan kontinu mengeluarkan parameter distribusi kontinu. Pemilihan ruang aksi biasanya ditentukan oleh masalah, bukan oleh agen.
Kesalahan umum#
Kesalahan pertama adalah mengirim aksi bertipe salah ke env.step(). Pada ruang Discrete, aksi harus berupa bilangan bulat, dan mengirim float seperti 1.0 akan memunculkan error karena Gymnasium memeriksa tipe secara ketat. Demikian pula, pada ruang Box, aksi harus berupa larik dengan tipe data yang cocok, misalnya float32, dan mengirim daftar Python polos tanpa konversi dapat ditolak. Perbaikannya adalah selalu memakai int() untuk Discrete dan np.asarray(..., dtype=...) untuk Box sesuai tipe pada action_space.dtype.
Kesalahan kedua adalah menganggap action_space.sample() sebagai kebijakan yang layak. Fungsi tersebut hanya mengambil sampel seragam, sehingga agen tidak belajar apa pun dan reward yang dikumpulkan cenderung rendah. Sample memang berguna untuk menguji apakah lingkungan berjalan dan untuk eksplorasi acak pada awal pelatihan, tetapi bukan kebijakan akhir. Perbaikannya adalah mengganti sample dengan kebijakan yang dipelajari setelah infrastruktur dasar terpasang.
Ringkasan#
- Aksi diskret berasal dari himpunan berhingga, direpresentasikan sebagai Discrete, dan setiap aksi adalah satu bilangan bulat.
- Aksi kontinu berupa vektor bilangan real pada rentang tertentu, direpresentasikan sebagai Box.
- Discrete cocok untuk pilihan yang dapat dihitung, sedangkan Box dipakai untuk besaran fisik seperti torsi atau kecepatan.
- Bentuk ruang aksi menentukan rancangan kebijakan: tabel probabilitas untuk diskret, distribusi kontinu untuk kontinu.
Referensi#
- Spaces — Gymnasium
— dokumentasi Discrete, Box, serta metode
sampledanseedpada ruang aksi. - Reinforcement Learning: An Introduction — Sutton & Barto — bab 3 membedakan ruang aksi diskret dan kontinu pada MDP.