English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

სტუმარი
1 / ?
უკან გაკვეთილებზე

ჩვეულებრივი SGD ვერ უნარს ANDREA-ს სწავლება

სტოქასტიკური გრადიენტის ჩამხდარი, საწყისი წერტილი

Backprop ითვლის გრადიენტს g-ს ყოველი პარამეტრისთვის. ჩვეულებრივი სტოქასტიკური გრადიენტის ჩამხდარი (SGD) განაახლებს ყოველ პარამეტრს p -= lr * g-ით. ერთი სწავლის სიჩქარე, ერთი მიმართულება ყოველ ნაბიჯზე, წარსული გრადიენტების მეხსიერება არაა.


ჩვეულებრივი SGD ჩაიშალა მასშტაბზე ორი მიზეზის გამო:


1. გრადიენტები ძალიან განსხვავებული მაღლობისაა პარამეტრების გასწვრივ. იშვიათი ტოკენის ემბედინგი იღებს მცირე გრადიენტს უმეტეს ნაბიჯებზე; layernorm-ის სკალა იღებს დიდს. ერთი სწავლის სიჩქარე ვერ შეძლებს ორივეს შეხვედრას.

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


Adam (Kingma & Ba, 2015) ორივეს ასწორებს ორი გლუვი საშუალოთი თითოეული პარამეტრისთვის.

პირველი მომენტი & მეორე მომენტი

m: გლუვი მიმართულება

პირველი მომენტი m ექსპონენციალურად საშუალოებს ბოლო გრადიენტებს:


m = beta1 m + (1 - beta1) g


beta1 = 0.9-ით. რამდენიმე ნაბიჯის შემდეგ, m შეიცავს შეცდომისგან გაწმენდილ მიმართულებას; ერთი ცუდი ბატჩი ნაკლებად იცვლის მას.


v: შეცდომისგან გაწმენდილი მაგნიტუდა

მეორე მომენტი v საშუალოა უახლეს კვადრატულ გრადიენტებს:


v = beta2 v + (1 - beta2) g^2


beta2 = 0.999-ით. v თვალ-ყური ადევნებს იმას, თუ რამდენად დიდია ჩვეულებრივ თითოეული პარამეტრის გრადიენტი. დიდგრადიენტიანი პარამეტრები იღებენ დიდ v-ს; მცირეგრადიენტიანი პარამეტრები იღებენ მცირე v-ს.


პარამეტრზე-პარამეტრ ადაპტური სწავლის სიჩქარე

გლუვდებული მიმართულების გაყოფა გლუვდებული სიმძლავრის კვადრატულ ფესვზე ყველა პარამეტრს მსგავს საფუძველზე აყენებს:


adam_step = m / sqrt(v + eps)


მცირე გრადიენტის ემბედინგები მასშტაბირდება ზევით; დიდი გრადიენტის layernorm-ები მასშტაბირდება ქვემოთ. ერთი გლობალური lr ახლა შეესაბამება ყველა პარამეტრს.

მომენტების წაკითხვა

ორი პარამეტრი იღებს იგივე გრადიენტს `g = 0.1` ამ ნაბიჯზე. პარამეტრი A დაგროვა `v = 0.0001` მრავალ ნაბიჯზე; პარამეტრი B აქვს `v = 1.0`. `adam_step = g / sqrt(v + eps)`-ის გამოყენებით, რომელი პარამეტრი იღებს უფრო დიდ განახლებას ამ ნაბიჯზე, & რატომ სურს Adam ამგვარი?

რატომ საჭიროა ბიასის კორექცია ადრეულ ნაბიჯებზე

Cold-Start Bias

m და v იწყება ნულიდან. პირველი ნაბიჯის შემდეგ, m = 0.1 g_1 და v = 0.001 g_1^2. ორივე შეფასება მნიშვნელოვნად ჩამორჩება გრძელვადიან საშუალოს. კორექციის გარეშე, ოპტიმიზატორი იწყებს შეშინებულად და ნელა იზრდება, რაც ფლანგავს ძვირფას ადრეულ ნაბიჯებს, როდესაც ფორმირდება წარმოდგენები.


კორექცია

Adam ყოველ შეფასებას მასშტაბირებს 1 / (1 - beta^t)-ით, სადაც t არის ნაბიჯის ნომერი:


m_hat = m / (1 - beta1^t)


v_hat = v / (1 - beta2^t)


