Што е претходна обработка на вештачка интелигенција?

Што е претходна обработка на вештачка интелигенција?

Краток одговор: Претпроцесирањето со вештачка интелигенција е збир на повторувачки чекори што ги претвораат суровите податоци со висока варијација во конзистентни влезни податоци на моделот, вклучувајќи чистење, кодирање, скалирање, токенирање и трансформации на слики. Ова е важно бидејќи ако влезните податоци за обука и влезните податоци за производство се разликуваат, моделите можат тивко да откажат. Ако некој чекор „научи“ параметри, вклопете го само на податоците за обука за да избегнете протекување.

Претходната обработка со вештачка интелигенција е сè што правите со суровите податоци пред (а понекогаш и за време на) обуката или инференцијата, за моделот всушност да може да учи од нив. Не само „чистење“. Тоа е чистење, обликување, скалирање, кодирање, зголемување и пакување на податоците во конзистентна репрезентација што нема тивко да го исклучи вашиот модел подоцна. [1]

Клучни заклучоци:

Дефиниција : Претпроцесирањето ги претвора суровите табели, текстот, сликите и логовите во функции подготвени за модел.

Доследност : Применете ги истите трансформации за време на обуката и инференцијата за да спречите несовпаѓање.

Протекување : Поставете скалери, енкодери и токенизери само на податоци за обука.

Репродуктивност : Изградете цевководи со статистики што можат да се инспектираат, а не ad-hoc секвенци на ќелии од бележник.

Мониторинг на производството : Следете ги асиметријата и отстапувањата за да не се намалат влезните податоци постепено.

Статии што можеби ќе ве интересираат по оваа:

🔗 Како да се тестираат моделите на вештачка интелигенција за перформанси во реалниот свет
Практични методи за брзо оценување на точноста, робусноста и пристрасноста.

🔗 Дали претворањето на текст во говор е вештачка интелигенција и како функционира?
Ги објаснува основите на TTS, клучните употреби и вообичаените ограничувања денес.

🔗 Може ли вештачката интелигенција точно да чита ракопис со курзив денес?
Опфаќа предизвици за препознавање, најдобри алатки и совети за точност.

🔗 Колку е прецизна вештачката интелигенција во вообичаените задачи
Ги анализира факторите на точност, реперните точки и сигурноста во реалниот свет.


Претходна обработка со вештачка интелигенција на едноставен јазик (и што не е) 🤝

Претпроцесирањето со вештачка интелигенција е трансформација на сурови влезни податоци (табели, текст, слики, логови) во функции подготвени за модел. Ако суровите податоци се неуредна гаража, препроцесирањето е означување на кутиите, фрлање скршен ѓубре и редење работи за да можете да поминете низ нив без повреда.

Не е самиот модел. Тоа се работите што го прават моделот можен:

  • претворање на категориите во броеви (еднократни, редни, итн.) [1]

  • скалирање на големи нумерички опсези во разумни опсези (стандардизација, мин.-макс. итн.) [1]

  • токенирање на текст во влезни идентификатори (и обично маска за внимание) [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]

  • ракување со отстапувања (правилата на доменот ги победуваат „случајните отсечоци“ поголемиот дел од времето)

  • изведени карактеристики (агрегации, заостанувања, статистики за движење)

Практичен совет: дефинирајте ги експлицитно групите на колони (нумерички наспроти категорични наспроти идентификатори). Вашето идно јас ќе ви биде благодарно.

Текстуални податоци (NLP) 📝

Претходната обработка на текст често вклучува:

  • токенизација во токени/подзборови

  • конверзија во влезни ID-а

  • дополнување/скратување

  • изработка на маски за внимание за сериско пакување [3]

Мало правило што заштедува мака: за поставки базирани на трансформатор, следете ги очекуваните поставки на токенизерот на моделот и не правете фристајл освен ако немате причина. Фристајлингот е начинот на кој завршувате со „тренира, но е чудно“

Слики (компјутерска визија) 🖼️

