Как преобразовать вывод искусственной нейронной сети в вероятности? - PullRequest
35 голосов
/ 06 октября 2009

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

Я думаю, что есть два пути:

1) Вы получаете один выходной нейрон. Если его значение> 0,5, события, скорее всего, верны, если его значение <= 0,5, событие может быть ложным. </p>

2) Вы получаете два выходных нейрона, если значение первого> больше, чем значение второго, событие, скорее всего, истинно, и наоборот.

В этом случае ANN сообщает вам, является ли событие вероятным истинным или вероятным ложным. Это не говорит о том, насколько вероятно.

Есть ли способ преобразовать это значение в некоторые коэффициенты или напрямую получить коэффициенты из ANN. Я хотел бы получить вывод типа «Событие имеет вероятность 84% быть правдой»

Ответы [ 7 ]

21 голосов
/ 06 октября 2009

Как только NN был обучен, например. с использованием обратной прогонки, как упомянуто в вопросе (посредством чего логика обратной прогонки «подталкивает» веса таким образом, чтобы минимизировать функцию ошибки), веса, связанные со всеми отдельными входами («внешними» входами или входами внутри NN), фиксируются. Затем NN может использоваться для целей классификации.

В связи с тем, что математика (и «варианты») на этапе обучения могут стать немного толще, она относительно проста и понятна при работе в качестве классификатора. Основной алгоритм состоит в том, чтобы вычислить значение активации для каждого нейрона, как сумму входного х веса для этого нейрона. Это значение затем передается в функцию активации, целью которой является его нормализация и преобразование в логическое значение (в типичных случаях, поскольку в некоторых сетях нет правила «все или ничего» для некоторых из их слоев). Функция активации может быть более сложной, чем вы указали, в частности, она не должна быть линейной, но независимо от ее формы, обычно сигмовидной, она работает одинаково: выяснение, где активация подходит на кривой, и, если применимо, выше или ниже порога. Затем базовый алгоритм обрабатывает все нейроны в данном слое, прежде чем перейти к следующему.

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

Итак ... Как и где я могу получить «мои проценты»? ... Все зависит от реализации NN, и, что более важно, реализация диктует тип функций нормализации, которые можно использовать для получения значений активации в 0-1 диапазон и таким образом, что сумма всех процентов «складывается» до 1. В простейшей форме функцию активации можно использовать для нормализации значения и весов входных данных для Выходной слой можно использовать в качестве факторов для обеспечения «сложения» с 1 вопросом (при условии, что эти веса сами по себе настолько нормализованы).

Et voilà!

Разъяснение : (следуя записке Матье)
Не нужно ничего менять в том, как работает сама нейронная сеть; единственное, что нужно, - это каким-то образом «подключиться» к логике output нейронов, чтобы получить доступ к [действительному значению] значения активации, которое они вычислили, или, возможно, лучше, получить доступ к реально значимому результату активации функция, до ее логического преобразования (которая обычно основана на пороговом значении или некоторой стохастической функции).

Другими словами, NN работает так же, как и раньше, ни его обучение, ни логика распознавания не изменяются, входные данные для NN остаются неизменными, как и соединения между различными уровнями и т. Д. Мы получаем только копию действительного значения активация нейронов в выходном слое, и мы используем это для вычисления процента. Фактическая формула для расчета процента зависит от природы значения активации и связанной с ней функции (ее масштаб, диапазон относительно выхода других нейронов и т. Д.).
Вот несколько простых случаев (взятых из предложенных правил вывода вопроса) 1) Если имеется один выходной нейрон: отношение значения, обеспечиваемого функцией активации, к диапазону, который должна выполнять эта функция. 2) Если имеется два (или более выходных нейрона), как, например, с классификаторами: если все выходные нейроны имеют одинаковую функцию активации, процент для данного нейрона равен его значению функции активации, деленному на сумму всех значений функции активации , Если функции активации меняются, это становится индивидуальной ситуацией, потому что отдельные функции активации могут указывать на целенаправленное желание придать больший вес некоторым нейронам, и процент должен учитывать это.

18 голосов
/ 07 октября 2009

Что вы можете сделать, это использовать сигмоидную передаточную функцию на узлах выходного слоя (которая принимает диапазоны данных (-inf, inf) и выводит значение в [-1,1]).
Затем, используя выходную кодировку 1-из-n (один узел для каждого класса), вы можете отобразить диапазон [-1,1] на [0,1] и использовать его в качестве вероятности для каждого класса значение (обратите внимание, что это работает естественно для более чем двух классов).

9 голосов
/ 27 ноября 2011

Значение активации одного выходного нейрона является линейно взвешенной суммой и может быть напрямую интерпретировано как приблизительная вероятность, если сеть обучена давать выходы в диапазоне от 0 до 1. Это, как правило, имеет место, если Передаточная функция (или выходная функция) как на предыдущем этапе, так и обеспечение конечного выхода также находится в диапазоне от 0 до 1 (обычно сигмоидальная логистическая функция). Тем не менее, нет никакой гарантии, что это возможно, но ремонт возможен. Более того, если сигмоиды не являются логистическими и весовые коэффициенты не должны быть положительными и равными 1, это маловероятно. Как правило, нейронная сеть будет тренироваться более сбалансированным образом с использованием сигмовидной оболочки Тан и весов и активаций, которые варьируются от положительных до отрицательных (из-за симметрии этой модели). Другим фактором является распространенность класса - если он составляет 50%, то порог 0,5, вероятно, будет эффективен для логистики, и порог 0,0 для танга. Сигмоид предназначен для того, чтобы подталкивать предметы к центру диапазона (при обратном распространении) и удерживать его от выхода из диапазона (при прямой передаче). Значимость производительности (относительно распределения Бернулли) также может быть интерпретирована как вероятность того, что нейрон делает реальные предсказания, а не догадки. В идеале смещение предиктора к позитивам должно соответствовать распространенности позитивов в реальном мире (который может варьироваться в разное время и в разных местах, например, «бычий» или «медвежий» рынки, например, кредитоспособность людей, обращающихся за кредитами, против людей, которые не могут произвести платежи по кредитам). ) - калибровка по вероятностям имеет то преимущество, что любой желаемый сдвиг может быть легко установлен.

