Что такое предварительная обработка данных в ИИ?

Что такое предварительная обработка данных в ИИ?

Краткий ответ: предварительная обработка данных для ИИ — это набор повторяющихся шагов, которые преобразуют необработанные данные с высокой степенью вариативности в согласованные входные данные для модели, включая очистку, кодирование, масштабирование, токенизацию и преобразование изображений. Это важно, потому что если входные данные для обучения и данные для производства различаются, модели могут незаметно давать сбои. Если на каком-либо шаге происходит «обучение» параметрам, обучайте модель только на обучающих данных, чтобы избежать утечек информации.

Предварительная обработка данных в ИИ — это все действия, которые вы выполняете с исходными данными до (а иногда и во время) обучения или вывода, чтобы модель могла действительно учиться на них. Это не просто «очистка». Это очистка, формирование, масштабирование, кодирование, расширение и упаковка данных в согласованное представление, которое не вызовет сбоев в работе вашей модели позже. [1]

Основные выводы:

Определение : Предварительная обработка преобразует исходные таблицы, текст, изображения и журналы в готовые к использованию в модели признаки.

Последовательность : Применяйте одни и те же преобразования во время обучения и вывода, чтобы предотвратить ошибки, связанные с несоответствием.

Утечка : Обучайте масштабирующие алгоритмы, кодировщики и токенизаторы только на обучающих данных.

Воспроизводимость : Создавайте конвейеры обработки данных с возможностью проверки статистики, а не с помощью произвольных последовательностей ячеек в блокнотах.

Мониторинг производства : отслеживание асимметрии и дрейфа, чтобы входные параметры не приводили к постепенному снижению производительности.

Статьи, которые могут вас заинтересовать после этой:

🔗 Как тестировать модели ИИ на предмет их реальной производительности
Практические методы для быстрой оценки точности, устойчивости и смещения.

🔗 Что такое ИИ для преобразования текста в речь и как он работает?
В этом разделе объясняются основы преобразования текста в речь, ключевые области применения и распространенные ограничения на сегодняшний день.

🔗 Может ли искусственный интеллект сегодня точно считывать рукописный текст?
Рассматриваются проблемы распознавания, лучшие инструменты и советы по повышению точности.

🔗 Насколько точен ИИ при решении типичных задач?
Анализируются факторы точности, контрольные показатели и реальная надежность.


Предварительная обработка данных для ИИ простым языком (и чем она не является) 🤝

Предварительная обработка данных для ИИ — это преобразование исходных данных (таблиц, текста, изображений, логов) в готовые к использованию признаки для построения модели. Если исходные данные — это беспорядок в гараже, то предварительная обработка — это когда вы маркируете коробки, выбрасываете сломанный хлам и складываете вещи так, чтобы можно было спокойно пройти по гаражу, не получив травм.

Дело не в самой модели. Дело в том, что делает эту модель возможной:

  • преобразование категорий в числа (one-hot, порядковые и т. д.) [1]

  • масштабирование больших числовых диапазонов до разумных диапазонов (стандартизация, минимум-максимум и т. д.) [1]

  • токенизация текста в идентификаторы входных данных (и обычно маску внимания) [3]

  • изменение размера/кадрирование изображений и применение детерминированных или случайных преобразований соответствующим образом [4]

  • создание повторяемых конвейеров, чтобы обучение и «реальные» входные данные не расходились в незначительных деталях [2]

Небольшое практическое замечание: «предварительная обработка» включает в себя все, что происходит постоянно до того, как модель увидит входные данные . Некоторые команды разделяют это на «разработку признаков» и «очистку данных», но в реальной жизни эти границы размываются.

 

Предварительная обработка данных ИИ

Почему предварительная обработка данных в ИИ важнее, чем многие признают 😬

Модель — это программа для сопоставления шаблонов, а не для чтения мыслей. Если ваши входные данные противоречивы, модель изучает противоречивые правила. Это не философский рассуждения, а до боли буквальный подход.

Предварительная обработка поможет вам:

  • Повышение стабильности обучения путем размещения признаков в представлениях, которые оценщики могут надежно использовать (особенно при масштабировании/кодировании). [1]

  • Уменьшите шум , представив хаотичную реальность в виде чего-то, на основе чего модель может делать обобщения (вместо запоминания странных артефактов).

  • Предотвратите скрытые сбои, такие как утечки и несоответствия между обучающей и сервисной версиями (те, которые выглядят «потрясающе» при валидации, а затем терпят крах в производственной среде). [2]

  • Ускорьте итерации, потому что повторяющиеся преобразования всегда лучше, чем запутанный код в блокноте.

Кроме того, именно здесь в значительной степени и проявляется «эффективность модели». Удивительно, но это так. Иногда это кажется несправедливым, но такова реальность 🙃


