Подробные статьи о технологиях, определяющих будущее.

CNN против LLM: классификация изображений на практике

10-летняя CNN обыграла топовые LLM в классификации снимков кожи. Разбираем, когда брать узкую специализированную модель, а когда LLM.

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

Дерматолог недавно показал 200 гистологически подтверждённых поражений кожи двум топовым LLM и дообученной копии Inception v3, свёрточной сети, которую Google опубликовал десять лет назад. CNN правильно поставила диагноз в 62% случаев, каждая из LLM в 42%. По меланоме, той самой ошибке, которую меньше всего хочется допустить, старая сеть тоже выиграла. Если вы занимаетесь классификацией изображений в любом масштабе, этот результат стоит учесть при выборе между специализированной моделью и LLM, потому что дело здесь не столько в медицине. Это история о том, как выбрать правильный инструмент.

Проблема: классификация выглядит простой для LLM, но таковой не является

Вот ловушка, в которую снова и снова попадают умные инженеры. Топовые модели пишут код, суммируют договоры и сдают экзамены на юриста, поэтому предположение, что они не могут посмотреть на фото и выбрать одну из шести меток, кажется почти оскорбительным. Классификация это «hello world» машинного обучения. Уж большие модели с ней точно справятся.

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

Результаты по раку кожи показывают это наглядно и неприятно. Одна LLM поставила базальноклеточную карциному 75 раз из 200 поражений, хотя на самом деле таких было 25, в том числе 14 из 30 меланом. Вторая пристрастилась к актиническому кератозу: ставила его 53 раза при 20 реальных случаях. Это не случайные ошибки. Это почерк модели, которая много читала о дерматологии, видела всё, что попадало в веб-масштабные обучающие данные, и подбирает наиболее правдоподобный ответ вместо того, чтобы его вычислять.

Модель, которая прочитала все учебники, это не то же самое, что модель, которая видела 68 000 размеченных примеров именно того, о чём вы её спрашиваете.

Первая неудачная попытка: просто спросить топовую модель

Самый естественный первый шаг тот, который попробовал дерматолог: дать LLM снимки, попросить диагноз, оценку уверенности и второй вариант. Тест честный, так и клиницист пользовался бы этими инструментами. А провалы поучительны.

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

Во-вторых, ошибки не консервативны. Каждый запуск происходит один раз, и ответы меняются от запуска к запуску, что критично для всего, что вы хотите поставить в пайплайн. Специализированный классификатор выдаёт одинаковые логиты для одного и того же входа каждый раз, а LLM отдаёт выборку из распределения ответов. Для инструмента поддержки решений недетерминированность это проблема, а не особенность.

В-третьих, и это самое тонкое: LLM отлично справились с соседней задачей. Если спрашивать их от лица пациента: «Нужно ли мне идти к врачу?», они ответили «да» на 98–99 из 100 гистологически подтверждённых меланом и почти на каждое безобидное поражение тоже. Так ведёт себя модель, обученная на текстах о медицине: лучше перестраховаться и направить к врачу. Полезно для чат-бота на первичном скрининге. Бесполезно для различения, а это и есть настоящая задача.

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

Здесь есть более глубокий провал, которого в самом эксперименте нет: предположение, что масштаб заменяет соответствие задаче. У топовой LLM, по консервативной оценке, в тысячи раз больше параметров, чем у ~24 миллионов Inception v3. Ни одна доля этой ёмкости не выделена на то, чтобы на уровне пикселей отличить себорейный кератоз от плоскоклеточного рака. Для модели дерматология это капля в океане обучающих данных, а дерматоскопические снимки, на которых держится большая часть диагностического сигнала, встречаются ещё реже.

Та же причина объясняет, почему сеть с 30 миллионами параметров для игры в го с огромным отрывом побеждает любую LLM. Именно поэтому бенчмарки снова и снова вводят команды в заблуждение относительно того, где LLM реально помогают в продакшене. Об этом мы писали, разбирая почему AI-бенчмарки не отражают большую часть реальной работы. Способность в модальном смысле («модель иногда может это сделать») не то же самое, что способность в инженерном смысле («модель делает это достаточно надёжно, чтобы строить на этом»).

В обсуждении этого эксперимента есть полезная эвристика: топовая LLM, скорее всего, действительно хороша в задаче, если эта задача массово представлена в предобучении (код, повседневный английский) или если её специально дообучали с подкреплением. В остальных случаях ждите уровня смышлёного генералиста, который прочитал несколько книг и при этом уверен в себе. Визуальная диагностика редких состояний находится именно во второй категории.

Что работает на самом деле: небольшая модель, дообученная на точном распределении

А теперь часть, которая должна смутить тех, кто думает, что специализированные модели требуют исследовательской лаборатории. Победившая CNN не была state of the art. Это была Inception v3, базовая архитектура, предобученная на обычных фотографиях, а затем дообученная целиком на 68 011 дерматологических снимках из публичного архива, на одной H100, примерно за двадцать минут. Все фото тестовых поражений и их пациентов тщательно удалили из обучающих данных. Результат работает в браузере телефона через WebGPU и ничего никуда не загружает.

Двадцать минут на одной GPU. Сравните со стоимостью прогона топовой мультимодальной модели по вашему корпусу изображений в продакшен-объёмах, за каждое изображение, навсегда. Специализированная модель не просто точнее: она дешевле на порядки, детерминирована, поддаётся аудиту и достаточно мала, чтобы выкатить её на edge-устройства. Если вашу задачу можно описать как N меток над стабильным распределением входных данных и у вас есть (или можно получить) размеченные данные, дообученный классификатор выигрывает почти по всем осям, которые важны в продакшене.

