Wav2Vec2: ტრანსფორმერული მოდელების შეზღუდვების დაძლევა ხანგრძლივი აუდიო ფაილების დამუშავებისას
Wav2Vec2, როგორც ტრანსფორმერული მოდელი, აწყდება თანმიმდევრობის სიგრძის შეზღუდვებს, რაც იწვევს პრობლემებს დიდ აუდიო ფაილებთან მუშაობისას. ტრადიციული დაყოფის მეთოდები ხშირად ამცირებს შედეგების ხარისხს კონტექსტის დაკარგვის გამო. ეს სტატია განმარტავს, თუ როგორ იძლევა Wav2Vec2-ის CTC სტრუქტურა საშუალებას, განხორციელდეს მდგრადი მეტყველების ამოცნობა ძალიან დიდ ფაილებზე, „striding“ ტექნიკის გამოყენებით. ასევე განხილულია ენის მოდელების (LM) ინტეგრაცია WER მაჩვენებლის გასაუმჯობესებლად და მოდელის გამოყენებ
Wav2Vec2 თავისი არსით ტრანსფორმერული მოდელია და ტრანსფორმერების ერთ-ერთი ნაკლი ის არის, რომ მათ, როგორც წესი, შეუძლიათ თანმიმდევრობის მხოლოდ სასრული სიგრძის დამუშავება. ეს განპირობებულია ან პოზიციური ენკოდირების გამოყენებით (რაც ამ კონკრეტულ შემთხვევაში ასე არ არის), ან უბრალოდ იმით, რომ ტრანსფორმერებში ყურადღების (attention) გამოთვლითი დანახარჯი რეალურად O(n²) პროპორციულია თანმიმდევრობის სიგრძისა. ეს იმას ნიშნავს, რომ ძალიან დიდი თანმიმდევრობის სიგრძის გამოყენებისას სირთულე და მეხსიერების მოხმარება მკვეთრად იზრდება. ამიტომ, შეზღუდული აპარატურით (თუნდაც ძალიან დიდი GPU, როგორიცაა A100) შეუძლებელია Wav2Vec2-ის საათის ხანგრძლივობის ფაილზე გაშვება – თქვენი პროგრამა მუშაობას შეწყვეტს.
ყველაზე მარტივი გზა ძალიან დიდ ფაილებზე ინფერენსის მისაღწევად იქნება საწყისი აუდიოს უბრალოდ უფრო მოკლე ნიმუშებად დაყოფა, ვთქვათ, თითო 10 წამიან მონაკვეთებად, მათზე ინფერენსის გაშვება და საბოლოო რეკონსტრუქციის მიღება. ეს გამოთვლითი თვალსაზრისით ეფექტურია, მაგრამ, როგორც წესი, არასაკმარის შედეგებამდე მივყავართ. მიზეზი ის არის, რომ კარგი ინფერენსისთვის მოდელს სჭირდება გარკვეული კონტექსტი, ამიტომ დანაწევრების საზღვრებზე ინფერენსის ხარისხი დაბალია. (ეს პრობლემა ვიზუალურადაც კარგად არის წარმოსადგენი, სადაც კონტექსტის ნაკლებობა აშკარაა).
არსებობს ზოგადი გზები ამ პრობლემის გადასაჭრელად, მაგრამ ისინი არასოდეს არ არიან სრულად მდგრადი. შეგიძლიათ სცადოთ დაყოფა მხოლოდ მაშინ, როდესაც სიჩუმეს აღმოაჩენთ, მაგრამ შეიძლება გქონდეთ არასაჩუმე აუდიო დიდი ხნის განმავლობაში (მაგალითად, სიმღერა ან ხმაურიანი კაფეს აუდიო). ასევე შეგიძლიათ სცადოთ დაჭრა მხოლოდ მაშინ, როდესაც ხმა არ ისმის, მაგრამ ამას სხვა მოდელი სჭირდება და ეს პრობლემა ჯერჯერობით სრულად გადაწყვეტილი არ არის. გარდა ამისა, შეიძლება გქონდეთ უწყვეტი ხმა ძალიან დიდი ხნის განმავლობაში.
როგორც აღმოჩნდა, CTC სტრუქტურა, რომელსაც Wav2Vec2 იყენებს, შეიძლება ეფექტურად იქნას გამოყენებული ძალიან მდგრადი მეტყველების ამოცნობის მისაღწევად, თუნდაც ძალიან დიდ ფაილებზე, ზემოთ ხსენებული ხაფანგების გარეშე. Wav2Vec2 იყენებს CTC ალგორითმს, რაც იმას ნიშნავს, რომ აუდიოს ყოველი კადრი რუკდება ერთ ასო პროგნოზზე (logit).
ეს არის მთავარი მახასიათებელი, რომელსაც გამოვიყენებთ „stride“-ის დასამატებლად. ეს კონცეფცია, რომელიც ვიზუალური კონტექსტით არის ახსნილი, ანალოგიურად მოქმედებს აუდიოს შემთხვევაშიც. ამ თვისების გამო, ჩვენ შეგვიძლია მივიღოთ გაუმჯობესებული შედეგები ხანგრძლივი აუდიოს დამუშავებისას. ეს ტექნიკურად 100%-ით არ არის იგივე, რაც მოდელის გაშვება მთელ ფაილზე, ამიტომ ის ნაგულისხმევად არ არის ჩართული, მაგრამ, როგორც წინა მაგალითში ნახეთ, მის გასააქტიურებლად თქვენს pipeline-ში მხოლოდ `chunk_length_s`-ის დამატება გჭირდებათ. პრაქტიკაში, ჩვენ დავაკვირდით, რომ ცუდი ინფერენსის უმეტესი ნაწილი სტრაიდებში რჩება, რომლებიც ინფერენსამდე გამოტოვებულია, რაც საბოლოოდ იწვევს სრული ტექსტის სწორ ინფერენსს. აღსანიშნავია, რომ ამ ტექნიკის ყველა არგუმენტის არჩევა შეგიძლიათ.
ტრანსფორმერებში, ჩვენ ასევე დავამატეთ LM (ენის მოდელის) მხარდაჭერა Wav2Vec2-სთვის, რათა გაუმჯობესებულიყო მოდელების WER (Word Error Rate) მაჩვენებელი, ფაინთიუნინგის გარეშეც კი. (დამატებითი ინფორმაციისთვის იხილეთ შესაბამისი ბლოგპოსტი, სადაც განმარტებულია, როგორ მუშაობს ეს). აღმოჩნდა, რომ LM პირდაპირ მუშაობს ლოგიტებზე, ამიტომ ჩვენ შეგვიძლია გამოვიყენოთ ზუსტად იგივე ტექნიკა, რაც ადრე, ყოველგვარი ცვლილების გარეშე! ასე რომ, დიდი ფაილების დანაწევრება ამ LM-ით გაძლიერებულ მოდელებზე კვლავ მუშაობს მზა სახით.
Wav2Vec2-ის მსგავსი CTC მოდელის გამოყენების ძალიან კარგი უპირატესობა ის არის, რომ ის არის ერთგავლელი მოდელი, ამიტომ ის ძალიან სწრაფია, განსაკუთრებით GPU-ზე. ჩვენ შეგვიძლია ეს გამოვიყენოთ პირდაპირი (live) ინფერენსის განსახორციელებლად. პრინციპი ზუსტად იგივეა, რაც ჩვეულებრივი სტრაიდინგი, მაგრამ ამჯერად ჩვენ შეგვიძლია მივაწოდოთ მონაცემები ფაიფლაინს ისე, როგორც ის შემოდის და უბრალოდ გამოვიყენოთ სტრაიდინგი, მაგალითად, სრული 10 წამიანი ნაწილებისთვის 1 წამიანი სტრაიდინგით, რათა მივიღოთ სწორი კონტექსტი. ეს მოითხოვს გაცილებით მეტ ინფერენსის ნაბიჯს, ვიდრე უბრალოდ ფაილის დანაწევრება, მაგრამ მას შეუძლია მნიშვნელოვნად გააუმჯობესოს პირდაპირი გამოცდილება, რადგან მოდელს შეუძლია ტექსტის გამოტანა თქვენი საუბრისას, X წამის ლოდინის გარეშე, სანამ რამე გამოჩნდება.
თეგები:
#ai
#მანქანური სწავლება
#ტრანსფორმერები
#მეტყველების ამოცნობა
#wav2vec2
#ctc
#ხანგრძლივი აუდიო
#striding
#ენის მოდელი
#რეალურ დროში ინფერენსი
წყარო: huggingface.co
AI-ით გადამუშავებული