Адаптиция ИИ к новой информации

Сегодня снова будет пост про обучение ИИ. Похожую тему мы обсуждали в посте про GPT, там речь шла о том, что модель, обученную на большом массиве данных, можно дообучить на меньшем массиве для решения конкретной задачи (например, натренировать на большом массиве разных изображений, а потом учить находить на изображении кошку). Теперь мы будем обсуждать, как можно взять предобученную модель и натренировать ее не на конкретную задачу, а на решение задач в некоторой новой области (например, натренировать на большом массиве изображении с кошками, которые находятся дома, а потом обучить находить кошку на изображениях, где она на улице).

Введение

Область, о которой мы говорили ранее, называется transfer learning (перевод «перенос обучения» представляется мне корректным). Область, о которой мы будем говорить сейчас, называется domain adaptation (я нашла перевод «доменная адаптация», но его полезность сомнительна; будем говорить «адаптация к области применения»). Сложность этого разговора заключается в том, что строгих определений как таковых пока нет. Это те концепции, которые активно обсуждаются в сообществе, и разные специалисты считают разные аспекты этих двух понятий ключевыми. Если собрать множество разных определений, получится примерно следующее:

  • перенос обучения – это процесс адаптации модели, которая обработала большой массив данных с целью получения базовых представлений о мире, к решению конкретной задачи. Это более широкий термин, который подразумевает обучение модели и для разных задач, и для разных областей знания (например, распознавание опухолей в тканях для медицинского применения, распознавание текста на изображении для беспилотных автомобилей, генерация кода на C++ и так далее);
  • адаптация к области применения – процесс обучения модели применять навыки решения определенной задачи, полученные в исходной области, к той же задаче в целевой области. Это часть области переноса обучения.

Ключевые понятия адаптации к области применения – исходная область (source domain), целевая область (target domain) и смещение (domain shift).
С исходной и целевой областью, думаю, все понятно: на одной обучили, к другой применили. Смещение – это разница между статистическим распределением данных в исходной и целевой области. Данные, понятно, разные, поэтому основная задача адаптации к области применения – понять эту разницу (смещение) и адаптировать модель.
Если вдруг у вас возник вопрос, чего это меня понесло писать про такие вещи, я сейчас расскажу. Если не возник, все равно расскажу. Идея попала в мою голову во время обучения, там мы с коллегами работали над мультимодальной моделью. Это такая модель, которая может и с изображениями, например, работать, и с текстом. Или с изображениями, текстом и звуком – не важно, главное, она несколько разных задач решает. Не будем тут уходить в технические подробности. Если вам интересно, загляните в наш гитхаб. Мы не сделали чего-то невероятного, но свои эксперименты сохранили на всеобщее обозрение.
Целью проекта было научить выбранную модель отвечать на вопросы по картинкам лучше, чем она отвечала без нас. Изначально мы замахнулись на то, чтобы добавить модели дополнительный контекст к изображениям. Например, предоставить ей кучу информации (фотографий и текста) о зеленом горошке и сделать ее «экспертом в области зеленого горошка». Предположение было в том, что это улучшит ответы модели на вопросы о фотографиях горошка. Потом можно было бы сделать ее «экспертом» в области средневековой живописи. Или в любой другой области, при этом не меняя основы (исходную модель).

Потом мы от этой идеи отказались, но меня не отпустило, поэтому вот пост. Надеюсь, это введение не запутало вас еще больше. В любом случае, далее я приложу усилия к тому, чтобы вас распутать и внести некоторую ясность в вопрос.

Теория адаптации к области

