Усиление обучения И ПОМДП - PullRequest
2 голосов
/ 01 мая 2010
  • Я пытаюсь использовать NN для реализации функции вероятности в частично наблюдаемом марковском процессе.
  • Я думал, что входные данные для NN будут: текущее состояние, выбранное действие, состояние результата; Выходное значение - это вероятность в [0,1] (вероятно, что выполнение выбранного действия с текущим состоянием приведет к состоянию результата)
  • В процессе обучения я вводил указанные выше входные данные в NN и обучал его выводу = 1,0 для каждого случая, который уже произошел.

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

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

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

Спасибо

Ответы [ 2 ]

2 голосов
/ 03 мая 2010

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

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

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

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

0 голосов
/ 01 мая 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...