TRANS: reviewed az translation chapter 8

pull/777/head^2
Karim Karimov 2 years ago
parent c0fad1b67f
commit ce197d1059
No known key found for this signature in database

@ -1,31 +1,31 @@
# Gücləndirilmiş Öyrənmə və Q-Öyrənməsinə Giriş
# Gücləndirici Öyrənmə və Q-Öyrənməsinə Giriş
![Gücləndirilmiş öyrənmənin icmalının eskizi](../../../sketchnotes/ml-reinforcement.png)
![Gücləndirici öyrənmənin icmalının eskizi](../../../sketchnotes/ml-reinforcement.png)
> [Tomomi Imura](https://www.twitter.com/girlie_mac) tərəfindən çəkilmiş eskiz
Gücləndirilmiş öyrənmə üç mühüm anlayışı özündə birləşdirir: agent, vəziyyətlər və hər vəziyyət üçün icra yığını. Müəyyən edilmiş vəziyyətdə hərəkəti icra etməklə agentə mükafat verilir. Super Mario oyununu yadınıza salın. Təsəvvür edin ki siz Mariosunuz və hansısa mərhələdə uçurum kənarında dayanmısınız. Sizin üstünüzdə isə qəpik var. Hansısa bir mərhələdə Mario olmağınız sizin vəziyyətinizdir. Bir addım ataraq sağa hərəkət etmək sizi uçuruma aparacaq və aşağı xal toplayacaqsınız. Amma atlamaq düyməsinə basmağınız xal toplamanıza və sağ qalmanıza səbəb olacaqdı. Dediyimiz müsbət nəticə olduğuna görə sizə müsbət xal verilməlidir.
Gücləndirici öyrənmə üç mühüm anlayışı özündə birləşdirir: agent, vəziyyətlər və hər vəziyyət üçün icra yığını. Müəyyən edilmiş vəziyyətdə hərəkəti icra etməklə agentə mükafat verilir. Super Mario oyununu yadınıza salın. Təsəvvür edin ki, siz Mariosunuz və hansısa mərhələdə uçurum kənarında dayanmısınız. Sizin üstünüzdə isə qəpik var. Hansısa bir mərhələdə Mario olmağınız sizin vəziyyətinizdir. Bir addım ataraq sağa hərəkət etmək sizi uçuruma aparacaq və aşağı xal toplayacaqsınız. Amma atlamaq düyməsinə basmağınız xal toplamanıza və sağ qalmanıza səbəb olacaqdı. Dediyimiz müsbət nəticə olduğuna görə sizə müsbət xal verilməlidir.
Oyunda sağ qalaraq və mümkün olduğu qədər yuxarı xal toplamaqla mükafatı maksimuma çatdırmağı möhkəmləndirilmiş öyrənmədən və simulyator(oyun) istifadə edərək öyrənə bilərsiniz.
Oyunda sağ qalaraq və mümkün olduğu qədər yuxarı xal toplamaqla mükafatı maksimuma çatdırmağı gücləndirici öyrənmədən və simulyator(oyun) istifadə edərək öyrənə bilərsiniz.
[![Gücləndirilmiş Öyrənməyə Giriş](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo)
[![Gücləndirici Öyrənməyə Giriş](https://img.youtube.com/vi/lDq_en8RNOo/0.jpg)](https://www.youtube.com/watch?v=lDq_en8RNOo)
> 🎥 Dmitrinin Gücləndirilmiş Öyrənmə barədə olan müzakirəsini dinləmək üçün yuxarıdakı şəkilə klikləyin
> 🎥 Dmitrinin Gücləndirici Öyrənmə barədə olan müzakirəsini dinləmək üçün yuxarıdakı şəkilə klikləyin
## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/45/)
## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/45/?loc=az)
## İlkin Şərtlər və Quraşdırma
## İlkin şərtlər və quraşdırma
Bu gün Python-da bəzi kodları sınaqdan keçirəcəyik. Dərsə aid olan Jupyter Notebook kodunu həm kompüterinizdə, həm də buludda işlədə bilməlisiniz.
Siz [dərs notebook-unu](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) aça və qurmaq üçün bu dərsi izləyə bilərsiniz.
Siz [dərs notbukunu](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/notebook.ipynb) aça və mühiti qurmaq üçün bu dərsi izləyə bilərsiniz.
> **Qeyd:** Bu kodu buludda açırsınızsa, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) faylını da notebook kodunda istifadə olunduğuna görə yükləməyiniz lazımdır. Onu notebook faylı ilə eyni qovluğa əlavə edin.
> **Qeyd:** Bu kodu buludda açırsınızsa, [`rlboard.py`](https://github.com/microsoft/ML-For-Beginners/blob/main/8-Reinforcement/1-QLearning/rlboard.py) faylını da notbuk kodunda istifadə olunduğuna görə yükləməyiniz lazımdır. Onu notbuk faylı ilə eyni qovluğa əlavə edin.
## Giriş
Bu dərsdə biz rus bəstəkarı [Sergei Prokofyevin](https://en.wikipedia.org/wiki/Sergei_Prokofiev) musiqili nağılından ilhamlanaraq, **[Piter və Canavar](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** dünyasını araşdıracağıq. Peterə ətrafını araşdırmaq, dadlı alma toplamaq və canavarla görüşməmək üçün **Gücləndirilmiş Öyrənmədən** istifadə edəcəyik.
Bu dərsdə biz rus bəstəkarı [Sergei Prokofyevin](https://en.wikipedia.org/wiki/Sergei_Prokofiev) musiqili nağılından ilhamlanaraq **[Piter və Canavar](https://en.wikipedia.org/wiki/Peter_and_the_Wolf)** dünyasını araşdıracağıq. Peterə ətrafını araşdırmaq, dadlı alma toplamaq və canavarla görüşməmək üçün **Gücləndirici Öyrənmədən** istifadə edəcəyik.
**Gücləndirilmiş Öyrənmə** (RL – Reinforcement Learning) çoxlu təcrübələr keçirərək, **mühit** daxilində **agentin** optimal davranışını öyrənməyə imkan verən öyrənmə texnikasıdır. Bu mühitdəki agentin **mükafat funksiyası** ilə müəyyən edilmiş **hədəfi** olmalıdır.
**Gücləndirici Öyrənmə** (RL – Reinforcement Learning) çoxlu təcrübələr keçirərək, **mühit** daxilində **agentin** optimal davranışını öyrənməyə imkan verən öyrənmə texnikasıdır. Bu mühitdəki agentin **mükafat funksiyası** ilə müəyyən edilmiş **hədəfi** olmalıdır.
## Mühit
@ -69,13 +69,13 @@ action_idx = { a : i for i,a in enumerate(actions.keys()) }
Ümumiləşdirsək, bu ssenarinin strategiyası və hədəfi aşağıdakılardır:
- **Agentimizin(Piter) strategiyası**, "**taktika**" ilə müəyyən edilir. Taktika hər hansı bir vəziyyətdə, atılmalı olan addımı qaytaran funksiyadır. Bizim vəziyyətimizdə problemin vəziyyəti oyunçunun hazırkı mövqeyi də daxil olmaqla, lövhə ilə təmsil olunur.
- **Agentimizin(Piter) strategiyası**, "**taktika**" ilə müəyyən edilir. Taktika hər hansı bir vəziyyətdə atılmalı olan addımı qaytaran funksiyadır. Bizim vəziyyətimizdə problemin vəziyyəti oyunçunun hazırkı mövqeyi də daxil olmaqla lövhə ilə təmsil olunur.
- **Gücləndirilmiş öyrənmənin məqsədi** problemi səmərəli şəkildə həll etməyə imkan verəcək yaxşı bir taktika öyrənməkdir. Amma indilik, başlanğıc olaraq **təsadüfi gediş** adlı ən sadə siyasəti nəzərdən keçirək.
- **Gücləndirici öyrənmənin məqsədi** problemi səmərəli şəkildə həll etməyə imkan verəcək yaxşı bir taktika öyrənməkdir. Amma indilik, başlanğıc olaraq **təsadüfi gediş** adlı ən sadə strategiyanı nəzərdən keçirək.
## Təsadüfi gəzinti
Gəlin əvvəlcə təsadüfi gediş strategiyasını həyata keçirərək problemimizi həll edək. Təsadüfi gedişlə, almaya çatana qədər icazə verilən addımlar arasından növbəti addımımızı təsadüfi seçəcəyik (3. kod bloku).
Gəlin əvvəlcə təsadüfi gediş strategiyasını həyata keçirərək problemimizi həll edək. Təsadüfi gedişlə almaya çatana qədər icazə verilən addımlar arasından növbəti addımımızı təsadüfi seçəcəyik (3. kod bloku).
1. Aşağıdakı kodla təsadüfi gedişi həyata keçirin:
@ -191,7 +191,7 @@ Burada γ **endirim faktoru** adlanır və cari mükafata və ya bunun əksinə,
## Öyrənmə Alqoritmi
Yuxarıdakı tənliyi nəzərə alaraq, indi öyrənmə alqoritmimiz üçün psevdokod yaza bilərik:
Yuxarıdakı tənliyi nəzərə alaraq indi öyrənmə alqoritmimiz üçün psevdokod yaza bilərik:
* Q-Cədvəli Q-ü bütün vəziyyət və gedişlər üçün bərabər ədədlərlə yaradın
* Öyrənmə dərəcəsini α ← 1 təyin edin
@ -208,9 +208,9 @@ Yuxarıdakı tənliyi nəzərə alaraq, indi öyrənmə alqoritmimiz üçün pse
## İstifadə ilə Kəşf qarşı-qarşıya
Yuxarıdakı alqoritmdə 2.1-ci addımda gedişi necə dəqiq seçməli olduğumuzu müəyyənləşdirməmişik. Addımı təsadüfi seçsək, ətrafı təsadüfi formada **tədqiq edəcəyimiz** üçün, tez-tez ölmək, eləcə də normalda getmədiyimiz əraziləri araşdırmaq kimi ehtimallarımız var. Alternativ yanaşma isə artıq bildiyimiz Q-Cədvəl dəyərlərini **istifadə etmək** və bununla da, *s* vəziyyətində ən yaxşı hərəkəti(daha yüksək Q-Cədvəl dəyəri ilə) seçmək olardı. Amma, belə etmək, digər vəziyyətləri araşdırmağımıza mane olacaq və çox güman ki, optimal həlli tapa bilməyəcəyik.
Yuxarıdakı alqoritmdə 2.1-ci addımda gedişi necə dəqiq seçməli olduğumuzu müəyyənləşdirməmişik. Addımı təsadüfi seçsək, ətrafı təsadüfi formada **tədqiq edəcəyimiz** üçün tez-tez ölmək, eləcə də normalda getmədiyimiz əraziləri araşdırmaq kimi ehtimallarımız var. Alternativ yanaşma isə artıq bildiyimiz Q-Cədvəl dəyərlərini **istifadə etmək** və bununla da, *s* vəziyyətində ən yaxşı hərəkəti(daha yüksək Q-Cədvəl dəyəri ilə) seçmək olardı. Amma, belə etmək digər vəziyyətləri araşdırmağımıza mane olacaq və çox güman ki optimal həlli tapa bilməyəcəyik.
Beləliklə, ən yaxşı yanaşma kəşfiyyat və istifadə arasında balansı qorumaqdır. Bu, Q-Cədvəlindəki dəyərlərə mütənasib ehtimallarla *s* vəziyyətində hərəkəti seçməklə edilə bilər. Başlanğıcda, Q-Cədvəl dəyərləri eyni olduqda, bu, təsadüfi seçimə uyğun olacaq, lakin ətrafımız haqqında daha çox öyrəndikcə, arabir agentə araşdırılmamış yolu seçməyə icazə verərkən, optimal marşrutu izləmək ehtimalımız daha yüksək olacaq.
Beləliklə, ən yaxşı yanaşma kəşfiyyat və istifadə arasında balansı qorumaqdır. Bu, Q-Cədvəlindəki dəyərlərə mütənasib ehtimallarla *s* vəziyyətində hərəkəti seçməklə edilə bilər. Başlanğıcda Q-Cədvəl dəyərləri eyni olduqda bu, təsadüfi seçimə uyğun olacaq, lakin ətrafımız haqqında daha çox öyrəndikcə arabir agentə araşdırılmamış yolu seçməyə icazə verərkən optimal marşrutu izləmək ehtimalımız daha yüksək olacaq.
## Python üzərindən icrası
@ -227,7 +227,7 @@ Beləliklə, ən yaxşı yanaşma kəşfiyyat və istifadə arasında balansı q
İlkin halda vektorun bütün komponentləri eyni olduqda 0-a bölünmədən yayınmaq üçün orijinal vektora bir neçə `eps` əlavə edirik.
5000 təcrübə və ya **iterasiya** vasitəsilə öyrənmə alqoritmini işə salın: (8. kod bloku)
5000 təcrübə və ya **dövr** vasitəsilə öyrənmə alqoritmini işə salın: (8. kod bloku)
```python
for epoch in range(5000):
@ -280,11 +280,11 @@ walk(m,qpolicy_strict)
> **Tapşırıq 1:** Yolun maksimum uzunluğunu müəyyən sayda addımlarla (məsələn, 100) məhdudlaşdırmaq üçün `walk` funksiyasını dəyişdirin və yuxarıdakı kodun vaxtaşırı bu dəyəri qaytarmasına baxın.
> **Tapşırıq 2:** `walk` funksiyasını elə dəyişdirin ki, o, əvvəllər olduğu yerlərə qayıtmasın. Belə etmək `walk`-un döngüyə girməsinin qarşısını alsa da, agent yenə də qaça bilməyəcəyi yerdə "tələyə" düşə bilər.
> **Tapşırıq 2:** `walk` funksiyasını elə dəyişdirin ki, o, əvvəllər olduğu yerlərə qayıtmasın. Belə etmək `walk`-un dövrə girməsinin qarşısını alsa da, agent yenə də qaça bilməyəcəyi yerdə "tələyə" düşə bilər.
## Naviqasiya
Daha yaxşı naviqasiya taktikası təlim zamanı istifadə etdiyimiz istifadə və kəşfiyyatı birləşdirmiş olan versiya olardı. Bu taktika biz hər bir hərəkəti Q-Cədvəlindəki dəyərlərə mütənasib olaraq müəyyən bir ehtimalla seçəcəyik. Bu strategiya hələ də agentin artıq tədqiq etdiyi mövqeyə qayıtması ilə nəticələnə bilər, lakin, aşağıdakı koddan da göründüyü kimi, bu sizə istədiyiniz məkana olan çox qısa orta yolu verir(unutmayın ki, `print_statistics` simulyasiyanı 100 dəfə həyata keçirir): (10. kod bloku)
Daha yaxşı naviqasiya taktikası təlim zamanı istifadə etdiyimiz istismar və kəşfiyyatın birləşdirmiş olan versiyası olardı. Bu taktikada biz hər bir hərəkəti Q-Cədvəlindəki dəyərlərə mütənasib olaraq müəyyən bir ehtimalla seçəcəyik. Bu strategiya hələ də agentin artıq tədqiq etdiyi mövqeyə qayıtması ilə nəticələnə bilər, lakin, aşağıdakı koddan da göründüyü kimi bu sizə istədiyiniz məkana olan çox qısa orta yolu verir(unutmayın ki, `print_statistics` simulyasiyanı 100 dəfə həyata keçirir): (10. kod bloku)
```python
def qpolicy(m):
@ -306,15 +306,15 @@ Qeyd etdiyimiz kimi, təlim prosesi problem məkanının strukturu haqqında əl
Öyrənilənləri belə ümumiləşdirmək olar:
- **Orta yol uzunluğu artır**. Burada gördüyümüz odur ki, əvvəlcə orta yol uzunluğu artır. Bu, yəqin ki, ətraf mühit haqqında heç nə bilmədiyimiz zaman pis vəziyyətlərdə, suda və ya canavarda tələyə düşmək ehtimalımızla bağlıdır. Daha çox öyrəndikcə və bu biliklərdən istifadə etməyə başladıqda, ətraf mühiti daha uzun müddət araşdıra bilərik. Bununla belə, almaların harada daha çox olduğunu hələ də bilmiş olmuruq.
- **Orta yol uzunluğu artır**. Burada gördüyümüz odur ki, əvvəlcə orta yol uzunluğu artır. Bu, yəqin ki, ətraf mühit haqqında heç nə bilmədiyimiz zaman pis vəziyyətlərdə, suda və ya canavarda tələyə düşmək ehtimalımızla bağlıdır. Daha çox öyrəndikcə və bu biliklərdən istifadə etməyə başladıqda ətraf mühiti daha uzun müddət araşdıra bilərik. Bununla belə, almaların harada daha çox olduğunu hələ də bilmiş olmuruq.
- **Daha çox öyrəndikcə yol uzunluğu azalır**. Kifayət qədər öyrəndikdən sonra agentin hədəfə çatması asanlaşır və yol uzunluğu azalmağa başlayır. Amma, biz hələ də kəşfiyyata açığıq, ona görə də biz tez-tez ən yaxşı yoldan uzaqlaşırıq və yeni variantları araşdıraraq yolu optimaldan daha uzun edirik.
- **Uzunluğun kəskin artması**. Bu qrafikdə də müşahidə etdiyimiz odur ki, müəyyən bir nöqtədə uzunluq kəskin şəkildə artır. Bu, prosesin stoxastik xarakterini göstərir və biz nə vaxtsa Q-Cədvəl əmsallarını yeni dəyərlərlə əvəz etməklə onları "korlaya" bilərik. İdeal olaraq, bu, öyrənmə sürətini azaltmaqla minimuma endirilməlidir(məsələn, təlimin sonuna doğru biz Q-Cədvəl dəyərlərini yalnız kiçik bir dəyərlə tənzimləyirik).
Ümumiyyətlə, yadda saxlamaq lazımdır ki, təlim prosesinin uğuru və keyfiyyəti öyrənmə sürəti, öyrənmə sürətinin azalması və endirim faktoru kimi parametrlərdən əhəmiyyətli dərəcədə asılıdır. Təlim zamanı optimallaşdırdığımız(məsələn, Q-Cədvəl əmsalları) **parametrlərdən** fərqləndirmək üçün onları tez-tez **hiperparametrlər** adlandırırlar. Ən yaxşı hiperparametr dəyərlərinin tapılması prosesi **hiperparametrlərin optimallaşdırılması** adlanır və bu, ayrıca mövzu səviyyəsindədir.
Ümumiyyətlə, yadda saxlamaq lazımdır ki, təlim prosesinin uğuru və keyfiyyəti öyrənmə sürəti, öyrənmə sürətinin azalması və endirim faktoru kimi parametrlərdən əhəmiyyətli dərəcədə asılıdır. Təlim zamanı optimallaşdırdığımız(məsələn, Q-Cədvəl əmsalları) **parametrlərdən** fərqləndirmək üçün onları tez-tez **hiperparametrlər** adlandırırlar. Ən yaxşı hiperparametr dəyərlərinin tapılması prosesi **hiperparametrlərin optimallaşdırılması** adlanır və bu ayrıca mövzu səviyyəsindədir.
## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/46/)
## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/46/?loc=az)
## Tapşırıq
[Daha Real Dünya](assignment.az.md)

@ -1,27 +1,27 @@
# Daha Real Dünya
Bizim vəziyyətimizdə Piter, demək olar ki, yorulmadan və ac qalmadan hərəkət edə bilirdi. Daha realist bir dünyada isə zaman-zaman oturub dincəlməli, həm də qidalanmalı oluruq. Aşağıdakı qaydaları həyata keçirməklə dünyamızı daha real edək:
Bizim vəziyyətimizdə Piter, demək olar ki, yorulmadan və ac qalmadan hərəkət edə bilirdi. Daha realist bir dünyada isə vaxt aşırı oturub dincəlməli, həm də qidalanmalı oluruq. Aşağıdakı qaydaları həyata keçirməklə dünyamızı daha real edək:
1. Bir yerdən başqa yerə köçməklə Piter **enerjisini** itirir və bir qədər **yorğunluq** qazanır.
2. Piter alma yeməklə daha çox enerji qazana bilər.
3. Piter ağacın altında və ya çəmənlikdə dincəlməklə yorğunluqdan qurtula bilər (yəni ağac və ya ot olan bir xanaya getmək - yaşıl sahə)
4. Piter canavarı tapıb öldürməlidir
5. Qurdu öldürmək üçün Piterin müəyyən enerji və yorğunluq səviyyəsinə malik olması lazımdır, əks halda o, döyüşü uduzur.
5. Canavarı öldürmək üçün Piterin müəyyən enerji və yorğunluq səviyyəsinə malik olması lazımdır, əks halda o, döyüşü uduzur.
## Təlimatlar
Həlliniz üçün başlanğıc nöqtəsi kimi orijinal [notebook.ipynb](../notebook.ipynb) noutbukundan istifadə edin.
Həlliniz üçün başlanğıc nöqtəsi kimi orijinal [notebook.ipynb](../notebook.ipynb) notbukundan istifadə edin.
Yuxarıdakı mükafat funksiyasını oyunun qaydalarına uyğun olaraq dəyişdirin. Oyunda qalib gəlmək üçün lazım olan ən yaxşı strategiyanı öyrənmək üçün isə gücləndirilmiş öyrənmə alqoritmini işlədin və təsadüfi gedişin nəticələrini qazandığınız və itirdiyiniz oyunların sayına görə alqoritminizlə müqayisə edin.
Yuxarıdakı mükafat funksiyasını oyunun qaydalarına uyğun olaraq dəyişdirin. Oyunda qalib gəlmək üçün lazım olan ən yaxşı strategiyanı öyrənmək üçün isə gücləndirici öyrənmə alqoritmini işlədin və təsadüfi gedişin nəticələrini qazandığınız və itirdiyiniz oyunların sayına görə alqoritminizlə müqayisə edin.
> **Qeyd**: Yeni dünyanızda insanın mövqeyindən əlavə, yorğunluq və enerji səviyyələri də olduğuna görə vəziyyət daha mürəkkəbdir. Siz vəziyyəti bir qrup kimi təqdim etməyi seçə bilərsiniz(Board, enerji, yorğunluq) və ya vəziyyət üçün bir sinif yarada bilə(onu `Board`-dan da alt sinif olaraq yaratmağınız mümkündür) və ya [rlboard.py](../rlboard.py) içərisindəki orijinal `Board` sinfini dəyişdirə bilərsiniz.
> **Qeyd**: Yeni dünyanızda insanın mövqeyindən əlavə yorğunluq və enerji səviyyələri də olduğuna görə vəziyyət daha mürəkkəbdir. Siz vəziyyəti bir qrup kimi təqdim etməyi seçə bilərsiniz(Board, enerji, yorğunluq) və ya vəziyyət üçün bir sinif yarada bilə(onu `Board`-dan da alt sinif olaraq yaratmağınız mümkündür) və ya [rlboard.py](../rlboard.py) içərisindəki orijinal `Board` sinfini dəyişdirə bilərsiniz.
Həllinizdə, lütfən, kodu təsadüfi gediş strategiyasına cavab verəcək formada saxlayın və ən sonda alqoritminizin nəticələrini təsadüfi gedişlə müqayisə edin.
> **Qeyd**: Onun işləməsi üçün hiperparametrləri, xüsusən də dövrlərin sayını tənzimləməlisiniz. Oyunun uğuru(canavarla mübarizə) nadir bir hadisə olduğundan, daha uzun məşq vaxtı gözləmək olar.
> **Qeyd**: Onun işləməsi üçün hiperparametrləri, xüsusən də dövrlərin sayını tənzimləməlisiniz. Oyunun uğuru(canavarla mübarizə) nadir bir hadisə olduğundan daha uzun məşq vaxtı gözləmək olar.
## Rubrika
| Meyarlar | Nümunəvi | Adekvat | İnkişaf Etdirilməli Olan |
| -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| | Yeni dünya qaydalarının tərifi, Q-Öyrənməsi alqoritmi və bəzi mətn izahatları ilə notebook təqdim olunur. Q-Öyrənməsi təsadüfi gedişlə müqayisədə nəticələri əhəmiyyətli dərəcədə yaxşılaşdıra bilir. | Notebook təqdim olunur, Q-Öyrənməsi həyata keçirilir və təsadüfi gedişlə müqayisədə nəticələri yaxşılaşdırsa, əhəmiyyətli dərəcədə deyil; və ya notebook zəif sənədləşdirilib və kod yaxşı strukturlaşdırılmayıb | Dünyanın qaydalarını yenidən müəyyən etmək üçün bəzi cəhdlər edilib, lakin Q-Öyrənməsi alqoritmi işləmir və ya mükafat funksiyası tam müəyyən edilməyib. |
| Meyarlar | Nümunəvi | Adekvat | İnkişaf Etdirilməli Olan |
| -------- | -------- | ------- | ------------------------ |
| | Yeni dünya qaydalarının tərifi, Q-Öyrənməsi alqoritmi və bəzi mətn izahatları ilə notebook təqdim olunub. Q-Öyrənməsi təsadüfi gedişlə müqayisədə nəticələri əhəmiyyətli dərəcədə yaxşılaşdıra bilib. | Notbuk təqdim olunub, Q-Öyrənməsi həyata keçirilib və təsadüfi gedişlə müqayisədə nəticələri yaxşılaşdırsa, əhəmiyyətli dərəcədə deyil; və ya notbuk zəif sənədləşdirilib və kod yaxşı strukturlaşdırılmayıb. | Dünyanın qaydalarını yenidən müəyyən etmək üçün bəzi cəhdlər edilib, lakin Q-Öyrənməsi alqoritmi işləmir və ya mükafat funksiyası tam müəyyən edilməyib. |

@ -1,8 +1,8 @@
# CartPole(Sürgülü Araba) Sürüşü
Əvvəlki dərsdə həll etdiyimiz problem əslində real həyat ssenariləri üçün uyğun olmadığı üçün oyuncaq problem kimi görünə bilər. Amma bu belə deyil, çünki Şahmat və ya Go oynamaq kimi bir çox real dünya problemləri də bu ssenarini bölüşür. Onlar arasındakı oxşarlığın səbəbi bizdə də verilmiş qaydalar və **diskret vəziyyəti** olan lövhəmizin olmasıdır.
Əvvəlki dərsdə həll etdiyimiz problem əslində real həyat ssenariləri üçün uyğun olmadığı üçün oyuncaq problem kimi görünə bilər. Amma bu belə deyil, çünki Şahmat və ya Go oynamaq kimi bir çox real dünya problemləri də bu ssenarini bölüşür. Onlar arasındakı oxşarlığın səbəbi bizdə də verilmiş qaydalar və **diskret vəziyyəti** göstərən lövhəmizin olmasıdır.
## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/47/)
## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/47/?loc=az)
## Giriş
@ -20,11 +20,11 @@ Biz tarazlamanın **CartPole** problemi kimi tanınan sadələşdirilmiş versiy
## İlkin şərtlər
Bu dərsdə biz müxtəlif **mühitləri** simulyasiya etmək üçün **OpenAI Gym** adlı kitabxanadan istifadə edəcəyik. Siz bu dərsin kodunu öz kompüterinizdə(məsələn, Visual Studio Code-dan istifadə edərək) işlədə bilərsiniz. Amma nəzərə alın ki, simulyasiya yeni pəncərədə açılacaq. Kodu onlayn işlədərkən, [burada](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) təsvir olunduğu kimi koda bəzi düzəlişlər etməli ola bilərsiniz.
Bu dərsdə biz müxtəlif **mühitləri** simulyasiya etmək üçün **OpenAI Gym** adlı kitabxanadan istifadə edəcəyik. Siz bu dərsin kodunu öz kompüterinizdə(məsələn, Visual Studio Code-dan istifadə edərək) işlədə bilərsiniz. Amma nəzərə alın ki, simulyasiya yeni pəncərədə açılacaq. Kodu onlayn işlədərkən [burada](https://towardsdatascience.com/rendering-openai-gym-envs-on-binder-and-google-colab-536f99391cc7) təsvir olunduğu kimi koda bəzi düzəlişlər etməli ola bilərsiniz.
## OpenAI Gym
Əvvəlki dərsdə oyunun qaydalarını və vəziyyəti özümüz yaratdığımız `Board` sinifi təyin edirdi. Burada isə biz balans dirəyinin arxasındakı fizikanı simulyasiya edəcək xüsusi **simulyasiya mühitindən** istifadə edəcəyik. Gücləndirilmiş öyrənmə alqoritmlərini öyrətmək üçün ən məşhur simulyasiya mühitlərindən biri [OpenAI](https://openai.com/) tərəfindən idarə olunan [Gym](https://gym.openai.com/)-dir. Bu gym-dən istifadə etməklə biz, cartpole simulyasiyasından Atari oyunlarına qədər fərqli **mühitlər** yarada bilərik.
Əvvəlki dərsdə oyunun qaydalarını və vəziyyəti özümüz yaratdığımız `Board` sinifi təyin edirdi. Burada isə biz balans dirəyinin arxasındakı fizikanı simulyasiya edəcək xüsusi **simulyasiya mühitindən** istifadə edəcəyik. Gücləndirici öyrənmə alqoritmlərini öyrətmək üçün ən məşhur simulyasiya mühitlərindən biri [OpenAI](https://openai.com/) tərəfindən idarə olunan [Gym](https://gym.openai.com/)-dir. Bu gym-dən istifadə etməklə biz cartpole simulyasiyasından Atari oyunlarına qədər fərqli **mühitlər** yarada bilərik.
> **Qeyd**: OpenAI Gym-də mövcud olan digər mühitlərə [burada](https://gym.openai.com/envs/#classic_control) baxa bilərsiniz.
@ -44,7 +44,7 @@ import random
Kartpol balans problemi ilə işləmək üçün müvafiq mühiti işə salmalıyıq. Hər bir mühit aşağıdakılarla əlaqələndirilir:
- **Müşahidə məkanı**, mühitdən aldığımız məlumatların strukturunu müəyyən edir. Kartpol problemi üçün biz qütbün mövqeyini, sürəti və bəzi digər dəyərləri alırıq.
- **Müşahidə məkanı** mühitdən aldığımız məlumatların strukturunu müəyyən edir. Kartpol problemi üçün biz qütbün mövqeyini, sürəti və bəzi digər dəyərləri alırıq.
- Mümkün hərəkətləri müəyyən edən **fəaliyyət sahəsi**. Bizim vəziyyətimizdə fəaliyyət sahəsi diskretdir və iki hərəkətdən ibarətdir - **sol** və **sağ**. (2. kod bloku)
@ -76,7 +76,7 @@ Kartpol balans problemi ilə işləmək üçün müvafiq mühiti işə salmalıy
![nataraz araba](../images/cartpole-nobalance.gif)
1. Simulyasiya zamanı necə hərəkət edəcəyimizə qərar vermək üçün müşahidələr aparmalıyıq. Əslində, `step` funksiyası bizə cari müşahidələri, mükafat funksiyasını və simulyasiyanı davam etdirməyin mənalı olub-olmadığını göstərən indikatoru qaytarır: (4. kod bloku)
1. Simulyasiya zamanı necə hərəkət edəcəyimizə qərar vermək üçün müşahidələr aparmalıyıq. Əslində `step` funksiyası bizə cari müşahidələri, mükafat funksiyasını və simulyasiyanı davam etdirməyin mənalı olub-olmadığını göstərən indiqatoru qaytarır: (4. kod bloku)
```python
env.reset()
@ -117,7 +117,7 @@ Kartpol balans problemi ilə işləmək üçün müvafiq mühiti işə salmalıy
Diqqət etsəniz, hər bir simulyasiya addımında mükafat dəyəri həmişə 1 olduğunu görə bilərsiniz. Bunun səbəbi odur ki, bizim məqsədimiz mümkün qədər uzun müddət sağ qalmaqdır. Başqa cürə ifadə etsək, dirəyi ən uzun müddətə şaquli vəziyyətdə saxlamaqdır.
✅ Əslində, ardıcıl 100 sınaq üzərindən 195-lik orta mükafat əldə edə bilsək, CartPole simulyasiyası həll edilmiş sayılacaq.
✅ Əslində ardıcıl 100 sınaq üzərindən 195-lik orta mükafat əldə edə bilsək, CartPole simulyasiyası həll edilmiş sayılacaq.
## Vəziyyətin diskretləşməsi
@ -125,11 +125,11 @@ Q-Öyrənməsində biz hər bir vəziyyətdə nə edəcəyimizi müəyyən edən
Bunu edə biləcəyimiz bir neçə yol var:
- **Hissələrə bölün**. Müəyyən bir dəyərin intervalını bilsək, bu intervalı bir neçə ** hissəyə** bölmək və sonra həmin dəyəri onun aid olduğu hissənin nömrəsi ilə əvəz edə bilərik. Bunu numpy-ın [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html)(rəqəmsallaşdırmaq) metodundan istifadə etməklə edə bilərik. Vəziyyətin rəqəmsallaşdırma üçün seçdiyimiz hissələrin sayından asılı olacağından, onun ölçüsünü dəqiq biləcəyik.
- **Hissələrə bölün**. Müəyyən bir dəyərin intervalını bilsək, bu intervalı bir neçə ** hissəyə** bölə və sonra həmin dəyəri onun aid olduğu hissənin nömrəsi ilə əvəz edə bilərik. Bunu numpy-ın [`digitize`](https://numpy.org/doc/stable/reference/generated/numpy.digitize.html)(rəqəmsallaşdırmaq) metodundan istifadə etməklə edə bilərik. Vəziyyətin rəqəmsallaşdırma üçün seçdiyimiz hissələrin sayından asılı olacağından, onun ölçüsünü dəqiq biləcəyik.
✅ Xətti interpolyasiyadan istifadə edərək dəyərləri sonlu intervala(məsələn, -20-dən 20-yə) yerləşdirə bilərik və sonra onları yuvarlaqlaşdırmaqla ədədləri tam ədədlərə çevirə bilərik. Belə etmək, xüsusən də giriş dəyərlərinin dəqiq diapazonlarını bilməmək bizə vəziyyətin ölçüsünə bir az daha az nəzarət imkanı verir. Məsələn, bizim vəziyyətimizdə 4 dəyərdən 2-in öz dəyərlərində yuxarı/aşağı sərhədləri olmadığı üçün, bu sonsuz sayda vəziyyətlə nəticələnə bilər.
✅ Xətti interpolyasiyadan istifadə edərək dəyərləri sonlu intervala(məsələn, -20-dən 20-yə) yerləşdirə bilərik və sonra onları yuvarlaqlaşdırmaqla ədədləri tam ədədlərə çevirə bilərik. Belə etmək, xüsusən də giriş dəyərlərinin dəqiq diapazonlarını bilməmək bizə vəziyyətin ölçüsünə bir az daha az nəzarət imkanı verir. Məsələn, bizim vəziyyətimizdə 4 dəyərdən 2-in öz dəyərlərində yuxarı/aşağı sərhədləri olmadığı üçün bu, sonsuz sayda vəziyyətlə nəticələnə bilər.
Nümunəmizdə ikinci yanaşma ilə gedəcəyik. Beləliklə müşahidə edəcəksiniz ki, qeyri-müəyyən yuxarı/aşağı sərhədlərə baxmayaraq, bu dəyər nadir hallarda müəyyən sonlu intervallardan kənarda dəyərlər qəbul edir. Buna görə də ekstremal dəyərlərə malik vəziyyətlər çox nadir hallarda olacaq.
Nümunəmizdə ikinci yanaşma ilə gedəcəyik. Beləliklə müşahidə edəcəksiniz ki, qeyri-müəyyən yuxarı/aşağı sərhədlərə baxmayaraq bu dəyər nadir hallarda müəyyən sonlu intervallardan kənarda dəyərlər qəbul edir. Buna görə də ekstremal dəyərlərə malik vəziyyətlər çox nadir hallarda olacaq.
1. Modelimizdən müşahidələri toplayacaq və 4 tam dəyərdən ibarət qrup çıxaracaq funksiya budur: (6. kod bloku)
@ -174,9 +174,9 @@ Nümunəmizdə ikinci yanaşma ilə gedəcəyik. Beləliklə müşahidə edəcə
## Q-Cədvəlinin strukturu
Əvvəlki dərsimizdə vəziyyət 0-dan 8-ə qədər sadə ədədlər cütü olduğu üçün, Q-Cədvəlini 8x8x2 formalı numpy tensoru ilə təmsil etmək rahat idi. Vəziyyət vektorumuzun ölçüsü məlum olduğu üçün hissələrin diskretləşdirilməsini tətbiq etsək, bu zaman eyni yanaşmadan istifadə edə və vəziyyəti 20x20x10x10x2 formalı massiv ilə təqdim edə bilərik(buradakı 2 fəaliyyət sahəsinin ölçüsüdür və ilk ölçülər müşahidə məkanındakı hər bir parametr üçün seçdiyimiz hissələrin sayına uyğundur).
Əvvəlki dərsimizdə vəziyyət 0-dan 8-ə qədər sadə ədədlər cütü olduğu üçün Q-Cədvəlini 8x8x2 formalı numpy tensoru ilə təmsil etmək rahat idi. Vəziyyət vektorumuzun ölçüsü məlum olduğu üçün hissələrin diskretləşdirilməsini tətbiq etsək, bu zaman eyni yanaşmadan istifadə edə və vəziyyəti 20x20x10x10x2 formalı massiv ilə təqdim edə bilərik(buradakı 2 fəaliyyət sahəsinin ölçüsüdür və ilk ölçülər müşahidə məkanındakı hər bir parametr üçün seçdiyimiz hissələrin sayına uyğundur).
Lakin bəzən müşahidə məkanının dəqiq ölçüləri məlum olmur. `discretize` funksiyasında heç vaxt vəziyyətin bəzi orijinal dəyərlərin bağlı olmamasından dolayı müəyyən sərhədlər daxilində qalacağından əmin olmaya bilərik. Buna görə də, bir qədər fərqli yanaşmadan istifadə edəcəyik və Q-Cədvəlini lüğətlə təmsil edəcəyik.
Lakin bəzən müşahidə məkanının dəqiq ölçüləri məlum olmur. `discretize` funksiyasında heç vaxt vəziyyətin bəzi orijinal dəyərlərin bağlı olmamasından dolayı müəyyən sərhədlər daxilində qalacağından əmin olmaya bilərik. Buna görə də bir qədər fərqli yanaşmadan istifadə edəcəyik və Q-Cədvəlini lüğətlə təmsil edəcəyik.
1. Lüğət açarı kimi *(vəziyyət, fəaliyyət)* cütündən istifadə edin. Dəyər isə Q-Cədvəlinin giriş dəyərinə uyğun olacaq. (9. kod bloku)
@ -203,13 +203,13 @@ Artıq Piterə tarazlığı öyrətməyə hazırıq!
epsilon = 0.90
```
Burada `alfa` hər addımda Q-Cədvəlinin cari dəyərlərini nə dərəcədə tənzimləməli olduğumuzu müəyyən edən **öyrənmə dərəcəsidir**. Əvvəlki dərsdə biz 1 ilə başladıq, sonra isə təlim zamanı `alpha`-ı aşağı qiymətlərə endirdik. Bu nümunədə biz onu sadəlik üçün sabit saxlayacağıq və daha sonra siz ``alpha`` dəyərlərini tənzimləməklə təcrübələr apara biləcəksiniz.
Burada `alfa` hər addımda Q-Cədvəlinin cari dəyərlərini nə dərəcədə tənzimləməli olduğumuzu müəyyən edən **öyrənmə dərəcəsidir**. Əvvəlki dərsdə biz 1 ilə başladıq, sonra isə təlim zamanı `alpha`-nı aşağı qiymətlərə endirdik. Bu nümunədə biz onu sadəlik üçün sabit saxlayacağıq və daha sonra siz `alpha` dəyərlərini tənzimləməklə təcrübələr apara biləcəksiniz.
`gamma` **endirim faktorudur** və gələcək mükafatı cari mükafatdan nə dərəcədə daha prioritetləşdirməli olduğumuzu göstərir.
`epsilon` **kəşfiyyat/istifadə faktorudur**. Bizim istifadədən daha çox kəşfiyyata və ya əksinə üstünlük verməli olduğumuzu müəyyən edir. Alqoritmimizdə halların `epsilon` faizində Q-Cədvəl qiymətlərinə uyğun növbəti hərəkəti seçəcəyik, qalan hallarda isə təsadüfi hərəkəti yerinə yetirəcəyik. Bu, axtarış məkanında əvvəllər heç görmədiyimiz sahələri araşdırmağımıza təkan verəcək.
✅ Balanslaşdırma baxımından - təsadüfi hərəkətin(kəşfiyyatın) seçilməsi yanlış istiqamətdə təsadüfi bir zərbə rolunu oynayacaq və dirək həmin "səhvlərdən" tarazlığı necə bərpa edəcəyini öyrənməli olacaq.
✅ Balanslaşdırma baxımından - təsadüfi hərəkətin(kəşfiyyatın) seçilməsi yanlış istiqamətdə təsadüfi bir zərbə rolunu oynayacaq və birbaşa həmin "səhvlərdən" tarazlığı necə bərpa edəcəyini öyrənməli olacaq.
### Alqoritmi təkmilləşdirin
@ -217,7 +217,7 @@ Biz həmçinin əvvəlki dərsdən olan alqoritmimizi iki formada təkmilləşdi
- **Bir sıra simulyasiyalar üzrə orta məcmu mükafatını hesablayın**. Hər 5000 iterasiyada nə qədər irəlilədiyimizi ekrana çap edəcəyik və bu müddət ərzində ümumi mükafatımızın orta qiymətini çıxaracağıq. Bu o deməkdir ki, 195-dən çox bal toplasaq, tələb olunandan daha yüksək keyfiyyətlə problemi həll edilmiş hesab edə bilərik.
- **Maksimum orta məcmu nəticəni hesablayın**, `Qmax` və biz həmin nəticəyə uyğun olan Q-Cədvəlini yadda saxlayacağıq. Təlimi icra edən zaman görəcəksiniz ki, bəzən orta məcmunun qiyməti aşağı düşməyə başlayır və biz Q-Cədvəlinin təlim zamanı müşahidə edilən ən yaxşı modelə uyğun olan dəyərlərini saxlamaq istəyirik.
- **Maksimum orta məcmu nəticəni hesablayın**. Bi` `Qmax` və həmin nəticəyə uyğun olan Q-Cədvəlini yadda saxlayacağıq. Təlimi icra edən zaman görəcəksiniz ki, bəzən orta məcmunun qiyməti aşağı düşməyə başlayır və biz Q-Cədvəlinin təlim zamanı müşahidə edilən ən yaxşı modelə uyğun olan dəyərlərini saxlamaq istəyirik.
1. Sonrakı planlar üçün `rewards` vektorunda hər simulyasiyada bütün məcmu mükafatları toplayın. (11. kod bloku)
@ -264,7 +264,7 @@ Bu nəticələrdən aşağıdakı fərqləri görə bilərsən:
- **Məqsədimizə yaxın**. Simulyasiyanın 100+ ardıcıl işləməsi ilə 195 məcmu mükafatı əldə etmək məqsədinə çatmaq üçün çox yaxınıq və ya həqiqətən buna nail ola bilərik! Kiçik nömrələr alsaq da, hələ də bilmirik, çünki ortalama 5000-dən çox icra həyata keçiririk və rəsmi meyarlarda yalnız 100 icra tələb olunur.
- **Mükafat atmağa başlayır**. Bəzən mükafat düşməyə başlayır, yəni vəziyyəti daha da pis hala gətirənlərlə birlikdə Q-Cədvəlindəki öyrənilən dəyərləri "məhv edə" bilər.
- **Mükafat artmağa başlayır**. Bəzən mükafat düşməyə başlayır, yəni vəziyyəti daha da pis hala gətirənlərlə birlikdə Q-Cədvəlindəki öyrənilən dəyərləri "məhv edə" bilər.
Təlimin inkişaf qrafikini qursaq, bu müşahidə daha aydın görünür.
@ -299,11 +299,11 @@ plt.plot(running_average(rewards,100))
> **Tapşırıq 1**: Hiperparametr dəyərləri ilə oynayın və daha yüksək məcmu mükafat əldə edə biləcəyinizə baxın. 195-dən yuxarı qiymət ala bilirsinizmi?
> **Tapşırıq 2**: Problemi tam həll etmək üçün, 100 ardıcıl icrada orta mükafat dəyərini 195 olaraq almalısınız. Təlim zamanı qiymətləri ölçün və problemi tam şəkildə həll etdiyinizə əmin olun!
> **Tapşırıq 2**: Problemi tam həll etmək üçün 100 ardıcıl icrada orta mükafat dəyərini 195 olaraq almalısınız. Təlim zamanı qiymətləri ölçün və problemi tam şəkildə həll etdiyinizə əmin olun!
## İcra zamanı nəticəni görək
Öyrədilmiş modelin necə davrandığını görmək maraqlı olardı. Simulyasiyanı işə salaq və Q-Cədvəldəki ehtimal paylamasına görə təlim, nümunə götürmə zamanı etdiyimiz fəaliyyət seçmə strategiyasını izləyək: (Kod bloku 13)
Öyrədilmiş modelin necə davrandığını görmək maraqlı olardı. Simulyasiyanı işə salaq və Q-Cədvəldəki ehtimal paylamasına görə təlim, nümunə götürmə zamanı isə etdiyimiz fəaliyyət seçmə strategiyasını izləyək: (Kod bloku 13)
```python
obs = env.reset()
@ -317,7 +317,7 @@ while not done:
env.close()
```
Bu kimi bir şey görməlisən:
Buna bənzər bir şey görməlisən:
![tarazlanmış cartpole](../images/cartpole-balance.gif)
@ -325,17 +325,19 @@ Bu kimi bir şey görməlisən:
## 🚀 Məşğələ
> **Tapşırıq 3**: Burada biz ən yaxşısı olmaya biləcək Q-Cədvəlinin son versiyasını istifadə edirdik. Xatırlayırsınızsa, ən yaxşı Q-Cədvəlini `Qbest` dəyişənində saxlamışıq! `Qbest`-i `Q`-ə kopyalayaraq ən optimal Q-Cədvəllə eyni nümunəni sınaqdan keçirin və fərqi izləyin.
> **Tapşırıq 3**: Burada biz ən yaxşısı ola bilməyəcək Q-Cədvəlinin son versiyasını istifadə edirdik. Xatırlayırsınızsa, ən yaxşı Q-Cədvəlini `Qbest` dəyişənində saxlamışıq! `Qbest`-i `Q`-ə kopyalayaraq ən optimal Q-Cədvəllə eyni nümunəni sınaqdan keçirib fərqi izləyək.
> **Tapşırıq 4**: Burada hər addımda ən yaxşı hərəkəti seçmirdik. Bunun əksinə müvafiq ehtimal paylanması ilə nümunə götürürdük. Ən yüksək Q-Cədvəl dəyəri olan ən yaxşı hərəkəti həmişə seçmək daha düzgün olmazdımı? Bu, Q-Cədvəlinin dəyərinə uyğun hərəkət nömrəsini tapmaq üçün `np.argmax` funksiyasından istifadə etməklə edilə bilər. Həmin strategiyanı icra edin və tarazlanmanın yaxşılaşdığını izləyin.
## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/uiz/48/)
## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/uiz/48/?loc=az)
## Tapşırıq
[Dağ maşınını öyrədin](assignment.az.md)
## Nəticə
Artıq oyunun istədiyi vəziyyətini müəyyənləşdirən və axtarış sahəsini ağıllı şəkildə araşdıran bir mükafat funksiyasını təmin etməklə, yaxşı nəticələr əldə edəcək agentlər yetişdirməyi öyrəndik. Q-Öyrənməsi alqoritmini diskret hərəkətlərlə, diskret və davamlı mühit hallarında uğurla tətbiq etmiş olduq.
Artıq oyunun istənilən vəziyyətini müəyyənləşdirən və axtarış sahəsini ağıllı şəkildə araşdıran bir mükafat funksiyasını təmin etməklə yaxşı nəticələr əldə edəcək agentlər yetişdirməyi öyrəndik. Q-Öyrənməsi alqoritmini diskret hərəkətlərlə diskret və davamlı mühit hallarında uğurla tətbiq etmiş olduq.
Müşahidə sahəsi Atari oyun ekranındakı görüntü kimi fəaliyyət vəziyyətinin də davamlı olduğu daha mürəkkəb vəziyyətləri öyrənmək vacibdir. Bu problemlərdə tez-tez yaxşı nəticələr əldə etmək üçün neyron şəbəkələri kimi daha güclü maşın öyrənmə texnikasından istifadə etməliyik. Bu cür irəli mövzular qarşıdakı daha mürəkkəb AI kursumuzun mövzusudur.
It's important to also study situations where action state is also continuous, and when observation space is much more complex, such as the image from the Atari game screen.
Atari oyun ekranından görüntü kimi davamlı hərəkdə olan və daha mürəkkəb müşahidə sahələrini də öyrənmək vacibdir. Bu problemlərdə tez-tez yaxşı nəticələr əldə etmək üçün neyron şəbəkələri kimi daha güclü maşın öyrənmə texnikasından istifadə etməliyik. Bu cür mürəkkəb mövzular qarşıdakı daha mürəkkəb AI kursumuzun mövzusudur.

@ -1,6 +1,6 @@
# Dağ maşınını öyrədin
[Openai Gym](http://gym.openai.com), elə hazırlanıb ki, bütün mühitlər eyni API ilə bizi təmin edir - məsələn, `reset`, `step` və `render` kimi eyni metodlar və **fəaliyyət sahəsi** və **müşahidə sahəsinin** eyni abstrakt formaları. Beləliklə, minimal kod dəyişiklikləri ilə eyni gücləndirmə öyrənməsi alqoritmlərini fərqli mühitlərə uyğunlaşdırmaq mümkündür.
[Openai Gym](http://gym.openai.com),elə hazırlanıb ki, bütün mühitlər eyni API ilə bizi təmin edir - məsələn, `reset`, `step` və `render` kimi eyni metodlar, **fəaliyyət sahəsi** və **müşahidə sahəsinin** eyni abstrakt formaları. Beləliklə minimal kod dəyişiklikləri ilə eyni gücləndirmə öyrənməsi alqoritmlərini fərqli mühitlərə uyğunlaşdırmaq mümkündür.
## Dağ maşını mühiti
@ -8,7 +8,7 @@
<img src="../images/mountaincar.png" width="300"/>
Məqsəd, hər addımda aşağıdakı hərəkətlərdən birini icra edərək vadidən çıxmaq və bayrağı tutmaqdır:
Məqsəd hər addımda aşağıdakı hərəkətlərdən birini icra edərək vadidən çıxmaq və bayrağı tutmaqdır:
| Dəyər | Mənası |
| ----- | ------------------------- |
@ -16,7 +16,7 @@ Məqsəd, hər addımda aşağıdakı hərəkətlərdən birini icra edərək va
| 1 | Sürətlənməyin |
| 2 | Sağa doğru sürəti artırın |
Bu problemin əsas hiyləsi, avtomobilin mühərrikinin bir təkanda təpəni aşmaq üçün kifayət qədər güclü olmamasıdır. Buna görə də müvəffəq olmağın yeganə yolu, təcil yaratmaq üçün geri və irəli sürməkdir.
Bu problemin əsas hiyləsi avtomobilin mühərrikinin bir təkanda təpəni aşmaq üçün kifayət qədər güclü olmamasıdır. Buna görə də müvəffəq olmağın yeganə yolu təcil yaratmaq üçün geri və irəli sürməkdir.
Müşahidə məkanı yalnız iki dəyərdən ibarətdir:
@ -30,7 +30,7 @@ Dağ avtomobili üçün mükafat sistemi olduqca çətindir:
* Agentə dağın üstündəki bayrağa(mövqeyi = 0.5) çatdığı təqdirdə 0 mükafat verilir.
* Agentin mövqeyi 0,5-dən az olduqda -1 ilə mükafatlandırılır.
Gedişat, avtomobil mövqeyi 0,5-dən çox olduqda və ya icra uzunluğu 200-dən çox olarsa, sona çatır.
Gedişat avtomobil mövqeyi 0,5-dən çox olduqda və ya icra uzunluğu 200-dən çox olarsa, sona çatır.
## Təlimat
@ -41,5 +41,5 @@ Dağ avtomobil problemini həll etmək üçün gücləndirmə öyrənməsi alqor
## Rubrika
| Meyarlar | Nümunəvi | Adekvat | İnkişaf Etdirilməli Olan |
| -------- | --------- | -------- | ----------------- |
| | Q-Learning alqoritmi minimal kod dəyişiklikləri ilə CartPole nümunəsi uğurla uyğunlaşdırılır və 200-dən az addımla bayrağın tutulması problemi həll edilir. | Q-Öyrənməsi alqoritmi internetdən götürülüb, amma yaxşı sənədləşdirilib; və ya mövcud alqoritm qəbul edilmişdir, amma istənilən nəticələr əldə edilməmişdir. | Tələbə heç bir alqoritmi uğurla uyğunlaşdıra bilməyib, amma həlli istiqamətində əhəmiyyətli addımlar atıb(vəziyyətin diskretləşməsini tətbiq edib, Q-Cədvəl data strukturunu qurub və s.) |
| -------- | -------- | ------- | ------------------------ |
| | Q-Learning alqoritmi minimal kod dəyişiklikləri ilə CartPole nümunəsi uğurla uyğunlaşdırılıb və 200-dən az addımla bayrağın tutulması problemi həll edilib. | Q-Öyrənməsi alqoritmi internetdən götürülüb, amma yaxşı sənədləşdirilib; və ya mövcud alqoritm qəbul edilmişdir, amma istənilən nəticələr əldə edilməmişdir. | Tələbə heç bir alqoritmi uğurla uyğunlaşdıra bilməyib, amma həlli istiqamətində əhəmiyyətli addımlar atıb(vəziyyətin diskretləşməsini tətbiq edib, Q-Cədvəl data strukturunu qurub və s.) |

@ -1,6 +1,6 @@
# Gücləndirilmiş öyrənməyə giriş
# Gücləndirici öyrənməyə giriş
Gücləndirilmiş öyrənmə, RL(Reinforcment Learning), nəzarətli və nəzarətsiz öyrənmənin yanında əsas maşın öyrənmə paradiqmalarından biri kimi qeyd olunur. RL qərarlar haqqındadır: düzgün qərarları vermək və ya ən azı onlardan öyrənmək.
Gücləndirici öyrənmə, RL(Reinforcement Learning), nəzarətli və nəzarətsiz öyrənmənin yanında əsas maşın öyrənmə paradiqmalarından biri kimi qeyd olunur. RL qərarlar haqqındadır: düzgün qərarları vermək və ya ən azı onlardan öyrənmək.
Təsəvvür edin ki, birja kimi simulyasiya edilmiş bir mühitiniz var. Müəyyən bir tənzimləmə tətbiq etsəniz nə baş verər? Bunun müsbət və ya mənfi təsirləri varmı? Mənfi bir şey baş verərsə, bu _mənfi gücləndirməni_ götürməli, ondan dərs almalı və kursu dəyişməlisiniz. Əgər bu müsbət nəticədirsə, siz həmin _müsbət gücləndirməyə_ əsaslanmalısınız.
@ -10,7 +10,7 @@ Təsəvvür edin ki, birja kimi simulyasiya edilmiş bir mühitiniz var. Müəyy
## Regional mövzu: Piter və Qurd (Rusiya)
[Piter və Qurd](https://en.wikipedia.org/wiki/Peter_and_the_Wolf) — rus bəstəkarı [Sergei Prokofyev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) tərəfindən yazılmış musiqili nağıldır. O canavarı qovmaq üçün cəsarətlə evindən çıxaraq meşənin təmizlənməsinə gedən gənc pioner Piter haqqındadır. Bu bölmədə biz Piterə kömək edəcək maşın öyrənmə alqoritmlərini öyrədəcəyik:
[Piter və Qurd](https://en.wikipedia.org/wiki/Peter_and_the_Wolf) — rus bəstəkarı [Sergei Prokofyev](https://en.wikipedia.org/wiki/Sergei_Prokofiev) tərəfindən yazılmış musiqili nağıldır. O, canavarı qovmaq üçün cəsarətlə evindən çıxaraq meşənin təmizlənməsinə gedən gənc pioner Piter haqqındadır. Bu bölmədə biz Piterə kömək edəcək maşın öyrənmə alqoritmlərini öyrədəcəyik:
- Ətrafı **araşdırın** və optimal naviqasiya xəritəsi qurun
- Daha sürətli hərəkət etmək üçün skeytborddan necə istifadə etməyi və onun üzərində tarazlığı qorumağı **öyrənin**.
@ -19,35 +19,35 @@ Təsəvvür edin ki, birja kimi simulyasiya edilmiş bir mühitiniz var. Müəyy
> 🎥 Prokofyevin Piter və Qurd musiqisini dinləmək üçün yuxarıdakı şəkilə klikləyin
## Gücləndirilmiş öyrənmə
## Gücləndirici öyrənmə
Əvvəlki bölmələrdə siz maşın öyrənmə problemlərinin iki nümunəsini görmüsünüz:
- **Nəzarət edilən** öyrənmədə həll etmək istədiyimiz problemə nümunə həllər təklif edən verilənlər bazamız var idi. [Təsnifat](../../4-Classification/translations/README.az.md) və [reqressiya](../../2-Regression/translations/README.az.md) nəzarət edilən öyrənmə tapşırıqlarıdır.
- **Nəzarət edilən** öyrənmədə həll etmək istədiyimiz problemə nümunə həllər təklif edən verilənlər bazamız var idi. [Qruplaşdırma](../../4-Classification/translations/README.az.md) və [reqressiya](../../2-Regression/translations/README.az.md) nəzarət edilən öyrənmə tapşırıqlarıdır.
- **Nəzarətsiz** öyrənmədə isə bizim etiketli təlim datalarımız yoxdur. Nəzarətsiz öyrənmənin əsas nümunəsi [Klasterləşdirmə](../../5-Clustering/translations/README.az.md)-dir.
Bu bölmədə biz sizi etiketli təlim məlumatı tələb etməyən yeni tip öyrənmə problemi ilə tanış edəcəyik. Belə problemlərin bir neçə növü var:
- **[Yarı nəzarətli öyrənmədə](https://wikipedia.org/wiki/Semi-supervised_learning)** modeli əvvəlcədən öyrətmək üçün istifadə edilə bilən çoxlu etiketlənməmiş datamız var.
- **[Gücləndirilmiş öyrənmədə](https://wikipedia.org/wiki/Reinforcement_learning)** isə, agent simulyasiya edilmiş mühitdə eksperimentlər həyata keçirərək özünü necə aparmağı öyrənir.
- **[Gücləndirici öyrənmədə](https://wikipedia.org/wiki/Reinforcement_learning)** isə agent simulyasiya edilmiş mühitdə eksperimentlər həyata keçirərək özünü necə aparmağı öyrənir.
### Nümunə - kompüter oyunu
Tutaq ki, siz kompüterə şahmat və ya [Super Mario](https://wikipedia.org/wiki/Super_Mario) kimi oyun oynamağı öyrətmək istəyirsiniz. Kompüterin oyun oynaması üçün ona oyun vəziyyətlərinin hər birində hansı hərəkəti edəcəyini proqnozlaşdırmaq lazımdır. Bu təsnifat problemi kimi görünsə də, belə deyil - çünki bizdə vəziyyətlər və müvafiq hərəkətlər olan verilənlər bazası yoxdur. Mövcud şahmat matçları və ya Super Mario oynayan oyunçuların qeydə alınması kimi bəzi məlumatlarımız olsa da, çox güman ki, bu məlumatlar kifayət qədər çox sayda mümkün vəziyyəti əhatə etməyəcək.
Tutaq ki, siz kompüterə şahmat və ya [Super Mario](https://wikipedia.org/wiki/Super_Mario) kimi oyun oynamağı öyrətmək istəyirsiniz. Kompüterin oyun oynaması üçün ona oyun vəziyyətlərinin hər birində hansı hərəkəti edəcəyini proqnozlaşdırmaq lazımdır. Bu qruplaşdırma problemi kimi görünsə də, belə deyil - çünki bizdə vəziyyətlər və müvafiq hərəkətlər olan verilənlər bazası yoxdur. Mövcud şahmat matçları və ya Super Mario oynayan oyunçuların qeydə alınması kimi bəzi məlumatlarımız olsa da, çox güman ki, bu məlumatlar kifayət qədər çox sayda mümkün vəziyyəti əhatə etməyəcək.
Mövcud oyun datalarını axtarmaq əvəzinə, **Gücləndirilmiş Öyrənmə** (RL) *kompüteri dəfələrlə oynatmaq* və nəticəni müşahidə etmək ideyasına əsaslanır. Beləliklə, Gücləndirilmiş Öyrənmə tətbiq etmək üçün bizə iki şey lazımdır:
Mövcud oyun datalarını axtarmaq əvəzinə, **Gücləndirici Öyrənmə** (RL) *kompüteri dəfələrlə oynatmaq* və nəticəni müşahidə etmək ideyasına əsaslanır. Beləliklə, Gücləndirici Öyrənmə tətbiq etmək üçün bizə iki şey lazımdır:
- **Bir mühit** və **bir simulyator** bizə dəfələrlə oyun oynamağa imkan verir. Bu simulyator bütün oyun qaydalarını, eləcə də mümkün vəziyyətləri və hərəkətləri müəyyən edəcək.
- **Mükafat funksiyası**, bu, bizə hər bir hərəkət və ya oyun zamanı nə qədər yaxşı etdiyimizi bildirir.
- **Mükafat funksiyası**, bu bizə hər bir hərəkət və ya oyun zamanı nə qədər yaxşı etdiyimizi bildirir.
Maşın öyrənmənin digər növləri ilə RL arasındakı əsas fərq ondan ibarətdir ki, RL-də biz adətən oyunu bitirənə qədər qalib və ya uduzduğumuzu bilmirik. Buna görə də, hansısa bir hərəkətin yaxşı olub olmadığını deyə bilmərik. Çünki yalnız oyunun sonunda mükafat alırıq və bizim məqsədimiz qeyri-müəyyən şəraitdə modeli öyrətməyə imkan verəcək alqoritmləri qurmaqdır. Biz **Q-öyrənməsi** adlı bir RL alqoritmini öyrənəcəyik.
Maşın öyrənmənin digər növləri ilə RL arasındakı əsas fərq ondan ibarətdir ki, RL-də biz adətən oyunu bitirənə qədər qalib və ya məğlub olduğumuzu bilmirik. Buna görə də hansısa bir hərəkətin yaxşı olub olmadığını deyə bilmərik. Çünki yalnız oyunun sonunda mükafat alırıq və bizim məqsədimiz qeyri-müəyyən şəraitdə modeli öyrətməyə imkan verəcək alqoritmləri qurmaqdır. Biz **Q-öyrənməsi** adlı bir RL alqoritmini öyrənəcəyik.
## Dərslər
1. [Gücləndirilmiş öyrənmə və Q-Öyrənməsinə Giriş](../1-QLearning/translations/README.az.md)
1. [Gücləndirici öyrənmə və Q-Öyrənməsinə Giriş](../1-QLearning/translations/README.az.md)
2. [Gym simulyasiya mühitindən istifadə](../2-Gym/translations/README.az.md)
## Tövhə verənlər
"Gücləndirilmiş öyrənməyə giriş" [Dmitri Soşnikov](http://soshnikov.com) tərəfindən ♥️ ilə yazılmışdır.
"Gücləndirici öyrənməyə giriş" [Dmitri Soşnikov](http://soshnikov.com) tərəfindən ♥️ ilə yazılmışdır.

Loading…
Cancel
Save