Существует ли модель, которая может предсказывать непрерывные данные, одновременно предоставляя уровень доверия к прогнозу?

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

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

Если это поможет, я пытаюсь предсказать количество хлорофилла, присутствующего в растении, на основании изображения с дрона. Однако я также хочу иметь возможность визуализировать эту неопределенность, когда я создаю тепловую карту предсказанного хлорофилла для каждого пикселя. Я думал, что предсказанное значение может принять цвет из соответствующей тепловой карты, а затем сила прогноза (уверенность) этого предсказанного значения может быть преобразована в значение альфа. В итоге получится ‘размытый’ пиксель, если у него низкая уверенность в своем предсказании.

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

Оценка $\mu$ и $\sigma$ напрямую

Обычная нейронная сеть, используемая для регрессии, но с выходом, который дает вам как $\mu$, так и $\sigma$ для каждой выборки, будет работать здесь.

Вместо того чтобы обучать сеть с помощью обычных потерь регрессии (например, MSE), функция потерь будет отрицательной логарифмической вероятностью. Для каждой выборки сеть будет учиться предсказывать $\mu$, который отслеживает $y$, или, по крайней мере, $\sigma$, которая ограничивает $y$, если не может определить $\mu$. Последнее можно интерпретировать как меру неопределенности в предсказании для этой конкретной выборки.

Объяснение и пример на PyTorch здесь, и, думаю, есть и другие примеры, использующие пакет torch.distributions.

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

В этом случае, поскольку вы предсказываете строго положительное количество, вы могли бы обратить внимание на распределения, доступные в torch.distributions. Какое бы вы ни выбрали (скажем, гамма), вы можете получить доступ к его методу .log_prob(<target_values>).mean() и использовать отрицательное значение этого метода в качестве функции потерь для обучения сети.

Квантильная регрессия

Если вы не хотите указывать распределение, вы можете вместо этого выполнить квантильную регрессию. Предположим, вы хотите, чтобы сеть выводила 10%, 50% (медиана) и 90% квантиль. Вы добавите выходной слой с 3 единицами и обучите модель, используя потери пинбола.


Я нашел эти видео познавательными: Плейлист по количественной оценке неопределенности от DeepFindr

Видеоуроки и связанные с ними блокноты Jupyter охватывают моделирование алгебраической/данных неопределенности (включая два метода, которые я описал выше), а также эпистемическую/модельную неопределенность (например, использование MC dropout).

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

Да, существует несколько моделей, которые могут предсказывать непрерывные данные и одновременно предоставлять уровень уверенности в этих предсказаниях.

Bayesian Neural Networks

Bayesian нейронные сети (BNN) могут быть адаптированы для решения задач регрессии. В отличие от классических нейронных сетей, где модели выдают фиксированные предсказания, BNN позволяют учитывать неопределенность в выходных данных путем вывода распределений. Вы можете реализовать BNN, используя подходы, основанные на варьировании параметров, чтобы модель предсказывала как математическое ожидание ((\mu)), так и стандартное отклонение ((\sigma)) для каждого примера. Затем вы можете использовать отрицательную логарифмическую вероятность (negative log likelihood) в качестве функции потерь для обучения модели. Это значит, что ваша сеть будет учиться минимизировать расхождение, предсказывая значения, которые лучше всего соответствуют наблюдаемым данным, поскольку (\sigma) будет служить мерой неопределенности.

Например, в PyTorch можно использовать библиотеку torch.distributions для выбора подходящего распределения, например, гауссовского или гамма-распределения, в зависимости от ваших данных. Это позволит вам оценить вероятность вашего предсказания и соответствующим образом визуализировать его.

Квантильная регрессия

Если вы не хотите задавать распределение, можете использовать квантильную регрессию. Это позволяет вашей модели выдавать несколько предсказаний в виде квантилей (например, 10%, 50% и 90%), что обеспечит более полное представление об уверенности ваших предсказаний. Для этого вам нужно будет добавить выходной слой с несколькими нейронами и использовать функцию потерь, называемую квантильной (pinball loss), для обучения модели.

Визуализация неопределенности

В вашей задаче по предсказанию содержания хлорофилла на основе изображений с дронов вы можете использовать предсказанные (\mu) как значения для цветовой карты, а значения (\sigma) для настройки прозрачности (alpha) каждого пикселя. Таким образом, область с высокой неопределенностью будет выглядеть более "размытой", что визуально укажет на уровень уверенности в предсказаниях.

Ресурсы и обучение

Для получения дополнительной информации и практических примеров я рекомендую ознакомиться с методом работы с неопределенностью в нейронных сетях. Одним из хороших ресурсов являются видеоплейлисты и Jupyter-ноутбуки, такие как Uncertainty Quantification playlist by DeepFindr. Также можете обратиться к статье modeling uncertainty with pytorch, которая даст вам представление о том, как реализовать модель, учитывающую неопределенность.

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

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

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