Q Belajar dengan Python: Apa itu, Definisi [Contoh Coding]
Diterbitkan: 2020-03-26Reinforcement learning adalah ketika agen pembelajaran belajar untuk berperilaku optimal sesuai dengan lingkungannya melalui interaksi yang konstan. Agen melewati berbagai situasi, yang juga dikenal sebagai keadaan. Seperti yang Anda duga, pembelajaran penguatan memiliki banyak aplikasi di dunia kita. Pelajari lebih lanjut jika Anda tertarik untuk mempelajari lebih lanjut tentang algoritma ilmu data.
Juga, ia memiliki banyak algoritma, di antara yang paling populer adalah pembelajaran Q. Pada artikel ini, kita akan membahas apa itu algoritma dan bagaimana cara kerjanya.
Jadi, tanpa basa-basi lagi, mari kita mulai.
Daftar isi
Apa itu Pembelajaran Q?
Pembelajaran Q adalah algoritme pembelajaran penguatan, dan berfokus pada menemukan tindakan terbaik untuk situasi tertentu. Ini tidak sesuai kebijakan karena tindakan yang dipelajari fungsi pembelajaran Q berada di luar kebijakan yang ada, sehingga tidak memerlukannya. Ini berfokus pada mempelajari kebijakan yang meningkatkan hadiah totalnya. Ini adalah bentuk sederhana dari pembelajaran penguatan yang menggunakan nilai-nilai tindakan (atau nilai-Q) untuk meningkatkan perilaku agen pembelajaran.
Pembelajaran Q adalah salah satu algoritma paling populer dalam pembelajaran penguatan, karena mudah dipahami dan diterapkan. 'Q' dalam pembelajaran Q mewakili kualitas. Seperti yang kami sebutkan sebelumnya, pembelajaran Q berfokus pada menemukan tindakan terbaik untuk situasi tertentu. Dan kualitasnya menunjukkan betapa bermanfaatnya suatu tindakan tertentu dan imbalan apa yang dapat membantu Anda mencapainya.
Definisi Penting
Sebelum kita mulai membahas cara kerjanya, pertama-tama kita harus melihat beberapa konsep penting dari pembelajaran q. Mari kita mulai.
Q-Nilai
Nilai-Q juga dikenal sebagai Nilai-Aksi. Mereka diwakili oleh Q(S, A), dan mereka memberi Anda perkiraan seberapa baik tindakan A dilakukan pada keadaan S. Model akan menghitung estimasi ini secara iteratif dengan menggunakan aturan Pembaruan Selisih Temporal yang telah kita diskusikan nanti di bagian ini.
Episode dan Hadiah
Agen memulai dari keadaan awal, melewati beberapa transisi, dan kemudian berpindah dari keadaan saat ini ke keadaan berikutnya sesuai dengan tindakan dan lingkungannya. Setiap kali agen mengambil tindakan, itu mendapat hadiah. Dan ketika tidak ada transisi yang memungkinkan, itu adalah penyelesaian episode.
TD-Update (Perbedaan Sementara)
Berikut aturan TD-Update atau Perbedaan Temporal:
Q(S,A) Q(S,A) + (R + Q(S',A')-Q(S,A))
Di sini, S mewakili keadaan agen saat ini, sedangkan S' mewakili keadaan berikutnya. A mewakili tindakan saat ini, A' mewakili tindakan terbaik berikut menurut estimasi nilai-Q, R menunjukkan hadiah saat ini menurut tindakan saat ini, singkatan dari faktor diskon, dan menunjukkan panjang langkah.
Baca juga: Prasyarat untuk Ilmu Data. Bagaimana itu berubah dari waktu ke waktu?
Contoh Q Belajar Python
Cara terbaik untuk memahami Q belajar Python adalah dengan melihat contoh. Dalam contoh ini, kami menggunakan lingkungan gym OpenAI dan melatih model kami dengannya. Pertama, Anda harus menginstal lingkungan. Anda dapat melakukannya dengan perintah berikut:
pip install gym
Sekarang, kita akan mengimpor perpustakaan yang kita perlukan untuk contoh ini:
gym impor
impor itertools
impor matplotlib
impor matplotlib.style
impor numpy sebagai np
impor panda sebagai pd
sistem impor
dari koleksi impor defaultdict
dari windy_gridworld impor WindyGridworldEnv
plot impor
matplotlib.style.use('ggplot')
Tanpa perpustakaan yang diperlukan, Anda tidak akan dapat melakukan operasi ini dengan sukses. Setelah kami mengimpor perpustakaan, kami akan membuat lingkungan:
env = WindyGridworldEnv()
Sekarang kita akan membuat kebijakan -greedy:
def createEpsilonGreedyPolicy(Q, epsilon, num_actions):
"""
Membuat kebijakan yang serakah epsilon
pada fungsi-Q dan epsilon yang diberikan.
Mengembalikan fungsi yang mengambil status
sebagai input dan mengembalikan probabilitas
untuk setiap tindakan dalam bentuk array numpy
dari panjang ruang tindakan (set kemungkinan tanggapan).
"""
def policyFungsi (status):
Aksi_probabilitas = np.ones(jumlah_aksi,
dtype = float) * epsilon / num_actions
best_action = np.argmax(Q[status])
Probabilitas_aksi[aksi_terbaik] += (1.0 – epsilon)
kembalikan Aksi_probabilitas
kebijakan pengembalianFungsi
Berikut kode untuk membangun model q-learning:
def qLearning(env, num_episodes, discount_factor = 1.0,

alfa = 0,6, epsilon = 0,1):
"""
Algoritme Q-Learning: Kontrol TD di luar kebijakan.
Menemukan kebijakan serakah yang optimal sambil meningkatkan
mengikuti kebijakan serakah epsilon”””
# Fungsi nilai tindakan
# Kamus bersarang yang memetakan
# status -> (aksi -> nilai tindakan).
Q = defaultdict(lambda: np.zeros(env.action_space.n))
# Melacak statistik yang berguna
stats = merencanakan.EpisodeStats(
episode_lengths = np.zeros(num_episodes),
episode_rewards = np.zeros(num_episodes))
# Buat fungsi kebijakan serakah epsilon
# tepat untuk ruang aksi lingkungan
kebijakan = createEpsilonGreedyPolicy(Q, epsilon, env.action_space.n)
# Untuk setiap episode
untuk ith_episode dalam rentang(num_episodes):
# Setel ulang lingkungan dan pilih tindakan pertama
status = env.reset()
untuk t di itertools.count():
# dapatkan probabilitas semua tindakan dari kondisi saat ini
action_probabilities = kebijakan(negara bagian)
# pilih tindakan sesuai dengan
# distribusi probabilitas
tindakan = np.random.choice(np.arange(
len(probabilitas_aksi)),
p = aksi_probabilitas)
# ambil tindakan dan dapatkan hadiah, transit ke negara bagian berikutnya
next_state, hadiah, selesai, _ = env.step(action)
# Perbarui statistik
stats.episode_rewards[i_episode] += hadiah
stats.episode_lengths[i_episode] = t
# Pembaruan TD
best_next_action = np.argmax(Q[next_state])
td_target = reward + discount_factor * Q[next_state][best_next_action]
td_delta = td_target – Q[status][tindakan]
T[status][tindakan] += alfa * td_delta
# done adalah Benar jika episode dihentikan
jika dilakukan:
merusak
status = status_berikutnya
kembalikan Q, statistik
Mari kita latih modelnya sekarang:
Q, statistik = qLearning(env, 1000)
Setelah kami membuat dan melatih modelnya, kami dapat memplot statistik penting yang sama:
plotting.plot_episode_stats(stats)
Gunakan kode ini untuk menjalankan model dan plot grafik. Hasil seperti apa yang Anda lihat? Bagikan hasil Anda dengan kami, dan jika Anda menghadapi kebingungan atau keraguan, beri tahu kami.
Baca juga: Algoritma Machine Learning untuk Ilmu Data
Pelajari kursus ilmu data dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.
Pikiran Akhir
Saat Anda memplot grafik, Anda akan melihat bahwa hadiah per episode meningkat secara progresif dari waktu ke waktu. Dan setelah episode-episode tertentu, plotnya juga mencerminkan bahwa plot tersebut melampaui batas hadiah tinggi per episode. Apa yang ditunjukkan ini?
Ini berarti model Anda telah belajar untuk meningkatkan total hadiah yang dapat diperolehnya dalam satu episode dengan memastikan bahwa model tersebut berperilaku optimal. Anda pasti juga melihat mengapa q belajar Python melihat aplikasi di banyak industri dan area.
Apa kelemahan dari pembelajaran penguatan?
1. Pembelajaran penguatan yang berlebihan dapat menghasilkan keadaan yang berlebihan, menurunkan kualitas hasil.
2. Pembelajaran penguatan tidak dianjurkan untuk pemecahan masalah yang mudah.
3. Pembelajaran penguatan membutuhkan sejumlah besar data dan komputasi.
4. Pembelajaran penguatan memiliki serangkaian kendala unik dan sangat rumit, seperti pengaturan desain pelatihan yang menantang dan masalah dengan keseimbangan eksplorasi dan penguatan.
Apakah model pembelajaran Q berbasis?
Tidak, pembelajaran Q tidak bergantung pada model. Q-learning adalah teknik pembelajaran penguatan model-bebas untuk menentukan nilai tindakan tertentu dalam keadaan tertentu. Pembelajaran Q adalah salah satu dari beberapa algoritma pembelajaran penguatan saat ini yang bebas model, artinya dapat digunakan dalam berbagai konteks dan dapat dengan cepat beradaptasi dengan kondisi baru dan tidak dikenal. Itu dapat menangani masalah yang melibatkan transisi stokastik dan penghargaan tanpa persyaratan untuk adaptasi dan tidak memerlukan model lingkungan. Q-learning adalah algoritma pembelajaran yang didasarkan pada nilai-nilai. Algoritma berbasis nilai menggunakan persamaan untuk memperbarui fungsi nilai (khususnya persamaan Bellman).
Bagaimana pembelajaran Q dan SARSA berbeda satu sama lain?
SARSA mempelajari kebijakan yang hampir optimal sambil menjelajah, sedangkan Q-learning mempelajari kebijakan yang optimal secara langsung. SARSA di luar kebijakan mempelajari nilai tindakan dalam kaitannya dengan kebijakan yang diikuti, sedangkan SARSA dalam kebijakan mempelajari nilai tindakan dalam kaitannya dengan kebijakan yang diikuti. Sehubungan dengan kebijakan serakah, Q-Learning melakukannya. Keduanya konvergen ke fungsi nilai riil di bawah beberapa kondisi yang sama, tetapi pada kecepatan yang berbeda. Q-Learning membutuhkan waktu sedikit lebih lama untuk menyatu, tetapi mungkin terus belajar saat peraturan diubah. Ketika digabungkan dengan pendekatan linier, Q-Learning tidak dijamin untuk konvergen. SARSA akan mempertimbangkan penalti dari langkah eksplorasi saat mendekati konvergensi, sedangkan Q-learning tidak. Jika ada peluang imbalan negatif yang signifikan di sepanjang jalur ideal, Q-learning akan mencoba memicunya saat menjelajah, namun SARSA akan mencoba menghindari jalur optimal yang berisiko dan hanya belajar menggunakannya setelah parameter eksplorasi dikurangi.