Reformer მოდელი: მეხსიერება-ეფექტური ტრანსფორმერული არქიტექტურა გრძელი მიმდევრობების მოდელირებისთვის
კიტაევის, კაიზერისა და სხვების (2020) მიერ შემოთავაზებული Reformer მოდელი წარმოადგენს ერთ-ერთ ყველაზე მეხსიერება-ეფექტურ ტრანსფორმერულ არქიტექტურას გრძელი მიმდევრობების მოდელირებისთვის. NLP ამოცანების (მაგ. რეფერირება, კითხვა-პასუხის სისტემები) მზარდი მოთხოვნების დასაკმაყოფილებლად, Reformer-ს შეუძლია ნახევარ მილიონამდე ტოკენის დამუშავება, მაშინ როცა სტანდარტული BERT მოდელები 512 ტოკენით შემოიფარგლებიან. მისი არქიტექტურის თითოეული ნაწილი გადაკეთებულია მინიმალური მეხსიერების მოთხოვნილების ოპტიმიზა
Reformer მოდელი, რომელიც კიტაევმა, კაიზერმა და სხვებმა (2020) წარმოადგინეს, დღეისათვის ერთ-ერთი ყველაზე მეხსიერება-ეფექტური ტრანსფორმერული მოდელია გრძელი მიმდევრობების მოდელირებისთვის. ბოლო დროს, გრძელი მიმდევრობების მოდელირებამ ინტერესის ზრდა განიცადა, რასაც მოწმობს მრავალი ნაშრომი მხოლოდ მიმდინარე წლიდან – Beltagy et al. (2020), Roy et al. (2020), Tay et al., Wang et al. და სხვა.
გრძელი მიმდევრობების მოდელირების მოტივაცია მდგომარეობს იმაში, რომ NLP-ში მრავალი ამოცანა, მაგალითად, რეფერირება (summarization) ან კითხვა-პასუხის სისტემები (question answering), მოითხოვს მოდელისაგან შედარებით გრძელი შემავალი მიმდევრობების დამუშავებას, ვიდრე ამას BERT-ის მსგავსი მოდელები ახერხებენ. იმ ამოცანებში, რომლებიც მოდელისგან დიდ შემავალ მიმდევრობას მოითხოვს, გრძელი მიმდევრობის მოდელებს არ უწევთ შემავალი მიმდევრობის შემცირება მეხსიერების გადავსების თავიდან ასაცილებლად და, შესაბამისად, აღმოჩნდა, რომ ისინი აღემატებიან სტანდარტულ „BERT“-ის მსგავს მოდელებს (იხ. Beltagy et al., 2020). Reformer კიდევ უფრო ზრდის გრძელი მიმდევრობების მოდელირების ზღვარს, რადგან მას შეუძლია ერთდროულად ნახევარ მილიონამდე ტოკენის დამუშავება, როგორც ეს მოცემულ დემოშია ნაჩვენები. შედარებისთვის, ჩვეულებრივი bert-base-uncased მოდელი შემავალ სიგრძეს მხოლოდ 512 ტოკენით ზღუდავს.
Reformer-ში, სტანდარტული ტრანსფორმერული არქიტექტურის თითოეული ნაწილი ხელახლაა შექმნილი იმისთვის, რომ ოპტიმიზებული იყოს მინიმალური მეხსიერების მოთხოვნილებებისთვის, შესრულების მნიშვნელოვანი ვარდნის გარეშე. მეხსიერების გაუმჯობესება მიეწერება 4 მახასიათებელს, რომლებიც Reformer-ის ავტორებმა ტრანსფორმერების სამყაროს წარუდგინეს: ამ ბლოგ-პოსტის მიზანია მკითხველს მისცეს ზემოთ აღნიშნული ოთხი Reformer მახასიათებლის სიღრმისეული გაგება. მიუხედავად იმისა, რომ განმარტებები Reformer-ზეა ორიენტირებული, მკითხველმა უკეთ უნდა გაიგოს, თუ რა გარემოებებში შეიძლება იყოს თითოეული ოთხი მახასიათებლიდან ეფექტური სხვა ტრანსფორმერული მოდელებისთვისაც.
ოთხი სექცია მხოლოდ ფხვიერი კავშირითაა ერთმანეთთან, ამიტომ მათი ინდივიდუალურად წაკითხვაც არის შესაძლებელი. Reformer არის 🤗Transformers ბიბლიოთეკის ნაწილი. Reformer-ის ყველა მომხმარებელს ურჩევენ, გაეცნოს ამ დეტალურ ბლოგ-პოსტს, რათა უკეთ გაიგოს, როგორ მუშაობს მოდელი და როგორ სწორად დააყენოს მისი კონფიგურაცია. ყველა განტოლებას თან ახლავს Reformer-ის კონფიგურაციის ეკვივალენტური სახელი, მაგალითად, config., რათა მკითხველმა სწრაფად დააკავშიროს ის ოფიციალურ დოკუმენტაციასთან და კონფიგურაციის ფაილთან. შენიშვნა: აქსიალური პოზიციური ენკოდირებები (Axial Positional Encodings) არ არის ახსნილი Reformer-ის ოფიციალურ ნაშრომში, მაგრამ ფართოდ გამოიყენება ოფიციალურ კოდის ბაზაში. ეს ბლოგ-პოსტი წარმოადგენს Axial Positional Encodings-ის პირველ სიღრმისეულ განმარტებას.
Reformer იყენებს ორი ტიპის სპეციალურ self-attention ფენას: ლოკალური self-attention ფენებს და ლოკალიზაციის მიმართ მგრძნობიარე ჰეშირებით (Locality Sensitive Hashing - LSH) self-attention ფენებს. ამ ახალი self-attention ფენების უკეთ წარმოსაჩენად, მოკლედ განვიხილავთ ჩვეულებრივ self-attention-ს, როგორც ეს Vaswani et al. (2017)-ში იყო წარმოდგენილი. ეს ბლოგ-პოსტი იყენებს იგივე ნოტაციასა და ფერადოვნებას, რასაც პოპულარული ბლოგ-პოსტი „ილუსტრირებული ტრანსფორმერი“ (The illustrated transformer), ამიტომ მკითხველს მკაცრად ურჩევენ, ჯერ ეს ბლოგი წაიკითხოს.
მნიშვნელოვანია: მიუხედავად იმისა, რომ Reformer თავდაპირველად წარმოდგენილი იყო მიზეზობრივი self-attention-ისთვის (causal self-attention), ის ასევე შეიძლება წარმატებით იქნას გამოყენებული ორმხრივი self-attention-ისთვისაც (bi-directional self-attention). ამ პოსტში, Reformer-ის self-attention წარმოდგენილია ორმხრივი self-attention-ისთვის. ნებისმიერი ტრანსფორმერული მოდელის ბირთვი არის self-attention ფენა. ჩვეულებრივი self-attention ფენის გასახსენებლად, რომელსაც აქ გლობალურ self-attention ფენას ვუწოდებთ, დავუშვათ, რომ ტრანსფორმერულ ფენას ვიყენებთ შემავალი ვექტორების მიმდევრობაზე `X = x1,...,xn`, სადაც ყოველი ვექტორი `xi` არის `config.hidden_size` ზომის, ანუ `dh`. მოკლედ, გლობალური self-attention ფენა პროეცირებს `X`-ს query, key და value მატრიცებად `Q, K, V` და ითვლის გამომავალ `Z`-ს softmax ოპერაციის გამოყენებით შემდეგნაირად:
`Z = SelfAttn(X) = softmax(Q K^T) V`
სადაც `Z` არის `dh×n` განზომილების (გასაღების ნორმალიზაციის ფაქტორისა და self-attention წონების `WO` სიმარტივისთვის გამოტოვებით). ტრანსფორმერის სრული ოპერაციის შესახებ მეტი დეტალისთვის იხილეთ „ილუსტრირებული ტრანსფორმერი“. ვიზუალურად, ეს ოპერაცია შეგვიძლია შემდეგნაირად წარმოვადგინოთ `n=16, dh=3`-ისთვის:
გაითვალისწინეთ, რომ ყველა ვიზუალიზაციისთვის `batch_size` და `config.num_attention_heads` მიჩნეულია 1-ის ტოლად. ზოგიერთი ვექტორი, მაგალითად, `x3` და მისი შესაბამისი გამომავალი ვექტორი `z3`, აღნიშნულია ისე, რომ LSH self-attention მოგვიანებით უკეთესად იქნას ახსნილი. წარმოდგენილი ლოგიკა მარტივად შეიძლება გაფართოვდეს multi-head self-attention-ისთვის (`config.num_attention_heads > 1`). მკითხველს ურჩევენ, წაიკითხოს „ილუსტრირებული ტრანსფორმერი“ multi-head self-attention-ის შესახებ ცნობისთვის. მნიშვნელოვანია გვახსოვდეს, რომ ყოველი გამომავალი ვექტორის `zi`-სთვის, მთელი შემავალი მიმდევრობა `X` მუშავდება. შიდა წერტილოვანი ნამრავლის `Q K^T` ტენზორს აქვს ასიმპტოტური მეხსიერების სირთულე `O(n²)`, რაც, როგორც წესი, წარმოადგენს მეხსიერების ვიწრო ყელს ტრანსფორმერში.
თეგები:
#ხელოვნური ინტელექტი
#მანქანური სწავლება
#nlp
#მეხსიერების ოპტიმიზაცია
#reformer
#ტრანსფორმერული მოდელი
#გრძელი მიმდევრობის მოდელირება
#self-attention
#lsh
#axial positional encodings
წყარო: huggingface.co
AI-ით გადამუშავებული