В качестве теоретической базы возьмем публикацию «A Brief Review of Domain Adaptation» («Краткий обзор адаптации к области применения»).
Когда мы говорим об обучении любых алгоритмов ИИ, мы предполагаем по умолчанию, что тренировочные и тестовые данные происходят из одного статистического распределения. Для простоты вернемся к примеру с поиском кошки на изображении. Мы возьмем некоторый набор фотографий, для каждой из которых есть пометка о наличии или отсутствии кошки (0 или 1). Для обучения мы делим набор фотографий на две части (оставим в стороне кросс-валидацию сегодня): 70% фотографий с пометками передаются модели для изучения. У остальных 30% мы прячем пометки и предлагаем модели сделать суждения о наличии кошки. Поскольку у нас есть правильные ответы, мы ее потом проверим (данные можно делить и 70/30, и 80/20 и всяко-разно, зависит от их количества, разнообразия, ваших задач и прочих факторов).
А что если в 70%, на которых модель училась, кошек фотографировали днем, а в 30% тестовых данных – ночью? Если мы заранее позаботились о том, чтобы как следует перемешать фотографии, такого не произойдет. Это примитивный и искусственный пример, однако в реальной жизни с данными может произойти что-то подобное. Например, мы научили модель распознавать опухоли на снимках МРТ, а потом появились новые аппараты МРТ, у которых совсем другая точность. Эффективность нашей модели снова снизится, и нужно будет что-то делать.
Сложный путь заключается в том, чтобы брать фотоаппарат и идти фотографировать больше кошек в разное время суток (напишите, за какие деньги вы бы согласились работать сборщиком данных; например, сколько бы вы взяли за тысячу новых фотографий). Или уговаривать клиники отдать вам новые снимки МРТ (или лазать по медицинским публикациям, вытаскивая оттуда необходимую информацию). Короче говоря, тратить очень много времени (и очень много денег, потому что после сбора данные надо почистить и подготовить, а потом снова обучать модель на дорогих графических процессорах).

Альтернативный путь мы тут обсуждаем.
Адаптация к области осуществляется в трех видах: с учителем (supervised), без учителя (unsupervised) и в смешанном (semi-supervised) формате. Эти три варианта наследуются из машинного обучения в целом:

  • обучение с учителем предполагает, что у нас есть «правильные ответы» (все примеры, которые мы ранее обсуждали, – с учителем);
  • в случае обучения без учителя «правильных ответов» нет (есть просто, например, набор фотографий разных животных, и задача состоит в том, чтобы разделить их на несколько групп – это задача кластеризации; фотографии не подписаны, цель модели – понять, что одни животные чем-то отличаются от других);
  • при смешанном типе обучения часть данных «подписана», часть – нет. Применительно к адаптации к области данные, относящиеся к исходной области могут быть подписаны, а данные из целевой области – нет.

«Правильные ответы» дает человек, который отсмотрел фотографии, прочитал тексты или иным способом обработал большой массив данных. Таких данных не очень много, меньше, чем «неподписанных», и их сложнее получить.
Основных подходов к адаптации тоже три: сконцентрированный на модели (model-centric), данных (data-centric) и смешанный. Первый подход предполагает работу над архитектурой модели и изменение отдельных ее компонентов. Второй включает в себя, например, отбор данных из исходной области таким образом, чтобы они были наиболее похожи на данные из целевой области, или автоматическую генерация «правильных ответов». К методам работы с данными относится в том числе предобучение.
Помимо различия в данных (фотография сделана днем или ночью) мы можем столкнуться с различием в классах (также «различия в категориях»; учились различать кошку, а теперь нужно различать собаку, например). С точки зрения различий в классах адаптацию к области можно разделить на четыре категории (простите за такое обилие классификаций, но оно в самом деле важно для понимания темы):

  • адаптация с закрытым набором классов (closed set). В этом случае классы объектов одни и те же в исходной и целевой области (тут кошки и там кошки – везде кошки, но в разных условиях);
  • с открытым набором классов (некоторые классы могут совпадать, но есть классы исходной области, которых нет в целевой, и наоборот. Можно взять несколько наборов данных из разных областей, чтобы увеличить набор исходных классов: набрать фотографий крокодилов, сов и кошек и попытаться понять, как находить собак);
  • частичная адаптация (в исходной области больше классов, и список классов целевой области входит в список классов исходной области; то есть, некоторые классы исходной области «лишние»);
  • универсальная адаптация (мы можем не знать, какие классы есть в исходной и / или целевой области, но это не должно нас останавливать).