1-ლი ნაბიჯზე beta1 = 0.9-ით, გამყოფი (1 - 0.9) = 0.1, ამიტომ m_hat = m / 0.1 = 10 * m. კორექციით შეწორებული შეფასება შეესაბამება იმას, რასაც გრძელვადიანი საშუალო პროგნოზირებდა. როგორც t იზრდება, beta^t უახლოვდება 0-ს, კორექცია უახლოვდება 1-ს, & შეწორებული & შეუწორებელი მნიშვნელობები ცნობიერებენ.

განცალკევებული წონის დეკაი (AdamW ინოვაცია)

L2 რეგულარიზაცია წონის დეკაის წინააღმდეგ

კლასიკური L2 რეგულარიზაცია უმატებს ჯარიმას ზარალს: L_total = L_data + (lambda / 2) sum(p^2). უკუაწარმოდგენა ხედავს ამ ჯარიმას გრადიენტის ნაწილად: g_total = g_data + lambda p. L2 ტერმი გადის Adam-ის m & v განახლებებში, გლუვდება & გადამასკლირდება პარამეტრების მიხედვით მაგნიტუდებით.


ლოშჩილოვი და ჰუთერი (2019) დაამტკიცეს, რომ რეგულარიზატორის გლუვდება Adam-ის მეშვეობით ორივეს არღვევს. Adam-ის ადაპტური მასშტაბირება წონის დეკაის შემცირებას უწევს დიდგრადიენტულ პარამეტრებზე (სადაც დეკაი უნდა იბრძოლოს ოვერფიტინგის წინააღმდეგ ყველაზე მძლავრად) და აძლიერებს მცირეგრადიენტულებზე.


AdamW: გამოიყენე დეკაი პირდაპირ

AdamW წონის დეკაის გამოყოფს გრადიენტისგან. დეკაი პირდაპირ ეხება თითოეულ პარამეტრს პარამეტრის განახლების დროს, არასდროს ეხება m-ს ან v-ს:


p -= lr (m_hat / (sqrt(v_hat) + eps) + weight_decay p)


ახლა ორი ტერმი მართავს თითოეულ ნაბიჯს:


1. Adam-ის ტერმი: m_hat / (sqrt(v_hat) + eps) გადასკალირებს გრადიენტის მიმართულებას თითოეული პარამეტრის მაგნიტუდის ისტორიის მიხედვით.

2. შეკუმშვის ტერმი: weight_decay * p ამცირებს ყველა პარამეტრს ნულისკენ, ერთგვაროვნად, Adam-ის გლუვების გავლის გარეშე.


ANDREA-120M v2 აყენებს weight_decay = 0.01. ყოველ ნაბიჯზე, ყოველი პარამეტრი მცირდება 1%-ით ნულისკენ, გარდა იმისა, რასაც Adam-ის ტერმი აკეთებს.


AdamW Optimizer Step

რატომ არის მნიშვნელოვანი განცალკევება

ANDREA-120M v1 იყენებდა vanilla Adam-ს (weight decay 없이) და 110K ნაბიჯზე გადავიდა გამეორების ციკლებში. v2 იყენებდა AdamW-ს `weight_decay = 0.01`-ით და გამოიმუშავა თანმიმდევრული მრავალპარაგრაფიანი ტექსტი. ახსენი (a) რომელი კონკრეტული ტერმი ემატება AdamW-ში, რომლის არის vanilla Adam-ში, და (b) რატომ იქნებოდა უარესი ამ ტერმის განთავსება გრადიენტის **შიგნით** (კლასიკური L2), ვიდრე AdamW-ის **განცალკევებული** განთავსება გარეთ.

ემპირიული მტკიცებულება

v1 კოლაფსი (weight decay 없이)

ANDREA-120M v1 165K ნაბიჯზე გაწვრთნილი vanilla Adam-ით. ნიმუში გამომავალი:


- ნაბიჯი 80K: region region region region region region region

- ნაბიჯი 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '

- ნაბიჯი 140K: games, games, games, games, games, games, games

- ნაბიჯი 165K: Budy Budy Budy Budy Budy Budy Budy Budy Budy


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


v2 სტაბილურობა (weight_decay = 0.01)

v2-ში დაემატა AdamW (პლუს გრადიენტის მოჭრა, LR warmup, შეწირულების მონიტორინგი). ნაბიჯზე ~112K, გენერირებული შეწირულები:


- Carolina parakeet ოფიციალურად გამოცხადდა გაქრობილად 1939 წელს (ფაქტობრივად სწორი)

