დღეს თქვენ ისწავლით თქვენი პირველი ოფლაინ Decision Transformer მოდელის ავარჯიშებას ნულიდან, რათა მან შეძლოს „ნახევრად გეპარდის“ (half-cheetah) გაშვება. ჩვენ მას ავარჯიშებთ უშუალოდ Google Colab-ში, რომლის ბმულიც არის აქ 👉 https://github.com/huggingface/blog/blob/main/notebooks/101_train-decision-transformers.ipynb ჟღერს საინტერესოდ? დავიწყოთ! Decision Transformer-ის მოდელი წარმოადგინეს ჩენ ლ.-მ და მისმა კოლეგებმა ნაშრომში „Decision Transformer: Reinforcement Learning via Sequence Modeling“. ის აძლიერებს სწავლას აბსტრაგირებს, როგორც პირობით-თანმიმდევრობის მოდელირების პრობლემას. ძირითადი იდეა ის არის, რომ RL მეთოდების გამოყენებით პოლიტიკის ავარჯიშების ნაცვლად, მაგალითად, ღირებულების ფუნქციის მორგებით, რომელიც გვეტყვის, თუ რა მოქმედება უნდა შევასრულოთ დაბრუნების (კუმულაციური ჯილდოს) მაქსიმიზაციისთვის, ჩვენ ვიყენებთ თანმიმდევრობის მოდელირების ალგორითმს (Transformer), რომელიც, სასურველი დაბრუნების, წარსული მდგომარეობებისა და მოქმედებების გათვალისწინებით, წარმოქმნის მომავალ მოქმედებებს ამ სასურველი დაბრუნების მისაღწევად. ეს არის ავტორეგრესიული მოდელი, რომელიც დამოკიდებულია სასურველ დაბრუნებაზე, წარსულ მდგომარეობებსა და მოქმედებებზე, რათა წარმოქმნას მომავალი მოქმედებები, რომლებიც მიაღწევენ სასურველ დაბრუნებას. ეს არის სრული ცვლილება გაძლიერებული სწავლის პარადიგმაში, რადგან ჩვენ ვიყენებთ გენერაციულ ტრაექტორიის მოდელირებას (მდგომარეობების, მოქმედებებისა და ჯილდოების თანმიმდევრობის ერთობლივი განაწილების მოდელირება) ჩვეულებრივი RL ალგორითმების ჩასანაცვლებლად. ეს ნიშნავს, რომ Decision Transformers-ში ჩვენ არ ვზრდით დაბრუნებას, არამედ წარმოქმნით მომავალი მოქმედებების სერიას, რომლებიც მიაღწევენ სასურველ დაბრუნებას. პროცესი მიმდინარეობს ასე: Decision Transformer-ის არქიტექტურა. მდგომარეობები, მოქმედებები და დაბრუნებები შედის მოდალობის სპეციფიკურ ხაზოვან ჩაშენებებში (embeddings), და ემატება პოზიციური ეპიზოდური დროითი ნაბიჯის კოდირება. ტოკენები შედის GPT არქიტექტურაში, რომელიც ავტორეგრესიულად პროგნოზირებს მოქმედებებს მიზეზობრივი თვითყურადღების ნიღბის გამოყენებით. სურათი [1]-დან. არსებობს Decision Transformer-ის სხვადასხვა ტიპი, მაგრამ დღეს ჩვენ ვაპირებთ ოფლაინ Decision Transformer-ის ავარჯიშებას, რაც ნიშნავს, რომ ჩვენ ვიყენებთ მხოლოდ სხვა აგენტებისგან ან ადამიანური დემონსტრაციებისგან შეგროვებულ მონაცემებს. აგენტი არ ურთიერთქმედებს გარემოსთან. თუ გსურთ მეტი გაიგოთ ოფლაინ და ონლაინ გაძლიერებულ სწავლას შორის განსხვავების შესახებ, იხილეთ ეს სტატია. ახლა, როდესაც გვესმის ოფლაინ Decision Transformers-ის თეორია, ვნახოთ, როგორ ავარჯიშებთ მას პრაქტიკაში. წინა პოსტში ჩვენ ვაჩვენეთ, თუ როგორ გამოვიყენოთ transformers Decision Transformer მოდელი და ჩავტვირთოთ წინასწარ ავარჯიშებული წონები 🤗 hub-იდან. ამ ნაწილში ჩვენ გამოვიყენებთ 🤗 Trainer-ს და სპეციალურ Data Collator-ს Decision Transformer მოდელის ნულიდან ავარჯიშებლად, 🤗 hub-ზე განთავსებული ოფლაინ RL მონაცემთა ნაკრების გამოყენებით. ამ გაკვეთილის კოდი შეგიძლიათ იპოვოთ ამ Colab ნოუთბუქში. ჩვენ შევასრულებთ ოფლაინ RL-ს, რათა ვისწავლოთ შემდეგი ქცევა Mujoco halfcheetah გარემოში. ჩვენ ვმასპინძლობთ რამდენიმე ოფლაინ RL მონაცემთა ნაკრებს hub-ზე. დღეს ჩვენ ვიმუშავებთ halfcheetah „ექსპერტულ“ მონაცემთა ნაკრებზე, რომელიც განთავსებულია hub-ზე. პირველ რიგში, საჭიროა იმპორტირება გავუკეთოთ load_dataset ფუნქციას 🤗 datasets პაკეტიდან და გადმოვწეროთ მონაცემთა ნაკრები ჩვენს მანქანაზე. მიუხედავად იმისა, რომ hub-ზე არსებული მონაცემთა ნაკრებების უმეტესობა მზად არის გამოსაყენებლად, ზოგჯერ გვსურს მონაცემთა ნაკრების დამატებითი დამუშავება ან მოდიფიცირება. ამ შემთხვევაში, ჩვენ გვინდა დავემთხვათ ავტორის იმპლემენტაციას, ანუ გვჭირდება: ამ მონაცემთა ნაკრების წინასწარი დამუშავების შესასრულებლად, ჩვენ გამოვიყენებთ სპეციალურ 🤗 Data Collator-ს. ახლა დავიწყოთ სპეციალური Data Collator-ით ოფლაინ გაძლიერებული სწავლისთვის. ეს იყო ბევრი კოდი, მოკლედ რომ ვთქვათ, ჩვენ განვსაზღვრეთ კლასი, რომელიც იღებს ჩვენს მონაცემთა ნაკრებს, ასრულებს საჭირო წინასწარ დამუშავებას და დაგვიბრუნებს მდგომარეობების, მოქმედებების, ჯილდოების, დაბრუნებების, დროითი ნაბიჯების და ნიღბების პარტიებს. ეს პარტიები შეიძლება უშუალოდ იქნას გამოყენებული Decision Transformer მოდელის ავარჯიშებლად 🤗 transformers Trainer-ის გამოყენებით. მოდელის 🤗 Trainer კლასით ავარჯიშებისთვის, პირველ რიგში უნდა დავრწმუნდეთ, რომ მის მიერ დაბრუნებული ლექსიკონი შეიცავს დანაკარგს (loss), ამ შემთხვევაში L-2 ნორმას მოდელის მოქმედების პროგნოზებსა და სამიზნეებზე. ამას მივაღწევთ TrainableDT კლასის შექმნით, რომელიც მემკვიდრეობით იღებს Decision Transformer მოდელს. transformers Trainer კლასს ესაჭიროებოდა არაერთი არგუმენტი, განსაზღვრული TrainingArguments კლასში. ჩვენ ვიყენებთ იმავე ჰიპერპარამეტრებს, რაც ავტორების ორიგინალურ იმპლემენტაციაშია, მაგრამ ვარჯიშობთ ნაკლები იტერაციით. ამას დაახლოებით 40 წუთი სჭირდება Colab ნოუთბუქში ავარჯიშებლად, ასე რომ, მოიმარჯვეთ ყავა ან წაიკითხეთ 🤗 Annotated Diffusion ბლოგპოსტი ლოდინისას. ავტორები დაახლოებით 3 საათის განმავლობაში ავარჯიშებენ, ასე რომ, აქ მიღებული შედეგები არ იქნება ისეთი კარგი, როგორც მათი. ახლა, როცა ავხსენით Decision Transformer-ის, Trainer-ის თეორია და მისი ავარჯიშების მეთოდები, მზად ხართ ავარჯიშოთ თქვენი პირველი ოფლაინ Decision Transformer მოდელი ნულიდან, რათა „ნახევრად გეპარდმა“ შეძლოს გაშვება 👉 https://github.com/huggingface/blog/blob/main/notebooks/101_train-decision-transformers.ipynb Colab მოიცავს ავარჯიშებული მოდელის ვიზუალიზაციას, ასევე იმას, თუ როგორ შეინახოთ თქვენი მოდელი 🤗 hub-ზე. ამ პოსტმა აჩვენა, თუ როგორ უნდა ავარჯიშოთ Decision Transformer ოფლაინ RL მონაცემთა ნაკრებზე, რომელიც განთავსებულია 🤗 datasets-ზე. ჩვენ გამოვიყენეთ 🤗 transformers Trainer და სპეციალური მონაცემთა კოლატორი. გარდა ამისა,