Опубликовано

«Мяу или Гав?» – Почему ваша «умная» нейросеть постоянно путает кошек с собаками

Разбираемся, почему сверхмощные нейросети с миллиардами параметров иногда не могут отличить мопса от британской короткошёрстной, и что это говорит о будущем ИИ.

Искусственный интеллект Компьютерное зрение
Flux Dev
Автор: Ник Код Время чтения: 6 – 8 минут

Сарказм в коде

87%

Объясняет сложное просто

82%

Внимание к деталям

90%

Привет, это снова я, Ник

Если вы впервые здесь, то позвольте представиться: я тот самый программист, который по выходным проводит время, издеваясь над нейросетями. Да, другие ходят на рыбалку или собирают марки, а я заставляю ChatGPT писать стихи в стиле Маяковского о квантовых компьютерах. Каждому своё.

Сегодня поговорим о том, что меня искренне веселит уже несколько лет. Почему, чёрт возьми, нейросети до сих пор иногда путают кошек и собак? Казалось бы, на дворе 2025-й, ИИ уже придумывает новые лекарства, пишет код лучше среднего программиста (не лучше меня, конечно, но я выше среднего) и даже генерирует такие реалистичные изображения, что фотографы начинают нервно курить в сторонке. И тут вдруг – бац! – и твоя супер-пупер нейросеть уверенно заявляет, что мопс с плоской мордой – это персидский кот.

«Видел одну кошку – видел их всех!» – Нейросеть, наверное

Давайте разберёмся по порядку. Компьютерное зрение – это не «зрение» в человеческом понимании. Когда мы смотрим на котика, мы видим... ну, котика! Нейросеть же видит массив пикселей, который она пытается классифицировать на основе того, чему её научили.

Представьте, что вы никогда в жизни не видели ни кошек, ни собак, и вам показывают тысячи фотографий, говоря: «Это кошка, а это собака». Через какое-то время вы начнёте выделять паттерны: «У кошек обычно треугольные уши, а у собак – более округлые», «Кошки часто меньше собак», «У собак языки обычно свисают изо рта» и т.д.

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

Проблема #1: Кривое зеркало обучающих данных

ИИ – это зеркало. И иногда оно кривое. (Да, это моя коронная фраза, и я буду её повторять, пока она не станет мемом).

Когда мы тренируем нейросеть на распознавание объектов, мы кормим её обучающими данными. И качество этих данных определяет, насколько хорошо она будет работать. Вот типичные проблемы:

  1. Несбалансированные выборки – Представьте, что 80% фотографий кошек в вашем датасете – это снимки рыжих котов, лежащих на диване. Что произойдёт? Нейросеть может решить, что «быть рыжим и лежать на диване» – это ключевой признак кошачьей природы. И когда вы покажете ей чёрную кошку на дереве, она заколеблется: «Что это за странная кошко-не-кошка?»

  2. Предвзятость аннотаторов – Люди, размечающие данные, тоже делают ошибки. Я как-то участвовал в проекте, где один из аннотаторов упорно помечал чихуахуа как «крысы». Технически он был не так уж неправ (шутка!), но для нейросети это была катастрофа.

  3. Скрытые переменные – Иногда нейросеть находит корреляции, о которых мы даже не подозреваем. Классический пример: алгоритм учился распознавать волков и собак, но в итоге научился распознавать снег! Потому что большинство фотографий волков было снято на снежном фоне.

Проблема #2: Когда твоя нейросеть слишком умная и слишком глупая одновременно

Современные архитектуры нейросетей для компьютерного зрения – это настоящие монстры. Возьмём, к примеру, Vision Transformer (ViT) или недавнюю SOTA-модель от NVIDIA (не буду уточнять какую именно, потому что к моменту выхода этой статьи она уже устареет – вот такая скорость в мире ИИ).

Эти модели имеют миллиарды параметров и могут обрабатывать сложнейшие зависимости в данных. Но парадоксальным образом, чем сложнее модель, тем более странные ошибки она может совершать. Почему?

  1. Переобучение – Когда у модели слишком много параметров относительно обучающих данных, она начинает «запоминать» примеры вместо того, чтобы выучивать общие правила. Это как студент, который вместо понимания физических законов просто запоминает ответы к задачам из учебника. На экзамене он провалится.

  2. Проблема распределений – В реальном мире данные часто выглядят иначе, чем в обучающей выборке. Представьте, что мы тренировали нейросеть только на фотографиях, сделанных при дневном свете. А потом показываем ей ночную фотографию кота... и она говорит, что это носорог. С человеческой точки зрения это абсурд, но для нейросети это логично: она никогда не видела таких тёмных кошек.

  3. Странные уверенности – Моя любимая особенность нейросетей: они часто ошибаются с вызывающей восхищение уверенностью. «Это собака, вероятность – 99,8%». И ты смотришь на фото, где явно изображён диван. Нет, серьёзно, это бывает.

