Q-навчання за допомогою нейронної мережі як наближення функції


11

Я намагаюся використовувати нейронну мережу для того, щоб наблизити значення Q у Q-навчанні, як у питаннях про Q-навчання за допомогою нейронних мереж . Як було запропоновано в першій відповіді, я використовую функцію лінійної активації для вихідного шару, в той час як я все ще використовую функцію активації сигмоїдів у прихованих шарах (2, хоча я можу змінити це згодом). Я також використовую одну мережу NN, яка повертає результат для кожної дії до рекомендацій.Q(а)

Однак алгоритм все ще розходиться для простої проблеми балансування візка-полюса. Отож, я боюся, що моє Q-оновлення неправильне. Після ініціалізації, що я робив на кожному кроці, є наступне:

  • Обчисліть за допомогою прямого поширення NN для всіх дій.Qт(ст)
  • Виберіть нову дію, , у новий стан .s tатст
  • Обчисліть за допомогою прямого поширення NN для всіх дій.Qт(ст+1)
  • Встановіть цільове значення Q: лише для поточної дії, a_t , при встановленні Q_ {t + 1} (s, a_t) = Q_ {t} (s, a_t) для інших станів. Зауважте, я думаю, що це проблема. a t Q t + 1 ( sQт+1(ст,ат)=Qт(ст,ат)+αт[rт+1+γмаксаQ(ст+1,а)-Qт(ст,ат)]атQт+1(с,ат)=Qт(с,ат)
  • Установіть вектор помилки е=Qтаrгет-Qт=Qт+1-Qт
  • Поверніть розповсюдження помилки через NN, щоб оновити вагові матриці.

Хто-небудь, будь ласка, вкаже мені, де я помилився?

Крім того, чи вважаєте ви, що я повинен включати термін зміщення також у вхідний шар та перший прихований шар (тобто для сигмоїдних функцій)? Чи зміниться це?

Заздалегідь дякую за вашу допомогу. Я можу допомогти уточнити питання або поділитися кодом, якщо потрібно.

Відповіді:


9

Ваша мета повинна бути справедливою

rт+1+γмаксаQ(ст+1,а) .

Зауважте, що ваш термін помилки (який є правильним) може бути переписаний як rт+1+γмаксаQ(ст+1,а)-Qт

що є терміном всередині дужок у формулі оновлення. Це буде помножено на вашу швидкість навчання NN та інші умови зворотного розповсюдження під час навчання, а потім буде додано до попередніх ваг, як і формула оновленняQ


Дякую за пораду! Таким чином я можу уникнути числових помилок у цільовому значенні: як ви кажете, безглуздо додавати, а потім віднімати . Qт
Енріко Андерліні

Однак моє NN + Q все ще не збігається. Отже, якщо метод правильний, я думаю, я просто спробую пограти зі швидкістю навчання та кількістю нейронів у прихованому шарі (
ях

1
Так, ви повинні це зробити (спробуйте скористатися і функцією передачі ReLU). Але зауважте, що Q-навчання не має гарантій конвергенції з наближенням функції. Якщо наступна спроба не спрацює, ви можете спробувати Advantage Learning. І нарешті, проблема може полягати в тому, що ваші дані не є iid. Тому вам потрібно буде реалізувати Experience Replay.
rcpinto

У мене є розширення питання. Я розумію алгоритм, про який йдеться у запитанні, але я збентежений щодо та термінів. Якщо винагорода за гру відома лише в кінці гри (за умови виграшу чи втрати), як нам забезпечити винагороду за проміжний крок? Qт+1rт+1
Канішка Гангули

1
Ні, це нуль. Але воно буде повільно поширюватися значеннями Q на попередні стани, оскільки значення Q - це оцінка сукупних майбутніх винагород.
rcpinto
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.