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

Вероятность и нейронные сети

Хорошо ли использовать сигмоидные или туннельные уровни вывода в нейронных сетях напрямую для оценки вероятностей?

i. Вероятность появления данного входа - выход сигмоидной функции в NN

ИЗМЕНИТЬ
Я хотел использовать нейронную сеть, чтобы узнать и предсказать вероятность возникновения данного ввода. Вы можете рассматривать вход как кортеж State1-Action-State2. Следовательно, выход NN - это вероятность того, что State2 произойдет при применении Action on State1..

Надеюсь, что все ясно.

ИЗМЕНИТЬ
Когда я тренируюсь в NN, я делаю случайное действие на State1 и наблюдаю результирующее состояние2; затем научите NN, что вход State1-Action-State2 должен привести к результату 1.0

4b9b3361

Ответ 1

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

Кроме того, в вашем вопросе предлагается выбор между двумя "альтернативами" ( "сигмоид и тань" ), но они на самом деле не альтернативы, а термин "сигмоидальная функция" является общим/неформальным термином для класса функций, который включает гиперболический тангенс ('tanh'), на который вы ссылаетесь.

Термин "сигмоидальный", вероятно, связан с характерной формой функции - значения return (y) ограничены между двумя асимптотическими значениями независимо от значения x. Вывод функции обычно нормализуется, так что эти два значения равны -1 и 1 (или 0 и 1). (Это поведение выхода, кстати, явно вдохновлено биологическим нейроном, который либо стреляет (+1), либо не (-1)). Взгляните на ключевые свойства сигмоидальных функций, и вы можете понять, почему они идеально подходят в качестве функций активации в прямолинейных, backpropagating нейронных сетях: (i) вещественные и дифференцируемые, (ii) имеющие ровно одну точку перегиба и ( iii) наличие пары горизонтальных асимптот.

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

def step_fn(x) :
  if x <= 0 :
    y = 0
  if x > 0 :
    y = 1    

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

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

# logistic function
def sigmoid2(x) :
  return 1 / (1 + e**(-x))   

# hyperbolic tangent
def sigmoid1(x) :
  return math.tanh(x)

Каковы факторы, которые следует учитывать при выборе функции активации?

Сначала функция должна дать желаемое поведение (возникающее из-за сигмоидальной формы). Во-вторых, функция должна быть дифференцируемой. Это требование для backpropagation, которое является методом оптимизации, используемым во время обучения, чтобы "заполнить" значения скрытых слоев.

Например, производная от гиперболического тангенса есть (в терминах вывода, как это обычно написано):

def dsigmoid(y) :
  return 1.0 - y**2

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

# -------- Редактировать (см. комментарий OP ниже) --------- #

Я не совсем уверен, что понял - иногда сложно сообщить подробности о NN, без кода, поэтому я должен, вероятно, просто сказать, что это хорошо подлежит этой оговорке: То, что вы хотите предсказать NN, должно быть так же как и зависимая переменная, используемая во время обучения. Например, если вы тренируете свой NN, используя два состояния (например, 0, 1), как одну зависимую переменную (которая, очевидно, отсутствует в ваших тестовых/производственных данных), то то, что ваш NN вернется при запуске в режиме прогнозирования, (пост-тренинг или компетентная весовая матрица).

Ответ 2

Вы должны выбрать правильную функцию потерь для минимизации. Квадратная ошибка не приводит к гипотезе максимального правдоподобия здесь. Квадратная ошибка выводится из модели с гауссовским шумом:

P(y|x,h) = k1 * e**-(k2 * (y - h(x))**2)

Вы оцениваете вероятности напрямую. Ваша модель:

P(Y=1|x,h) = h(x)
P(Y=0|x,h) = 1 - h(x)

P (Y = 1 | x, h) - вероятность того, что событие Y = 1 произойдет после просмотра x.

Гипотеза максимального правдоподобия для вашей модели:

h_max_likelihood = argmax_h product(
    h(x)**y * (1-h(x))**(1-y) for x, y in examples)

Это приводит к функции потери "кросс-энтропии". См. Главу 6 в Mitchell Machine Learning для функции потерь и ее вывода.

Ответ 3

Существует одна проблема с этим подходом: если у вас есть векторы из R ^ n, и ваша сеть отображает эти векторы в интервал [0, 1], не будет гарантировано, что сеть представляет действительную функцию плотности вероятности, так как интеграл от сети не гарантируется равным 1.

Например, нейронная сеть могла отображать любую входную форму R ^ n до 1,0. Но это явно невозможно.

Итак, ответ на ваш вопрос: нет, вы не можете.

Однако вы можете просто сказать, что ваша сеть никогда не видит "нереалистичные" образцы кода и, таким образом, игнорирует этот факт. Для обсуждения этой (а также еще более интересной информации о том, как моделировать PDF файлы с нейронными сетями) см. контрастный backprop.