State dan observasi

Observabilitas penuh versus parsial dan apa yang sebenarnya dilihat agen.

Daftar isi

Dalam siklus agen-lingkungan, agen tidak pernah melihat lingkungan secara langsung, melainkan menerima observasi yang merupakan potongan informasi terbatas. Topik ini membedakan state (keadaan penuh lingkungan) dari observasi yang diterima agen, lalu membandingkan dua kasus konkret pada CartPole-v1 dan FrozenLake-v1. Setelah membaca topik ini, perbedaan antara lingkungan yang sepenuhnya dapat diamati dan yang hanya sebagian dapat diamati menjadi jelas, beserta konsekuensinya pada kebutuhan ingatan agen.

Apa yang dilihat agen#

State adalah deskripsi lengkap keadaan lingkungan pada suatu waktu, yaitu semua informasi yang diperlukan untuk menentukan keadaan berikutnya secara deterministik atau stokastik. Observasi adalah informasi yang benar-benar diterima agen, yang dapat berupa seluruh state atau hanya sebagian darinya. Pada lingkungan yang sepenuhnya dapat diamati, observasi sama dengan state, sehingga agen memiliki informasi sempurna untuk mengambil keputusan. Pada lingkungan yang hanya sebagian dapat diamati, observasi menyembunyikan sebagian state, sehingga dua state berbeda dapat menghasilkan observasi yang sama. Kondisi terakhir ini dikenal sebagai observabilitas parsial, dan formalnya dimodelkan sebagai partially observable Markov decision process (POMDP).

Pembedaan state dan observasi bukan perdebatan semantik, melainkan keputusan pemodelan yang menentukan apa yang dapat dilakukan agen. Bila observasi sudah memuat seluruh state, kebijakan cukup memetakan observasi ke aksi. Bila observasi hanya sebagian state, kebijakan yang sama menjadi tidak cukup, karena informasi masa lalu diperlukan untuk membedakan keadaan yang terlihat sama. Pada kasus seperti itu, agen perlu menyimpan ingatan, misalnya dalam bentuk jaringan rekuren atau tumpukan observasi terakhir. Topik ini tidak membahas mekanisme ingatan tersebut, melainkan hanya menunjukkan kapan ia menjadi diperlukan.

Observabilitas penuh pada CartPole#

CartPole-v1 adalah contoh lingkungan dengan observabilitas penuh. Keadaan internalnya terdiri atas empat angka, yaitu posisi gerobak, kecepatan gerobak, sudut tiang, dan kecepatan sudut tiang, dan keempatnya dikembalikan apa adanya sebagai observasi pada setiap langkah. Tidak ada informasi yang disembunyikan, sehingga observasi sama dengan state. Kode berikut mereset CartPole-v1 dan FrozenLake-v1 dengan benih yang sama, lalu mencetak ruang observasi serta observasi awal dari masing-masing lingkungan. Perbandingan tersebut memperlihatkan dua bentuk ruang observasi yang berbeda, yaitu Box kontinu pada CartPole dan Discrete diskret pada FrozenLake.

python bandingkan-observasi.py
import warnings
warnings.filterwarnings("ignore")
import numpy as np
import gymnasium as gym

np.random.seed(0)

env_cp = gym.make("CartPole-v1")
obs_cp, info_cp = env_cp.reset(seed=0)
env_cp.action_space.seed(0)
print("CartPole-v1")
print("observation_space:", env_cp.observation_space)
print("obs:", np.array2string(np.asarray(obs_cp), precision=4))
env_cp.close()

env_fl = gym.make("FrozenLake-v1")
obs_fl, info_fl = env_fl.reset(seed=0)
env_fl.action_space.seed(0)
print("FrozenLake-v1")
print("observation_space:", env_fl.observation_space)
print("obs:", obs_fl)
env_fl.close()
text Keluaran
CartPole-v1
observation_space: Box([-4.8               -inf -0.41887903        -inf], [4.8               inf 0.41887903        inf], (4,), float32)
obs: [ 0.0137 -0.023  -0.0459 -0.0483]
FrozenLake-v1
observation_space: Discrete(16)
obs: 0

