სხვა AI ტექნიკები Jupyter ნოუთბუქი · PyTorch

ტრენინგი RL Cartpole Balancing-ის გასაკეთებლად

ეს არის პრაქტიკული ნოუთბუქი. წაიკითხე კოდი და შედეგები აქ, ან გაუშვი ინტერაქტიულად Google Colab-ში ან Jupyter-ში.

ეს ნოუთბუქები AI დამწყებთათვის სასწავლო პროგრამა-ის ნაწილია. ის შთაგონებულია ოფიციალური PyTorch გაკვეთილი და ეს Cartpole PyTorch განხორციელება-ით.

ამ მაგალითში, ჩვენ გამოვიყენებთ RL-ს, რათა მოვამზადოთ მოდელი, რათა დააბალანსოს ბოძები ეტლზე, რომელსაც შეუძლია მოძრაობდეს მარცხნივ და მარჯვნივ ჰორიზონტალური მასშტაბით. ჩვენ გამოვიყენებთ OpenAI სპორტული დარბაზი გარემოს ბოძის სიმულაციისთვის.

შენიშვნა: შეგიძლიათ ამ გაკვეთილის კოდი ადგილობრივად გაუშვათ (მაგ. Visual Studio Code-დან), ამ შემთხვევაში სიმულაცია გაიხსნება ახალ ფანჯარაში. კოდის ონლაინ გაშვებისას შეიძლება დაგჭირდეთ კოდის შესწორება, როგორც აღწერილია აქ.

ჩვენ დავიწყებთ იმით, რომ დარწმუნდებით, რომ სპორტული დარბაზი დაყენებულია:

იტვირთება…

ახლა მოდით შევქმნათ CartPole გარემო და ვნახოთ როგორ ვიმოქმედოთ მასზე. გარემოს აქვს შემდეგი თვისებები:

  • სამოქმედო სივრცე არის შესაძლო მოქმედებების ერთობლიობა, რომელთა შესრულებაც შეგვიძლია სიმულაციის თითოეულ საფეხურზე
  • დაკვირვების სივრცე არის დაკვირვებების სივრცე, რომლის გაკეთებაც შეგვიძლია
იტვირთება…

ვნახოთ როგორ მუშაობს სიმულაცია. შემდეგი ციკლი აწარმოებს სიმულაციას, სანამ env.step არ დააბრუნებს შეწყვეტის დროშას done. ჩვენ შემთხვევით ავირჩევთ მოქმედებებს env.action_space.sample()-ის გამოყენებით, რაც ნიშნავს, რომ ექსპერიმენტი, სავარაუდოდ, ძალიან სწრაფად ჩავარდება (CartPole გარემო მთავრდება, როდესაც CartPole-ის სიჩქარე, მისი პოზიცია ან კუთხე გარკვეულ საზღვრებს მიღმაა).

სიმულაცია გაიხსნება ახალ ფანჯარაში. თქვენ შეგიძლიათ რამდენჯერმე გაუშვათ კოდი და ნახოთ როგორ იქცევა იგი.

იტვირთება…

თქვენ შეგიძლიათ შეამჩნიოთ, რომ დაკვირვებები შეიცავს 4 რიცხვს. ისინი არიან:

  • ურიკის პოზიცია
  • ურიკის სიჩქარე
  • ბოძის კუთხე
  • ბოძის ბრუნვის სიჩქარე

rew არის ჯილდო, რომელსაც ვიღებთ ყოველ ნაბიჯზე. თქვენ ხედავთ, რომ CartPole გარემოში თქვენ დაჯილდოვდებით 1 ქულით თითოეული სიმულაციური ნაბიჯისთვის და მიზანია მაქსიმალური ჯილდოს გაზრდა, ანუ დრო CartPole-ს შეუძლია დაბალანსება დაცემის გარეშე.

განმამტკიცებელი სწავლის დროს, ჩვენი მიზანია მოვამზადოთ პოლიტიკა $\pi$, რომელიც $s$ თითოეულ შტატზე გვეტყვის რომელი ქმედება $a$ უნდა მივიღოთ, ასე რომ, არსებითად $a = \pi(s)$.

თუ გსურთ სავარაუდო გამოსავალი, შეგიძლიათ იფიქროთ პოლიტიკაზე, როგორც აბრუნებს ალბათობების ერთობლიობას თითოეული ქმედებისთვის, ანუ $\pi(a|s)$ ნიშნავს ალბათობას, რომ ჩვენ უნდა განვახორციელოთ $a$ $s$ მდგომარეობაში.

პოლიტიკის გრადიენტის მეთოდი

უმარტივეს RL ალგორითმში, სახელწოდებით პოლიტიკის გრადიენტი, ჩვენ მოვამზადებთ ნერვულ ქსელს შემდეგი მოქმედების პროგნოზირებისთვის.

იტვირთება…

ჩვენ გავავარჯიშებთ ქსელს მრავალი ექსპერიმენტის ჩატარებით და ყოველი გაშვების შემდეგ ჩვენი ქსელის განახლებით. მოდით განვსაზღვროთ ფუნქცია, რომელიც ჩაატარებს ექსპერიმენტს და დააბრუნებს შედეგებს (ე.წ. კვალი) - ყველა მდგომარეობა, მოქმედება (და მათი რეკომენდებული ალბათობები) და ჯილდოები:

იტვირთება…

შეგიძლიათ ერთი ეპიზოდის გაშვება მოუმზადებელი ქსელით და დააკვირდით, რომ ჯამური ჯილდო (AKA ეპიზოდის ხანგრძლივობა) ძალიან დაბალია:

იტვირთება…

