Вы можете ознакомиться с первой частью этой серии здесь. Эта статья была впервые опубликована в Блоге Comet.
В части 1 этой серии мы обсудили источники неопределенности в моделях машинного обучения, методы количественной оценки неопределенности параметров и прогнозы простой модели линейной регрессии.
Методы, описанные в последнем посте, такие как начальная загрузка, имеют свои ограничения в случаях, когда подгонка модели занимает значительное время из-за размера набора данных или размера модели, например, в нейронных сетях.
В этой части нашей серии мы рассмотрим метод, который может предоставить оценки неопределенности во время прогнозирования для любой архитектуры нейронной сети, не внося никаких изменений в способ обучения сети.
Интервалы прогнозирования с использованием Dropout
Выпадение обычно рассматривается как эмпирический метод предотвращения переобучения в моделях глубокого обучения. Отсев предполагает игнорирование случайного подмножества нейронов в сетевом слое при каждой оценке партии. Мы можем думать об этом как об обучении ансамбля сетей, поскольку каждое обновление веса изменяет подмножество параметров в сети. Мы можем использовать это приближенное поведение во время прогнозирования.
Обычно Dropout используется только на этапе обучения сети. Однако, оставив его включенным во время прогнозирования, мы получим эквивалент ансамбля подсетей в нашей единой более крупной сети, которые имеют несколько разные представления данных. Если мы создадим набор прогнозов T из нашей модели, мы сможем использовать среднее значение и дисперсию этого набора прогнозов для оценки неопределенности.
Давайте воспользуемся набором данных Auto MPG, предоставленным в документации Tensorflow Keras, чтобы продемонстрировать этот подход. Мы собираемся использовать набор данных после применения всех шагов предварительной обработки, упомянутых в связанной документации.
Самое удивительное в этом подходе то, что он требует минимального изменения вашего кода, чтобы
Включить Dropout во время прогнозирования очень просто. Просто установите обучающий аргумент в вызове слоя Dropout на True.
from keras.models import Model from keras.layers import Input, Dense, Dropout dropout_rate = 0.25 def model_fn(): inputs = Input(shape=(9,)) x = Dense(64, activation='relu')(inputs) x = Dropout(dropout_rate)(x, training=True) x = Dense(64, activation='relu')(x) x = Dropout(dropout_rate)(x, training=True) outputs = Dense(1)(x) model = Model(inputs, outputs) model.compile(loss="mean_squared_error", optimizer='adam') return model
Теперь мы можем использовать его, чтобы делать прогнозы следующим образом.
import numpy as np predictions = [] sample_size = 100 for t in range(sample_size): predictions.append(model.predict(normed_test_data)) prediction_df = pd.DataFrame() pred_array = np.array(predictions) prediction_df['mean'] = pred_array.mean(axis=0).reshape(-1,) prediction_df['std'] = pred_array.std(axis=0).reshape(-1,)
Давайте нанесем наши прогнозы вместе с нашими интервалами на наши фактические целевые значения, чтобы увидеть, как мы это сделали.
Обратите внимание, что прогнозы, которые плохо совпадают с фактическими значениями, имеют очень широкие интервалы прогнозирования. Это показывает нам, что наша модель не может адекватно фиксировать информацию о функциях, которые вызывают эти ответы.
Как команде Uber удается упорядочивать свои данные и сплачивать команду? Отслеживание эксперимента кометы. Узнайте больше от Olcay Cirit от Uber.
Конечно, наши интервальные оценки чувствительны к размеру T и значению p, которое определяет долю нейронов, отброшенных в определенном слое. Чтобы оценить влияние этих параметров на наши интервалы, мы должны сначала выбрать показатель, который поможет нам определить качество наших интервалов. Двумя такими показателями являются вероятность покрытия интервала прогнозирования (PICP) и средняя ширина интервала прогнозирования . PICP сообщает нам процент времени, в течение которого интервал содержит фактическое значение прогноза, а MPIW дает нам среднюю ширину прогнозируемого интервала.
Наша цель — максимизировать PICP при минимизации MPIW, чтобы получить интервалы высокого качества. Давайте проведем несколько испытаний с разными значениями p, чтобы посмотреть, как это повлияет на наши показатели.
Таким образом, в нашем случае увеличение процента отсева приводит к увеличению как PICP, так и MPIW. Это интуитивно понятно. Чем больше нейронов выпадает из сети, тем выше дисперсия выходных данных. Это привело бы к увеличению средних интервалов, которые зафиксировали бы наше целевое значение.
Теперь давайте посмотрим, как влияет размер нашей выборки T. Мы собираемся сохранить фиксированный коэффициент отсева на уровне 0,10 в обоих слоях и изменить размер выборки.
В нашем конкретном случае кажется, что наши интервальные метрики практически не зависят от размера выборки. Мы не видим кардинальных изменений ни в одном из них при увеличении размера выборки со 100 до 1000.
Заключение
Мы рассмотрели, как можно использовать Dropout как способ оценки неопределенности модели во время прогнозирования. Эта техника, официально известная как MC Dropout, была разработана Ярином Галом, когда он работал над докторской диссертацией в Кембридже.
Этот подход позволяет избежать вычислительных узких мест, связанных с необходимостью обучения ансамбля нейронных сетей для оценки прогнозной неопределенности.
Одним из недостатков этого подхода является то, что он требует создания Tколичества прогнозов для каждой новой точки данных. В зависимости от варианта использования это может быть невозможно для логического вывода в реальном времени (например, в самоуправляемых автомобилях). Другое ограничение заключается в том, что вы должны использовать Dropout в качестве регуляризатора, что не всегда применимо к вашему варианту использования.
В части 3 нашей серии статей о неопределенности мы рассмотрим подходы, которые могут дать нам оценку неопределенности на основе одного прогноза, и сравним ее с методами, применявшимися до сих пор.
Примечание редактора. Heartbeat — это интернет-издание и сообщество, созданное участниками и посвященное предоставлению лучших образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.
Независимая от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.
Если вы хотите внести свой вклад, перейдите к нашему призыву к участию. Вы также можете подписаться на получение наших еженедельных информационных бюллетеней (Еженедельник глубокого обучения и Информационный бюллетень Comet), присоединиться к нам в Slack и следить за Comet в Twitter и LinkedIn, чтобы получать ресурсы, события и многое другое, что поможет вам быстрее создавать лучшие модели машинного обучения.