მოკლე პასუხი: ხელოვნური ინტელექტის წინასწარი დამუშავება არის განმეორებადი ნაბიჯების ერთობლიობა, რომელიც ნედლ, მაღალი ვარიაციის მქონე მონაცემებს თანმიმდევრულ მოდელის შეყვანებად გარდაქმნის, მათ შორის გაწმენდას, კოდირებას, მასშტაბირებას, ტოკენიზაციას და გამოსახულების ტრანსფორმაციას. ეს მნიშვნელოვანია, რადგან თუ ტრენინგის შეყვანები და წარმოების შეყვანები განსხვავდება, მოდელები შეიძლება ჩუმად ჩაიშალოს. თუ ნაბიჯი „სწავლობს“ პარამეტრებს, გაჟონვის თავიდან ასაცილებლად, მოარგეთ ის მხოლოდ ტრენინგის მონაცემებს.
ხელოვნური ინტელექტის წინასწარი დამუშავება არის ყველაფერი, რასაც აკეთებთ ნედლ მონაცემებთან ტრენინგამდე (და ზოგჯერ მის დროსაც) ან დასკვნის გაკეთების დროს, რათა მოდელმა რეალურად ისწავლოს მათგან. ეს არ არის მხოლოდ „წმენდა“. ეს არის მონაცემების გაწმენდა, ფორმირება, მასშტაბირება, კოდირება, გაფართოება და შეფუთვა თანმიმდევრულ წარმოდგენაში, რომელიც მოგვიანებით ჩუმად არ გამოიწვევს თქვენი მოდელის გათიშვას. [1]
ძირითადი დასკვნები:
განმარტება : წინასწარი დამუშავება უმი ცხრილებს, ტექსტს, სურათებსა და ჟურნალებს მოდელისთვის მზა მახასიათებლებად გარდაქმნის.
თანმიმდევრულობა : შეუსაბამობის შეცდომების თავიდან ასაცილებლად, ტრენინგისა და დასკვნის დროს გამოიყენეთ იგივე ტრანსფორმაციები.
გაჟონვა : სკალერების, ენკოდერების და ტოკენიზატორების მორგება მხოლოდ სასწავლო მონაცემებზე.
რეპროდუცირებადობა : შექმენით მილსადენები ინსპექტირებადი სტატისტიკით და არა ad-hoc ბლოკნოტის უჯრედების თანმიმდევრობით.
წარმოების მონიტორინგი : თვალყური ადევნეთ გადახრებსა და რყევებს, რათა შეყვანებმა თანდათან არ შეამციროს შესრულება.
სტატიები, რომელთა წაკითხვაც შეიძლება მოგეწონოთ ამის შემდეგ:
🔗 როგორ შევამოწმოთ ხელოვნური ინტელექტის მოდელები რეალურ სამყაროში მუშაობისთვის
პრაქტიკული მეთოდები სიზუსტის, მდგრადობისა და მიკერძოების სწრაფად შესაფასებლად.
🔗 ტექსტიდან მეტყველებამდე გარდაქმნა ხელოვნური ინტელექტია და როგორ მუშაობს ის?
განმარტავს TTS-ის საფუძვლებს, ძირითად გამოყენებას და დღეს გავრცელებულ შეზღუდვებს.
🔗 შეუძლია თუ არა ხელოვნურ ინტელექტს დღეს ზუსტად წაიკითხოს დახრილი ხელნაწერი?
მოიცავს ამოცნობის გამოწვევებს, საუკეთესო ინსტრუმენტებს და სიზუსტის რჩევებს.
🔗 რამდენად ზუსტია ხელოვნური ინტელექტი საერთო ამოცანებში
აანალიზებს სიზუსტის ფაქტორებს, საორიენტაციო ნიშნულებს და რეალურ სამყაროში არსებულ საიმედოობას.
ხელოვნური ინტელექტის წინასწარი დამუშავება მარტივ ენაზე (და რა არ არის ის) 🤝
ხელოვნური ინტელექტის წინასწარი დამუშავება გულისხმობს ნედლი შეყვანის მონაცემების (ცხრილები, ტექსტი, სურათები, ჟურნალები) მოდელისთვის მზა მახასიათებლებად გარდაქმნას. თუ ნედლი მონაცემები არეული ავტოფარეხია, წინასწარი დამუშავება გულისხმობს ყუთებისთვის მარკირების გაკეთებას, გატეხილი ნაგვის გადაყრას და ნივთების დაწყობას ისე, რომ რეალურად შეძლოთ მათში ტრავმის გარეშე გავლა.
საქმე თავად მოდელში არ არის. საქმე იმაშია, რაც მოდელს შესაძლებელს ხდის:
-
კატეგორიების რიცხვებად გადაქცევა (ერთჯერადი, რიგითი და ა.შ.) [1]
-
დიდი რიცხვითი დიაპაზონების გონივრულ დიაპაზონებად მასშტაბირება (სტანდარტიზაცია, მინ-მაქს და ა.შ.) [1]
-
ტექსტის ტოკენირება შეყვანის ID-ებად (და ჩვეულებრივ ყურადღების ნიღაბად) [3]
-
სურათების ზომის შეცვლა/დამოჭრა და დეტერმინისტული და შემთხვევითი გარდაქმნების შესაბამისად გამოყენება [4]
-
განმეორებადი მილსადენების შექმნა, რათა ტრენინგი და „რეალური ცხოვრებისეული“ მონაცემები ერთმანეთისგან დახვეწილად არ განსხვავდებოდეს [2]
ერთი პატარა პრაქტიკული შენიშვნა: „წინასწარი დამუშავება“ მოიცავს ყველაფერს, რაც თანმიმდევრულად ხდება მოდელის მიერ შეყვანის მონაცემების ნახვამდე . ზოგიერთი გუნდი ამას ყოფს „ფუნქციების ინჟინერიასა“ და „მონაცემთა გაწმენდად“, მაგრამ რეალურ ცხოვრებაში ეს ზღვარი ბუნდოვანია.

