Home Машинное обучение Объясните медицинские решения в клинических условиях с помощью Amazon SageMaker Clarify | DeepTech

Объясните медицинские решения в клинических условиях с помощью Amazon SageMaker Clarify | DeepTech

0
Объясните медицинские решения в клинических условиях с помощью Amazon SageMaker Clarify
 | DeepTech

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

В этом посте мы покажем, как улучшить объяснимость модели в клинических условиях с помощью Amazon SageMaker Clarify.

Фон

Одним из конкретных приложений алгоритмов машинного обучения в медицинской сфере, где используются большие объемы текста, являются системы поддержки принятия клинических решений (CDSS) для сортировки. Ежедневно пациентов госпитализируют в больницы и составляют записи о поступлении. После того, как эти заметки сделаны, начинается процесс сортировки, и модели машинного обучения могут помочь клиницистам в оценке клинических результатов. Это может помочь снизить операционные накладные расходы и обеспечить оптимальный уход за пациентами. Понимание того, почему эти решения предлагаются моделями ML, чрезвычайно важно для принятия решений, связанных с отдельными пациентами.

Цель этой публикации — показать, как можно развернуть прогностические модели с помощью Amazon SageMaker для целей сортировки в больницах, а также использовать SageMaker Clarify для объяснения этих прогнозов. Цель состоит в том, чтобы предложить ускоренный путь к внедрению методов прогнозирования в CDSS для многих организаций здравоохранения.

Блокнот и код из этого поста доступны на Гитхаб. Чтобы запустить его самостоятельно, клонируйте репозиторий GitHub и откройте файл блокнота Jupyter.

Техническое образование

Большим активом любой организации неотложной медицинской помощи являются ее клинические заметки. При поступлении в стационар делаются записи о поступлении. Ряд недавних исследований показал предсказуемость ключевых показателей, таких как диагнозы, процедуры, продолжительность пребывания и внутрибольничная смертность. Предсказать их в настоящее время очень легко, используя только записи о приеме, с помощью алгоритмов обработки естественного языка (NLP) (1).

Достижения в моделях НЛП, таких как двунаправленные представления кодировщиков от преобразователей (BERT), позволили делать высокоточные прогнозы на основе текстов, таких как заметки о поступлении, из которых раньше было трудно извлечь пользу. Их предсказание клинических показателей весьма применимо для использования в CDSS.

Тем не менее, чтобы эффективно использовать новые прогнозы, необходимо объяснить, как эти точные модели BERT достигают своих прогнозов. Существует несколько методов объяснения предсказаний таких моделей. Одним из таких методов является SHAP (Shapley Additive exPlanations), который представляет собой независимый от модели метод для объяснения выходных данных моделей ML.

Что такое ШАП

Значения SHAP — это метод объяснения выходных данных моделей ML. Он дает возможность разбить прогноз модели машинного обучения и понять, насколько каждая входная функция влияет на окончательный прогноз.

Значения SHAP основаны на теории игр, в частности, на концепции значений Шепли, которые изначально были предложены для распределения выплат в совместной игре между ее игроками (2). В контексте ML каждая функция во входном пространстве считается игроком в совместной игре, а предсказание модели является выплатой. Значения SHAP рассчитываются путем изучения вклада каждой функции в прогноз модели для каждой возможной комбинации функций. Затем рассчитывается средний вклад каждой функции во все возможные комбинации функций, и это становится значением SHAP для этой функции.

SHAP позволяет моделям объяснять прогнозы без понимания внутренней работы модели. Кроме того, существуют методы для отображения этих объяснений SHAP в тексте, чтобы с точки зрения врача и пациента можно было интуитивно увидеть, как алгоритмы приходят к своим прогнозам.

Благодаря новым дополнениям к SageMaker Clarify и использованию предварительно обученных моделей из обнимающее лицо которые легко использовать, реализованные в SageMaker, обучение модели и объяснимость можно легко реализовать в AWS.

В качестве сквозного примера мы возьмем клинический исход внутрибольничной смертности и покажем, как этот процесс можно легко реализовать в AWS с помощью предварительно обученной модели BERT с обниманием лица, а прогнозы будут объяснены с использованием SageMaker Уточнение.