Если у вас есть два нейрона для двух классов, каждый из них можно интерпретировать независимо, как указано выше, и также можно уменьшить половину разницы между ними. Это все равно что щелкнуть по нейрону отрицательного класса и усреднить. Различия могут также привести к оценке вероятности значимости (с использованием T-критерия).

Оценка Бриера и ее разложение Мерфи дают более прямую оценку вероятности того, что средний ответ верен, в то время как Информированность дает вероятность того, что классификатор принимает обоснованное решение, а не предположение, ROC AUC дает вероятность положительного класса будет оцениваться выше, чем отрицательный класс (положительным предиктором), и Каппа даст аналогичное число, которое соответствует информации, когда распространенность = смещение.

То, что вы обычно хотите, это как вероятность значимости для общего классификатора (чтобы убедиться, что вы играете на реальном поле, а не в воображаемой системе оценок) и оценка вероятности для конкретного примера. Существуют различные способы калибровки, в том числе выполнение регрессии (линейной или нелинейной) в зависимости от вероятности и использование ее обратной функции для преобразования в более точную оценку вероятности. Это можно увидеть по улучшению оценки Бриера, при котором компонент калибровки уменьшается до 0, но компонент различения остается тем же, как и ROC AUC и Informedness (Каппа подвержена систематической ошибке и может ухудшиться).

Простой нелинейный способ калибровки по вероятностям заключается в использовании кривой ROC - поскольку пороговое значение изменяется для выходного сигнала одного нейрона или разности между двумя конкурирующими нейронами, мы наносим на график результаты истинных и ложных положительных значений на Кривая ROC (ложные и истинные отрицательные показатели, естественно, являются дополнениями, поскольку то, что на самом деле не является положительным, является отрицательным). Затем вы сканируете кривую ROC (полилинию) точка за точкой (каждый раз, когда изменяется градиент) выборка за выборкой, и доля положительных выборок дает оценку вероятности для позитивов, соответствующих нейронному порогу, который породил эту точку. Значения между точками на кривой могут быть линейно интерполированы между теми, которые представлены в наборе калибровки - и фактически любые плохие точки на кривой ROC, представленные в виде выпуклостей (вмятин), могут быть сглажены выпуклой оболочкой - вероятностная интерполяция между конечные точки сегмента корпуса. Flach и Wu предлагают метод, который на самом деле переворачивает сегмент, но это зависит от того, используется ли информация неправильно, и, хотя она может использоваться неоднократно для произвольного улучшения набора калибровки, вряд ли можно будет обобщать ее в тестовой ситуации.

(Я пришел сюда в поисках статей, которые видел много лет назад об этих подходах на основе ROC - так что это по памяти и без этих потерянных ссылок.)

7 голосов
/ 10 декабря 2013

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

6 голосов
/ 23 июля 2013

вы пробовали проф. Предложение Хинтона обучить сеть с помощью функции активации softmax и кросс-энтропийной ошибки?

в качестве примера создайте трехслойную сеть со следующим:

linear neurons   [ number of features ]
sigmoid neurons [ 3 x number of features ]
linear neurons   [ number of classes ]

затем обучите их с кросс-энтропийной ошибкой передачи softmax с вашим любимым оптимизатором стохастического спуска / iprop plus / grad спуска После тренировки выходные нейроны должны быть нормализованы до суммы 1.

Подробнее см. http://en.wikipedia.org/wiki/Softmax_activation_function. Среда машинного обучения Shark предоставляет функцию Softmax, объединяя две модели. И проф. Hinton отличный онлайн-курс @ http://coursera.com в отношении деталей.

4 голосов
/ 02 октября 2013

При использовании ANN для классификации по 2 классам и функции активации логистической сигмоиды в выходном слое выходные значения можно интерпретировать как вероятности.

Таким образом, если вы выбираете между 2 классами, вы тренируетесь, используя кодирование 1-C, где 2 выхода ANN будут иметь обучающие значения (1,0) и (0,1) для каждого из классов соответственно.

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

Это можно обобщить для мультиклассовой классификации с использованием функции активации softmax.

Вы можете прочитать больше, включая доказательства вероятностной интерпретации здесь:

[1] Бишоп, Кристофер М. Нейронные сети для распознавания образов. Издательство Оксфордского университета, 1995.

4 голосов
/ 06 октября 2009

Помню, я видел пример нейронной сети, обученной обратному распространению для аппроксимации вероятности исхода, в книге «Введение в теорию нейронных вычислений» (Герц Крог Палмер). Я думаю, что ключом к примеру было специальное правило обучения, так что вам не нужно было преобразовывать выходные данные единицы в вероятность, но вместо этого вы автоматически получаете вероятность как выходные данные.
Если у вас есть возможность, попробуйте проверить эту книгу.

(кстати, "машины Больцмана", хотя они и менее известны, - это нейронные сети, разработанные специально для изучения распределения вероятностей, вы также можете проверить их)

...