Какво е предварителна обработка с изкуствен интелект?

Какво е предварителна обработка с изкуствен интелект?

Предварителната обработка на ИИ е всичко, което правите със суровите данни преди (а понякога и по време на) обучение или извод, за да може моделът действително да се учи от тях. Не е просто „почистване“. Това е почистване, оформяне, мащабиране, кодиране, допълване и пакетиране на данни в последователно представяне, което няма да обърка тихо вашия модел по-късно. [1]

Статии, които може да ви харесат след тази:

🔗 Как да тестваме 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]

И ако някога се затрудните, запитайте се:
„Дали тази стъпка за предварителна обработка ще има смисъл, ако я изпълня утре с чисто нови данни?“
Ако отговорът е „ъъъ… може би?“, това е вашата улика 😬


Референции

[1] scikit-learn API:
sklearn.preprocessing (енкодери, скалери, нормализация) [2] scikit-learn: Често срещани клопки - Изтичане на данни и как да се избегне
[3] Документация за Hugging Face Transformers: Токенизатори (входни идентификатори, маски за внимание)
[4] Документация за PyTorch Torchvision: Трансформации (Преоразмеряване/Нормализиране + случайни трансформации)
[5] Документация за Google Cloud Vertex AI: Общ преглед на мониторинга на модели (изкривяване и отклонение на характеристиките)

Намерете най-новия изкуствен интелект в официалния магазин за асистенти с изкуствен интелект

За нас

Обратно към блога