Иллюстрация: маленький чип нейросети в смартфоне заменяет удалённый дата-центр
Дообученный классификатор, достаточно маленький, чтобы работать в браузере телефона, обыграл две топовые модели и почти ничего не стоит за инференс.

Современная версия этого подхода не требует даже старой CNN. Небольшие vision transformer, модели эмбеддингов вроде медицинских энкодеров изображений от Google или дообученная голова поверх предобученного бэкбона позволят уйти дальше. Дело не в ностальгии по Inception v3. Архитектура 2015 года уже достаточна, чтобы обыграть модели с вычислениями на четыре порядка больше, и это показывает, где на самом деле узкое место. Важно соответствие задаче, а не размер сети.

# The specialist path in miniature: a frozen backbone + a small head
import torch
import torch.nn as nn
from torchvision import models
# A decade-old backbone is fine. Seriously.
backbone = models.inception_v3(weights="IMAGENET1K_V1")
in_features = backbone.fc.in_features
backbone.fc = nn.Linear(in_features, 6)  # your six labels
# Fine-tune everything on your labelled domain images.
# On one H100, tens of thousands of images: tens of minutes.
optimizer = torch.optim.AdamW(backbone.parameters(), lr=1e-4)
loss_fn = nn.CrossEntropyLoss()  # a *calibrated* probability lives here

А если пространство меток фиксировано, но вы хотите оставить LLM в цепочке для окружающего workflow, честный способ сделать это ограничить её выход решением, а не доверять её прозе. Та же логика стоит за constrained decoding для превращения LLM в модели решений. Но для самой классификации обученная голова всё равно выигрывает.

Фреймворк для решения: когда выигрывает специализированная модель, а когда LLM

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

  1. Фиксировано ли и мало ли пространство меток? Если можно перечислить ответы, форма классификатора почти всегда правильная. LLM окупаются там, где пространство выходов открыто: саммари, объяснения, диалог, код.
  2. Стабильно ли распределение входных данных? Модель, дообученная на дерматоскопии, отлично работает на дерматоскопии и теряется на фото с татуировкой, линейкой и чашкой кофе. Если входы дикие, устойчивость генералиста имеет реальную ценность.
  3. Есть ли у вас размеченные данные или можете ли вы их получить? Это главная развилка. С 10 тысячами и более размеченных примеров дообучение почти бесплатно и будет доминировать. Без данных zero-shot-догадка LLM может быть лучшей отправной точкой, но используйте её как инструмент для разметки, а не как продакшен-ответ.
  4. Какова цена ошибки и нужна ли калибровка? Решения высокой ставки с порогами требуют настоящих вероятностей и детерминированных выходов. Это исключает обычные вызовы LLM, точка.

Прогоним через него кейс с раком кожи: фиксированное пространство из шести меток, стабильный клинический пайплайн изображений, 68 тысяч размеченных публичных снимков, ошибки, от которых зависит жизнь. Четыре из четырёх. У LLM не было ни единого шанса, и удивляет не то, что она проиграла, а то, что кто-то ожидал другого.

Честные оговорки, потому что прагматизм работает в обе стороны

Я бы оказал вам медвежью услугу, если бы остановился на «маленькие модели побеждают». Сильные стороны дообученного классификатора одновременно являются его хрупкостью. Его сравнивали с не дообученным генералистом на данных из того же распределения, на котором он учился. Выведите его в дикую природу: другие камеры, недопредставленные в архиве типы кожи, снимки с перекрытиями или пометками, и качество деградирует так, как широкое обучение LLM иногда переносит лучше. Генералист ошибается предсказуемо внутри распределения; специалист ломается катастрофически за его пределами.

Есть и задача, с которой классификатор вообще не справляется: остальная медицина. Самый интересный вторичный результат того же эксперимента в том, что LLM, получив записи из журналов, историю пациента и возможность задавать вопросы, правдоподобно помогали с интерпретацией, коммуникацией и ведением, то есть всем, что следует за меткой. CNN выдаёт шесть логитов. Она никогда не объяснит свои рассуждения встревоженному пациенту и не заметит, что направление противоречит снимку.

И обратите внимание на честность самого исследования: современный дерматологический AI это не одинокая Inception v3, а ансамбли vision transformer, обученных на гораздо большем объёме данных, и регулируемые продукты, построенные так, работают заметно лучше. Направление развития в области более крупные специализированные модели, а не генералисты, что подтверждает мысль, а не опровергает её.

Главный вывод: LLM нужны, чтобы построить классификатор, а не чтобы им быть

Мастер использует большой универсальный инструмент, чтобы создать маленький точный прибор
Лучшее применение универсальной модели это построить специализированную, которая и выполняет работу.

Самое острое наблюдение из всей истории, к которому я постоянно возвращаюсь: LLM сделали стоимость создания выделенных классификаторов близкой к нулю. Написать скрипт дообучения, почистить датасет, построить обвязку для оценки, сгенерировать интерфейс разметки: именно в этой работе LLM действительно сверхчеловечески ускоряют. Даже анализ дерматолога был подготовлен с помощью AI-инструмента для программирования. Генералист построил и оценил эксперимент, который выиграл специалист.

Поэтому архитектуру по умолчанию я теперь рекомендую такую: LLM в цепочке для разработки, работы с данными, триажа пограничных случаев и слоя объяснений для человека; небольшая дообученная модель для повторяющегося, высоконагруженного и высокорискового решения. Похожую картину мы видели и с эффективностью: интересная история часто не во флагманской модели, а в дешёвом уровне, который делает реальную работу, как в случае с flash-моделями и эффективностью инференса. Подберите модель под форму задачи, и большинство жалоб на то, что «AI не работает», исчезнет.

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