Меня зовут Илья Копаничук, я старший научный сотрудник лаборатории «Сильный ИИ в медицине» AIRI. Мы с коллегами создаём ИИ‑инструменты, задача которых сделать качественную медицину доступнее. Например, основанное на нашей технологии приложение «Помощник по здоровью» стало лучшим ИИ‑решением в клиентском сервисе по версии Generation AI Awards 2025. Но речь сегодня не об этом.
За время нашей работы мы поняли, что контроль качества ИИ‑диагностики в медицине — это одна из ключевых задач, которая, как оказалось, не была ещё достаточно хорошо решена. Во‑первых, тесты для медицинских моделей зачастую далеки от реальной практики. А во‑вторых, всегда ли точны люди?
Пытаясь ответить на эти вопросы, мы с помощью коллег из ФГБУ «НМИЦ им. В. А. Алмазова» Минздрава России собрали собственный фреймворк и опубликовали про него статью в Scientific Reports. Здесь я расскажу, как он устроен и на какие метрики мы обратили внимание, а также постараюсь дать ответ на вопрос, заданный в заголовке.

Что меня раздражало
В ходе работы над ИИ‑помощником по здоровью естественным образом возникает потребность постоянно проверять качество диагностики. Надо точно понимать, не врет ли базовая модель, как выбирать число вопросов при сборе анамнеза, не обрушил ли качество только что раскатанный модератор и многое другое. Когда работа над нашим ассистентом была в самом разгаре, в литературе и в новостях постоянно мелькали заголовки вроде «ChatGPT поставил диагноз с точностью 90%.»
Не знаю, как вас, но меня очень быстро меня это начало раздражать. На реальном врачебном приеме (пусть даже в формате чата), который мы пытались имитировать, условия очень сильно отличаются от тех, в которых соревновались модели. Если открыть подобную новость и вчитаться, выяснится, что задача‑то довольно простая: выбрать одну из готовых формулировок небольшого списка диагнозов. Более того, мнения врачей‑экспертов довольно сильно разнятся — диагнозы для итоговой сверки принимаются голосованием, что не позволяет оценить согласие внутри самого консилиума врачей. Конечно, на реальном приеме врач пишет диагноз в свободной форме, а потом уже, если нужно, подбирает к нему код МКБ. В таком случае выбрать голосованием так просто не получится, ведь близость формулировок должна отражаться количественно.
Тогда я решил, что и сравнивать результаты ИИ‑диагностики нужно в такой же постановке:
-
Никаких готовых вариантов, только свободные формулировки.
-
Вместо голосования врачей и создания таким образом несуществующего «усредненного эксперта» — проверка ответов модели на близость к конкретным ответам экспертов.
Так мы сможем проверить не просто то, как модель научилась выбирать из списков, а то, как она рассуждает на основе тех или иных входных данных. Другими словами, вместо того, чтобы сравнивать её с фантомным средним врачом, мы пытаемся понять, действительно ли модель достойна войти в пул экспертов.
Чтобы проверить, как на самом деле работают языковые модели в медицинской диагностике, мы сами создали датасет: собрали 180 текстовых диалогов между живыми врачом и пациентом и 180 диалогов между моделью‑врачом и пациентом‑человеком. Каждый диалог — терапевтический прием, где врач задает пациенту вопросы и пытается понять, что у того за проблема. Итого получилось 360 сэмплов. Кому‑то может показаться, что это небольшой датасет, но на самом деле по меркам нашей области — вполне достаточной. Например, гугл бенчился на 302 сэмплах и опубликовался с этим в Nature.
Затем мы попросили 7 врачей‑терапевтов из Центра Алмазова независимо выписать до трех диагнозов, которые могут соответствовать проблеме пациента по собранному анамнезу. После этого мы взяли лучшие на тот момент (начало 2025 года) языковые модели: DeepSeek‑V3, GigaChat‑Max, GPT-4o, Mistral‑Large, Llama-405B, Qwen-72B и другие. Модели получили те же самые диалоги на вход и выдали свои списки диагнозов (так же до 3 штук). Теперь, казалось, у нас есть все нужное — но ничего подобного!
Серьезная проблема, с которой мы столкнулись: как сравнивать свободные диагнозы? «Острый панкреатит» и «хронический панкреатит, обострение», «ротавирусный гастроэнтерит» и «острая кишечная инфекция, гастроэнтерит» — формально разные строки, а на самом деле может быть одним и тем же. Если начать сравнивать по н‑граммам, то будет ещё уже: «острый цистит» — одно, а «хронический цистит» — уже другое.
Тогда я решил, что надо обучить отдельную функцию для сравнения диагнозов. Для этого мы собрали 6500 пар диагнозов, каждый вариант которых три эксперта независимо размечали на совпадение или несовпадение. Затем на этих данных построили мета‑модель, которая решает, считать ли две строки одним диагнозом. В неё вошло всё, что может помочь: прямые запросы к LLM с инструкцией сравнить диагнозы, RAG с индексом из 10 000 записей МКБ-10, векторные эмбеддинги от трёх разных моделей и набор лингвистических метрик — от пересечений униграм до нормализованного расстояния Левенштейна. В итоге на тестовой выборке из почти полутора тысяч пар мы получили точность 98% и = 0.91. Наконец, мы задистиллировали итоговый пайплайн
Франкенштейна с помощью ModernBert и потеряли на этом всего 3 п.п. , которая теперь составляла 0.88 — вполне достаточно для наших целей. Более того, оказалось, что вероятность получившегося классификатора довольно неплохо численно описывает сходство между диагнозами — и это мы используем сейчас для нового проекта.
Внимательный читатель заметит, что для решения проблемы мы использовали как раз осуждаемые мной в самом начале подходы: голосования и абсолютные метрики. Это же справедливо заметил и один из рецензентов статьи в Scientific Reports. Я ему ответил, что если бы врачи не могли договориться даже о значении диагнозов, то всю ИИ‑диагностику можно было бы закрыть за отсутствием предмета обсуждения. Он этим ответом удовольствовался, надеюсь, что довольствуетесь и вы.
Теперь, наконец, можно было приступать к интересной части. Пользуясь наработками группы Воронцова (статья, хабр) для оценки моделей по несогласованным разметкам, я вывел подходящие к нашему случаю относительные метрики: RPAD (Relative Precision of Algorithmic Diagnostics) и RRAD (Relative Recall of Algorithmic Diagnostics).
RPAD и RRAD
Суть в следующем. Пусть на вход диагностической системы подаётся множество медицинских документов
. Каждый документ
представляет собой текстовую строку, содержащую диалог между пациентом и врачом. Выход диагностической системы
представляет собой мультимножество (то есть множество с повторениями) из
мультимножеств
, где
— текстовая строка, содержащая диагноз. Оценка качества системы формируется на основе множества экспертов
, где эксперт
— это функция
. Алгоритм — это функция
. Алгоритм
не входит в множество экспертов. Тогда мы можем определить попарную точность
и полноту
между алгоритмом и экспертом как:
где ,
,
— функция, определяющая мощность пересечения мультимножеств, а
— характеристическая функция. Если интересно, как они считаются, смотрите код и оригинальную статью. Попарные метрики между двумя экспертами
и
определяются аналогично как
и
.
Тогда относительная точность алгоритмической диагностики RPAD и относительная полнота алгоритмической диагностики RRAD определяются следующим образом:
где — параметр жёсткости. Параметр жёсткости позволяет варьировать оценку в зависимости от задачи: с его помощью RPAD и RRAD помогают оценивать точность и полноту ответов модели относительно ответов группы экспертов, а так же тонко настраивать отклик. При жесткости, равной 1, прохождение теста (относительная метрика более 1) означает, что модель отвечает ближе к экспертам, чем сами они друг к другу. Это высшая оценка, если угодно, «модель превзошла людей» — и даже можно оценить, насколько сильно. При жесткости, равной 0, прохождение означает, что модель достойна войти в состав экспертной группы — её ответы ближе к группе, чем ответы самого выбивающегося эксперта.
Как там конкретно отвечали те модели в 2025 году уже не очень важно — можете сами посчитать на актуальных инстансах, все открытое (код, данные). Важно, что уже тогда они били людей по самой жесткой оценке, причем сразу на 10–15%. Интересно другое: мы очень быстро поняли, что модели кластеризуются плотнее, чем эксперты! То есть ИИ отвечал стабильнее людей.
Вот для примера гистограмма парных метрик точности и полноты между дипсиком и экспертами и самих экспертов друг с другом. Ответы экспертов раскиданы гораздо сильнее:

