Jebakan Early Stopping: Bagaimana Saya Mematikan Run RL Sebelum Sempat Belajar

Early stopping seharusnya menyelamatkan Anda dari membuang-buang komputasi pada model yang sudah selesai belajar. Untuk waktu yang lama, justru itulah yang membuang-buang komputasi saya — dengan mematikan agen-agen bagus sebelum mereka sempat menjadi bagus.

Lebih banyak run reinforcement learning saya yang mati karena aturan early stopping saya sendiri ketimbang karena ide yang buruk. Tombol darurat yang saya bangun agar disiplin justru menjadi hal yang paling tidak disiplin di dalam sistem.

Kurva reward berisik ilustratif yang sempat turun dan dihentikan lebih awal, dengan garis putus-putus yang menunjukkan kenaikan yang tak pernah dicapainya Ilustratif, bukan data performa nyata. Agen dihentikan saat penurunan normal — tepat sebelum bagian di mana ia seharusnya naik.

Tombol darurat yang menjadi bumerang

Saya meminjam early stopping dari supervised learning, di mana ia dianggap sebagai kebenaran mutlak: pantau validation loss, dan ketika ia berhenti membaik untuk beberapa waktu, hentikan — dari sini Anda hanya akan overfitting. Cara ini rapi, aman, dan dalam supervised learning biasanya berhasil.

Maka saya menyambungkan ide yang sama ke dalam pelatihan RL: pantau metriknya, kehilangan patience setelah plateau, hentikan run, hemat GPU-hours. Rasanya bertanggung jawab. Namun pada praktiknya, ia diam-diam membuang run demi run — banyak di antaranya secara dini, sebelum agen menemukan apa pun. Saya berakhir dengan satu folder penuh run yang sebenarnya tidak pernah dimulai.

Mengapa RL melanggar aturan itu

Kurva validation pada supervised learning adalah sesuatu yang cukup mulus dan sebagian besar monoton. Kemajuan agen reinforcement learning tidaklah demikian. Reward bersifat berisik secara inheren: ia bergantung pada policy yang dirinya sendiri terus berubah, berinteraksi dengan lingkungan yang penuh varians. Perbaikan datang secara tersendat-sendat — datar dalam waktu lama, lonjakan mendadak, penurunan yang kemudian pulih. Plateau dalam RL sering kali bukanlah akhir dari pembelajaran. Justru itulah bagian tepat sebelumnya.

Maka patience yang disetel untuk kemulusan supervised learning akan terpicu saat varians RL yang sepenuhnya normal terjadi. Anda tidak menangkap model yang sudah selesai; Anda mengeksekusi model yang justru baru akan menjadi menarik. Dan “penghematan” itu adalah ilusi — Anda tetap membayar setiap run yang mati dini dan tidak menghasilkan apa-apa.

Berhenti menghentikan terlalu dini

Solusinya bukanlah angka yang lebih baik. Solusinya adalah membalik nilai default. Early stopping seharusnya jarang terjadi, bukan agresif — sebuah penjaga terhadap overfitting yang sungguh-sungguh dan berkelanjutan, bukan pemicu sensitif terhadap noise. Itu berarti menempatkan ambang batas di tempat yang secara realistis tidak mungkin dicapai oleh noise, dan menilai degradasi dalam jendela waktu yang cukup panjang untuk membuat varians alami run tampak kecil — bukan hanya segelintir evaluasi. Default-nya haruslah terus berjalan. Beban pembuktian ada pada keputusan untuk berhenti, bukan untuk melanjutkan.

Terus terang: patience juga merupakan hyperparameter, dan kebanyakan pemula — termasuk saya — menyetelnya seolah-olah RL adalah supervised learning. Padahal bukan.

Di mana manusia tetap berperan

Ini sejalan dengan pelajaran dari tulisan pertama. Saya tidak memutuskan, run demi run, kapan harus menarik tuasnya — itu hanya akan menjadi cara saya membekukan sebuah tebakan ke dalam sistem lagi. Saya memutuskan apa arti “sungguh-sungguh memburuk” versus “noise normal,” dan saya membiarkan definisi itu yang melakukan penghentian. Saya merancang sang hakim, bukan menyampaikan setiap vonis dengan tangan sendiri. Buat sang hakim dengan benar dan Anda berhenti membuang run yang sebenarnya akan berhasil.

Intisarinya

Dalam RL, bug yang paling mahal sering kali adalah ketidaksabaran. Mengoptimalkan anggaran komputasi Anda secara prematur tidak menghemat komputasi — ia justru merenggut agen Anda, dan bagian kejamnya adalah Anda tidak pernah melihat hasil yang Anda matikan.

Jadi jika run Anda terus-menerus “tidak berhasil,” periksa apakah mereka pernah diberi kesempatan. Kadang-kadang model itu tidak gagal. Andalah yang gagal.


Ini adalah bagian 2 dari sebuah catatan anonim yang sedang berlangsung tentang membangun sistem trading reinforcement learning. Catatan ini tentang metode dan kesalahan, bukan sinyal — tidak ada satu pun di sini yang merupakan nasihat investasi, dan tidak ada detail strategi yang dibagikan.