Я намагаюся використовувати нейронну мережу для того, щоб наблизити значення Q у Q-навчанні, як у питаннях про Q-навчання за допомогою нейронних мереж . Як було запропоновано в першій відповіді, я використовую функцію лінійної активації для вихідного шару, в той час як я все ще використовую функцію активації сигмоїдів у прихованих шарах (2, хоча я можу змінити це згодом). Я також використовую одну мережу NN, яка повертає результат для кожної дії до рекомендацій.
Однак алгоритм все ще розходиться для простої проблеми балансування візка-полюса. Отож, я боюся, що моє Q-оновлення неправильне. Після ініціалізації, що я робив на кожному кроці, є наступне:
- Обчисліть за допомогою прямого поширення NN для всіх дій.
- Виберіть нову дію, , у новий стан .s t
- Обчисліть за допомогою прямого поширення NN для всіх дій.
- Встановіть цільове значення Q: лише для поточної дії, a_t , при встановленні Q_ {t + 1} (s, a_t) = Q_ {t} (s, a_t) для інших станів. Зауважте, я думаю, що це проблема. a t Q t + 1 ( s
- Установіть вектор помилки
- Поверніть розповсюдження помилки через NN, щоб оновити вагові матриці.
Хто-небудь, будь ласка, вкаже мені, де я помилився?
Крім того, чи вважаєте ви, що я повинен включати термін зміщення також у вхідний шар та перший прихований шар (тобто для сигмоїдних функцій)? Чи зміниться це?
Заздалегідь дякую за вашу допомогу. Я можу допомогти уточнити питання або поділитися кодом, якщо потрібно.