Вопрос или проблема
Контекст
Я работаю над моделью обработки естественного языка (NLP), которая может классифицировать документы в одну из N категорий. У меня есть данные документов от нескольких различных клиентов. Темы документов схожи между клиентами, но они классифицируют их в разные категории.
Для упрощения предположим, что документы могут содержать шесть разных тем: A, B,…, F. Каждый клиент классифицирует документы по-разному от тем, то есть N, упомянутое выше, специфично для клиента, и смесь тем (в некоторой степени) различается: У клиента 1 три класса (ABC, D, EF), у клиента 2 четыре (A, BC, DE, F), у клиента 3 четыре (AB, CD, E, F) и так далее.
Цель состоит в том, чтобы использовать данные текущих клиентов для разработки модели, которую можно будет адаптировать и дообучить на новом клиенте (с другой смесью тем A, B,…, F и потенциально только с небольшим объемом данных).
Что я сделал
Я искал здесь и в научных статьях стратегии переноса обучения с несколькими меньшими наборами данных с различными категориями выходных данных, но не смог найти ничего. Я нашел только статьи, которые имеют дело с большими наборами данных.
Что я обдумываю
Моя текущая идея заключается в том, чтобы использовать модель глубокого обучения (keras/tf) с такой структурой: документ (от клиента X) -> предварительная обработка (общая для клиентов) -> извлечение признаков (общее для клиентов) -> классификация (специфичная для клиента X).
С таким подходом во время обучения я буду менять слой классификации, специфичный для клиента, для каждого клиента. Это позволит обучить слои предварительной обработки и извлечения признаков на данных от всех клиентов, но обучить слои классификации только на данных индивидуального клиента.
Вопросы
-
Есть ли у вас ссылки на статьи или другие материалы, которые описывают аналогичную ситуацию?
-
Является ли это наиболее подходящей стратегией для обучения этой модели? Более конкретно, возможно ли создать структуру модели, в которой слои классификации всех клиентов будут присутствовать в модели одновременно, а переключение между слоями можно будет обрабатывать с помощью хитро спроектированной функции потерь?
В конечном итоге я сделал то, что предложил в вопросе: документ (от клиента X) -> предварительная обработка (общая для клиентов) -> извлечение признаков (общее для клиентов) -> классификация (специфичная для клиента X). У меня была функция потерь для каждого клиента X.
Я обучил сеть с помощью пользовательского цикла обучения.
Обучение сошлось, и это было то, в чем я больше всего сомневался. Точность тестирования оказалась немного лучше по сравнению с обучением модели на одном клиенте.
Тем не менее, мне все еще не удалось найти никаких статей по этой теме.
Ответ или решение
Ответ на вопрос о переноса обучения с множеством небольших наборов данных
Контекст
Ваша задача состоит в том, чтобы создать модель обработки естественного языка (NLP), которая может классифицировать документы по одной из N категорий, основываясь на данных от различных клиентов. Учитывая, что темы документов схожи, но классификация отличается для каждого клиента, ваше решение должно эффективно справляться с этими различиями.
Ваше решение
Вы уже предложили функцию обработки документа, которая включает в себя общий этап предобработки и извлечения признаков, с последующим специфичным для клиента этапом классификации. Это разумный подход, который эффективно использует знания, полученные от различных клиентов.
Вопросы
1. Существующие исследования
Найти исследования, касающиеся переноса обучения с малыми наборами данных, может быть сложно, однако, имеет смысл ознакомиться с работами, связанными с многозадачным обучением и адаптацией моделей. Примеры статей, которые могут быть вам полезны:
- "Multi-task learning for sequence labeling with recurrent neural networks" – в этой статье рассматривается, как разные задачи могут одновременно обучаться в одной модели, что может быть полезно для вашей классификационной задачи.
- "Transfer Learning for Text Classification with Transformers" – работа, посвященная переносному обучению, используя трансформеры. Обратите внимание на подходы, которые включают дообучение на малом количестве данных.
2. Стратегия обучения
Ваша текущая стратегия выглядит обоснованной. Разделение модели на общие и специфические для клиента части позволяет получить преимущества от общего извлечения признаков, а также адаптировать классификацию под конкретного клиента. Каждая классификационная голова может быть подкреплена специфичной для клиента функцией потерь, что позволит модели собирать информацию об особенностях каждого клиента.
Хотя вы спрашиваете о возможности одновременного присутствия всех классификационных слоев в одной модели, это может усложнить структуру модели и привести к конфликтам, если категории пересекаются. Концептуально это возможно (используя, например, отбор характерных признаков для каждой задачи), но рекомендуется придерживаться вашей первоначальной идеи, чтобы избежать появления излишней сложности.
Заключение
Благодаря вашему выбору архитектуры модель уже дала положительные результаты, улучшив качество классификации. Я бы рекомендовал продолжить мониторинг дискуссий и публикаций в области переноса обучения и многозадачного обучения для дальнейшего улучшения и понимания возможных подходов. Надеюсь, что предложенные статьи будут вам полезны, а ваш подход покажет хорошие результаты при работе с новыми клиентами и их небольшими наборами данных.