Типична претходна обработка:

  • менување на големината / сечење до конзистентни форми

  • детерминистички трансформации за евалуација

  • случајни трансформации за зголемување на обуката (на пр., случајно сечење) [4]

Еден детаљ што луѓето го пропуштаат: „случајните трансформации“ не се само вибрации - тие буквално земаат примероци од параметри секој пат кога ќе бидат повикани. Одлично за обука на разновидност, ужасно за евалуација ако заборавите да ја исклучите случајноста. [4]


Стапицата во која паѓаат сите: протекување на податоци 🕳️🐍

Протекување е кога информациите од податоците за евалуација се провлекуваат во обуката - честопати преку претходна обработка. Тоа може да го направи вашиот модел да изгледа магично за време на валидацијата, а потоа да ве разочара во реалниот свет.

Вообичаени модели на истекување:

  • скалирање со користење на статистика од целосен збир на податоци (наместо само обука) [2]

  • градење на мапи на категории користејќи воз+тест заедно [2]

  • кој било fit() или fit_transform() што го „гледа“ тест множеството [2]

Правило на палецот (едноставно, брутално, ефикасно):

  • Се што има соодветен чекор треба да биде соодветен само на тренинг.

  • Потоа трансформацијата користејќи го тој вграден трансформатор. [2]

И ако сакате „колку лошо може да биде?“ проверка на интуицијата: сопствените документи на scikit-learn покажуваат пример за истекување каде што неточниот редослед на претходна обработка дава точност од околу 0,76 на случајни цели - а потоа паѓа на ~ 0,5 откако ќе се поправи истекувањето. Толку убедливо може да изгледа погрешното истекување. [2]


Внесување на претходна обработка во производство без хаос 🏗️

Многу модели не успеваат во производството не затоа што моделот е „лош“, туку затоа што влезната реалност се менува - или вашиот цевковод се менува.

Претпроцесирањето насочено кон производството обично вклучува:

  • Зачувани артефакти (мапирање на кодерот, параметри на скалирање, конфигурација на токенизерот) така што инференцијата ги користи истите научени трансформации [2]

  • Строги влезни договори (очекувани колони/типови/опсези)

  • Мониторинг за асиметрија и отстапување , бидејќи податоците за производство ќе талкаат [5]

Ако сакате конкретни дефиниции: Vertex AI Model Monitoring на Google прави разлика помеѓу асиметријата на обучувањето (распределбата на производството отстапува од обуката) и отстапувањето од инференцијата (распределбата на производството се менува со текот на времето) и поддржува следење и за категорични и за нумерички карактеристики. [5]

Бидејќи изненадувањата се скапи. И тоа не од забавен вид.


Табела за споредба: вообичаени алатки за претходна обработка + следење (и за кого се наменети) 🧰

Алатка / библиотека Најдобро за Цена Зошто функционира (и малку искреност)
претходна обработка на scikit-learn Табеларни ML цевководи Бесплатно Солидни енкодери + скалери (OneHotEncoder, StandardScaler, итн.) и предвидливо однесување [1]
Токенизери за прегрнување на лице НЛП подготовка за влез Бесплатно Конзистентно произведува влезни ID-а + маски за внимание низ сите процеси/модели [3]
Torchvision трансформира Визуелна трансформација + зголемување Бесплатно Чист начин за мешање на детерминистички и случајни трансформации во еден цевковод [4]
Мониторинг на моделот со вештачка интелигенција на Vertex Детекција на отстапување/искривување во продуктот Платено (облак) Мониторите имаат функција за искривување/отстапување и известувања кога се надминати праговите [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: Токенизери (влезни ID-а, маски за внимание)
[4] Документација за PyTorch Torchvision: Трансформации (Промена на големина/Нормализација + случајни трансформации)
[5] Документација за Google Cloud Vertex AI: Преглед на мониторинг на моделот (аском и отстапување на функции)

Пронајдете ја најновата вештачка интелигенција во официјалната продавница за асистенти за вештачка интелигенција

За нас

Назад кон блогот