Выбор модели Hugging Face

Hugging Face предлагает множество предварительно обученных моделей BERT, специально предназначенных для использования в клинических заметках. Для этого поста мы используем большая птица-база-имитировать-смертность модель. Эта модель представляет собой доработанную версию модели Google BigBird, специально адаптированную для прогнозирования смертности с использованием заметок о госпитализации MIMIC ICU. Задача модели состоит в том, чтобы определить вероятность того, что пациент не переживет определенное пребывание в отделении интенсивной терапии, на основе записей о поступлении. Одним из существенных преимуществ использования этой модели BigBird является ее способность обрабатывать контексты большей длины, что означает, что мы можем вводить полные примечания о допуске без необходимости усечения.

Наши шаги включают развертывание этой отлаженной модели в SageMaker. Затем мы включаем эту модель в установку, которая позволяет в режиме реального времени объяснять ее прогнозы. Для достижения такого уровня объяснимости мы используем SageMaker Clarify.

Обзор решения

SageMaker Clarify предоставляет разработчикам машинного обучения специализированные инструменты, позволяющие получить более полное представление об их обучающих данных и моделях машинного обучения. SageMaker Clarify объясняет как глобальные, так и локальные прогнозы, а также объясняет решения, принимаемые компьютерным зрением (CV) и моделями НЛП.

На следующей диаграмме показана архитектура SageMaker для размещения конечной точки, которая обслуживает запросы объяснимости. Он включает взаимодействие между конечной точкой, контейнером модели и эксплейнером SageMaker Clarify.

Блог SageMaker Clarify

В примере кода мы используем блокнот Jupyter для демонстрации функциональности. Однако в реальных условиях электронные медицинские карты (EHR) или другие приложения для ухода за больными будут напрямую вызывать конечную точку SageMaker для получения того же ответа. В блокноте Jupyter мы развертываем контейнер модели Hugging Face на конечной точке SageMaker. Затем мы используем SageMaker Clarify для объяснения результатов, которые мы получаем от развернутой модели.

Предпосылки

Вам необходимы следующие предпосылки:

Доступ к коду из Репозиторий GitHub и загрузите его в свой блокнот. Вы также можете запустить блокнот в среде Amazon SageMaker Studio, которая представляет собой интегрированную среду разработки (IDE) для разработки машинного обучения. Мы рекомендуем использовать ядро ​​Python 3 (Data Science) в SageMaker Studio или ядро ​​conda_python3 в экземпляре ноутбука SageMaker.

Разверните модель с включенным SageMaker Clarify.

В качестве первого шага загрузите модель с Hugging Face и загрузите ее в корзину Amazon Simple Storage Service (Amazon S3). Затем создайте объект модели, используя класс HuggingFaceModel. При этом используется предварительно созданный контейнер для упрощения процесса развертывания моделей Hugging Face в SageMaker. Вы также используете пользовательский сценарий вывода, чтобы делать прогнозы внутри контейнера. Следующий код иллюстрирует сценарий, который передается в качестве аргумента классу HuggingFaceModel:

from sagemaker.huggingface import HuggingFaceModel

# create Hugging Face Model Class
huggingface_model = HuggingFaceModel(
model_data = model_path_s3,
transformers_version='4.6.1',
pytorch_version='1.7.1',
py_version='py36',
role=role,
source_dir = "./{}/code".format(model_id),
entry_point = "inference.py"
)

Затем вы можете определить тип экземпляра, на котором вы развертываете эту модель:

instance_type = "ml.g4dn.xlarge"
container_def = huggingface_model.prepare_container_def(instance_type=instance_type)
container_def

Затем мы заполняем ExecutionRoleArn, ModelName и PrimaryContainer поля для создания модели.

model_name = "hospital-triage-model"

sagemaker_client.create_model(
ExecutionRoleArn=role,
ModelName=model_name,
PrimaryContainer=container_def,
)
print(f"Model created: {model_name}")

