Анамнез: зачем врачу нейросеть с доступом к картам?
Больница — это место, где конфиденциальность должна быть абсолютной, но документация — бесконечной. Каждая выписка содержит ФИО, адрес, дату рождения, номер полиса. Всё это нужно для лечения, но категорически нельзя показывать исследователям без согласия пациента.
Традиционные методы обезличивания — регулярные выражения и списки стоп-слов — спотыкаются на контексте. «Иванов» может быть фамилией, а может — названием улицы «Иванова» или даже частью диагноза (ирония). Нужно понимать смысл, а не просто искать символы.
Yandex Cloud и НМИЦК им. А.Л. Мясникова запустили пилот: использовать LLM не для анализа диагнозов, а для того, чтобы спрятать личность пациента, сохранив все медицинские детали.
Что именно обезличивали? (спойлер: не только ФИО)
Объект — электронные медицинские карты пациентов с ишемической болезнью сердца. Тысячи записей: протоколы осмотров, выписки, направления. Каждая запись содержит до 20-30 именованных сущностей, которые нужно либо вырезать, либо заменить на псевдонимы. Задача — сделать анонимизацию необратимой, но сохранить статистическую ценность данных.
Стандартный pipeline выглядит так:
- Распознавание сущностей (NER) с помощью LLM.
- Замена найденных сущностей на маски (например,
[ПАЦИЕНТ],[ДАТА],[АДРЕС]). - Проверка — не осталось ли скрытых упоминаний (псевдонимы через контекст).
- Генерация синтетических данных для датасетов (опционально).
Почему обычный NER не справился
Даже лучшие open-source модели NER (например, на базе BERT) путаются, когда одно слово — и фамилия, и топоним одновременно. LLM же видит весь абзац и понимает: если перед словом стоит «гр.» или «ул.» — это адрес, если «пациент» — имя. Но есть нюанс: галлюцинации. Модель может сама дописать номер паспорта, который доктор не указал, посчитав логичным. Поэтому пришлось ввести пост-обработку: каждое найденное значение проверять регулярными выражениями на правдоподобность.
Интересная деталь: в Yandex Cloud использовали закрытый контур — данные никогда не покидали облако, запросы шли только к LLM, развернутой на выделенных GPU. Это контрастирует с историей адвоката, потерявшего Gmail из-за NotebookLM. Там данные утекли через внешний сервис, здесь — полная изоляция.
Первый вздох: LLM вместо эпизодов
До внедрения LLM связка Yandex Cloud и НМИЦК обезличивала записи вручную — врачи сами удаляли лишнее. Одна запись занимала 5-10 минут. С LLM время сократилось до 30 секунд на документ. При этом точность (recall) на персональные данные достигла 98,7% (оценка на валидационной выборке из 500 записей).
Проблема: модель не всегда корректно обрабатывает уменьшительно-ласкательные формы имен («Сашенька», «Витюша») — ловит их не всегда. Пришлось дообучать на корпусе разговорных записей.
Как сбалансировать анонимность и качество
Любое обезличивание — это потеря информации. Если заменить «пациент Иванов Иван Иванович» на «пациент [ФИО]» — данные становятся анонимными, но для исследователя теряется возможность корреляции «возраст-пол-фамилия». Здесь применили псевдонимизацию: замену на вымышленные данные, сохраняющие нужные характеристики (пол, национальная принадлежность фамилии). Об этом же говорится в статье «Как анонимизация данных влияет на качество LLM-агентов» — там детально разбирают, как маскирование бьет по полезности датасетов.
В итоге Yandex Cloud разработал правило: для всех ФИО — псевдоним, для дат — сдвиг на +/- 7 дней, для адресов — удаление до названия города. Такой гибридный подход внедрили в production.
Где LLM выстрелила, а где облажалась
Сильные стороны:
- Распознавание нестандартных сокращений («Б-ца» → больница, «п/о» — подъезд).
- Понимание инверсий («Иван Михайлович» vs «М.И. Иванов»).
- Автоматическая категоризация сущностей — не просто «имя», а «лечащий врач», «пациент», «родственник».
Провалы:
- Галлюцинации при пустых полях — модель могла «восстановить» отсутствующий диагноз в виде текста, содержащего личные данные (например: «пациентка [ПАЦИЕНТ] с болезнью [ДИАГНОЗ]». — вместо диагноза вставить слово «коклюш», хотя его не было).
- Проблемы с кириллическими транслитерациями иностранных имен.
Для борьбы пришлось добавить слой верификации: каждую замену сравнивать с исходным текстом через другую, меньшую LLM (типа Mistral-7B), которая не генерирует, а проверяет. Получился дуэт — генератор + контролер.
Экономия: часы вместо недель
До автоматизации команда НМИЦК тратила на обезличивание 30 человеко-часов на 1000 записей. После — 2 часа машинного времени и 10 минут ручной верификации. При этом RR (relative recall) вырос с 85% до 98%. Кажется, мелочь, но для создания цифрового регистра ишемической болезни, где ожидается 50 000 записей, это разница между годами работы и месяцами.
Кстати, похожий подход применяется в OncoAgent — там тоже агенты на LangGraph обрабатывают чувствительную онкологическую информацию, но фокус на мультиагентной диагностике, а не на обезличивании.
Секретный ингредиент: дообучение на синтетике
Чтобы модель не пропускала редкие паттерны (например, указание «родственник со стороны отца — Иванов»), команда сгенерировала 10 000 синтетических медицинских записей с известными персональными данными. На них дообучили YandexGPT через LoRA. Результат: точность повысилась на 3,2% на тестовой выборке, а главное — исчезли «черные дыры» в распознавании сложных составных имен.
Что дальше: от обезличивания к симуляции пациентов
Следующий логичный шаг после того, как научились прятать данные — генерировать полностью синтетические медицинские истории, неотличимые от реальных, но безопасные. Yandex Cloud уже тестирует эту технологию в паре с НМИЦК. Если это удастся, врачи получат бесконечный полигон для обучения и тестирования алгоритмов, а пациенты — гарантию, что их данные никогда не покинут больничные стены. Но тут возникает этическая дилемма: если синтетические данные статистически повторяют реальные, не являются ли они той же приватной информацией, только в другом обличье? Похоже, юристам предстоит переписать определение «персональные данные».
А пока — простой совет для тех, кто работает с медицинскими текстами: никогда не доверяйте LLM обработку персональных данных в одиночку. Всегда ставьте рядом валидатор, хотя бы простой NER-модель. И помните, что LLM-Shield — не панацея, а только часть экосистемы безопасности.