Что делает конвейер предварительной обработки данных для ИИ хорошим ✅

«Хорошая версия» предварительной обработки обычно обладает следующими качествами:

  • Воспроизводимость : одинаковые входные данные → одинаковые выходные данные (отсутствие случайности, если только это не преднамеренное усиление).

  • Согласованность обслуживания обучающей выборки : все, что вы делаете во время обучения, применяется одинаково и во время вывода (те же подобранные параметры, те же карты категорий, та же конфигурация токенизатора и т. д.). [2]

  • Защита от утечек : ничто в процессе оценки/тестирования не влияет на подгонки . (Подробнее об этой ловушке чуть позже.) [2]

  • Наблюдаемость : вы можете проверить, что изменилось (статистика функций, пропущенные данные, количество категорий), поэтому отладка не сводится к проектированию на основе субъективных ощущений.

Если ваша предварительная обработка представляет собой кучу ячеек блокнота под названием final_v7_really_final_ok … вы понимаете, о чём я. Она работает, пока не перестанет работать 😬


Основные составляющие предварительной обработки данных в ИИ 🧱

Предварительная обработка данных — это набор строительных блоков, которые вы объединяете в конвейер обработки.

1) Очистка и проверка 🧼

Типичные задачи:

  • удалить дубликаты

  • Обработка пропущенных значений (удаление, заполнение пропущенных значений или явное представление пропущенных значений)

  • обеспечивать соблюдение типов, единиц измерения и диапазонов

  • обнаружение некорректных входных данных

  • Стандартизация форматов текста (пробелы, правила регистра, особенности Unicode)

Эта часть не отличается особой привлекательностью, но она предотвращает крайне глупые ошибки. И я говорю это с любовью.

2) Кодирование категориальных данных 🔤

Большинство моделей не могут напрямую использовать необработанные строки, такие как "red" или "premium_user" .

Распространенные подходы:

  • Однократное кодирование (категория → бинарные столбцы) [1]

  • Порядковое кодирование (категория → целочисленный идентификатор) [1]

Главное не в том, какой кодировщик вы выберете, а в том, чтобы отображение оставалось согласованным и не «меняло форму» между обучением и выводом. Именно так вы получаете модель, которая хорошо выглядит в автономном режиме, но ведет себя странно в онлайн-режиме. [2]

3) Масштабирование и нормализация признаков 📏

Масштабирование имеет значение, когда параметры находятся в совершенно разных диапазонах.

Два классических произведения:

  • Стандартизация : удалить среднее значение и масштабировать до единичной дисперсии [1]

  • Масштабирование по принципу «минимум-максимум» : масштабирование каждого признака в заданный диапазон [1]

Даже при использовании моделей, которые «в основном справляются», масштабирование часто упрощает понимание конвейеров обработки данных и снижает вероятность случайных сбоев.

4) Разработка новых функций (иначе говоря, полезный обман) 🧪

Здесь вы упрощаете работу модели, создавая более качественные сигналы:

  • Соотношения (клики / показы)

  • Скользящие окна (за последние N дней)

  • количество событий на пользователя

  • логарифмические преобразования для распределений с тяжелыми хвостами

Здесь есть своё искусство. Иногда ты создаёшь функцию, гордишься ею… а она ничего не даёт. Или, что ещё хуже, причиняет боль. Это нормально. Не привязывайся эмоционально к функциям — они тебя не любят 😅

5) Правильное разделение данных ✂️

Это кажется очевидным, пока не перестаёт быть таковым:

  • случайное разбиение для независимых и одинаково распределенных данных

  • Разбиение временных рядов по времени

  • Разделение на группы происходит при повторении сущностей (пользователи, устройства, пациенты)

И что особенно важно: разделяйте данные перед обучением предварительной обработки, которая обучается на основе данных . Если ваш этап предварительной обработки «обучает» параметры (например, средние значения, словари, карты категорий), он должен обучаться им только на основе обучения. [2]


Предварительная обработка данных с помощью ИИ по типу данных: табличные, текстовые, изображения 🎛️

Процесс предварительной обработки меняется в зависимости от того, какие данные вы передаете модели.

Табличные данные (электронные таблицы, журналы, базы данных) 📊

Общие шаги:

  • стратегия с недостающим значением

  • категориальное кодирование [1]

  • масштабирование числовых столбцов [1]

  • Обработка выбросов (правила предметной области в большинстве случаев превосходят «случайное отсечение»)

  • производные характеристики (агрегированные данные, задержки, скользящая статистика)

Практический совет: явно определяйте группы столбцов (числовые, категориальные или идентификаторы). В будущем вы сами себе скажете спасибо.

