Представляем PLIP, базовую модель патологии
Введение
Продолжающаяся революция искусственного интеллекта приносит нам инновации во всех направлениях. Модели OpenAI GPT лидируют в разработке и показывают, насколько базовые модели могут на самом деле облегчить некоторые из наших повседневных задач. От помощи нам в написании статей до оптимизации некоторых наших задач — каждый день мы видим анонсы новых моделей.
Перед нами открывается много возможностей. Продукты искусственного интеллекта, которые могут помочь нам в нашей трудовой жизни, станут одним из самых важных инструментов, которые мы получим в ближайшие годы.
Где мы увидим наиболее впечатляющие изменения? Где мы можем помочь людям быстрее выполнить свои задачи? Одним из самых интересных направлений для моделей ИИ является то, что приводит нас к инструментам медицинского ИИ.
В этом сообщении блога я описываю PLIP (предварительное обучение языку и изображениям патологии) как одну из первых базовых моделей патологии. PLIP — это модель языка видения, которую можно использовать для встраивания изображений и текста в одно и то же векторное пространство, что позволяет использовать мультимодальные приложения. PLIP основан на оригинальной модели CLIP, предложенной OpenAI в 2021 году и недавно опубликованной в журнале Nature Medicine:
Хуанг З., Бьянчи Ф., Юксекгонул М., Монтин Т., Цзоу Дж. Модель визуально-языковой основы для анализа изображений патологии с использованием медицинского Твиттера. 2023, Природная медицина.
Несколько полезных ссылок перед началом нашего приключения:
Все изображения, если не указано иное, принадлежат автору.
Контрастная предварительная тренировка 101
Мы показываем, что с помощью сбора данных в социальных сетях и некоторых дополнительных приемов мы можем построить модель, которую можно будет использовать в задачах медицинской искусственной патологии с хорошими результатами — и без необходимости в аннотированных данных.
Хотя представление CLIP (модели, на основе которой получена PLIP) и ее контрастная потеря немного выходят за рамки этого сообщения в блоге, все же полезно получить первое введение/повторить информацию. Очень простая идея CLIP заключается в том, что мы можем построить модель, которая помещает изображения и текст в векторное пространство, в котором «изображения и их описания будут близко друг к другу».
GIF-изображение выше также показывает пример того, как модель, которая встраивает изображения и текст в одно и то же векторное пространство, может использоваться для классификации: помещая все в одно и то же векторное пространство, мы можем связать каждое изображение с одной или несколькими метками, учитывая расстояние в векторное пространство: чем ближе описание к изображению, тем лучше. Мы ожидаем, что ближайшая метка будет настоящей меткой изображения.
Чтобы внести ясность: после обучения CLIP вы можете вставлять любое изображение или любой текст, который у вас есть. Учтите, что этот GIF показывает 2D-пространство, но в целом пространства, используемые в CLIP, имеют гораздо более высокую размерность.
Это означает, что, как только изображения и текст находятся в одном и том же векторном пространстве, мы можем сделать много вещей: от классификации с нулевым выстрелом (найти, какая текстовая метка больше похожа на изображение) до извлечения (найти, какое изображение больше похоже на заданное описание).
Как мы тренируем CLIP? Проще говоря, модель получает МНОГИЕ пар изображение-текст и пытается разместить похожие совпадающие элементы близко друг к другу (как на изображении выше), а все остальные – подальше. Чем больше пар изображение-текст у вас есть, тем лучше представление вы собираетесь изучить.
На этом мы остановимся на истории CLIP, этого должно быть достаточно, чтобы понять остальную часть статьи. У меня есть более подробная запись в блоге о CLIP на странице «На пути к науке о данных».
CLIP был обучен как очень общая модель изображения и текста, но он не работает так же хорошо для конкретных случаев использования (например, Мода (Chia et al., 2022)) и есть также случаи, в которых CLIP не работает и реализации, специфичные для предметной области, работают лучше (Чжан и др., 2023).
Предварительное обучение языку патологии и изображениям (PLIP)
Теперь мы опишем, как мы создали PLIP, нашу доработанную версию исходной модели CLIP, специально разработанную для патологии.
Создание набора данных для предварительного обучения языку патологии и изображениям
Нам нужны данные, и эти данные должны быть достаточно хорошими, чтобы их можно было использовать для обучения модели. Вопрос в том, как нам найти эти данные? Нам нужны изображения с соответствующими описаниями — как то, что мы видели в GIF-изображении выше.
Несмотря на то, что в Интернете доступен значительный объем данных о патологиях, они часто лишены аннотаций и могут быть в нестандартных форматах, таких как файлы PDF, слайды или видеоролики на YouTube.
Нам нужно поискать где-то еще, и этим местом будут социальные сети. Используя платформы социальных сетей, мы потенциально можем получить доступ к огромному количеству контента, связанного с патологиями. Патологи используют социальные сети, чтобы делиться в Интернете своими исследованиями и задавать вопросы своим коллегам-коллегам (обсуждение того, как патологи используют социальные сети, см. в Isom et al., 2017). Существует также набор обычно рекомендуемых хэштегов Twitter, которые патологоанатомы могут использовать для общения.
Помимо данных Twitter, мы также собираем подмножество изображений из набора данных LAION (Schuhmann et al., 2022), обширной коллекции из 5 миллиардов пар изображение-текст. LAION был собран путем парсинга данных из Интернета, и этот набор данных использовался для обучения многих популярных моделей OpenCLIP.
Твиттер патологии
Мы собираем более 100 тысяч твитов, используя патологоанатомические хэштеги Twitter. Процесс довольно прост: мы используем API для сбора твитов, которые относятся к набору определенных хэштегов. Мы удаляем твиты, содержащие вопросительный знак, поскольку эти твиты часто содержат запросы о других патологиях (например, «Что это за опухоль?»), а не информацию, которая нам действительно может понадобиться для построения нашей модели.
Выборка из LAION
LAION содержит 5 миллиардов пар изображение-текст, и наш план сбора данных будет следующим: мы можем использовать собственные изображения, полученные из Twitter, и находить похожие изображения в этом большом корпусе; Таким образом, мы сможем получать достаточно похожие изображения, и, будем надеяться, эти похожие изображения также являются изображениями патологии.
Теперь сделать это вручную было бы невозможно, встраивание и поиск более 5B вложений — очень трудоемкая задача. К счастью, для LAION существуют заранее рассчитанные векторные индексы, к которым мы можем обращаться с реальными изображениями с помощью API! Таким образом, мы просто встраиваем наши изображения и используем поиск K-NN, чтобы найти похожие изображения в LAION. Помните, что каждое из этих изображений имеет подпись, что идеально подходит для нашего варианта использования.
Обеспечение качества данных
Не все изображения, которые мы собираем, хороши. Например, в Твиттере мы собрали множество групповых фотографий с медицинских конференций. От LAION мы иногда получали фрактальные изображения, которые могли отдаленно напоминать какую-то патологию.
То, что мы сделали, было очень просто: мы обучили классификатор, используя некоторые данные о патологии как данные положительного класса, а данные ImageNet как данные отрицательного класса. Этот тип классификатора обладает невероятно высокой точностью (на самом деле легко отличить изображения патологии от случайных изображений в Интернете).
В дополнение к этому, к данным LAION мы применяем классификатор английского языка, чтобы удалить примеры, которые не на английском языке.
Обучение патологии языка и изображений
Сбор данных был самой сложной частью. Как только это будет сделано и мы доверяем нашим данным, мы сможем начать обучение.
Для обучения PLIP мы использовали исходный код OpenAI для обучения — мы реализовали цикл обучения, добавили косинусный отжиг для потерь и пару настроек здесь и там, чтобы все работало гладко и проверяемым образом (например, Comet ML отслеживание).
Мы обучили множество различных моделей (сотни) и сравнили параметры и методы оптимизации. В конце концов мы смогли найти модель, которая нас устроила. В статье есть более подробная информация, но одним из наиболее важных компонентов при построении такого рода контрастной модели является обеспечение как можно большего размера пакета во время обучения, это позволяет модели научиться различать как можно больше элементов. .
Предварительная подготовка языка патологии и изображений для медицинского искусственного интеллекта
Пришло время проверить наш PLIP. Хороша ли эта базовая модель по стандартным тестам?
Мы проводим различные тесты, чтобы оценить производительность нашей модели PLIP. Три наиболее интересных из них — это классификация с нулевым выстрелом, линейное зондирование и извлечение, но здесь я в основном сосредоточусь на первых двух. Для краткости я проигнорирую экспериментальные конфигурации, но все они доступны в рукописи.
PLIP как классификатор с нулевым выстрелом
GIF-изображение ниже иллюстрирует, как выполнить нулевую классификацию с помощью такой модели, как PLIP. Мы используем скалярное произведение как меру сходства в векторном пространстве (чем выше, тем больше похоже).
На следующем графике вы можете увидеть быстрое сравнение PLIP и CLIP в одном из наборов данных, которые мы использовали для классификации с нулевым выстрелом. При использовании PLIP вместо CLIP наблюдается значительный выигрыш в производительности.
PLIP как средство извлечения признаков для линейного измерения
Другой способ использования PLIP — средство извлечения признаков изображений патологий. Во время обучения PLIP видит множество изображений патологии и учится строить для них векторные представления.
Допустим, у вас есть аннотированные данные и вы хотите обучить новый классификатор патологий. Вы можете извлечь вложения изображений с помощью PLIP, а затем обучить логистическую регрессию (или любой другой регрессор, который вам нравится) поверх этих вложений. Это простой и эффективный способ выполнить задачу классификации.
Почему это работает? Идея состоит в том, что для обучения классификатора встраивания PLIP, специфичные для патологии, должны быть лучше, чем встраивания CLIP, которые имеют общее назначение.
Вот пример сравнения производительности CLIP и PLIP на двух наборах данных. Хотя CLIP обеспечивает хорошую производительность, результаты, которые мы получаем при использовании PLIP, намного выше.
Использование языка патологии и предварительной подготовки изображений
Как использовать ПЛИП? вот несколько примеров использования PLIP в Python и демо-версия Streamlit, которую вы можете использовать, чтобы немного поиграть с этим режимом.
Код: API для использования PLIP
Наш репозиторий GitHub предлагает несколько дополнительных примеров, которым вы можете следовать. Мы создали API, который позволяет легко взаимодействовать с моделью:
from plip.plip import PLIP import numpy as np plip = PLIP('vinid/plip') # we create image embeddings and text embeddings image_embeddings = plip.encode_images(images, batch_size=32) text_embeddings = plip.encode_text(texts, batch_size=32) # we normalize the embeddings to unit norm (so that we can use dot product instead of cosine similarity to do comparisons) image_embeddings = image_embeddings/np.linalg.norm(image_embeddings, ord=2, axis=-1, keepdims=True) text_embeddings = text_embeddings/np.linalg.norm(text_embeddings, ord=2, axis=-1, keepdims=True)
Вы также можете использовать более стандартный HF API для загрузки и использования модели:
from PIL import Image from transformers import CLIPProcessor, CLIPModel model = CLIPModel.from_pretrained("vinid/plip") processor = CLIPProcessor.from_pretrained("vinid/plip") image = Image.open("images/image1.jpg") inputs = processor(text=["a photo of label 1", "a photo of label 2"], images=image, return_tensors="pt", padding=True) outputs = model(**inputs) logits_per_image = outputs.logits_per_image probs = logits_per_image.softmax(dim=1)
Демо: PLIP как образовательный инструмент
Мы также считаем, что PLIP и будущие модели могут быть эффективно использованы в качестве образовательных инструментов для медицинского ИИ. PLIP позволяет пользователям выполнять поиск с нуля: пользователь может искать по определенным ключевым словам, а PLIP попытается найти наиболее похожее/совпадающее изображение. Мы создали простое веб-приложение в Streamlit, которое вы можете найти здесь.
Выводы
Спасибо, что прочитали все это! Мы воодушевлены возможным будущим развитием этой технологии.
Я закончу этот пост, обсудив некоторые очень важные ограничения PLIP и предложив некоторые дополнительные вещи, которые я написал, которые могут представлять интерес.
Ограничения
Хотя наши результаты интересны, PLIP имеет множество различных ограничений. Данных недостаточно, чтобы изучить все сложные аспекты патологии. Мы создали фильтры данных, чтобы обеспечить качество данных, но нам нужны более качественные показатели оценки, чтобы понять, в чем модель работает правильно, а в чем она ошибается.
Что еще более важно, PLIP не решает текущие проблемы патологии; PLIP не является идеальным инструментом и может допускать множество ошибок, требующих расследования. Результаты, которые мы видим, определенно многообещающие и открывают целый ряд возможностей для будущих моделей патологии, сочетающих зрение и язык. Однако предстоит еще много работы, прежде чем мы сможем увидеть, как эти инструменты используются в повседневной медицине.
Разное
У меня есть еще пара сообщений в блоге, посвященных моделированию CLIP и ограничениям CLIP. Например:
Рекомендации
Чиа П.Дж., Аттанасио Г., Бьянки Ф., Терраньи С., Магальяйнс А.Р., Гонсалвес Д., Греко К. и Тальябу Дж. (2022). Контрастный язык и визуальное изучение общих концепций моды. Научные отчеты, 12.
Исом Дж. А., Уолш М. и Гарднер Дж. М. (2017). Социальные сети и патология: где мы сейчас и почему это важно? Достижения в области анатомической патологии.
Шуман, К., Бомонт, Р., Венку, Р., Гордон, К., Вайтман, Р., Черти, М., Кумбс, Т., Катта, А., Муллис, К., Вортсман, М., Шрамовски П., Кундурти С., Кроусон К., Шмидт Л., Качмарчик Р. и Йицев Дж. (2022). LAION-5B: Открытый крупномасштабный набор данных для обучения изображений-текстовых моделей следующего поколения. ArXiv, abs/2210.08402.
Чжан С., Сюй Ю., Усуяма Н., Багга Дж.К., Тинн Р., Престон С., Рао Р.Н., Вэй М., Валлури Н., Вонг К., Лунгрен, М.П., Науманн Т. и Пун Х. (2023). Крупномасштабная предметно-ориентированная предварительная подготовка для биомедицинской обработки зрительного языка. ArXiv, abs/2303.00915.