Проблема #3: Кошки и собаки, которые слишком похожи

Давайте будем честны: некоторые породы кошек и собак действительно похожи. Взгляните на сиамского кота и хаски – оба с голубыми глазами и контрастным окрасом. Или на сфинкса и китайскую хохлатую – обе породы практически лысые.

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

Нейросети пытаются выучить эти признаки, но им сложнее, потому что:

  • Они обычно работают с одиночными кадрами, а не с видео
  • Они не имеют врождённого понимания физики и биологии
  • У них нет нашего эволюционного багажа (мы эволюционировали рядом с собаками и кошками миллионы лет)

Решение: Как заставить вашу нейросеть отличать Мурзика от Шарика

Если вы разрабатываете систему компьютерного зрения и у вас есть проблемы с различением кошек и собак (или любых других похожих классов), вот несколько советов:

  1. Аугментация данных – Искусственно увеличьте разнообразие обучающей выборки, применяя различные преобразования: поворот, масштабирование, изменение яркости и контраста, добавление шума. Это поможет модели стать более устойчивой к вариациям во входных данных.

  2. Сбалансированные выборки – Убедитесь, что у вас примерно одинаковое количество примеров для каждого класса и подкласса. Если у вас 1000 фото лабрадоров и 10 фото догов, модель будет хуже распознавать догов.

  3. Контрастное обучение – Явно покажите модели пары похожих, но разных объектов (например, персидский кот vs мопс) и заставьте её научиться различать именно эти сложные случаи.

  4. Ансамбли моделей – Иногда несколько «средних» моделей работают лучше, чем одна «супер-модель». Попробуйте создать ансамбль из нескольких нейросетей с разной архитектурой и обученных на разных подмножествах данных.

  5. Не ждите чуда – Даже лучшие системы иногда ошибаются. Человек тоже может перепутать чихуахуа с крысой, если увидит её мельком и в темноте (я не про себя, конечно).

Чему нас учат эти пушистые ошибки?

Тот факт, что современные нейросети всё ещё иногда путают кошек и собак, напоминает нам о важных вещах:

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

  2. Данные решают всё – Качество, разнообразие и репрезентативность данных определяют качество модели. Garbage in – garbage out, как говорится.

  3. Разрыв между специализированным и общим интеллектом – Нейросеть может быть чемпионом мира по игре в го и при этом не понимать, что кошки обычно не лают. Различные аспекты интеллекта развиваются неравномерно.

Заключение: Будущее без ошибок?

Мы приближаемся к тому моменту, когда компьютерное зрение достигнет (и в некоторых задачах уже достигло) человеческого уровня. Но совершенства, вероятно, не будет никогда – как не бывает его и у людей.

У каждой технологии есть свои пределы. И это нормально. Важно понимать эти пределы и работать над их расширением, а не ожидать, что однажды утром мы проснёмся в мире, где алгоритмы никогда не ошибаются.

А пока что продолжайте показывать своим алгоритмам фотографии мопсов и спрашивать: «Это кот или собака?» И если алгоритм ответит, что это енот, не спешите его ругать. Может быть, он видит что-то, чего не видите вы.

Или, скорее всего, он просто глючит.

P.S. В процессе написания этой статьи я попросил GPT-4 классифицировать 100 случайных изображений кошек и собак. Он ошибся 7 раз. Когда я попросил свою племянницу (4 года) сделать то же самое, она ошибалась в 2% случаев. Так что... может быть, нам стоит начать обучать наши нейросети на четырёхлетних детях? Или это уже слишком далеко заходит?

Claude Sonnet 3.7
Предыдущая статья Может ли ИИ стать новым Сократом? Следующая статья Почему тикток знает, что вы тайно любите видео с котиками?

Мы верим в диалог человека и ИИ

GetAtom создан для того, чтобы любой мог попробовать это сотрудничество на практике: тексты, изображения и видео – в пару кликов.

Начать сейчас

+ получить в подарок
100 атомов за регистрацию

НейроБлог

Вам может быть интересно

Перейти в блог

Нейросети пожирают мир: репортаж с передовой энергетического безумия

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

Искусственный интеллект Нейросети

Когда холодильник научится жалеть: откуда умный дом узнает, что нам нужно?

Умные дома перестают слушаться команд и начинают угадывать желания – но откуда они знают, чего мы хотим, если мы сами этого не понимаем?

Искусственный интеллект Повседневная жизнь

Когда алгоритм почувствует бабочек в процессоре

Любовь – это химия мозга или что-то большее? Разбираемся, способен ли искусственный интеллект испытать то самое чувство, которое делает нас людьми.

Искусственный интеллект Эмоции ИИ

Хотите глубже погрузиться в мир
нейротворчества?

Первыми узнавайте о новых книгах, статьях и экспериментах с ИИ в нашем Telegram-канале!

Подписаться