Затем создайте конфигурацию конечной точки, вызвав create_endpoint_config API. Здесь вы предоставляете то же самое model_name используется в create_model вызов API. create_endpoint_config теперь поддерживает дополнительный параметр ClarifyExplainerConfig для включения объяснения SageMaker Clarify. Базовый уровень SHAP является обязательным; вы можете предоставить его либо в виде встроенных базовых данных (параметр ShapBaseline), либо в виде базового файла S3 (параметр ShapBaselineUri). Дополнительные параметры см. в руководстве разработчика.

В следующем коде мы используем специальный токен в качестве основы:

baseline = (("<UNK>"))
print(f"SHAP baseline: {baseline}")

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

endpoint_config_name = "hospital-triage-model-ep-config"
csv_serializer = sagemaker.serializers.CSVSerializer()
json_deserializer = sagemaker.deserializers.JSONDeserializer()

sagemaker_client.create_endpoint_config(
EndpointConfigName=endpoint_config_name,
ProductionVariants=(
{
"VariantName": "MainVariant",
"ModelName": model_name,
"InitialInstanceCount": 1,
"InstanceType": instance_type,
}
),
ExplainerConfig={
"ClarifyExplainerConfig": {
"InferenceConfig": {"FeatureTypes": ("text")},
"ShapConfig": {
"ShapBaselineConfig": {"ShapBaseline": csv_serializer.serialize(baseline)},
"TextConfig": {"Granularity": "sentence", "Language": "en"},
},
}
},
)

Наконец, когда у вас есть готовая конфигурация модели и конечной точки, используйте create_endpoint API для создания конечной точки. endpoint_name должен быть уникальным в пределах региона вашего аккаунта AWS. create_endpoint API является синхронным по своей природе и возвращает немедленный ответ со статусом конечной точки в состоянии «Создание».

endpoint_name = "hospital-triage-prediction-endpoint"
sagemaker_client.create_endpoint(
EndpointName=endpoint_name,
EndpointConfigName=endpoint_config_name,
)

Объясните предсказание

Теперь, когда вы развернули конечную точку с включенной интерактивной объяснимостью, вы можете попробовать несколько примеров. Вы можете вызвать конечную точку в реальном времени с помощью invoke_endpoint метод, предоставляя сериализованную полезную нагрузку, которая в данном случае представляет собой некоторые образцы примечаний о поступлении:

response = sagemaker_runtime_client.invoke_endpoint(
EndpointName=endpoint_name,
ContentType="text/csv",
Accept="text/csv",
Body=csv_serializer.serialize(sample_admission_note.iloc(:1, :).to_numpy())
)

result = json_deserializer.deserialize(response("Body"), content_type=response("ContentType"))
pprint.pprint(result)

В первом сценарии предположим, что медицинский работник сделал следующую медицинскую справку:

“Patient is a 25-year-old male with a chief complaint of acute chest pain. Patient reports the pain began suddenly while at work and has been constant since. Patient rates the pain as 8/10 in severity. Patient denies any radiation of pain, shortness of breath, nausea, or vomiting. Patient reports no previous history of chest pain. Vital signs are as follows: blood pressure 140/90 mmH. Heart rate 92 beats per minute. Respiratory rate 18 breaths per minute. Oxygen saturation 96% on room air. Physical examination reveals mild tenderness to palpation over the precordium and clear lung fields. EKG shows sinus tachycardia with no ST-elevations or depressions.”

На следующем снимке экрана показаны результаты модели.

После отправки на конечную точку SageMaker метка была предсказана как 0, что указывает на низкий риск смертности. Другими словами, 0 означает, что госпитализированный пациент находится в неостром состоянии согласно модели. Однако нам нужно обоснование этого прогноза. Для этого вы можете использовать значения SHAP в качестве ответа. Ответ включает значения SHAP, соответствующие фразам входной заметки, которые могут быть дополнительно окрашены в зеленый или красный цвет в зависимости от того, как значения SHAP влияют на прогноз. В этом случае мы видим больше фраз зеленого цвета, таких как «Пациент сообщает об отсутствии болей в груди в анамнезе» и «ЭКГ показывает синусовую тахикардию без подъемов сегмента ST или депрессии», а не красного цвета, что соответствует прогнозу смертности 0 .

