Pelajari AI dengan Python · Pelajaran

Kaedah Kecerunan Dasar: REINFORCE

Teorem kecerunan dasar, algoritma REINFORCE, penolakan garis dasar, pengurangan varians.

Pelajaran 1 daripada 413 langkah

Kaedah Kecerunan Dasar: REINFORCE ialah pelajaran Pelajari AI dengan Python percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pelajari AI dengan Python, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pelajari AI dengan Python merangkumi sejumlah 4 pelajaran.

RL Berasaskan Nilai berbanding RL Berasaskan Policy

Sesetengah kaedah RL mempelajari nilai tindakan, kemudian bertindak secara tamak. Kaedah Policy gradient pula mempelajari dasar secara langsung: satu fungsi yang menghasilkan kebarangkalian tindakan. Kaedah ini mengendalikan tindakan berterusan dan dasar stokastik secara semula jadi.

Dasar pi(a|s)

Dasar berparameter pi(a|s, theta) memetakan keadaan kepada taburan kebarangkalian bagi tindakan, dengan parameter theta (satu rangkaian neural). Latihan melaraskan theta untuk mengutamakan tindakan yang memperoleh lebih banyak ganjaran.

class Policy(nn.Module):
    def __init__(self, obs_dim, n_actions):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(obs_dim, 128), nn.ReLU(),
            nn.Linear(128, n_actions)
        )
    def forward(self, s):
        return torch.softmax(self.net(s), dim=-1)

Pensampelan Tindakan

Oleh sebab dasar ialah suatu taburan, anda melakukan sample terhadap tindakan dan bukannya memilih nilai maksimum. Pensampelan menyediakan penerokaan dan menjadikan dasar itu stokastik.

probs = policy(state)
dist = torch.distributions.Categorical(probs)
action = dist.sample()
log_prob = dist.log_prob(action)

Melaksanakan Satu Trajektori

Satu episod (trajektori) ialah urutan keadaan, tindakan dan ganjaran dari mula hingga tamat. Anda mengumpulkan trajektori lengkap dengan bertindak dalam persekitaran sehingga persekitaran itu tamat.

states, actions, rewards, log_probs = [], [], [], []
state, _ = env.reset()
done = False
while not done:
    probs = policy(torch.tensor(state).float())
    dist = torch.distributions.Categorical(probs)
    a = dist.sample()
    state, r, term, trunc, _ = env.step(a.item())
    rewards.append(r); log_probs.append(dist.log_prob(a))
    done = term or trunc

Pulangan Didiskaunkan G_t

Pulangan G_t ialah jumlah ganjaran masa hadapan dari masa t, didiskaunkan oleh gamma supaya ganjaran yang lebih dekat dikira lebih besar. Ia memberitahu kita sejauh mana tindakan yang diambil dari step t dan seterusnya telah berhasil.

def returns(rewards, gamma=0.99):
    G, out = 0, []
    for r in reversed(rewards):
        G = r + gamma * G
        out.insert(0, G)
    return torch.tensor(out)

Objektif REINFORCE

REINFORCE melakukan pendakian kecerunan pada pulangan jangkaan. Secara intuitif: tingkatkan kebarangkalian tindakan yang menghasilkan pulangan tinggi, dan kurangkan kebarangkalian tindakan yang menghasilkan pulangan rendah. Setiap tindakan diberi wajaran berdasarkan G_t.

Kecerunan Polisi

Kehilangan ialah -sum(log_prob * G_t). Tanda negatif menukarkan pendakian kecerunan kepada penurunan supaya pengoptimum memaksimumkan pulangan. Tindakan dengan pulangan tinggi akan menyebabkan kebarangkalian lognya ditingkatkan.

G = returns(rewards)
loss = -torch.sum(torch.stack(log_probs) * G)

Mengemas Kini Polisi

Lakukan pengunduran balik dan langkah seperti biasa. Satu kemas kini menggunakan keseluruhan trajektori, kemudian trajektori itu dibuang (REINFORCE menggunakan polisi semasa sahaja: data daripada polisi semasa).

optimizer.zero_grad()
loss.backward()
optimizer.step()

Masalah Varians Tinggi

REINFORCE asas terkenal kerana tidak stabil dan mempunyai varians tinggi: pulangan berubah-ubah dengan ketara antara episod, menyebabkan anggaran kecerunan bising dan pembelajaran menjadi perlahan serta tidak menentu.

Garis Dasar untuk Mengurangkan Varians

Menolak garis dasar (seperti purata pulangan) daripada G_t mengurangkan varians tanpa memesongkan kecerunan. Kita memberikan ganjaran kepada tindakan kerana lebih baik daripada jangkaan, bukan semata-mata kerana menghasilkan pulangan positif.

baseline = G.mean()
advantage = G - baseline
loss = -torch.sum(torch.stack(log_probs) * advantage)

Mengapa REINFORCE Penting

REINFORCE ialah asas bagi semua kaedah kecerunan polisi. Kelemahannya, iaitu varians tinggi dan kecekapan sampel yang rendah, mendorong penggunaan kaedah actor-critic dan PPO yang akan dipelajari seterusnya.

Semakan Ringkas

Uji pemahaman anda tentang kecerunan polisi.

Ringkasan: REINFORCE

Anda telah mempelajari cara memparameterkan polisi pi(a|s,theta), menjalankan trajektori, mengira pulangan terdiskaun G_t, dan melakukan pendakian kecerunan menggunakan kehilangan -sum(log_prob * G_t). Anda juga telah melihat varians tinggi REINFORCE serta cara garis dasar mengurangkannya.

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
53
Pelajaran
225

Soalan Lazim

Adakah pelajaran “Kaedah Kecerunan Dasar: REINFORCE” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Pelajari AI dengan Python, termasuk “Kaedah Kecerunan Dasar: REINFORCE”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Pelajari AI dengan Python merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Kaedah Kecerunan Dasar: REINFORCE”?

Teorem kecerunan dasar, algoritma REINFORCE, penolakan garis dasar, pengurangan varians. Anda berlatih Pelajari AI dengan Python menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Pelajari AI dengan Python?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Pelajari AI dengan Python di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Kaedah Kecerunan Dasar: REINFORCE” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pelajari AI dengan Python ini?

Ya. Setiap pelajaran Pelajari AI dengan Python menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Kaedah Kecerunan Dasar: REINFORCE
  2. Kaedah Pelakon-Pengkritik (A2C)
  3. Pengoptimuman Dasar Proksimal (PPO)
  4. Persekitaran Gymnasium Tersuai
← Kembali ke Pelajari AI dengan Python