⚠️ სტატიის განახლებული ვერსია ხელმისაწვდომია აქ 👉 https://huggingface.co/deep-rl-course/unit1/introduction ეს სტატია ღრმა გაძლიერებული სწავლების კლასის ნაწილია – უფასო კურსი დამწყებიდან ექსპერტამდე. სასწავლო გეგმის ნახვა შეგიძლიათ აქ. ბოლო ერთეულში ჩვენ შევისწავლეთ ჩვენი პირველი გაძლიერებული სწავლების ალგორითმი: Q-სწავლება, დამოუკიდებლად განვახორციელეთ ის და მოვამზადეთ ორ გარემოში, FrozenLake-v1 ☃️ და Taxi-v3 🚕. მივიღეთ შესანიშნავი შედეგები ამ მარტივი ალგორითმით. თუმცა, ეს გარემოებები შედარებით მარტივი იყო, რადგან მდგომარეობათა სივრცე დისკრეტული და მცირე იყო (14 სხვადასხვა მდგომარეობა FrozenLake-v1-ისთვის და 500 Taxi-v3-ისთვის). მაგრამ როგორც ვნახავთ, Q-ცხრილის შექმნა და განახლება შეიძლება არაეფექტური გახდეს დიდი მდგომარეობათა სივრცის მქონე გარემოებებში. ამიტომ, დღეს შევისწავლით ჩვენს პირველ ღრმა გაძლიერებული სწავლების აგენტს: ღრმა Q-სწავლებას (Deep Q-Learning). Q-ცხრილის ნაცვლად, ღრმა Q-სწავლება იყენებს ნერვულ ქსელს, რომელიც იღებს მდგომარეობას და აპროქსიმირებს Q-მნიშვნელობებს თითოეული მოქმედებისთვის ამ მდგომარეობის საფუძველზე. ჩვენ მოვამზადებთ მას Space Invaders-ისა და სხვა Atari-ს გარემოების სათამაშოდ RL-Zoo-ის გამოყენებით, რომელიც არის გაძლიერებული სწავლების (RL) სავარჯიშო ჩარჩო Stable-Baselines-ის გამოყენებით. RL-Zoo გვაწვდის სკრიპტებს აგენტების მოსამზადებლად, შესაფასებლად, ჰიპერპარამეტრების დასაზუსტებლად, შედეგების ასახვისა და ვიდეოების ჩასაწერად. მაშ, დავიწყოთ! 🚀 ამ ერთეულის გასაგებად, ჯერ უნდა გესმოდეთ Q-სწავლება. ჩვენ ვისწავლეთ, რომ Q-სწავლება არის ალგორითმი, რომელსაც ვიყენებთ ჩვენი Q-ფუნქციის მოსამზადებლად. Q-ფუნქცია არის მოქმედება-მნიშვნელობის ფუნქცია, რომელიც განსაზღვრავს კონკრეტულ მდგომარეობაში ყოფნის და ამ მდგომარეობაში კონკრეტული მოქმედების შესრულების მნიშვნელობას. Q მოდის "ხარისხიდან" (Quality) ამ მოქმედების ამ მდგომარეობაში. შიდა მხრიდან, ჩვენს Q-ფუნქციას აქვს Q-ცხრილი, ცხრილი, სადაც ყოველი უჯრედი შეესაბამება მდგომარეობა-მოქმედების წყვილის მნიშვნელობას. წარმოიდგინეთ ეს Q-ცხრილი, როგორც ჩვენი Q-ფუნქციის მეხსიერება ან "მოტყუების ფურცელი". პრობლემა ისაა, რომ Q-სწავლება არის ცხრილოვანი მეთოდი. ეს ნიშნავს, რომ ეს არის პრობლემა, რომელშიც მდგომარეობათა და მოქმედებათა სივრცეები საკმარისად მცირეა, რათა მნიშვნელობის ფუნქციები წარმოდგენილი იყოს მასივებისა და ცხრილების სახით. და ეს არ არის მასშტაბირებადი. Q-სწავლება კარგად მუშაობდა მცირე მდგომარეობათა სივრცის მქონე გარემოებებში, როგორიცაა: მაგრამ იფიქრეთ იმაზე, რასაც დღეს გავაკეთებთ: ჩვენ მოვამზადებთ აგენტს, რათა ისწავლოს Space Invaders-ის თამაში ჩარჩოების შეყვანის სახით გამოყენებით. როგორც ნიკიტა მელკოზეროვმა აღნიშნა, Atari-ს გარემოებებს აქვთ დაკვირვების სივრცე (210, 160, 3) ზომით, რომელიც შეიცავს მნიშვნელობებს 0-დან 255-მდე, რაც გვაძლევს 256^(210x160x3) = 256^100800 (შედარებისთვის, დაკვირვებად სამყაროში დაახლოებით 10^80 ატომია). შესაბამისად, მდგომარეობათა სივრცე გიგანტურია; ამიტომ, ასეთი გარემოსთვის Q-ცხრილის შექმნა და განახლება არაეფექტური იქნება. ამ შემთხვევაში, საუკეთესო იდეაა Q-მნიშვნელობების აპროქსიმაცია Q-ცხრილის ნაცვლად პარამეტრიზებული Q-ფუნქციის Qθ(s,a) გამოყენებით. ეს ნერვული ქსელი მოცემული მდგომარეობისთვის აპროქსიმირებს სხვადასხვა Q-მნიშვნელობებს ამ მდგომარეობაში ყოველი შესაძლო მოქმედებისთვის. და სწორედ ამას აკეთებს ღრმა Q-სწავლება. ახლა, როცა ღრმა Q-სწავლება გავიგეთ, მოდით, უფრო ღრმად ჩავუღრმავდეთ ღრმა Q-ქსელს (Deep Q-Network). ეს არის ჩვენი ღრმა Q-სწავლების ქსელის არქიტექტურა: შეყვანის სახით, ვიღებთ 4 ჩარჩოს დასტას, რომელიც ქსელში გადის როგორც მდგომარეობა და გამოაქვს Q-მნიშვნელობების ვექტორი ამ მდგომარეობაში ყოველი შესაძლო მოქმედებისთვის. შემდეგ, ისევე როგორც Q-სწავლების შემთხვევაში, უბრალოდ უნდა გამოვიყენოთ ჩვენი ეფსილონ-ხარბი პოლიტიკა, რათა შევარჩიოთ, რომელი მოქმედება შევასრულოთ. როდესაც ნერვული ქსელი ინიციალიზდება, Q-მნიშვნელობის შეფასება საშინელია. მაგრამ ვარჯიშის დროს, ჩვენი ღრმა Q-ქსელის აგენტი დააკავშირებს სიტუაციას შესაბამის მოქმედებასთან და ისწავლის თამაშის კარგად თამაშს. ჩვენ აღვნიშნეთ, რომ შეყვანის მონაცემებს წინასწარ ვამუშავებთ. ეს არსებითი ნაბიჯია, რადგან გვინდა შევამციროთ ჩვენი მდგომარეობის სირთულე, რათა შევამციროთ ვარჯიშისთვის საჭირო გამოთვლის დრო. ასე რომ, ჩვენ ვამცირებთ მდგომარეობათა სივრცეს 84x84-მდე და ვაფერადებთ ნაცრისფრად (რადგან ფერები Atari-ს გარემოებებში მნიშვნელოვან ინფორმაციას არ ამატებს). ეს არის არსებითი დაზოგვა, რადგან ჩვენს სამ ფერთა არხს (RGB) ვამცირებთ 1-მდე. ზოგიერთ თამაშში შეგვიძლია ეკრანის ნაწილის ამოჭრაც, თუ ის მნიშვნელოვან ინფორმაციას არ შეიცავს. შემდეგ ოთხ ჩარჩოს ვალაგებთ ერთად. რატომ ვალაგებთ ოთხ ჩარჩოს ერთად? ჩარჩოებს ერთად ვალაგებთ, რადგან ეს გვეხმარება დროითი შეზღუდვის პრობლემის მოგვარებაში. ავიღოთ Pong-ის თამაშის მაგალითი. როდესაც ხედავთ ამ ჩარჩოს: შეგიძლიათ მითხრათ, სად მიდის ბურთი? არა, რადგან ერთი ჩარჩო საკმარისი არ არის მოძრაობის შეგრძნებისთვის! მაგრამ რა მოხდება, თუ კიდევ სამ ჩარჩოს დავამატებ? აქ ხედავთ, რომ ბურთი მარჯვნივ მიდის. შემდეგ, დაწყობილი ჩარჩოები მუშავდება სამი კონვოლუციური შრის მიერ. ეს შრეები საშუალებას გვაძლევს აღვბეჭდოთ და გამოვიყენოთ სივრცითი მიმართებები სურათებში. გარდა ამისა, რადგან ჩარჩოები ერთად არის დაწყობილი, შეგიძლიათ გამოიყენოთ გარკვეული სივრცითი თვისებები ამ ჩარჩოების მასშტაბით. საბოლოოდ, გვაქვს რამდენიმე სრულად დაკავშირებული შრე, რომელიც გამოაქვს Q-მნიშვნელობას ყოველი შესაძლო მოქმედებისთვის.