Кратък отговор: Предварителната обработка с изкуствен интелект е набор от повтарящи се стъпки, които превръщат суровите данни с висока дисперсия в последователни входни данни за модела, включително почистване, кодиране, мащабиране, токенизиране и трансформации на изображения. Това е важно, защото ако входните данни за обучение и входните данни за производство се различават, моделите могат да се провалят тихомълком. Ако дадена стъпка „изучава“ параметри, настройте я само върху данни за обучение, за да избегнете изтичане.
Предварителната обработка на ИИ е всичко, което правите със суровите данни преди (а понякога и по време на) обучение или извод, за да може моделът действително да се учи от тях. Не е просто „почистване“. Това е почистване, оформяне, мащабиране, кодиране, допълване и пакетиране на данни в последователно представяне, което няма да обърка тихо вашия модел по-късно. [1]
Ключови изводи:
Определение : Предварителната обработка преобразува суровите таблици, текст, изображения и регистрационни файлове в готови за модел функции.
Последователност : Прилагайте едни и същи трансформации по време на обучение и извод, за да предотвратите несъответствия.
Теч : Настройте скалери, енкодери и токенизатори само върху данни за обучение.
Възпроизводимост : Изграждайте тръбопроводи с инспектируеми статистики, а не с ad-hoc последователности от клетки в тетрадка.
Мониторинг на производството : Проследяване на отклоненията и отклоненията, така че входните данни постепенно да не влошават производителността.
Статии, които може да ви харесат след тази:
🔗 Как да тестваме AI модели за реална производителност
Практични методи за бърза оценка на точността, устойчивостта и отклоненията.
🔗 Изкуствен интелект ли е преобразуването на текст в реч и как работи
Обяснява основите на синтеза на говор, ключовите приложения и често срещаните ограничения днес.
🔗 Може ли изкуственият интелект да чете точно ръкописния текст днес?
Обхваща предизвикателствата при разпознаване, най-добрите инструменти и съветите за точност.
🔗 Колко точен е изкуственият интелект при изпълнението на често срещани задачи
Разбива факторите за точност, бенчмарковете и надеждността в реалния свят.
Предварителна обработка с изкуствен интелект на разбираем език (и какво не е) 🤝
Предварителната обработка с изкуствен интелект е трансформирането на суровите входни данни (таблици, текст, изображения, лог файлове) в готови за модел функции. Ако суровите данни са разхвърлян гараж, предварителната обработка е етикетиране на кутиите, изхвърляне на счупени боклуци и подреждане на неща, така че действително да можете да преминете през тях без да се нараните.
Не е самият модел. Става въпрос за нещата, които правят модела възможен:
-
превръщане на категориите в числа (еднозначни, порядкови и др.) [1]
-
мащабиране на големи числови диапазони в разумни диапазони (стандартизация, мин-макс и др.) [1]
-
токенизиране на текст във входни идентификатори (и обикновено маска за внимание) [3]
-
преоразмеряване/изрязване на изображения и подходящо прилагане на детерминистични спрямо случайни трансформации [4]
-
изграждане на повтарящи се тръбопроводи, така че обучението и входните данни от „реалния живот“ да не се разминават по фини начини [2]
Една малка практическа забележка: „предварителната обработка“ включва всичко, което се случва последователно, преди моделът да види входните данни . Някои екипи разделят това на „инженерство на функции“ срещу „почистване на данни“, но в реалния живот тези граници се размиват.

