Прогнозы для классов, на которых DNN еще не был обучен, – возможно ли это?

Вопрос или проблема

Мои данные имеют мультиклассовый, многометочный тип, и я планирую иметь в общей сложности 100 выходных классов.

Мои входные данные X для модели представляют собой аудиоданные, а y – это одномерный numpy массив с одной горячей кодировкой, состоящий из 100 колонок, показывающий 1 для указания соответствующего класса (например, y = [0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 ...]

model = Sequential()
model.add(...) # больше слоев ... CNN ...
model.add(...) # больше слоев ... LSTM ...
model.add(Dense(512, input_dim=n_inputs, kernel_initializer="he_uniform", activation='relu'))
model.add(Dense(100, activation='sigmoid'))
model.compile(loss="binary_crossentropy", optimizer="adam")

На данный момент у меня есть только аудиофайлы, относящиеся лишь к 12 (из запланированных 100) классам. Это означает, что 88 колонок y в настоящее время не имеют присвоенного 1.

Затем, после обучения на текущих данных с 12 классами (NSize ~ 16000), я запускаю model.predict(...) и получаю вероятности для почти всех 100 колонок, некоторые из них имеют довольно высокий процент.

Возможно ли, что модель выдает довольно высокие предсказания вероятностей для классов, которые она никогда не получала в качестве входных данных? Есть ли предложения, как это исправить? (Я почти на 100% исключаю ошибку в одной горячей кодировке y)

С уважением,
ziggyler

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

Ответ или решение

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

1. Основная проблема

Нейронные сети обучаются на основе представленных им данных. Если у вас есть 100 классов, но в доступных данных представлены только 12, то, по сути, модель не имеет никаких оснований для адекватного прогнозирования классов, которые не были представлены во время обучения. Возможность получения высоких вероятностей для этих классов, несмотря на отсутствие соответствующих данных, подразумевает несколько аспектов:

2. Предсказания для несуществующих классов

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

  • Общие черты: Некоторые классы могут иметь схожие или пересекающиеся признаки. Если модель уловила общие характеристики в уже имеющихся классах, она может неправомерно присвоить высокие вероятности классам, которые не обучались.

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

  • Обработка ошибок: Низкое количество обучающих данных в 12 классах может провоцировать ошибки модели, которые выливаются в ненадежные прогнозы для остальных классов.

3. Рекомендуемые решения

Если ваша цель – улучшить точность модели и минимизировать предсказания для непредставленных классов, несколько методов могут помочь:

  • Сбор дополнительных данных: Убедитесь, что у вас есть хотя бы несколько примеров для всех 100 классов, что поможет модели учиться на полном наборе данных.

  • Применение предобученных моделей: Используйте предобученные модели, которые были обучены на больших наборах данных и могут извлекать общие высокоуровневые признаки, которые затем могут быть адаптированы к вашей конкретной задаче.

  • Регуляризация: Постарайтесь использовать методы регуляризации, такие как dropout, которые могут помочь уменьшить переобучение и, следовательно, более точно обобщать на новые классы.

  • Создание негативных примеров: Чтобы предотвратить возможность нечаянного предсказания, можно рассмотреть создание "негативных" примеров для классов, которые еще не входят в выборку, чтобы модель училась не только определять позитивные классы, но и корректно интерпретировать ненадежные классы.

4. Вывод

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

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...