Текстовые данные (обработка естественного языка) 📝

Предварительная обработка текста часто включает в себя:

  • токенизация на токены/подслова

  • преобразование в идентификаторы ввода

  • отступы/усечение

  • создание масок внимания для пакетной обработки [3]

Небольшое правило, которое избавит от проблем: при использовании трансформеров следуйте ожидаемым настройкам токенизатора модели и не импровизируйте, если на то нет причины. Импровизация приводит к результату «модель обучается, но работает странно»

Изображения (компьютерное зрение) 🖼️

Типичная предварительная обработка:

  • Изменить размер/обрезать до единообразных форм

  • детерминированные преобразования для оценки

  • случайные преобразования для расширения обучающей выборки (например, случайная обрезка) [4]

Одна деталь, которую упускают из виду: «случайные преобразования» — это не просто эффект, они буквально выбирают параметры каждый раз, когда вызываются. Отлично подходит для разнообразия обучения, но ужасно для оценки, если вы забудете отключить случайность. [4]


Ловушка, в которую попадают все: утечка данных 🕳️🐍

Утечка информации — это когда данные оценочного теста проникают в обучающую выборку, часто через предварительную обработку. Это может создать впечатление, что ваша модель работает безупречно во время валидации, а затем разочаровать вас в реальном мире.

Типичные схемы утечек:

  • масштабирование с использованием статистики полного набора данных (вместо только обучающей выборки) [2]

  • построение карт категорий с использованием обучающей и тестовой выборок [2]

  • любой fit() или fit_transform() , который «видит» тестовый набор [2]

Простое, жесткое и эффективное эмпирическое правило:

  • Любой предмет с регулируемой высотой должен быть пригоден для использования только на тренировках.

  • Затем вы преобразуете проверку/тест, используя этот подобранный трансформер. [2]

А если вы хотите проверить, насколько всё плохо, то вот вам пример утечки, где неправильный порядок предварительной обработки приводит к точности около 0,76 на случайных целевых значениях, а затем падает до ~ 0,5 после исправления утечки. Вот насколько убедительно может выглядеть неправильная утечка. [2]


Внедрение предварительной обработки в производство без хаоса 🏗️

Многие модели терпят неудачу в производственной среде не потому, что модель «плохая», а потому, что входные данные или ваш конвейер обработки данных.

Предварительная обработка данных, ориентированная на производство, обычно включает в себя:

  • Сохраненные артефакты (сопоставления кодировщика, параметры масштабирования, конфигурация токенизатора), чтобы при выводе использовались те же самые изученные преобразования [2]

  • Строгие входные контракты (ожидаемые столбцы/типы/диапазоны)

  • Мониторинг асимметрии и дрейфа , поскольку производственные данные будут смещаться [5]

Если вам нужны конкретные определения: система мониторинга моделей Vertex AI от Google различает асимметрию, возникающую при обучении (распределение результатов отклоняется от обучения), и дрейф результатов (распределение результатов меняется со временем), а также поддерживает мониторинг как для категориальных, так и для числовых признаков. [5]

Потому что сюрпризы обходятся дорого. И не те, которые приносят удовольствие.


Сравнительная таблица: распространенные инструменты предварительной обработки и мониторинга (и для кого они предназначены) 🧰

Инструмент / библиотека Лучше всего подходит для Цена Почему это работает (и немного честности)
предварительная обработка scikit-learn Табличные конвейеры машинного обучения Бесплатно Надежные энкодеры + масштабаторы (OneHotEncoder, StandardScaler и т. д.) и предсказуемое поведение [1]
Токенизаторы Hugging Face подготовка входных данных для НЛП Бесплатно Создает входные идентификаторы + маски внимания согласованно во всех запусках/моделях [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]

А если вы когда-нибудь застрянете, спросите себя:
«Имеет ли смысл этот этап предварительной обработки, если я запущу его завтра на совершенно новых данных?»
Если ответ «эээ… может быть?», это и есть подсказка 😬


Часто задаваемые вопросы

Что такое предварительная обработка данных в ИИ, если говорить простыми словами?

Предварительная обработка данных для ИИ — это повторяющийся набор шагов, который преобразует зашумленные, высокодисперсные исходные данные в согласованные входные данные, на основе которых модель может обучаться. Она может включать очистку, проверку, кодирование категорий, масштабирование числовых значений, токенизацию текста и применение преобразований изображений. Цель состоит в том, чтобы обеспечить обработку «одинакового типа» входных данных как для обучения, так и для вывода в рабочую среду, чтобы модель не начала вести себя непредсказуемо в дальнейшем.

Почему предварительная обработка данных в ИИ имеет такое большое значение в производстве?