Во втором сценарии предположим, что медицинский работник сделал следующую медицинскую справку:

“Patient is a 72-year-old female with a chief complaint of severe sepsis and septic shock. Patient reports a fever, chills, and weakness for the past 3 days, as well as decreased urine output and confusion. Patient has a history of chronic obstructive pulmonary disease (COPD) and a recent hospitalization for pneumonia. Vital signs are as follows: blood pressure 80/40 mmHg. Heart rate 130 beats per minute. Respiratory rate 30 breaths per minute. Oxygen saturation 82% on 4L of oxygen via nasal cannula. Physical examination reveals diffuse erythema and warmth over the lower extremities and positive findings for sepsis such as altered mental status, tachycardia, and tachypnea. Blood cultures were taken and antibiotic therapy was started with appropriate coverage.”

На следующем снимке экрана показаны наши результаты.

После отправки на конечную точку SageMaker метка была предсказана как 1, что указывает на высокий риск смертности. Это означает, что госпитализированный пациент находится в остром состоянии в соответствии с моделью. Однако нам нужно обоснование этого прогноза. Опять же, вы можете использовать значения SHAP в качестве ответа. Ответ включает значения SHAP, соответствующие фразам входной заметки, которые могут быть дополнительно закодированы цветом. В этом случае мы видим больше фраз, выделенных красным цветом, таких как «Пациент сообщает о лихорадке, ознобе и слабости в течение последних 3 дней, а также об уменьшении диуреза и спутанности сознания» и «Пациентка — женщина 72 лет с главная жалоба на тяжелый сепсис, шок», а не зеленый, что соответствует прогнозу смертности 1.

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

Очистить

Чтобы очистить ресурсы, созданные как часть этого решения, выполните следующие операторы:

huggingface_model.delete_model()

predictor = sagemaker.Predictor(endpoint_name="triage-prediction-endpoint")

predictor.delete_endpoint()

Заключение

В этом посте показано, как использовать SageMaker Clarify для объяснения решений в случае использования в здравоохранении на основе медицинских заметок, сделанных на различных этапах процесса сортировки. Это решение можно интегрировать в существующие системы поддержки принятия решений, чтобы предоставить клиницистам еще одну точку данных, когда они оценивают пациентов для поступления в отделение интенсивной терапии. Чтобы узнать больше об использовании сервисов AWS в сфере здравоохранения, ознакомьтесь со следующими сообщениями блога:

Рекомендации

(1) https://aclanthology.org/2021.eacl-main.75/

(2) https://arxiv.org/pdf/1705.07874.pdf


Об авторах

Шамика Арияванса, работающий старшим архитектором решений AI / ML в глобальном подразделении здравоохранения и наук о жизни в Amazon Web Services (AWS), уделяет пристальное внимание генеративному ИИ. Он помогает клиентам интегрировать генеративный ИИ в свои проекты, подчеркивая важность объяснимости в их инициативах, основанных на ИИ. Помимо своих профессиональных обязанностей, Шамика страстно увлекается лыжным спортом и приключениями на бездорожье».

Тед Спенсr — опытный архитектор решений с большим опытом работы в неотложной медицинской помощи. Он увлечен применением машинного обучения для решения новых задач и предлагает решения как для конечного потребителя, так и для его бизнеса/клиники. Он живет в Торонто, Онтарио, Канада, любит путешествовать со своей семьей и тренироваться в триатлоне, когда позволяет время.

Рам Патанги работает архитектором решений в AWS, поддерживая клиентов в сфере здравоохранения и медико-биологических наук в районе залива Сан-Франциско. Он помог клиентам в сфере финансов, здравоохранения, медико-биологических наук и высокотехнологичных вертикалей успешно вести свой бизнес в облаке AWS. Он специализируется на базах данных, аналитике и машинном обучении.

LEAVE A REPLY

Please enter your comment!
Please enter your name here