რატომ არის ხელოვნური ინტელექტის წინასწარი დამუშავება უფრო მნიშვნელოვანი, ვიდრე ხალხი აღიარებს 😬
მოდელი შაბლონების შესატყვისია და არა გონების წამკითხველი. თუ თქვენი მონაცემები შეუსაბამოა, მოდელი შეუსაბამო წესებს სწავლობს. ეს ფილოსოფიური არ არის, ეს მტკივნეულად პირდაპირი მნიშვნელობითაა ნათქვამი.
წინასწარი დამუშავება დაგეხმარებათ:
-
გააუმჯობესეთ სწავლის სტაბილურობა ისეთი მახასიათებლების ისეთ წარმოდგენებში განთავსებით, რომელთა გამოყენებაც შემფასებლებს შეუძლიათ საიმედოდ (განსაკუთრებით მასშტაბირების/კოდირების შემთხვევაში). [1]
-
ხმაურის შესამცირებლად , არეული რეალობის ისეთ შთაბეჭდილებას ტოვებთ, საიდანაც მოდელის განზოგადება შეიძლება (უცნაური არტეფაქტების დამახსოვრების ნაცვლად).
-
თავიდან აიცილეთ ჩუმი ჩავარდნის რეჟიმები , როგორიცაა გაჟონვა და სწავლების/მომსახურების შეუსაბამობები (ისეთი, რომელიც „საოცრად“ გამოიყურება დადასტურებისას და შემდეგ წარმოებაში სახის დამუშავებისას). [2]
-
დააჩქარეთ იტერაცია, რადგან განმეორებადი ტრანსფორმაციები კვირის ყოველდღე რვეულის სპაგეტის ჯობნის.
ასევე, სწორედ აქედან მოდის „მოდელის შესრულების“ დიდი ნაწილი. გასაკვირია, რომ ძალიან ბევრი. ზოგჯერ უსამართლოდ ჟღერს, მაგრამ ეს რეალობაა 🙃
რა ხდის ხელოვნური ინტელექტის წინასწარი დამუშავების პროცესორს კარგს ✅
წინასწარი დამუშავების „კარგ ვერსიას“, როგორც წესი, აქვს შემდეგი თვისებები:
-
განმეორებადი : იგივე შეყვანა → იგივე გამომავალი (საიდუმლო შემთხვევითობა არ არსებობს, თუ ეს განზრახ გაზრდა არ არის).
-
მატარებლის მომსახურების თანმიმდევრულობა : რასაც არ უნდა აკეთებდეთ ვარჯიშის დროს, იგივენაირად გამოიყენება დასკვნის დროსაც (იგივე მორგებული პარამეტრები, იგივე კატეგორიის რუკები, იგივე ტოკენიზატორის კონფიგურაცია და ა.შ.). [2]
-
გაჟონვისგან დაცული : შეფასების/ტესტის დროს არაფერი ახდენს გავლენას არცერთ
შესაბამისობისეტაპზე. (ამ ხაფანგის შესახებ მეტი მოგვიანებით.) [2] -
დაკვირვებადი : შეგიძლიათ შეამოწმოთ, რა შეიცვალა (ფუნქციების სტატისტიკა, დაკარგული ფუნქციები, კატეგორიების რაოდენობა), ამიტომ გამართვა არ არის ვიბრაციებზე დაფუძნებული ინჟინერია.
final_v7_really_final_ok სახელწოდების რვეულის უჯრედების გროვა ... თქვენ იცით, როგორ არის საქმე. ის მუშაობს მანამ, სანამ არ გაჩერდება 😬
ხელოვნური ინტელექტის წინასწარი დამუშავების ძირითადი საშენი ბლოკები 🧱
წარმოიდგინეთ წინასწარი დამუშავება, როგორც სამშენებლო ბლოკების ერთობლიობა, რომლებსაც აერთიანებთ მილსადენში.
1) დასუფთავება და დადასტურება 🧼
ტიპიური დავალებები:
-
დუბლიკატების წაშლა
-
დაკარგული მნიშვნელობების დამუშავება (ნაკლების ამოშლა, მიმაგრება ან მათი ექსპლიციტურად წარმოდგენა)
-
ტიპების, ერთეულების და დიაპაზონების აღსრულება
-
არასწორი შეყვანის აღმოჩენის
-
ტექსტის ფორმატების სტანდარტიზაცია (თეთრი სივრცეები, რეგისტრის წესები, უნიკოდის თავისებურებები)
ეს ნაწილი მომხიბვლელი არ არის, მაგრამ უკიდურესად სულელურ შეცდომებს გვიშლის ხელს. ამას სიყვარულით ვამბობ.
2) კატეგორიული მონაცემების კოდირება 🔤
მოდელების უმეტესობას არ შეუძლია პირდაპირ გამოიყენოს ისეთი ნედლი სტრიქონები, როგორიცაა „red“ ან „premium_user“ .
საერთო მიდგომები:
-
ერთიანი კოდირება (კატეგორია → ორობითი სვეტები) [1]
-
რიგითი კოდირება (კატეგორია → მთელი რიცხვის ID) [1]
მთავარი ის კი არ არის, თუ რომელ ენკოდერს აირჩევთ, არამედ ის, რომ შესაბამისობა თანმიმდევრული დარჩეს და არ „იცვლებოდეს ფორმა“ ტრენინგსა და დასკვნას შორის. სწორედ ასე მიიღებთ მოდელს, რომელიც ოფლაინში კარგად გამოიყურება და ონლაინში აჩრდილის მსგავს მდგომარეობაში მოქმედებს. [2]
3) ფუნქციების მასშტაბირება და ნორმალიზაცია 📏
მასშტაბირება მნიშვნელოვანია, როდესაც მახასიათებლები სრულიად განსხვავებულ დიაპაზონებშია განთავსებული.
ორი კლასიკური:
-
სტანდარტიზაცია : საშუალო მნიშვნელობის მოხსნა და ერთეულ ვარიაციის მასშტაბირება [1]
-
მინიმალურ-მაქსიმალურ მასშტაბირება : თითოეული მახასიათებლის მასშტაბირება მითითებულ დიაპაზონში [1]
მაშინაც კი, როდესაც იყენებთ მოდელებს, რომლებიც „ძირითადად უმკლავდებიან სირთულეებს“, მასშტაბირება ხშირად აადვილებს მილსადენების განხილვას და ართულებს მათ შემთხვევით გაწყვეტას.
4) ფუნქციების ინჟინერია (ასევე ცნობილი როგორც სასარგებლო თაღლითობა) 🧪
სწორედ აქ აადვილებთ მოდელის საქმეს უკეთესი სიგნალების შექმნით:
-
თანაფარდობები (დაწკაპუნებები / ჩვენებები)
-
მოძრავი ფანჯრები (ბოლო N დღე)
-
რაოდენობა (მოვლენები თითო მომხმარებელზე)
-
ლოგარითმული გარდაქმნები მძიმე-კუდიანი განაწილებებისთვის
აქ ხელოვნებაა. ზოგჯერ ქმნი სტატიას, იამაყებ... და ეს არაფერს ნიშნავს. ან უარესი, გტკივა. ეს ნორმალურია. ნუ მიეჯაჭვები ემოციურად სტატიას - ისინიც არ გიყვარს 😅
5) მონაცემების სწორად დაყოფა ✂️
ეს აშკარაა მანამ, სანამ ასე არ იქნება:
-
iid მონაცემების შემთხვევითი დაყოფა
-
დროზე დაფუძნებული დაყოფა დროის სერიებისთვის
-
დაჯგუფებული დაყოფა, როდესაც ერთეულები მეორდება (მომხმარებლები, მოწყობილობები, პაციენტები)
და რაც მთავარია: წინასწარი დამუშავების მორგებამდე გაყავით ის, რაც მონაცემებიდან სწავლობს . თუ თქვენი წინასწარი დამუშავების ნაბიჯი „სწავლობს“ პარამეტრებს (როგორიცაა საშუალებები, ლექსიკები, კატეგორიის რუკები), მან ისინი მხოლოდ ტრენინგიდან უნდა ისწავლოს. [2]
ხელოვნური ინტელექტის წინასწარი დამუშავება მონაცემთა ტიპის მიხედვით: ცხრილური, ტექსტი, სურათები 🎛️
წინასწარი დამუშავება ფორმას იცვლის იმის მიხედვით, თუ რით აწვდით მოდელს.
ცხრილური მონაცემები (ცხრილები, ჟურნალები, მონაცემთა ბაზები) 📊
საერთო ნაბიჯები:
-
დაკარგული ღირებულების სტრატეგია
-
კატეგორიული კოდირება [1]
-
რიცხვითი სვეტების მასშტაბირება [1]
-
გამონაკლისის დამუშავება (დომენის წესები უმეტეს შემთხვევაში „შემთხვევით ამოჭრას“ აჯობებს)
-
მიღებული მახასიათებლები (აგრეგაციები, შეფერხებები, მოძრავი სტატისტიკა)
პრაქტიკული რჩევა: სვეტების ჯგუფები ცალსახად განსაზღვრეთ (რიცხვითი vs კატეგორიული vs იდენტიფიკატორები). თქვენი მომავალი „მე“ მადლიერი იქნება თქვენი.
ტექსტური მონაცემები (NLP) 📝
ტექსტის წინასწარი დამუშავება ხშირად მოიცავს:
-
ტოკენიზაცია ტოკენებად/ქვესიტყვებად
-
შეყვანის ID-ებად კონვერტაცია
-
შევსება/შემოკლება
-
ყურადღების ნიღბების დამზადება პარტიებისთვის [3]
პატარა წესი, რომელიც ტკივილს გიშველის: ტრანსფორმერზე დაფუძნებული კონფიგურაციებისთვის დაიცავით მოდელის მოსალოდნელი ტოკენიზატორის პარამეტრები და არ ივარჯიშოთ ფრისტაილში, თუ მიზეზი არ გაქვთ. ფრისტაილში თქვენ მიიღებთ შედეგს, რომელიც ამბობს: „ვარჯიშობს, მაგრამ უცნაურია“
სურათები (კომპიუტერული ხედვა) 🖼️
ტიპიური წინასწარი დამუშავება:
-
ზომის შეცვლა/მოჭრა თანმიმდევრული ფორმების მისაღებად
-
შეფასების დეტერმინისტული გარდაქმნები
-
შემთხვევითი გარდაქმნები ტრენინგის გაძლიერებისთვის (მაგ., შემთხვევითი მოჭრა) [4]
ერთი დეტალი, რომელსაც ხალხი ვერ ამჩნევს: „შემთხვევითი გარდაქმნები“ უბრალოდ ვიბრაცია არ არის - ისინი სიტყვასიტყვით იღებენ პარამეტრებს ყოველ ჯერზე, როდესაც მათ გამოძახებენ. შესანიშნავია მრავალფეროვნების ტრენინგისთვის, საშინელია შეფასებისთვის, თუ შემთხვევითობის გამორთვა დაგავიწყდებათ. [4]
ხაფანგში, რომელშიც ყველა ვარდება: მონაცემთა გაჟონვა 🕳️🐍
გაჟონვა არის როდესაც შეფასების მონაცემებიდან ინფორმაცია ტრენინგში ხვდება - ხშირად წინასწარი დამუშავების გზით. ამან შეიძლება თქვენი მოდელი ვალიდაციის დროს ჯადოსნურად გამოიყურებოდეს, შემდეგ კი რეალურ სამყაროში იმედგაცრუება გამოიწვიოს.
გაჟონვის საერთო ნიმუშები:
-
მასშტაბირება სრული მონაცემთა ნაკრების სტატისტიკის გამოყენებით (მხოლოდ ტრენინგის ნაცვლად) [2]
-
შენობის კატეგორიის რუკები მატარებლისა და ტესტის გამოყენებით [2]
-
ნებისმიერი
fit()ანfit_transform()ნაბიჯი, რომელიც „ხედავს“ ტესტის კომპლექტს [2]
ზოგადი წესი (მარტივი, სასტიკი, ეფექტური):
-
ყველაფერი, რასაც შესაფერისი ნაბიჯი აქვს, ფორმაში მხოლოდ ვარჯიშის დროს უნდა იყოს.
-
შემდეგ თქვენ ახორციელებთ ტრანსფორმაციის ვალიდაციას/ტესტირებას ამ დამონტაჟებული ტრანსფორმატორის გამოყენებით. [2]
და თუ გსურთ იცოდეთ „რამდენად ცუდი შეიძლება იყოს ეს?“, შეამოწმეთ: scikit-learn-ის საკუთარი დოკუმენტები აჩვენებს გაჟონვის მაგალითს, სადაც არასწორი წინასწარი დამუშავების თანმიმდევრობა შემთხვევით სამიზნეებზე 0.76 0.5- . ასე შეიძლება დამაჯერებლად არასწორად გამოიყურებოდეს გაჟონვა. [2]
წინასწარი დამუშავების წარმოებაში გადაყვანა ქაოსის გარეშე 🏗️
ბევრი მოდელი წარმოებაში ვერ ხერხდება არა იმიტომ, რომ მოდელი „ცუდია“, არამედ იმიტომ, რომ შეყვანის რეალობა იცვლება - ან თქვენი პროცესი იცვლება.
წარმოებაზე ორიენტირებული წინასწარი დამუშავება, როგორც წესი, მოიცავს:
-
შენახული არტეფაქტები (ენკოდერის შესატყვისები, სკალერის პარამეტრები, ტოკენიზატორის კონფიგურაცია), ამიტომ დასკვნა იყენებს ზუსტად იგივე შესწავლილ ტრანსფორმაციებს [2]
-
მკაცრი შეყვანის კონტრაქტები (მოსალოდნელი სვეტები/ტიპები/დიაპაზონები)
-
დახრილობისა და გადახრის მონიტორინგი , რადგან წარმოების მონაცემები შეიძლება გადაინაცვლოს [5]
თუ კონკრეტული განმარტებები გსურთ: Google-ის Vertex AI მოდელის მონიტორინგი განასხვავებს ტრენინგ-მომსახურების ასლს (წარმოების განაწილება გადახრილია ტრენინგისგან) და ინფერენციის დრიფტს (წარმოების განაწილება დროთა განმავლობაში იცვლება) და მხარს უჭერს როგორც კატეგორიული, ასევე რიცხვითი მახასიათებლების მონიტორინგს. [5]
რადგან სიურპრიზები ძვირია. და არა სახალისო.
შედარების ცხრილი: წინასწარი დამუშავების + მონიტორინგის საერთო ინსტრუმენტები (და ვისთვის არიან ისინი განკუთვნილი) 🧰
| ინსტრუმენტი / ბიბლიოთეკა | საუკეთესოა | ფასი | რატომ მუშაობს ეს (და ცოტაოდენი გულწრფელობა) |
|---|---|---|---|
| scikit-learn-ის წინასწარი დამუშავება | ცხრილური ML მილსადენები | უფასო | მყარი ენკოდერები + სკალერები (OneHotEncoder, StandardScaler და ა.შ.) და პროგნოზირებადი ქცევა [1] |
| ჩახუტების სახის ტოკენიზატორები | NLP შეყვანის მომზადება | უფასო | შეყვანის ID-ების + ყურადღების ნიღბების თანმიმდევრულად წარმოება სხვადასხვა გაშვებაში/მოდელში [3] |
| torchvision-ის ტრანსფორმაციები | მხედველობის ტრანსფორმაცია + გაძლიერება | უფასო | დეტერმინისტული და შემთხვევითი გარდაქმნების ერთ მილსადენში შერევის სუფთა გზა [4] |
| Vertex AI მოდელის მონიტორინგი | პროდუქტში დრიფტის/დახრილობის აღმოჩენა | ფასიანი (ღრუბელი) | მონიტორები აღჭურვილია გადახრით/გადახრით და გაფრთხილებებით, როდესაც ზღურბლები გადაჭარბებულია [5] |
(დიახ, მაგიდაზე კვლავ არის მოსაზრებები. მაგრამ ყოველ შემთხვევაში, ეს გულწრფელი მოსაზრებებია 😅)
პრაქტიკული წინასწარი დამუშავების საკონტროლო სია, რომლის გამოყენებაც რეალურად შეგიძლიათ 📌
ვარჯიშის დაწყებამდე
-
შეყვანის სქემის განსაზღვრა (ტიპები, ერთეულები, დაშვებული დიაპაზონები)
-
დაკარგული მნიშვნელობების და დუბლიკატების აუდიტი
-
მონაცემების სწორად გაყოფა (შემთხვევითი / დროზე დაფუძნებული / დაჯგუფებული)
-
მორგების წინასწარი დამუშავება მხოლოდ ტრენინგის (
fit/fit_transformრჩება ტრენინგზე) [2] -
შეინახეთ წინასწარი დამუშავების არტეფაქტები, რათა დასკვნამ შეძლოს მათი ხელახლა გამოყენება [2]
ვარჯიშის დროს
-
შემთხვევითი აუგმენტაცია გამოიყენეთ მხოლოდ საჭიროების შემთხვევაში (ჩვეულებრივ, მხოლოდ ტრენინგის გაყოფით) [4]
-
შეფასების წინასწარი დამუშავების დეტერმინისტული შენარჩუნება [4]
-
წინასწარი დამუშავების ცვლილებების თვალყურის დევნება, როგორიცაა მოდელის ცვლილებები (რადგან ისინი ასეა)
განლაგებამდე
-
დარწმუნდით, რომ დასკვნა იყენებს იდენტურ წინასწარი დამუშავების გზას და არტეფაქტებს [2]
-
დააყენეთ გადახრის/დახრილობის მონიტორინგი (ფუნქციების განაწილების ძირითადი შემოწმებებიც კი დიდ როლს თამაშობს) [5]
ღრმა ანალიზი: წინასწარი დამუშავების გავრცელებული შეცდომები (და როგორ ავიცილოთ თავიდან ისინი) 🧯
შეცდომა 1: „ყველაფერს სწრაფად დავარეგულირებ“ 😵
თუ მასშტაბირების პარამეტრებს სრულ მონაცემთა ნაკრებზე გამოთვლით, შეფასების ინფორმაციას გაჟონავთ. მოარგეთ მატარებელს, დანარჩენი კი გარდაქმენით. [2]
შეცდომა 2: კატეგორიები ქაოსში იძირებიან 🧩
თუ თქვენი კატეგორიის შესაბამისობა ტრენინგსა და დასკვნას შორის გადაინაცვლებს, თქვენს მოდელს შეუძლია ჩუმად არასწორად წაიკითხოს სამყარო. შეინარჩუნეთ შესაბამისობების კორექტირება შენახული არტეფაქტების საშუალებით. [2]
შეცდომა 3: შეფასებაში შემთხვევითი გაძლიერების შეპარვა 🎲
შემთხვევითი ტრანსფორმაციები შესანიშნავია ვარჯიშის დროს, მაგრამ ისინი არ უნდა იყოს „ფარულად ჩართული“, როდესაც ცდილობთ შესრულების გაზომვას. (შემთხვევითი ნიშნავს შემთხვევითობას.) [4]
დასკვნითი შენიშვნები 🧠✨
ხელოვნური ინტელექტის წინასწარი დამუშავება არის არეული რეალობის მოდელის თანმიმდევრულ შეყვანებად გარდაქმნის დისციპლინირებული ხელოვნება. ის მოიცავს გაწმენდას, კოდირებას, მასშტაბირებას, ტოკენიზაციას, გამოსახულების ტრანსფორმაციას და, რაც მთავარია, განმეორებად მილსადენებსა და არტეფაქტებს.
-
წინასწარი დამუშავება გააკეთეთ განზრახ და არა შემთხვევით. [2]
-
ჯერ გაყოფა, მორგებული ტრანსფორმაციები მხოლოდ ვარჯიშის დროს, გაჟონვის თავიდან აცილება. [2]
-
გამოიყენეთ მოდალობის შესაბამისი წინასწარი დამუშავება (ტექსტისთვის ტოკენიზატორები, სურათებისთვის ტრანსფორმაციები). [3][4]
-
აკონტროლეთ წარმოების ცვალებადობა/დრეიფი, რათა თქვენი მოდელი ნელ-ნელა არ გადაიქცეს უაზრო მდგომარეობაში. [5]
და თუ ოდესმე გაიჭედებით, ჰკითხეთ საკუთარ თავს:
„წინასწარი დამუშავების ეს ეტაპი კვლავ აზრიანი იქნება, თუ ხვალ ახალ მონაცემებზე გავუშვებ?“
თუ პასუხია „უჰ... იქნებ?“, ეს თქვენი მინიშნებაა 😬
ხშირად დასმული კითხვები
რა არის ხელოვნური ინტელექტის წინასწარი დამუშავება, მარტივად რომ ვთქვათ?
ხელოვნური ინტელექტის წინასწარი დამუშავება არის განმეორებადი ნაბიჯების ერთობლიობა, რომელიც ხმაურიან, მაღალი ვარიაციის მქონე ნედლ მონაცემებს გარდაქმნის თანმიმდევრულ შეყვანის მონაცემებად, საიდანაც მოდელს შეუძლია სწავლა. ეს შეიძლება მოიცავდეს გაწმენდას, ვალიდაციას, კატეგორიების კოდირებას, რიცხვითი მნიშვნელობების მასშტაბირებას, ტექსტის ტოკენიზაციას და გამოსახულების ტრანსფორმაციების გამოყენებას. მიზანია იმის უზრუნველყოფა, რომ ტრენინგმა და წარმოების ინფერენციამ დაინახოს „იგივე სახის“ შეყვანა, რათა მოდელი მოგვიანებით არ გადაიქცეს არაპროგნოზირებად ქცევაში.
რატომ არის ხელოვნური ინტელექტის წინასწარი დამუშავება ასეთი მნიშვნელოვანი წარმოებაში?
წინასწარი დამუშავება მნიშვნელოვანია, რადგან მოდელები მგრძნობიარეა შეყვანის წარმოდგენის მიმართ. თუ ტრენინგის მონაცემები მასშტაბირებული, კოდირებული, ტოკენიზებული ან ტრანსფორმირებულია წარმოების მონაცემებისგან განსხვავებულად, შეგიძლიათ მიიღოთ ტრენინგის/მიწოდების შეუსაბამობის შეცდომები, რომლებიც ოფლაინში კარგად გამოიყურება, მაგრამ ონლაინში ჩუმად ვერ ხერხდება. ძლიერი წინასწარი დამუშავების არხები ასევე ამცირებს ხმაურს, აუმჯობესებს სწავლის სტაბილურობას და აჩქარებს იტერაციას, რადგან თქვენ არ ხსნით ბლოკნოტის სპაგეტის.
როგორ ავიცილო თავიდან მონაცემთა გაჟონვა წინასწარი დამუშავების დროს?
მარტივი წესი მუშაობს: ყველაფერი, რასაც მორგების ნაბიჯი აქვს, მხოლოდ სასწავლო მონაცემებზე უნდა მორგდეს. ეს მოიცავს სკალერებს, ენკოდერებს და ტოკენაიზერებს, რომლებიც სწავლობენ პარამეტრებს, როგორიცაა საშუალოები, კატეგორიის რუკები ან ლექსიკები. ჯერ ყოფთ, ასწორებთ სასწავლო გაყოფილებას, შემდეგ კი ტრანსფორმირებთ ვალიდაციას/ტესტირებას მორგებული ტრანსფორმატორის გამოყენებით. გაჟონვამ შეიძლება ვალიდაცია „ჯადოსნურად“ კარგად გამოიყურებოდეს და შემდეგ წარმოების პროცესში ჩავარდეს.
რა არის ცხრილური მონაცემების წინასწარი დამუშავების ყველაზე გავრცელებული ეტაპები?
ცხრილური მონაცემებისთვის, ჩვეულებრივი პროცესი მოიცავს გაწმენდას და ვალიდაციას (ტიპები, დიაპაზონები, დაკარგული მნიშვნელობები), კატეგორიული კოდირებას (ერთჯერადი ან რიგითი) და რიცხვით მასშტაბირებას (სტანდარტიზაცია ან მინ-მაქს). ბევრი პროცესი ამატებს დომენზე დაფუძნებულ მახასიათებლების ინჟინერიას, როგორიცაა თანაფარდობები, მოძრავი ფანჯრები ან რაოდენობა. პრაქტიკული ჩვევაა სვეტების ჯგუფების ცალსახად განსაზღვრა (რიცხვითი vs კატეგორიული vs იდენტიფიკატორები), რათა თქვენი ტრანსფორმაციები თანმიმდევრული დარჩეს.
როგორ მუშაობს ტექსტის მოდელების წინასწარი დამუშავება?
ტექსტის წინასწარი დამუშავება, როგორც წესი, გულისხმობს ტოკენებად/ქვესიტყვებად გადაქცევას, შეყვანის ID-ებად გარდაქმნას და პაკეტური დამუშავებისთვის შევსების/შემოკლებების დამუშავებას. ტრანსფორმატორის მრავალი სამუშაო პროცესი ასევე ქმნის ყურადღების ნიღაბს ID-ებთან ერთად. გავრცელებული მიდგომაა მოდელის მოსალოდნელი ტოკენიზატორის კონფიგურაციის გამოყენება იმპროვიზაციის ნაცვლად, რადგან ტოკენიზატორის პარამეტრებში მცირე განსხვავებებმა შეიძლება გამოიწვიოს „ის ვარჯიშობს, მაგრამ არაპროგნოზირებად იქცევა“ შედეგები.
რით განსხვავდება მანქანური სწავლებისთვის სურათების წინასწარი დამუშავება?
სურათის წინასწარი დამუშავება, როგორც წესი, უზრუნველყოფს ფორმებისა და პიქსელების თანმიმდევრულ დამუშავებას: ზომის შეცვლა/ჩამოჭრა, ნორმალიზაცია და დეტერმინისტული და შემთხვევითი ტრანსფორმაციების მკაფიო გამიჯვნა. შეფასებისთვის, ტრანსფორმაციები უნდა იყოს დეტერმინისტული, რათა მეტრიკები შედარებადი იყოს. ტრენინგისთვის, შემთხვევითი დამატება (მაგალითად, შემთხვევითი ჩამოჭრა) აუმჯობესებს მდგრადობას, მაგრამ შემთხვევითობა განზრახ უნდა იყოს მორგებული ტრენინგის გაყოფილზე და არა შემთხვევით დატოვოს შეფასების დროს.
რა ხდის წინასწარი დამუშავების მილსადენს „კარგს“ მყიფეს ნაცვლად?
კარგი ხელოვნური ინტელექტის წინასწარი დამუშავების სისტემა რეპროდუცირებადი, გაჟონვისგან დაცული და დაკვირვებადია. რეპროდუცირებადი ნიშნავს, რომ ერთი და იგივე შემავალი მონაცემები წარმოქმნის ერთსა და იმავე შედეგს, თუ შემთხვევითობა განზრახ არ არის გაძლიერებული. გაჟონვისგან დაცული ნიშნავს, რომ შესაბამისობის ნაბიჯები არასდროს ეხება ვალიდაციას/ტესტირებას. დაკვირვებადი ნიშნავს, რომ შეგიძლიათ შეამოწმოთ სტატისტიკა, როგორიცაა დაკარგული მონაცემები, კატეგორიების რაოდენობა და ფუნქციების განაწილება, ამიტომ გამართვა ეფუძნება მტკიცებულებებს და არა ინტუიციას. სისტემები ყოველთვის აჯობებენ ad-hoc ბლოკნოტების თანმიმდევრობებს.
როგორ შევინარჩუნო ტრენინგისა და დასკვნის წინასწარი დამუშავების თანმიმდევრულობა?
მთავარია, დასკვნის დროს ხელახლა გამოვიყენოთ ზუსტად იგივე შესწავლილი არტეფაქტები: სკალერის პარამეტრები, კოდირების შესაბამისობები და ტოკენიზატორის კონფიგურაციები. ასევე გჭირდებათ შეყვანის კონტრაქტი (მოსალოდნელი სვეტები, ტიპები და დიაპაზონები), რათა წარმოების მონაცემები ჩუმად არ გადაიქცეს არასწორ ფორმებად. თანმიმდევრულობა არ არის მხოლოდ „იგივე ნაბიჯების შესრულება“ - ეს არის „იგივე ნაბიჯების შესრულება იგივე მორგებული პარამეტრებითა და შესაბამისობებით“
როგორ შემიძლია წინასწარი დამუშავების ისეთი პრობლემების მონიტორინგი, როგორიცაა გადახრა და დამახინჯება დროთა განმავლობაში?
მყარი სამუშაო პროცესის დროსაც კი, წარმოების მონაცემები იცვლება. გავრცელებული მიდგომაა ფუნქციების განაწილების ცვლილებების მონიტორინგი და ტრენინგის მომსახურების ასიმეტრიის (წარმოება გადახრილია ტრენინგისგან) და ინფერენციის დრიფტის (წარმოების ცვლილებები დროთა განმავლობაში) შესახებ გაფრთხილება. მონიტორინგი შეიძლება იყოს მსუბუქი (ძირითადი განაწილების შემოწმება) ან მართული (Vertex AI მოდელის მონიტორინგის მსგავსად). მიზანია შეყვანის ცვლილებების ადრეულ ეტაპზე აღმოჩენა - სანამ ისინი ნელ-ნელა შეამცირებენ მოდელის მუშაობას.
ცნობები
[1] scikit-learn API:
sklearn.preprocessing (ენკოდერები, სკალერები, ნორმალიზაცია) [2] scikit-learn: გავრცელებული ხარვეზები - მონაცემთა გაჟონვა და მისი თავიდან აცილების გზები
[3] Hugging Face Transformers-ის დოკუმენტაცია: ტოკენიზატორები (შეყვანის ID-ები, ყურადღების ნიღბები)
[4] PyTorch Torchvision-ის დოკუმენტაცია: ტრანსფორმაციები (ზომის შეცვლა/ნორმალიზება + შემთხვევითი ტრანსფორმაციები)
[5] Google Cloud Vertex AI-ის დოკუმენტაცია: მოდელის მონიტორინგის მიმოხილვა (ფუნქციების სკევი და გადახრა)