უკან დაბრუნება
შეიძლება თუ არა gzip ენის მოდელი იყოს? ტექსტის გენერატორი DEFLATE-ზე
SiTech AI Team2 წთ. საკითხავი

შეიძლება თუ არა gzip ენის მოდელი იყოს? ტექსტის გენერატორი DEFLATE-ზე

nathan.rs-ის ავტორმა ააწყო gzipt — ექსპერიმენტი, რომელიც ტექსტს მხოლოდ gzip-ის კომპრესიით აგენერირებს. იდეა ეყრდნობა პრინციპს, რომ ყველა კომპრესორი ფარულად პროგნოზირების მოდელია.

ბლოგპოსტი, რომელიც nathan.rs-ზე გამოქვეყნდა, სვამს კითხვას, რომელიც ხუმრობას ჰგავს: შეიძლება თუ არა gzip — კომპრესიის ხელსაწყო, რომელიც თითქმის ყველა ოპერაციულ სისტემას მოჰყვება — ენის მოდელად იმუშაოს? ავტორმა ააწყო gzipt, მცირე ექსპერიმენტი, რომელიც ტექსტს მხოლოდ კომპრესორის დახმარებით აგენერირებს: არავითარი ნეირონული ქსელი, არავითარი ნასწავლი პარამეტრი.

კომპრესია პროგნოზია

საწყისი წერტილია ნაშრომი „Language Modeling is Compression" (arXiv 2309.10668), რომელიც აყალიბებს კომპრესია-პროგნოზის ეკვივალენტობას: ყველა პროგნოზირების მოდელი თავისთავად კომპრესორია, ხოლო ყველა კომპრესიის ალგორითმი — პროგნოზირების მოდელი. ინტუიცია ინფორმაციის თეორიიდან მოდის: სიმბოლოს დაშიფვრას −log₂ p ბიტი სჭირდება, სადაც p არის ალბათობა, რომელსაც მოდელი მას ანიჭებს. მაღალი ალბათობა მოკლე კოდს ნიშნავს.

gzip იყენებს DEFLATE ალგორითმს და 32 კიბაიტიან მოცურავე ფანჯარაზე მუშაობს. თუ შემდეგი ბაიტები იმას იმეორებს, რაც უკვე ფანჯარაშია, DEFLATE მათ იაფ უკუმითითებად აკოდირებს. სწორედ აქედან მიიღება ქულა: კონტექსტი და კანდიდატი გაგრძელება ერთად აიკომპრესება და შედეგის სიგრძე გაიზომება. რაც უფრო მოკლეა შედეგი, მით უფრო „მოსალოდნელია" კანდიდატი. კორპუსის წინასწარ მიწოდება იმ კორპუსს gzip-ის ფანჯარაში ათავსებს.

ქულიდან გენერაციამდე

შეფასება ჯერ გენერაცია არ არის. ყველაზე კარგად კომპრესირებადი ერთი ბაიტის არჩევა ცუდად მუშაობს, რადგან gzip მთელ რიცხვს აბრუნებს — წილადები არ არსებობს. ერთი ბაიტის დამატება სიგრძეს ხშირად საერთოდ არ ცვლის, ამიტომ ბევრი კანდიდატი ერთსა და იმავე ქულას იზიარებს და სიგნალი კვანტიზაციის ხმაურში იკარგება. gzipt ამას სხივური ძებნით (beam search) გადალახავს: ინახავს beam_width ყველაზე კომპრესირებად ნაწილობრივ გაგრძელებას, თითოეულს ავრცელებს კორპუსში არსებული ყველა ბაიტით, აფასებს შედეგებს კომპრესირებული სიგრძით და ისევ ჭრის. ეს მეორდება horizon ბაიტზე, სანამ საუკეთესო მონაკვეთი არ დაფიქსირდება.

მნიშვნელოვანი დეტალი: შეფასების კონტექსტში გენერირებული ტექსტის მხოლოდ ბოლო ბაიტები რჩება. DEFLATE ახლო დამთხვევებს უფრო იაფად კოდირებს, ვიდრე შორეულს, ამიტომ სრული ისტორიის ხილვისას ყველაზე იაფ გზად საკუთარი ტექსტის სიტყვასიტყვით გამეორება გამოდის.

რას იძლევა პრაქტიკა

tiny Shakespeare-ის კორპუსზე მომზადებულმა ხელსაწყომ „MENENIUS:"-ის მითითების შემდეგ დააბრუნა სტრიქონები, რომლებიც მენენიუსს, მარციუსსა და ლარციუსს მიეწერება — თანმიმდევრული არ არის, მაგრამ წყაროს გავლენა აშკარაა. კოდი ერთი ფაილია სუფთა სტანდარტული ბიბლიოთეკის Python-ით (მხოლოდ zlib). სქოლიოებში ავტორი აღნიშნავს, რომ ნაშრომის ავტორებმა მსგავსი რამ სცადეს და ცუდი შედეგი მიიღეს, ხოლო beam search-ის დამატებამ გენერაციის ხარისხი მკვეთრად გააუმჯობესა.

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

SSiTech

SiTech — AI-გაძლიერებული ვებ დეველოპმენტი

ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.