Если посчитать несмещенную дисперсию точности и полноты для всех моделей и экспертов, получается ещё более наглядно:

Ну и самым интересным оказалось то, что у моделей и экспертов есть значительная разница между относительной точностью и полнотой. Модели легко входят в группу экспертов по полноте, а вот с точностью у них серьезные проблемы: каждый следующий ответ ее очень сильно «валит». Выводы мы сделали такие: люди боятся сказать лишнего, даже если больной останется страдать. Модели скорее навалят чуши по полной, но верный диагноз не упустят.
Например, для GigaСhat‑Max мы по итогу получили 96% вероятность, что хотя бы 1 ответ из топ-3 окажется в топ-3 хотя бы одного эксперта из группы (Hits@3). На уровне приложения это создает эффект «невероятно правдоподобной» диагностики. Даже если ответ неправильный, далеко не каждый эксперт может это распознать, а некоторые и вовсе будут поддерживать. Можно представить, насколько сложно для профанов выявить ошибки моделей! Классические абсолютные метрики типа Hits@k тоже будут показывать высокое значение, потому что модели дают много релевантных ответов. То есть ими, в отличие от наших RPAD и RRAD мы модель за руку не поймаем. Интересно, что будет, если применить методику к другим доменам, вдруг там все еще хуже?
Выводы
Под конец, подведу итоговые выводы, к которым я пришёл в ходе исследования:
-
Медицинский ИИ нужно оценивать по‑человечески: не «выбери правильный вариант», а «поставь диагноз в свободной форме». Новости типа «ИИ выдал точность диагностики 90%» можно отправлять сразу в мусорку
даже если статья опубликована в Nature. -
Экспертное мнение врачей не абсолютно — это распределение, и выбранный наугад эксперт даст вам такое смещение, что обессмыслит все выводы,
даже если он с дипломом.На двух врачей, как известно, три мнения. -
Наши RPAD и RRAD дают более честную оценку, чем абсолютные метрики типа Hits@k. Они показывают, согласуется ли ИИ с экспертами так же хорошо, как эксперты друг с другом (а может, и лучше).
-
Оценки моделей, конечно, уже устарели (рецензирование в научных журналах — дело долгое), но код и данные открыты, и вы легко можете забенчить любую актуальную модельку по желанию.
Благодарю всех соавторов статьи, экспертов и врачей, участвовавших в обсуждении, а так же рецензентов из npj Digital Medicine (которые отклонили статью, но дали очень ценные комментарии) и Scientific Reports. Буду рад ответить на ваши вопросы!
Ссылки
– Статья в Scientific Reports: https://www.nature.com/articles/s41598-026-63252-1
– Датасет: https://huggingface.co/datasets/kopan/med-eval-360
– Код метрик: https://huggingface.co/Volodimirich/model_diagnosis
– Модель сверки диагнозов: https://huggingface.co/sm1rk/diagnosis-matching-distilled-model
– Данные для сверки диагнозов: https://github.com/kilimanj4r0/diagnosis-matching-project
Автор: kopanichuk


