b belajar.myudak

Log-probabilitas kebijakan Gaussian

Kebijakan untuk aksi kontinu (misalnya torsi motor) mengeluarkan rata-rata μ(s)\mu(s), dengan simpangan baku σ=elog_std\sigma = e^{\text{log\_std}} yang dipelajari. Hitung log-probabilitas aksi aa di bawah distribusi normal yang dimensinya independen:

log⁡π(a∣s)=∑d[−(ad−μd)22σd2−log⁡σd−12log⁡2π]\log \pi(a|s) = \sum_{d} \left[-\frac{(a_d - \mu_d)^2}{2\sigma_d^2} - \log\sigma_d - \frac12\log 2\pi\right]
a = 0, μ = 0, log σ = 0  →  −½ log 2π ≈ −0.919

Dari kategorikal ke kontinu

Dengan aksi diskret, π(a∣s)\pi(a|s) adalah satu angka dari softmax. Dengan aksi kontinu, ada tak terhingga aksi, jadi kebijakan adalah kepadatan peluang. Nilainya bisa lebih dari 1, sehingga log-nya bisa positif (lihat case dengan σ\sigma kecil).

Policy gradient dan PPO tidak berubah sama sekali. Mereka hanya butuh log⁡π(a∣s)\log\pi(a|s) dan gradiennya. Gradien terhadap μ\mu adalah (a−μ)/σ2(a-\mu)/\sigma^2: rata-rata ditarik ke arah aksi yang ber-advantage positif.

Kenapa log_std yang dipelajari

σ\sigma harus positif. Mempelajari log⁡σ\log\sigma (bebas di R\mathbb{R}) lalu meng-exponensialkannya adalah trik standar. σ\sigma besar berarti eksplorasi lebar. Seiring training, σ\sigma biasanya mengecil saat agen yakin. Di lab Pendulum, entropi Gaussian ∑d(log⁡σd+12log⁡2πe)\sum_d(\log\sigma_d + \frac12\log 2\pi e) ikut turun.

Penjelasan

Yang diminta. Array (N,).

Langkah di kode: std = exp(log_std), z = (a - mu) / std, lalu per dimensi -0.5*z**2 - log_std - 0.5*log(2π), dijumlahkan di axis terakhir.

Cek case 1 dan 2. Di pusat (a=μa = \mu): −0.919-0.919. Satu σ\sigma dari pusat: −0.919−0.5=−1.419-0.919 - 0.5 = -1.419.

Case σ\sigma kecil. log_std = -2 berarti σ≈0.135\sigma \approx 0.135. Aksi tepat di μ\mu mendapat log-prob positif (≈1.08\approx 1.08), karena kepadatan yang sempit bisa melebihi 1. Aksi yang jauh dari μ\mu mendapat log-prob sangat negatif.

Yang dikembalikan: array (N,).

Topik
rlaksi kontinugaussian
Petunjuk 1

Per dimensi: −½((a − μ)/σ)² − log σ − ½ log 2π, dengan σ = exp(log_std).

Petunjuk 2

Jumlahkan di axis terakhir. log_std berbentuk (D,) dan di-broadcast ke setiap baris.

Python 3.14 · NumPy

Pengaturan editor

Ukuran font
Ukuran huruf di editor.
Ukuran tab
Lebar indentasi. Otomatis: 2 spasi untuk TypeScript, 4 untuk Python.
Key bindings
Ganti ke mode Vim.
Nomor baris relatif
Nomor baris dihitung dari posisi kursor (berguna untuk gerakan Vim).
Word wrap
Baris panjang dilipat agar muat di lebar editor.
IntelliSense
Saran kode otomatis saat mengetik (Ctrl+Spasi tetap bisa dipakai saat mati).

Nilai ditulis sebagai JSON. Output yang diharapkan dihitung dari solusi referensi.