Обучение с подкреплением И POMDP
Вопрос
- Я пытаюсь использовать многослойный NN для реализации функции вероятности в Частично наблюдаемом Марковском процессе..
- Я думал, что входными данными для NN будут:текущее состояние, выбранное действие, состояние результата;Результатом является вероятность в [0,1] (prob.что выполнение выбранного действия в текущем состоянии приведет к результирующему состоянию)
- Во время обучения я ввел входные данные, указанные ранее, в NN, и я научил его выводить значение = 1.0 для каждого случая, который уже произошел.
В чем проблема :
Почти для всех тестовых случаев вероятность выхода близка к 0,95..ни один результат не был ниже 0,9 !Даже при почти невозможных результатах это давало высокую вероятность.
PS: Я думаю, это потому, что я учил, что это только случившиеся случаи, но не неслучившиеся..Но я не могу на каждом этапе эпизода указывать ему результат = 0.0 за каждое не произошедшее действие!
Есть какие-нибудь предложения, как решить эту проблему?Или может быть другой способ использовать NN или реализовать функцию prob?
Спасибо
Решение
Проблема в том, что сумма по всем возможным следующим состояниям должна быть равна 1.Если вы построите свою сеть таким образом, это не гарантировано.Мне приходят в голову две возможные альтернативы, в которых я предполагаю дискретные состояния.
- Делая прогноз, запустите сеть для каждого возможного следующего состояния.После этого нормализуйте, разделив на сумму всех вероятностей.
- Используйте один вывод для каждого возможного следующего состояния.Затем вы можете использовать слой softmax (как в классификации) и интерпретировать значения, которые затем варьируются от 0 до 1 и суммируются до 1, как вероятности.
Эти два понятия на самом деле примерно эквивалентны с математической точки зрения.
В случае непрерывных переменных вам придется принять распределения (например,многомерный гауссовский метод) и использовать параметры этого распределения (например,среднее значение и стандартный уровень ковариации) в качестве выходных данных.
Другие советы
При подгонке NN вы, возможно, захотите подогнать более широкий диапазон данных, есть ли при обучении какие-либо данные, которые вы хотите подогнать с вероятностью, близкой к 0?Если этого не произойдет, я подозреваю, что вы можете получить плохие результаты.В качестве первого шага я бы попробовал выбрать несколько разных параметров в наборе обучающих данных.
Кроме того, как вы тренируете NN?Вы пробовали использовать другие методы?Как насчет функций активации, возможно, поэкспериментируйте с использованием каких-нибудь других.
С нейронными сетями, я думаю, помогут некоторые методы проб и ошибок при выборе модели.(Извините, если все это недостаточно конкретно.)