Вопрос

  • Я пытаюсь использовать многослойный NN для реализации функции вероятности в Частично наблюдаемом Марковском процессе..
  • Я думал, что входными данными для NN будут:текущее состояние, выбранное действие, состояние результата;Результатом является вероятность в [0,1] (prob.что выполнение выбранного действия в текущем состоянии приведет к результирующему состоянию)
  • Во время обучения я ввел входные данные, указанные ранее, в NN, и я научил его выводить значение = 1.0 для каждого случая, который уже произошел.

В чем проблема :
Почти для всех тестовых случаев вероятность выхода близка к 0,95..ни один результат не был ниже 0,9 !Даже при почти невозможных результатах это давало высокую вероятность.

PS: Я думаю, это потому, что я учил, что это только случившиеся случаи, но не неслучившиеся..Но я не могу на каждом этапе эпизода указывать ему результат = 0.0 за каждое не произошедшее действие!

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

Спасибо

Это было полезно?

Решение

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

  1. Делая прогноз, запустите сеть для каждого возможного следующего состояния.После этого нормализуйте, разделив на сумму всех вероятностей.
  2. Используйте один вывод для каждого возможного следующего состояния.Затем вы можете использовать слой softmax (как в классификации) и интерпретировать значения, которые затем варьируются от 0 до 1 и суммируются до 1, как вероятности.

Эти два понятия на самом деле примерно эквивалентны с математической точки зрения.

В случае непрерывных переменных вам придется принять распределения (например,многомерный гауссовский метод) и использовать параметры этого распределения (например,среднее значение и стандартный уровень ковариации) в качестве выходных данных.

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top