Введение в системы нейросетей: где ошибается не модель
Введение в системы нейросетей через учебный классификатор: вход, подготовка данных, модель, выдача ответа и контроль. Как найти сбой, не меняя веса вслепую.
Андрей
Преподаватель, научный редактор
6 мин чтения
На белом столе лежит прозрачная бутылка. Классификатор относит её к пластику. На тёмном столе лежит та же бутылка, снятая другим телефоном, и ответ уже «стекло». В учебном разборе хочется немедленно переобучить нейросеть. Я прошу сначала начертить весь путь снимка: ошибка могла появиться раньше модели или после неё. Введение в системы нейросетей начинается именно с этого пути, а не с перечня видов слоёв.
Начертим путь для учебного приложения сортировки отходов: от камеры до подписи класса. Пять узлов помогут найти место сбоя до решения о переобучении. На каждом шаге важен свой вопрос к данным.
Что входит в систему кроме самой нейросети?
Модель получает подготовленные числа и выдаёт прогноз. Пользователь же подносит телефон, снимает предмет и ждёт понятного решения. Между этими двумя моментами много работы. Курс Google о производственных ML-системах показывает вокруг кода модели сбор и проверку данных, подготовку признаков, инфраструктуру выдачи и мониторинг. Это хорошая карта для вводной темы: она показывает, что исправлять при ошибке надо не обязательно веса сети.
Для учебного классификатора я рисую такой маршрут:
Узел · Что происходит с бутылкой · Что проверять при ошибке
Вход — Камера делает снимок — Виден ли предмет целиком, не закрывает ли его рука?
Подготовка — Приложение обрезает и уменьшает фото — Не исчезла ли этикетка, не исказился ли цвет?
Модель — Нейросеть оценивает классы — Какие классы вообще учили различать и на каких примерах?
Выдача — Приложение показывает «пластик» — Не перепутан ли код класса с надписью для человека?
Контроль — Спорные ответы сверяют с правильной сортировкой — В каких условиях ошибок стало больше?
Пять строк не заменяют инженерную схему. Например, хранение фото, выбор версии модели и разрешение на отправку изображения тоже важны. Но для первой беседы этих строк достаточно: студент может указать место предполагаемого сбоя, а не отвечать на любую жалобу одним словом «нейросеть».
Почему новая камера меняет ответ без изменения модели?
На первом снимке предмет занимает почти весь кадр. На втором — полка, тень и яркая наклейка занимают больше места, чем бутылка. Если приложение автоматически обрезает центр, оно может передать модели наклейку и фон. Веса сети остались прежними, но вход стал другим. Первым действием будет открыть фактический кадр после обрезки. Если бутылка выпала из него, переобучение модели не решит причину.
Допустим, обрезка хорошая: бутылка целиком видна, а ответы всё равно расходятся. Тогда я смотрю, были ли в обучающих примерах похожие условия — тёмный фон, блики, эта модель телефона. Смена условий съёмки способна изменить распределение входных данных. В разделе Google о мониторинге отдельно советуют сравнивать данные обучения и применения, а также проверять качество по важным группам случаев. Для нашего учебного примера группа «тёмный фон» полезнее одного общего числа точности.
Есть и третья возможность: модель выдала правильный код класса, но приложение подписало его неверно. Если коду «1» соответствует пластик в обучении и стекло в интерфейсе, новые фотографии ничего не исправят. Нужно сверить таблицу соответствия классов. Это скучная проверка, зато она отделяет ошибку экрана от ошибки распознавания.
Я предлагаю студенту пройти три вопроса в порядке движения снимка:
Что модель реально увидела? Покажи кадр после всех преобразований, а не только исходную фотографию.
На чём её проверяли? Найди примеры с той же камерой, освещением и типом предмета; посмотри ошибки отдельно для этой группы.
Что получил человек? Сверь числовой класс модели с текстом и советом на экране.
Если пропустить первый вопрос, можно неделями улучшать модель, которой постоянно дают обрезанный объект. Если пропустить третий, можно объявить «плохой ИИ», хотя ошибка в обычной строке кода. Нейросетевая система сильна только настолько, насколько согласованы её части.
Когда действительно нужно менять модель?
После проверки входа и подписи может выясниться, что сеть не отличает прозрачный пластик от стекла даже на ясных снимках, похожих на обучающие. Тогда проблема ближе к данным и модели. Я бы собрал проверочный набор с правильными ответами, в котором есть оба материала, разные фоны и несколько видов тары. Сначала посмотрел бы, какие ошибки повторяются. Лишь потом решал бы, что менять: новые примеры обучения, постановку классов или архитектуру.
В учебном задании можно сделать это на бумаге. Возьми шесть карточек: пластиковая и стеклянная бутылки на светлом, тёмном и пёстром фоне. Укажи, где каждую фотографию сделают, как её обрежут и какой результат будет считаться правильным. Не приписывай карточкам выдуманные проценты точности. Их задача — показать пропущенные условия, которые придётся измерить, когда появятся реальные снимки.
Когда проверяю такую схему, я прошу рядом с ней положить три вещи:
исходный снимок, чтобы видеть реальный предмет и фон;
снимок после подготовки, чтобы заметить потерянный край или этикетку;
запись ответа приложения, чтобы сверить код модели и подпись человеку.
Первые два изображения показывают, что вошло в сеть. Третья запись показывает, что увидел пользователь. Между ними и ищем разрыв. Без этой тройки разговор быстро сводится к догадкам о том, «умна» ли модель.
Это упражнение обычно меняет формулировку проекта. «Сделать нейросеть, которая узнаёт бутылки» превращается в проверяемую задачу: «По фотографии одной тары при указанном освещении различать пластик и стекло, а сомнительные случаи передавать человеку». Последнюю часть часто забывают. Между двумя неверными ответами лучше иметь третий — «не удалось определить, проверь вручную». Порог для него выбирают по реальным ошибкам, а не из красивого числа в презентации.
Как разобрать свою схему с текстовым чатом?
Если на листе уже есть путь данных, LibraChat можно использовать как собеседника для ревизии схемы. Он не запускает учебный классификатор из этого примера и не измеряет его качество. Ниже запрос, который можно отправить, а не описание якобы полученного мной ответа:
Я проектирую учебную систему, которая по фото различает пластиковую и стеклянную бутылку. Моя схема: камера → обрезка → модель → подпись класса → проверка ошибок. Для каждого узла назови один возможный сбой, способ его заметить и действие для исправления. Не придумывай результаты тестов и проценты точности. Отдельно спроси, каких данных не хватает для оценки на тёмном фоне.
Ответ чата пригодится как список вопросов к проекту. Правильность устройства системы придётся проверить по исходным данным и своему заданию: чат не видел настоящие фото и не знает, какие ограничения заданы преподавателем. При регулярной работе с проектом можно заранее посмотреть варианты доступа.
В лекционных конспектах часто рядом стоят «свёрточная сеть», «обучение с учителем» и «классификация». Эти понятия я разобрал в карте лекций о нейросетевых системах. Здесь вопрос другой: как фотография проходит через готовое приложение и где можно заметить неверный ответ.
Прямо сейчас начерти пять узлов для собственной задачи. Рядом с каждым подпиши, какой предмет или файл он получает и что передаёт дальше. Затем нарочно измени одно условие входа — камеру, формат файла или освещение. На каком узле ты первым заметишь изменение? Если можешь ответить и предложить проверку, введение в системы нейросетей уже стало рабочей картой, а не списком терминов.