პოლიტიკის გრადიენტის ალგორითმის ერთ-ერთი რთული ასპექტია ფასდაკლებული ჯილდოების გამოყენება. იდეა არის ის, რომ ჩვენ გამოვთვლით ჯამური ჯილდოების ვექტორს თამაშის ყოველ საფეხურზე და ამ პროცესის განმავლობაში ვამცირებთ ადრეულ ჯილდოებს რაღაც კოეფიციენტის $gamma$-ის გამოყენებით. ჩვენ ასევე ნორმალიზდება მიღებული ვექტორი, რადგან ჩვენ გამოვიყენებთ მას როგორც წონას, რომ გავლენა მოახდინოს ჩვენს ვარჯიშზე:

იტვირთება…

ახლა მოდით გავაკეთოთ რეალური ტრენინგი! ჩვენ გავუშვებთ 300 ეპიზოდს და თითოეულ ეპიზოდში გავაკეთებთ შემდეგს:

  1. ჩაატარეთ ექსპერიმენტი და შეაგროვეთ კვალი
  2. გამოთვალეთ სხვაობა (gradients) განხორციელებულ ქმედებებსა და პროგნოზირებულ ალბათობებს შორის. რაც უფრო ნაკლებია განსხვავება, მით უფრო დარწმუნებული ვართ, რომ სწორი ქმედება მივიღეთ.
  3. გამოთვალეთ ფასდაკლებული ჯილდოები და გაამრავლეთ გრადიენტები ფასდაკლებულ ჯილდოებზე - რაც დარწმუნდება, რომ უფრო მაღალი ჯილდოს მქონე ნაბიჯები უფრო მეტ გავლენას მოახდენს საბოლოო შედეგზე, ვიდრე დაბალი ჯილდოებით
  4. ჩვენი ნერვული ქსელისთვის მოსალოდნელი სამიზნე მოქმედებები ნაწილობრივ იქნება აღებული სავარაუდო ალბათობებიდან გაშვების დროს და ნაწილობრივ გამოთვლილი გრადიენტებიდან. ჩვენ გამოვიყენებთ alpha პარამეტრს, რათა განვსაზღვროთ, თუ რამდენად არის გათვალისწინებული გრადიენტები და ჯილდოები - ამას ეწოდება გაძლიერების ალგორითმის სწავლის სიჩქარე.
  5. და ბოლოს, ჩვენ ვავარჯიშებთ ჩვენს ქსელს მდგომარეობებზე და მოსალოდნელ ქმედებებზე და ვიმეორებთ პროცესს
იტვირთება…
იტვირთება…

ახლა მოდით გავუშვათ ეპიზოდი რენდერით შედეგის სანახავად:

იტვირთება…

იმედია, ხედავთ, რომ ბოძს ახლა საკმაოდ კარგად შეუძლია წონასწორობა!

მსახიობი-კრიტიკოსი მოდელი

Actor-Critic მოდელი არის პოლიტიკის გრადიენტების შემდგომი განვითარება, რომელშიც ჩვენ ვაშენებთ ნერვულ ქსელს, რათა ვისწავლოთ როგორც პოლიტიკა, ასევე სავარაუდო ჯილდოები. ქსელს ექნება ორი გამომავალი (ან შეგიძლიათ იხილოთ როგორც ორი ცალკეული ქსელი):

  • აქტორი რეკომენდაციას გაუწევს განსახორციელებელ ქმედებას და გვაძლევს მდგომარეობის ალბათობის განაწილებას, როგორც პოლიტიკის გრადიენტულ მოდელში
  • კრიტიკოსი შეაფასებდა რა ჯილდოს მიიღებს ამ ქმედებებისგან. ის აბრუნებს მთლიან სავარაუდო ჯილდოს მომავალში მოცემულ მდგომარეობაში.

მოდით განვსაზღვროთ ასეთი მოდელი:

იტვირთება…
იტვირთება…

ჩვენ ოდნავ უნდა შევცვალოთ ჩვენი discounted_rewards და run_episode ფუნქციები:

იტვირთება…

ახლა ჩვენ გავაგრძელებთ ძირითად სავარჯიშო ციკლს. ჩვენ გამოვიყენებთ ხელით ქსელის ტრენინგის პროცესს სათანადო დაკარგვის ფუნქციების გამოთვლით და ქსელის პარამეტრების განახლებით:

იტვირთება…

საბოლოოდ დავხუროთ გარემო.

იტვირთება…

Takeaway

ჩვენ ვნახეთ ორი RL ალგორითმი ამ დემოში: მარტივი პოლიტიკის გრადიენტი და უფრო დახვეწილი მსახიობი-კრიტიკოსი. თქვენ ხედავთ, რომ ეს ალგორითმები მოქმედებენ მდგომარეობის, მოქმედებისა და ჯილდოს აბსტრაქტული ცნებებით - ამგვარად, მათი გამოყენება შესაძლებელია ძალიან განსხვავებულ გარემოში.

განმტკიცების სწავლა საშუალებას გვაძლევს ვისწავლოთ პრობლემის გადაჭრის საუკეთესო სტრატეგია მხოლოდ საბოლოო ჯილდოს ნახვით. ის ფაქტი, რომ ჩვენ არ გვჭირდება ეტიკეტირებული მონაცემთა ნაკრები, საშუალებას გვაძლევს გავიმეოროთ სიმულაციები ბევრჯერ ჩვენი მოდელების ოპტიმიზაციისთვის. თუმცა, RL-ში ჯერ კიდევ ბევრი გამოწვევაა, რომელიც შეიძლება გაიგოთ, თუ გადაწყვეტთ მეტი ფოკუსირება მოახდინოთ AIს ამ საინტერესო სფეროზე.

ეს გაკვეთილი არის Microsoft “AI for Beginners” კურსის ქართული თარგმანი, გავრცელებული MIT ლიცენზიით.