Само различие тоже бывает нескольких видов, но эти подробности я уже пропущу, чтобы пост не превратился в нудную тягомотину.
Решение проблемы адаптации зависит от глубины нейросети: для более мелких (shallow neural nets) используются свои методы, для глубоких – свои (deep neural nets). Я позволю себе не останавливаться на мелких нейросетях и расскажу немного о глубоких, поскольку мой интерес лежит скорее в этой области (за мелкими нейросетями обращайтесь к статье, ссылка на которую есть в начале поста).
Итак, работая с глубокими нейросетями, проблему адаптации к области можно решать тремя способами: основываясь на различиях (discrepancy-based), реконструкции (reconstruction-based) и соперничестве (adversarial-based).
Названия способов, в общем, говорящие. В первом случае (метод, основанный на различиях) мы концентрируемся на том, что отличает исходную область от целевой (в терминах распределения данных). Нейросеть трансформирует исходное распределение таким образом, чтобы оно было как можно более похоже на целевое.
Метод, основанный на реконструкции, предполагает изменение данных и исходной, и целевой области таким образом, чтобы они были как можно более похожи. Грубо говоря, здесь создается некоторое третье распределение, в котором модель реконструирует данные из исходного и целевого распределений, сохраняя наиболее важную информацию о каждом объекте из обеих областей.
Метод, основанный на соперничестве, создан на основе обучения, основанного на соперничестве, про это был отдельный пост. Напомню кратко: соперничают генератор, который создает, например, изображения, и дискриминатор, который учится различать, реально изображение или создано генератором. Они обучаются параллельно, что дает впечатляющие результаты. В случае с адаптацией к области, генератор создает объекты, похожие на объекты из целевой области. Дискриминатор пытается определить, реальные ли данные перед ним или синтетические (созданные генератором).

Все написанное выше хорошо, когда у нас есть какие-то исходные данные, с которыми можно работать, однако это не всегда так. Есть подразделение проблемы адаптации к области – адаптация без исходной области (Source-Free Domain Adaptation). Работать в отсутствии исходных данных непросто, однако способы есть: генерация синтетических данных, извлечение информации из целевых данных с использованием кластеризации и другие. Эту часть теории я опущу. Прекрасный обзор адаптации без исходной области можно прочитать в статье «A Comprehensive Survey on Source-free Domain Adaptation» («Всесторонний обзор адаптации без исходной области»).
А здесь мы кратко обсудим области применения и будем закругляться.

Зачем оно нам надо

Мы, в общем, уже затронули вопрос применения адаптации к области на реальных задачах, но сейчас поговорим об этом немного подробнее.
Для качественного использования нейросетей нам нужно очень много данных, в идеале размеченных экспертом-человеком. Но это в идеале, а на практике мы, как правило, имеем недостаточные данные такого себе качества, с помощью которых нужно решать очень важные и очень непростые задачи.
Адаптация к области используется в компьютерном зрении, машинном переводе, расшифровке речи, генерации текста – во множестве самых разнообразных задач. Методы адаптации позволяют использовать уже существующие модели без внесения изменений в их архитектуру, что снижает вычислительные и финансовые затраты на обучение.
Адаптация к новой области – одна из тех задач, которые сравнительно легко даются человеку и очень сложно – ИИ. Поэтому данное направление, вероятно, будет весьма активно развиваться в ближайшее время. Во всяком случае, много умных людей направили туда свой мысленный взор.

Заключение

Сегодня моему блогу три месяца (если считать с даты первого поста, который появился у меня в телеграме). Это очень маленький срок для существования блога, но, как мне кажется, за это время сформировался круг тем, про которые мне интересно писать (и про которые, соответственно, я писать буду):

  • ИИ (модели и методы обучения, новости в области развития ИИ);
  • инструменты (для обучения, работы и других задач; таких постов больше в телеграме, я тестирую разные интересные штуки и рассказываю про них);
  • когнитивные процессы у людей (как мы учимся, ошибаемся и что на это влияет).

Я стараюсь эти темы чередовать между собой, чтобы было интереснее (и вам читать, и мне исследовать). Если вам такое нравится, присоединяйтесь.

Начать дискуссию