Pada keluaran CartPole-v1, ruang observasi berbentuk Box dengan empat elemen float32, dan observasi awalnya berupa larik empat angka yang berbeda pada setiap reset bila benih berbeda. Empat angka tersebut sepenuhnya mendeskripsikan keadaan tiang dan gerobak, sehingga agen dapat mengambil keputusan tanpa ingatan. Pada FrozenLake-v1, ruang observasi berbentuk Discrete(16), yang berarti ada 16 kemungkinan observasi, dan observasi awalnya adalah bilangan bulat 0. Angka 0 tersebut adalah posisi awal agen pada petak papan berukuran 4x4, sehingga setiap petak direpresentasikan sebagai satu nilai diskret. Kedua lingkungan sama-sama sepenuhnya dapat diamati, hanya berbeda pada apakah state-nya kontinu atau diskret.

Observasi parsial dan POMDP#

Tidak semua lingkungan semudah CartPole atau FrozenLake. Banyak masalah nyata menyembunyikan sebagian state, sehingga observasi yang diterima agen tidak cukup untuk mengetahui keadaan sebenarnya. Contoh klasik adalah robot yang hanya memiliki sensor jarak: ia mengetahui jarak ke dinding di sekitarnya, tetapi tidak mengetahui posisi absolutnya di dalam ruangan. Dua posisi berbeda dapat menghasilkan pembacaan sensor yang sama, sehingga kebijakan yang hanya melihat observasi terkini akan bingung. Inilah esensi observabilitas parsial, yang memaksa agen menyimpan ingatan atas observasi masa lalu untuk membedakan keadaan.

Formalnya, lingkungan seperti itu dimodelkan sebagai partially observable Markov decision process (POMDP), yang menambahkan dua komponen pada MDP biasa, yaitu fungsi observasi yang menentukan distribusi observasi dari setiap state, dan himpunan keyakinan atas state yang diperbarui seiring interaksi. Pembahasan POMDP secara mendalam berada di luar modul ini, tetapi inti yang perlu disimpan adalah bahwa observasi bukan selalu state. Sebagian besar algoritma standar reinforcement learning mengasumsikan observabilitas penuh, sehingga state dan observasi dapat dipertukarkan, dan asumsi inilah yang membuat perhitungan menjadi sederhana.

Kesalahan umum#

Kesalahan pertama adalah menganggap observation_space selalu menggambarkan state lengkap lingkungan. Pada CartPole-v1 memang demikian, tetapi pada banyak lingkungan lain, terutama yang memodelkan sensor atau persepsi terbatas, observasi hanyalah potongan state. Akibatnya, kebijakan yang menganggap observasi cukup untuk mengambil keputusan menjadi tidak optimal, karena dua state berbeda yang menghasilkan observasi sama tidak dapat dibedakan. Perbaikannya adalah memeriksa dokumentasi lingkungan, dan bila disebut partially observable, agen memerlukan ingatan, misalnya tumpukan observasi terakhir.

Kesalahan kedua adalah memperlakukan observasi Discrete sebagai larik kontinu. Pada FrozenLake-v1, observasi berupa bilangan bulat 0 hingga 15, dan menyalinnya ke larik float lalu memakainya sebagai masukan jaringan tanpa encoding akan membuat jaringan menafsirkan kedekatan numerik yang tidak ada. Petak 5 dan petak 6 memang berdekatan di papan, tetapi petak 5 dan petak 10 tidak memiliki hubungan khusus meskipun selisih angkanya sama. Perbaikannya adalah melakukan encoding, misalnya one-hot, sehingga setiap petak menjadi vektor tersendiri.

Ringkasan#

  • State adalah keadaan lengkap lingkungan, sedangkan observasi adalah informasi yang benar-benar diterima agen.
  • Pada lingkungan sepenuhnya dapat diamati, observasi sama dengan state, sehingga kebijakan cukup memetakan observasi ke aksi.
  • CartPole-v1 memiliki ruang observasi Box dengan empat angka kontinu, sedangkan FrozenLake-v1 memiliki ruang observasi Discrete(16) berupa posisi petak.
  • Pada lingkungan dengan observabilitas parsial (POMDP), observasi menyembunyikan sebagian state, sehingga agen memerlukan ingatan.

Referensi#