Предварительная обработка данных важна, поскольку модели чувствительны к представлению входных данных. Если обучающие данные масштабируются, кодируются, токенизируются или преобразуются иначе, чем данные для производственной среды, могут возникать ошибки несоответствия между обучающей и рабочей версиями, которые выглядят нормально в автономном режиме, но незаметно приводят к сбоям в онлайн-режиме. Эффективные конвейеры предварительной обработки также снижают уровень шума, повышают стабильность обучения и ускоряют итерации, поскольку вам не приходится разбираться с запутанными данными в блокнотах.

Как избежать утечки данных при предварительной обработке?

Простое правило работает: любой алгоритм с обучения должен быть обучен только на обучающих данных. Это включает в себя масштабирующие алгоритмы, кодировщики и токенизаторы, которые обучаются таким параметрам, как средние значения, карты категорий или словари. Сначала выполняется разделение данных, обучение на обучающей выборке, а затем преобразование данных для валидации/тестирования с помощью обученного трансформера. Утечка данных может создать впечатление «волшебного» результата валидации, который затем может оказаться неэффективным в производственной среде.

Какие этапы предварительной обработки табличных данных встречаются чаще всего?

Для табличных данных стандартный конвейер обработки включает очистку и проверку (типы, диапазоны, пропущенные значения), категориальное кодирование (one-hot или порядковое) и числовое масштабирование (стандартизация или min-max). Многие конвейеры добавляют проектирование признаков, ориентированное на предметную область, например, соотношения, скользящие окна или подсчеты. Практическая рекомендация — явно определять группы столбцов (числовые, категориальные или идентификаторы), чтобы преобразования оставались согласованными.

Как работает предварительная обработка текстовых моделей?

Предварительная обработка текста обычно включает токенизацию на токены/подслова, преобразование их во входные идентификаторы и обработку заполнения/усечения для пакетной обработки. Многие рабочие процессы с использованием трансформеров также создают маску внимания вместе с идентификаторами. Распространенный подход заключается в использовании ожидаемой конфигурации токенизатора модели, а не в импровизации, поскольку небольшие различия в настройках токенизатора могут привести к результатам типа «модель обучается, но ведет себя непредсказуемо».

В чём отличие предварительной обработки изображений для машинного обучения?

Предварительная обработка изображений обычно обеспечивает согласованность форм и обработки пикселей: изменение размера/кадрирование, нормализация и четкое разделение между детерминированными и случайными преобразованиями. Для оценки преобразования должны быть детерминированными, чтобы метрики были сопоставимы. Для обучения случайное увеличение (например, случайное кадрирование) может повысить устойчивость, но случайность должна быть намеренно ограничена обучающей выборкой, а не случайно оставлена ​​включенной во время оценки.

Что делает конвейер предварительной обработки «хорошим», а не ненадежным?

Хороший конвейер предварительной обработки данных для ИИ должен быть воспроизводимым, защищенным от утечек памяти и наблюдаемым. Воспроизводимость означает, что одни и те же входные данные дают одинаковые выходные данные, если только случайность не является преднамеренным дополнением. Защита от утечек памяти означает, что этапы обучения никогда не затрагивают этапы валидации/тестирования. Наблюдаемость означает, что вы можете проверять статистику, такую ​​как количество пропущенных данных, количество категорий и распределение признаков, поэтому отладка основывается на фактах, а не на интуиции. Конвейеры всегда превосходят произвольные последовательности блокнотов.

Как обеспечить согласованность предварительной обработки данных для обучения и вывода результатов?

Ключевым моментом является повторное использование одних и тех же изученных артефактов во время вывода: параметров масштабирования, сопоставлений кодировщика и конфигураций токенизатора. Также необходим контракт на входные данные (ожидаемые столбцы, типы и диапазоны), чтобы производственные данные не могли незаметно изменить свою форму на недопустимую. Последовательность — это не просто «выполнить одни и те же шаги», а «выполнить одни и те же шаги с одними и теми же подобранными параметрами и сопоставлениями»

Как отслеживать проблемы предварительной обработки, такие как дрейф и искажение, с течением времени?

Даже при наличии надежного конвейера обработки данных, производственные данные меняются. Распространенный подход заключается в мониторинге изменений распределения признаков и оповещении о несоответствии между обучающей и производственной средой (отклонение производственных данных от обучающих) и дрейфе вывода (изменения производственных данных с течением времени). Мониторинг может быть упрощенным (базовые проверки распределения) или управляемым (например, мониторинг моделей Vertex AI). Цель состоит в том, чтобы выявлять изменения входных данных на ранней стадии — до того, как они начнут постепенно ухудшать производительность модели.

Ссылки

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

Найдите новейшие разработки в области ИИ в официальном магазине ИИ-помощников

О нас

Вернуться в блог