- ფურიეს გარდაქმნა სიგნალებს და分解ებს სიხშირის კომპონენტებად (სკოლის მაგალითი)

- Rain's rhythmic refrain, Rivulets on the window, Respite from life's pain (ჰაიკუს შეზღუდვა დაკმაყოფილებულია)


გარე შეფასებამ v2 შეწირულებს 9.5/10 მისცა, უწოდა მათ "მშვენიერი თანმიმდევრულობა და ცოდნის შენარჩუნება ამ მასშტაბზე."


12M მოდელი გადარჩა AdamW-ის გარეშე. რატომ?

ANDREA-12M ჩაივარჯიშა ჩვეულებრივი Adam-ით კოლაფსის გარეშე. 12M პარამეტრებზე, წონის მატრიცები საკმარისად მცირე რჩება იმისთვის, რომ Adam-ის ადაპტური სკალირება ვერ გაიტარებს ინდივიდუალურ წონებს იმ გარბენულ მაგნიტუდებში, რომლებიც იწვევს გამეორებას. 120M სკალაზე, წონის მაგნიტუდები უფრო შორს მიედინება ყოველ ნაბიჯზე და გროვდება; უნიფორმული დეკეი უწევს მუდმივ აღდგენით ძალას ნულისკენ. განცალკევებული წონის დეკეი უფრო მნიშვნელოვანი ხდება მოდელის სკალირებისას.

`weight_decay = 0.01`-ის შერჩევა

რატომ შეიძლება `weight_decay = 0.01` იმუშაოს 120M-პარამეტრიანი მოდელისთვის, მაგრამ 100-ჯერ უფრო დიდი მნიშვნელობა (`weight_decay = 1.0`) გაანადგუროს ტრენინგი? გაანალიზეთ განახლების წესი `p -= lr * (adam_term + weight_decay * p)`. აირჩიეთ წარმომადგენლობითი `p`, ჩასვით `weight_decay = 1.0` ერთი ნაბიჯისთვის და აღწერეთ რა ხდება `p`-ით რამდენიმე ნაბიჯის შემდეგ.

მიმდებარე აქტივობები

AdamW ურთიერთქმედებს სამი სიმოგების აქტივობასთან ამ კურსში:


- აქტივობა 11: LR warmup + cosine decay. AdamW მარტო ვერ დაიცავს მოდელს მყისიერი პიკის სწავლის ტემპისგან ახალად ინიციალიზებულ წონებზე. Warmup ზრდის lr-ს 2000 ნაბიჯზე, რათა AdamW-ის მიკერძოების კორექცია და წონის დეკრიმენტირება მიიღონ დრო წარმოდგენების სტაბილიზაციისთვის.

- აქტივობა 12: გრადიენტის კლიპინგი. AdamW ვარაუდობს, რომ გრადიენტებს შეზღუდული მაგნიტუდა აქვთ. წყაროს ტრანზიციები ყოველ 7-დან 42 ნაბიჯამდე ANDREA-ს ბანდიტში იწვევს პერიოდულ გრადიენტის პიკებს; კლიპინგი ზღვარს უყოფს მათ L2 ნორმა 1.0-ზე მანამდე, ვიდრე AdamW შეხებდეს m-ს, v-ს ან p-ს.

- აქტივობა 13: FP32 / FP16 / FP8 სიზუსტე. AdamW ინახავს m-ს და v-ს თითოეული პარამეტრისთვის, რაც ორჯერ ზრდის მეხსიერების მოცულობას მხოლოდ წონებთან შედარებით. FP16 ნახევარს ამცირებს ამ მოცულობას; FP8 კიდევ ერთხელ ამცირებს. სიზუსტის არჩევანი ურთიერთქმედებს ოპტიმიზატორის სტაბილურობასთან.


AdamW, warmup, clipping და precision ჩამოყალიბდება ოთხცხვიანი კლავერის ფორმაში. ჩამოგდებული ერთი ფოთოლი ANDREA-ს ჩამონგრევს.

ოპტიმიზატორის რეფლექსია

აირჩიეთ ერთი ANDREA-120M v1 ნიმუში (მაგ., `region region region region`) და აღწერეთ, როგორ შეაჩერებდა AdamW-ის `weight_decay * p` ტერმი, რომელიც გამოიყენება ყოველ ნაბიჯზე ნაბიჯი 0-დან, ამ კონკრეტულ შეცდომის რეჟიმს. ერთი პარაგრაფი.