Подтвердить что ты не робот

Как преобразовать вывод искусственной нейронной сети в вероятности?

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Et voilà!

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

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

Ответ 2

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

Ответ 3

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

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

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

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

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

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

Ответ 4

Вы попробовали проф. Хинтон предлагает обучение сети с функцией активации softmax и ошибкой кросс-энтропии?

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

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

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

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

Ответ 5

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

Ответ 6

Я помню, что я видел пример нейронной сети, обученной с обратным распространением, для приближения вероятности результата в книге "Введение в теорию нейронных вычислений" (hertz krogh palmer). Я думаю, что ключом к этому примеру было специальное правило обучения, так что вам не нужно было преобразовывать вывод единицы в вероятность, но вместо этого вы автоматически получали вероятность вывода.
Если у вас есть такая возможность, попробуйте проверить эту книгу.

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

Ответ 7

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

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

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

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

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

[1] Bishop, Christopher M. Нейронные сети для распознавания образов. Оксфордская университетская пресса, 1995 год.