გაითვალისწინეთ: ამ სტატიის განახლებული ვერსია ხელმისაწვდომია აქ 👉 https://huggingface.co/deep-rl-course/unit1/introduction. ეს სტატია წარმოადგენს ღრმა გაძლიერებითი სწავლების (Deep Reinforcement Learning) კლასის ნაწილს. უფასო კურსი დამწყებიდან ექსპერტამდე. სილაბუსს შეგიძლიათ გაეცნოთ აქ. წინა ერთეულში ჩვენ შევისწავლეთ Advantage Actor Critic (A2C), ჰიბრიდული არქიტექტურა, რომელიც აერთიანებს მნიშვნელობაზე დაფუძნებულ და პოლიტიკაზე დაფუძნებულ მეთოდებს, რაც ხელს უწყობს ვარჯიშის სტაბილიზაციას დისპერსიის შემცირებით. დღეს ჩვენ შევისწავლით პროქსიმალური პოლიტიკის ოპტიმიზაციას (PPO), არქიტექტურას, რომელიც აუმჯობესებს ჩვენი აგენტის ვარჯიშის სტაბილურობას პოლიტიკის ზედმეტად დიდი განახლებების თავიდან აცილებით. ამისათვის, ჩვენ ვიყენებთ თანაფარდობას, რომელიც მიუთითებს ჩვენს მიმდინარე და ძველ პოლიტიკას შორის განსხვავებას და ამ თანაფარდობას ვჭრით (clip) სპეციფიკური დიაპაზონიდან [1−ϵ,1+ϵ]. ეს უზრუნველყოფს, რომ ჩვენი პოლიტიკის განახლება არ იქნება ზედმეტად დიდი და ვარჯიში უფრო სტაბილური გახდება. შემდეგ, თეორიის შემდეგ, ჩვენ ნულიდან დავწერთ PPO არქიტექტურას PyTorch-ის გამოყენებით და შევამოწმებთ ჩვენს იმპლემენტაციას CartPole-v1-სა და LunarLander-v2-ის საშუალებით. ჟღერს ამაღელვებლად? დავიწყოთ! პროქსიმალური პოლიტიკის ოპტიმიზაციის (PPO) იდეა მდგომარეობს იმაში, რომ ჩვენ გვსურს გავაუმჯობესოთ პოლიტიკის ვარჯიშის სტაბილურობა, თითოეული ვარჯიშის ეპოქაში პოლიტიკაში შეტანილი ცვლილებების შეზღუდვით: ჩვენ გვინდა თავიდან ავიცილოთ პოლიტიკის ზედმეტად დიდი განახლებები. ორი მიზეზის გამო: ასე რომ, PPO-ს საშუალებით, ჩვენ პოლიტიკას კონსერვატიულად ვაახლებთ. ამისათვის, ჩვენ უნდა გავზომოთ, თუ რამდენად შეიცვალა მიმდინარე პოლიტიკა წინა პოლიტიკასთან შედარებით, მიმდინარე და წინა პოლიტიკას შორის თანაფარდობის გამოთვლის გამოყენებით. და ჩვენ ამ თანაფარდობას ვჭრით დიაპაზონში [1−ϵ,1+ϵ], რაც ნიშნავს, რომ ჩვენ ვხსნით სტიმულს მიმდინარე პოლიტიკისთვის, რათა ზედმეტად არ დაშორდეს ძველს (აქედან მომდინარეობს „პროქსიმალური პოლიტიკის“ ტერმინი). მოდით გავიხსენოთ, რა არის ოპტიმიზაციის მიზანი Reinforce-ში: იდეა მდგომარეობდა იმაში, რომ ამ ფუნქციაზე გრადიენტული ასვლის ნაბიჯის გადადგმით (ამ ფუნქციის ნეგატივის გრადიენტული დაშვების ეკვივალენტური), ჩვენ მივიყვანდით ჩვენს აგენტს ისეთი მოქმედებების განსახორციელებლად, რომლებიც უფრო მაღალ ჯილდოებს იწვევს და მავნე მოქმედებებს თავიდან აცილებისკენ. თუმცა, პრობლემა ნაბიჯის ზომაში მდგომარეობს: PPO-ს შემთხვევაში, იდეა მდგომარეობს ჩვენი პოლიტიკის განახლების შეზღუდვაში ახალი მიზნობრივი ფუნქციით, რომელსაც ეწოდება Clipped surrogate objective function, რომელიც პოლიტიკის ცვლილებას მცირე დიაპაზონში შეზღუდავს კლიპის გამოყენებით. ეს ახალი ფუნქცია შექმნილია იმისათვის, რომ თავიდან იქნას აცილებული წონის დესტრუქციული, დიდი განახლებები: მოდით, შევისწავლოთ თითოეული ნაწილი, რათა გავიგოთ, როგორ მუშაობს. ეს თანაფარდობა ასე გამოითვლება: ეს არის მოქმედების მიღების ალბათობა at მდგომარეობაში st მიმდინარე პოლიტიკაში, გაყოფილი წინა პოლიტიკაზე. როგორც ვხედავთ, rt(θ) აღნიშნავს ალბათობის თანაფარდობას მიმდინარე და ძველ პოლიტიკას შორის: მაშასადამე, ეს ალბათობის თანაფარდობა არის ძველსა და მიმდინარე პოლიტიკას შორის განსხვავების შეფასების მარტივი გზა. ამ თანაფარდობას შეუძლია შეცვალოს ლოგარითმული ალბათობა, რომელსაც ვიყენებთ პოლიტიკის მიზნობრივ ფუნქციაში. ეს გვაძლევს ახალი მიზნობრივი ფუნქციის მარცხენა ნაწილს: თანაფარდობის გამრავლება უპირატესობაზე (advantage). თუმცა, შეზღუდვის გარეშე, თუ მიღებული მოქმედება ბევრად უფრო სავარაუდოა ჩვენს მიმდინარე პოლიტიკაში, ვიდრე წინა პოლიტიკაში, ეს გამოიწვევდა პოლიტიკის გრადიენტის მნიშვნელოვან ნაბიჯს და, შესაბამისად, პოლიტიკის გადაჭარბებულ განახლებას. აქედან გამომდინარე, ჩვენ გვჭირდება ამ მიზნობრივი ფუნქციის შეზღუდვა ცვლილებების დასჯით, რომლებიც იწვევენ თანაფარდობის 1-დან დაშორებას (ნაშრომში, თანაფარდობა შეიძლება იცვლებოდეს მხოლოდ 0.8-დან 1.2-მდე). თანაფარდობის კლიპინგით (clipping), ჩვენ უზრუნველვყოფთ, რომ არ გვქონდეს პოლიტიკის ზედმეტად დიდი განახლება, რადგან მიმდინარე პოლიტიკა არ შეიძლება ზედმეტად განსხვავდებოდეს ძველისგან. ამისათვის ჩვენ გვაქვს ორი გამოსავალი: ეს "მოჭრილი" (clipped) ნაწილი არის ვერსია, სადაც rt(theta) მოჭრილია დიაპაზონში [1−ϵ,1+ϵ]. Clipped Surrogate Objective ფუნქციის შემთხვევაში, ჩვენ გვაქვს ალბათობის ორი თანაფარდობა, ერთი მოუჭრელი (non-clipped) და ერთი მოჭრილი დიაპაზონში ( [1−ϵ,1+ϵ] შორის, სადაც ეფსილონი (ϵ) არის ჰიპერპარამეტრი, რომელიც გვეხმარება ამ კლიპის დიაპაზონის განსაზღვრაში (ნაშრომში ϵ=0.2.). შემდეგ, ჩვენ ვიღებთ მოჭრილი და მოუჭრელი მიზნების მინიმუმს, ასე რომ საბოლოო მიზანი არის მოუჭრელი მიზნის ქვედა ზღვარი (პესიმისტური ზღვარი). მოჭრილი და მოუჭრელი მიზნების მინიმუმის აღება ნიშნავს, რომ ჩვენ ავირჩევთ ან მოჭრილ, ან მოუჭრელ მიზანს თანაფარდობისა და უპირატესობის (advantage) მდგომარეობის მიხედვით. არ ინერვიულოთ. ნორმალურია, თუ ეს ამჟამად რთულად მოსაგვარებელი გეჩვენებათ. მაგრამ ჩვენ ვნახავთ, როგორ გამოიყურება ეს Clipped Surrogate Objective ფუნქცია და ეს დაგეხმარებათ უკეთ წარმოიდგინოთ, რა ხდება. ჩვენ გვაქვს ექვსი განსხვავებული სიტუაცია. პირველ რიგში გახსოვთ, რომ ჩვენ ვიღებთ მინიმუმს მოჭრილ და მოუჭრელ მიზნებს შორის. 1-ლ და მე-2 სიტუაციებში კლიპინგი არ გამოიყენება, რადგან თანაფარდობა დიაპაზონშია [1−ϵ,1+ϵ].