Защо предварителната обработка с изкуствен интелект е по-важна, отколкото хората признават 😬
Моделът е съпоставител на шаблони, а не четец на мисли. Ако вашите входни данни са непоследователни, моделът научава непоследователни правила. Това не е философско, а болезнено буквално.
Предварителната обработка ви помага:
-
Подобрете стабилността на обучението, като поставите характеристики в представяния, които оценителите могат да използват надеждно (особено когато е включено мащабиране/кодиране). [1]
-
Намалете шума, като направите разхвърляната реалност да изглежда като нещо, от което моделът може да обобщи (вместо да запомняте странни артефакти).
-
Предотвратяване на тихи повреди, като изтичане и несъответствия между обучението и обслужването (от типа, който изглежда „невероятно“ при валидиране и след това при внедряване в производство). [2]
-
Ускорете итерацията, защото повтаряемите трансформации са по-добри от сложните „спагети“ от тетрадки всеки ден от седмицата.
Освен това, оттам идва и голяма част от „моделното представяне“. Като… изненадващо много. Понякога се струва несправедливо, но това е реалността 🙃
Какво прави един добър AI канал за предварителна обработка ✅
„Добрата версия“ на предварителната обработка обикновено има следните качества:
-
Възпроизводимо : същият вход → същият изход (няма мистериозна случайност, освен ако не е умишлено увеличаване).
-
Последователност при обслужване на обучение : каквото и да правите по време на обучение, се прилага по същия начин по време на извод (едни и същи параметри, едни и същи карти на категориите, една и съща конфигурация на токенизатора и т.н.). [2]
-
Безопасност от течове : нищо в оценката/теста не влияе на която и да е
от напасването. (Повече за този капан след малко.) [2] -
Наблюдаемо : можете да проверите какво се е променило (статистика на функции, липсващи данни, брой категории), така че дебъгването не е инженерство, базирано на вибрации.
Ако вашата предварителна обработка е купчина клетки от тетрадка, наречени final_v7_really_final_ok ... знаете как е. Работи, докато не спре 😬
Основни градивни елементи на предварителната обработка на ИИ 🧱
Мислете за предварителната обработка като за набор от градивни елементи, които комбинирате в конвейер.
1) Почистване и валидиране 🧼
Типични задачи:
-
премахване на дубликати
-
обработка на липсващи стойности (изтриване, импутиране или изрично представяне на липсващите стойности)
-
прилагане на типове, мерни единици и диапазони
-
откриване на неправилно оформени входни данни
-
стандартизиране на текстови формати (празни пространства, правила за главни и малки букви, особености на Unicode)
Тази част не е бляскава, но предотвратява изключително глупави грешки. Казвам го с любов.
2) Кодиране на категорични данни 🔤
Повечето модели не могат директно да използват сурови низове като "red" или "premium_user" .
Често срещани подходи:
-
Еднократно кодиране (категория → двоични колони) [1]
-
Ординално кодиране (категория → целочислен идентификатор) [1]
Ключовото не е кой енкодер ще изберете, а картографирането да остане последователно и да не „променя формата си“ между обучението и извода. Така ще получите модел, който изглежда добре офлайн и се държи като „призрачен“ онлайн. [2]
3) Мащабиране и нормализиране на характеристиките 📏
Мащабирането е от значение, когато обектите се намират в коренно различни диапазони.
Две класики:
-
Стандартизация : премахване на средната стойност и мащабиране до единична дисперсия [1]
-
Мащабиране от минимум до максимум : мащабиране на всяка функция в зададен диапазон [1]
Дори когато използвате модели, които „предимно се справят“, мащабирането често прави тръбопроводите по-лесни за разсъждение и по-трудни за случайно прекъсване.
4) Инженеринг на функции (известен още като полезна измама) 🧪
Тук улеснявате работата на модела, като създавате по-добри сигнали:
-
съотношения (кликвания / импресии)
-
подвижни прозорци (последните N дни)
-
брой (събития на потребител)
-
логаритмични трансформации за разпределения с тежки опашки
Тук има цяло изкуство. Понякога създаваш нещо, горд си... и то не води до нищо. Или още по-лошо, боли. Това е нормално. Не се привързвай емоционално към някои неща - те не те обичат в замяна 😅
5) Разделяне на данните по правилния начин ✂️
Това звучи очевидно, докато не се окаже съвсем очевидно:
-
случайни разделяния за IID данни
-
разделяне на времеви серии, базирано на време
-
групирани разделяния, когато обектите се повтарят (потребители, устройства, пациенти)
И най-важното: разделете преди напасване, предварителна обработка, която се учи от данни . Ако вашата стъпка на предварителна обработка „изучава“ параметри (като средни стойности, речници, карти на категории), тя трябва да ги научи само чрез обучение. [2]
Предварителна обработка с изкуствен интелект по тип данни: таблични, текстови, изображения 🎛️
Предварителната обработка променя формата си в зависимост от това какво захранвате модела.
Таблични данни (електронни таблици, регистрационни файлове, бази данни) 📊
Често срещани стъпки:
-
стратегия за липсваща стойност
-
категорично кодиране [1]
-
мащабиране на числови колони [1]
-
обработка на отклонения (правилата на домейна превъзхождат „случайното изрязване“ през повечето време)
-
производни характеристики (агрегации, забавяния, актуални статистики)
Практически съвет: дефинирайте изрично групите колони (числови срещу категорийни срещу идентификатори). Бъдещото ви аз ще ви благодари.
Текстови данни (НЛП) 📝
Предварителната обработка на текст често включва:
-
токенизация в токени/поддуми
-
преобразуване във входни идентификатори
-
допълване/отрязване
-
изграждане на маски за внимание за групиране [3]
Малко правило, което спестява болката: за конфигурации, базирани на трансформатори, следвайте очакваните настройки на токенизатора на модела и не правете фрийстайл, освен ако нямате причина. Фрийстайлингът е начинът, по който в крайна сметка се получава „тренира, но е странно“
Изображения (компютърно зрение) 🖼️
Типична предварителна обработка:
-
преоразмеряване/изрязване до еднакви форми
-
детерминистични трансформации за оценка
-
случайни трансформации за допълване на обучението (напр. случайно изрязване) [4]
Един детайл, който хората пропускат: „случайните трансформации“ не са просто вибрация - те буквално семплират параметри всеки път, когато бъдат извикани. Чудесно за обучение на разнообразие, ужасно за оценка, ако забравите да изключите случайността. [4]
Капанът, в който всички попадат: изтичане на данни 🕳️🐍
Изтичането е когато информация от данни за оценка се промъква в обучението - често чрез предварителна обработка. Това може да накара вашия модел да изглежда магически по време на валидирането, а след това да ви разочарова в реалния свят.
Често срещани модели на течове:
-
мащабиране с помощта на статистически данни от пълен набор от данни (вместо само обучение) [2]
-
изграждане на карти на категориите чрез съвместно използване на train+test [2]
-
всяка
fit()илиfit_transform(), която „вижда“ тестовия набор [2]
Емпирично правило (просто, брутално, ефективно):
-
Всичко, което има подходяща стъпка, трябва да е подходящо само за тренировка.
-
След това трансформирате валидирането/тестването, използвайки този подходящ трансформатор. [2]
И ако искате да проверите „колко лошо може да бъде?“: документацията на scikit-learn показва пример за изтичане, при който неправилен ред на предварителна обработка дава точност около 0,76 върху произволни цели, след което пада обратно до ~ 0,5, след като изтичането е коригирано. Ето колко убедително погрешно може да изглежда изтичането. [2]
Влизане в производство без хаос 🏗️
Много модели се провалят в производството не защото моделът е „лош“, а защото входната реалност се променя – или вашият конвейер се променя.
Производствено ориентирана предварителна обработка обикновено включва:
-
Запазени артефакти (съпоставяния на енкодер, параметри на скалера, конфигурация на токенизатора), така че изводът използва абсолютно същите научени трансформации [2]
-
Строги входни договори (очаквани колони/типове/диапазони)
-
Мониторинг за отклонения и отклонения , тъй като производствените данни ще се отклоняват [5]
Ако искате конкретни дефиниции: Vertex AI Model Monitoring на Google разграничава отклонението при обучение (разпределението на продукцията се отклонява от обучението) и отклонението от извода (разпределението на продукцията се променя с течение на времето) и поддържа наблюдение както за категорични, така и за числови характеристики. [5]
Защото изненадите са скъпи. И не са от забавните.
Сравнителна таблица: често срещани инструменти за предварителна обработка + мониторинг (и за кого са предназначени) 🧰
| Инструмент / библиотека | Най-добро за | Цена | Защо работи (и малко честност) |
|---|---|---|---|
| предварителна обработка на scikit-learn | Таблични машинно-колонни конвейери | Безплатно | Солидни енкодери + скалери (OneHotEncoder, StandardScaler и др.) и предвидимо поведение [1] |
| Токенизатори за прегръщащи лица | Подготовка за входни материали за НЛП | Безплатно | Създава входни идентификатори + маски за внимание последователно във всички изпълнения/модели [3] |
| трансформации с факелно виждане | Трансформация + уголемяване на зрението | Безплатно | Чист начин за смесване на детерминистични и случайни трансформации в един конвейер [4] |
| Мониторинг на Vertex AI модел | Откриване на дрейф/изкривяване в продукта | Платено (облак) | Мониторите имат функция за изкривяване/отклонение и предупреждават при превишаване на праговете [5] |
(Да, масата все още има мнения. Но поне са честни мнения 😅)
Практичен контролен списък за предварителна обработка, който можете да използвате 📌
Преди тренировка
-
Дефиниране на входна схема (типове, мерни единици, разрешени диапазони)
-
Одит на липсващи стойности и дубликати
-
Разделяне на данните по правилния начин (случайно / базирано на време / групирано)
-
Предварителна обработка на напасване само при обучение (
fit/fit_transformостава при обучение) [2] -
Запазване на артефактите за предварителна обработка, така че изводът да може да ги използва повторно [2]
По време на обучение
-
Прилагайте произволно увеличаване само където е уместно (обикновено само тренировъчно разделяне) [4]
-
Поддържайте предварителната обработка на оценката детерминистична [4]
-
Проследявайте промените в предварителната обработка, като например промените в модела (защото са такива)
Преди разполагането
-
Уверете се, че изводът използва идентичен път за предварителна обработка и артефакти [2]
-
Настройте мониторинг на дрейфа/изкривяването (дори основните проверки на разпределението на характеристиките са от голяма полза) [5]
Дълбоко проучване: често срещани грешки в предварителната обработка (и как да ги избегнем) 🧯
Грешка 1: „Просто бързо ще нормализирам всичко“ 😵
Ако изчислявате параметрите за мащабиране върху целия набор от данни, изпускате информация за оценката. Настройте на влака, трансформирайте останалото. [2]
Грешка 2: категориите се носят в хаос 🧩
Ако вашето картографиране на категориите се променя между обучение и извод, вашият модел може незабелязано да разтълкува погрешно света. Поддържайте картографирането фиксирано чрез запазени артефакти. [2]
Грешка 3: произволно добавяне на информация, промъкващо се в оценката 🎲
Случайните трансформации са страхотни в обучението, но не бива да бъдат „тайно включени“, когато се опитвате да измерите производителността. (Случайно означава произволно.) [4]
Заключителни бележки 🧠✨
Предварителната обработка с изкуствен интелект е дисциплинираното изкуство за превръщане на обърканата реалност в последователни входни данни за модела. Тя обхваща почистване, кодиране, мащабиране, токенизация, трансформации на изображения и - най-важното - повтарящи се канали и артефакти.
-
Извършвайте предварителна обработка умишлено, а не небрежно. [2]
-
Разделете първо, прилягането се трансформира само при тренировка, избягвайте изтичане. [2]
-
Използвайте предварителна обработка, подходяща за модалността (токенизатори за текст, трансформации за изображения). [3][4]
-
Следете отклоненията/изкривяванията в производството, така че вашият модел бавно да не се отклонява към безсмислици. [5]
И ако някога се затрудните, запитайте се:
„Дали тази стъпка за предварителна обработка ще има смисъл, ако я изпълня утре с чисто нови данни?“
Ако отговорът е „ъъъ… може би?“, това е вашата улика 😬
ЧЗВ
Какво е предварителна обработка с изкуствен интелект, накратко?
Предварителната обработка с изкуствен интелект е повтарящ се набор от стъпки, които превръщат шумни, високодисперсионни сурови данни в последователни входни данни, от които моделът може да се учи. Тя може да включва почистване, валидиране, кодиране на категории, мащабиране на числови стойности, токенизиране на текст и прилагане на трансформации на изображения. Целта е да се гарантира, че обучението и производственият извод виждат „един и същ вид“ входни данни, така че моделът да не се отклони към непредсказуемо поведение по-късно.
Защо предварителната обработка с изкуствен интелект е толкова важна в производството?
Предварителната обработка е важна, защото моделите са чувствителни към представянето на входните данни. Ако данните за обучение се мащабират, кодират, токенизират или трансформират по различен начин от производствените данни, можете да получите несъответствия между обучението и обслужването, които изглеждат добре офлайн, но се провалят тихо онлайн. Силните канали за предварителна обработка също така намаляват шума, подобряват стабилността на обучението и ускоряват итерацията, защото не разплитате „спагети“ от преносими компютри.
Как да избегна изтичане на данни по време на предварителната обработка?
Едно просто правило работи: всичко със на напасване трябва да се напасва само върху данни за обучение. Това включва скалери, енкодери и токенизатори, които изучават параметри като средни стойности, карти на категории или речници. Първо разделяте, напасвате върху данните за обучение, след което трансформирате валидирането/тестването, използвайки напаснатия трансформатор. Течът може да накара валидирането да изглежда „магически“ добре и след това да се срине в производствена употреба.
Кои са най-често срещаните стъпки за предварителна обработка на таблични данни?
За таблични данни, обичайният процес на обработка включва почистване и валидиране (типове, диапазони, липсващи стойности), категориално кодиране (еднократно или ординално) и числово мащабиране (стандартизация или минимално-максимум). Много процеси на обработка добавят базирано на домейна инженерство на характеристики, като съотношения, подвижни прозорци или бройки. Практически навик е да се дефинират изрично групите колони (числови срещу категорични срещу идентификатори), така че трансформациите ви да останат последователни.
Как работи предварителната обработка на текстови модели?
Предварителната обработка на текст обикновено означава токенизиране в токени/поддуми, преобразуването им във входни идентификатори и обработка на допълване/отрязване за пакетиране. Много работни процеси за трансформиране също така създават маска за внимание заедно с идентификаторите. Често срещан подход е да се използва очакваната конфигурация на токенизатора на модела, вместо да се импровизира, тъй като малките разлики в настройките на токенизатора могат да доведат до резултати от типа „обучава се, но се държи непредсказуемо“.
Каква е разликата в предварителната обработка на изображения за машинно обучение?
Предварителната обработка на изображенията обикновено осигурява последователни форми и обработка на пиксели: преоразмеряване/изрязване, нормализиране и ясно разделение между детерминистични и случайни трансформации. За оценка, трансформациите трябва да бъдат детерминистични, така че показателите да са сравними. За обучение, случайното увеличаване (като случайните изрязвания) може да подобри устойчивостта, но случайността трябва да бъде умишлено ограничена до разделянето за обучение, а не случайно да бъде оставена включена по време на оценката.
Какво прави един конвейер за предварителна обработка „добър“ вместо крехък?
Един добър конвейер за предварителна обработка на ИИ е възпроизводим, устойчив на изтичане и наблюдаем. „Възпроизводим“ означава, че един и същ вход произвежда един и същ изход, освен ако случайността не е умишлено увеличение. „Безопасен за изтичане“ означава, че стъпките на съответствие никога не докосват валидиране/тестиране. „Наблюдаем“ означава, че можете да проверявате статистически данни като липсващи данни, брой категории и разпределения на характеристики, така че отстраняването на грешки да се основава на доказателства, а не на интуиция. Канвейерите са по-добри от ad-hoc последователности от тетрадки всеки път.
Как да поддържам последователност в обучението и предварителната обработка на изводите?
Ключът е да се използват повторно абсолютно същите научени артефакти по време на извод: параметри на скалера, съпоставяния на енкодера и конфигурации на токенизатора. Също така е необходим входен договор (очаквани колони, типове и диапазони), така че производствените данни да не могат тихомълком да се преместят в невалидни форми. Съгласуваността не е просто „изпълняване на едни и същи стъпки“ - тя е „изпълняване на едни и същи стъпки със същите настроени параметри и съпоставяния“
Как мога да наблюдавам проблеми с предварителната обработка, като отклонение и изкривяване с течение на времето?
Дори при солиден конвейер, производствените данни се променят. Често срещан подход е да се наблюдават промените в разпределението на характеристиките и да се предупреждава за отклонение в обслужването на обучението (продукцията се отклонява от обучението) и отклонение на изводите (продукцията се променя с течение на времето). Мониторингът може да бъде лек (основни проверки на разпределението) или управляван (като Vertex AI Model Monitoring). Целта е да се уловят промените във входните данни рано - преди те бавно да ерозират производителността на модела.
Референции
[1] scikit-learn API:
sklearn.preprocessing (енкодери, скалери, нормализация) [2] scikit-learn: Често срещани клопки - Изтичане на данни и как да се избегне
[3] Документация за Hugging Face Transformers: Токенизатори (входни идентификатори, маски за внимание)
[4] Документация за PyTorch Torchvision: Трансформации (Преоразмеряване/Нормализиране + случайни трансформации)
[5] Документация за Google Cloud Vertex AI: Общ преглед на мониторинга на модели (изкривяване и отклонение на характеристиките)