Як поводитися з недійсними рухами в навчанні підкріплення?


20

Я хочу створити AI, який може грати з п’яти в ряд / гомоку. Як я вже згадував у назві, я хочу використовувати для цього підкріплення.

Я використовую метод градієнта політики , а саме REINFORCE з базовою лінією. Для наближення значення та політики я використовую нейронну мережу . Він має згорнуті і повністю пов'язані шари. Усі шари, крім виведення, є спільними. Вихідний рівень політики містить 8×8=64 (розмір плати) вихідний блок і softmax на них. Так це стохастично. Але що робити, якщо мережа створює дуже високу ймовірність недійсного ходу? Недійсний хід - це коли агент хоче перевірити квадрат, у якому є одне "X" або "O". Я думаю, що це може застрягти в такому ігровому стані.

Чи можете ви порадити якесь рішення цієї проблеми?

Моя здогадка - використовувати метод актора-критика . За недійсний хід нам слід дати негативну винагороду і передати черга супернику.

Відповіді:


10

Просто ігноруйте недійсні ходи.

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

Для мене має сенс просто встановити ймовірність усіх незаконних переходів до нуля і перенормірувати вектор виводу, перш ніж вибирати свій хід.


Дякую. напевно, мені було не ясно, але я вибрав цей крок випадковим чином за результатами, що вийшли. Я спробую вашу пораду встановити вірогідність незаконних переходів до нуля і побачити, що буде. Гарного дня.
Molnár István

8

Зазвичай методи softmax в методах градієнта політики, що використовують лінійне наближення функції, використовують наступну формулу для обчислення ймовірності вибору дії a . Тут вага θ , і функція ϕ є функцією поточного стану s і дією з безлічі дій A .

π(θ,a)=eθϕ(s,a)bAeθϕ(s,b)

Legal(A)

π(θ,a)=eθϕ(s,a)bLegal(A)eθϕ(s,b),aLegal(A)

In pseudocode the formula may look like this:

action_probs = Agent.getActionProbs(state)
legal_actions = filterLegalActions(state, action_probs)
best_legal_action = softmax(legal_actions)

Whether using linear or non-linear function approximation (your neural network), the idea is to only use the legal moves when computing your softmax. This method means that only valid moves will be given by the agent, which is good if you wanted to change your game later on, and that the difference in value between the limited choice in actions will be easier to discriminate by the agent. It will also be faster as the number of possible actions decreases.


Very useful. Thanks for posting both the equations and pseudocode!
DukeZhou

1
The maths and pseudocode do not match here. Softmax over the legal move probabilities will adjust the relative probabilities. E.g. (0.3, 0.4, 0.2, 0.1) filtered with first and third item removed would be (0.0, 0.8, 0.0, 0.2) with your formula, but would be (0.0, 0.57, 0.0, 0.42) using the pseudocode. The pseudocode needs to take the logits, prior to action probability calculations.
Neil Slater

4
How does one compute the gradient of the filtered version of Softmax? Seems like this would be necessary for backpropagation to work successfuly, yes?
brianberns

@brianberns Did you manage to find an answer? It seems like that would be the case to me but somehow in my toy example I'm only getting the right answer when using the log probabilities of the unfilitered softmax...
tryingtolearn

5

IMHO the idea of invalid moves is itself invalid. Imagine placing an "X" at coordinates (9, 9). You could consider it to be an invalid move and give it a negative reward. Absurd? Sure!

But in fact your invalid moves are just a relic of the representation (which itself is straightforward and fine). The best treatment of them is to exclude them completely from any computation.

This gets more apparent in chess:

  • In a positional representation, you might consider the move a1-a8, which only belongs in the game if there's a Rook or a Queen at a1 (and some other conditions hold).

  • In a different representation, you might consider the move Qb2. Again, this may or may not belong to the game. When the current player has no Queen, then it surely does not.

As the invalid moves are related to the representation rather than to the game, they should not be considered at all.


1
Чудова точка. У [M] іграх, які граються на судоку, обмеження роблять багато позицій (координат + значення) незаконними після першого розміщення. Немає значення при розгляді цих незаконних позицій з точки зору розміщення, але важливим стратегічним рівнем є визнання, які місця розташування мінімізують значення залишків, що не відображаються. (Тобто , якщо я розміщую 8 тут, він блокує мій противник від розміщення 8 в цьому рядку, стовпці або регіону За суті, «скільки стратегічні позиції робить це розміщення видалити з ігрового поля?».)
DukeZhou

5

Нещодавно я зіткнувся з подібною проблемою з Міночистачем.

Я вирішив це шляхом ігнорування незаконних / недійсних кроків цілком.

  1. Використовуйте мережу Q для прогнозування Q-значень для всіх ваших дій (дійсних та недійсних)
  2. Попередньо обробіть значення Q, встановивши всі недійсні ходи до Q-значення нульового / від’ємного числа (залежить від вашого сценарію)
  3. Використовуйте політику на ваш вибір, щоб вибрати дію з уточнених Q-значень (наприклад, жадібний або Больцман)
  4. Виконайте вибрану дію та відновіть свою логіку DQN

Сподіваюсь, це допомагає.


1
Про єдине, що я хотів би додати до цього, це те, що ви повинні пам’ятати, щоб зробити зворотну підтримку на DQN, коли ви встановлюєте значення Q для незаконних (ів), пар на велике негативне значення, щоб його навчилися не вибирати цей стан, дії пари наступного разу.
SN

But I do wonder what setting large -ve target Q values does to the continuity or shape of the loss/error function (thereby affecting the gradient search). What was your experience?
S.N.

1
@SN Я бачу вашу думку. Ідея полягає у тому, щоб вибрати дію з найвищим значенням Q, яке не є недійсною дією . Далі ви виконуєте цю дію і використовуєте цю дію у своєму праві оновлення (тобто тренуйте свій DQN, щоб надавати перевагу цій дії в довгостроковій перспективі). Це робить, щоб зробити майбутні значення Q вибраної дії вищими та, таким чином, більш сприятливими. Це НЕ знизить незаконні дії Q-цінності нижче, що не має значення, оскільки вони завжди відфільтровані (не розглядаються). Дайте мені знати, якщо ви хочете, щоб я детальніше розробив приклад. :)
Санавеса

1
@Sanavesa впевнений, що має сенс, ви по суті розраховуєте на DQN, врешті-решт, дізнаєтесь, який правильний вибір здійснюється через школу важких ударів. Але в ситуаціях, коли існує лише один чи декілька законних виборів, ти закінчишся дуже повільним навчанням. Я пропоную підхід - це спосіб включити домен K у проблему, щоб прискорити навчання. Це також те, що я думав, що ви робили в своєму первісному дописі, де ви писали про "встановлення недійсних переходів на Q-значення нульового / від'ємного числа"
SN

1
@SNТочно! Обидва підходи мають свої достоїнства. Залежить від програми, якщо легше засвоїти юридичні кроки або просто відверто їх проігнорувати. Для великих складних додатків я відчуваю, що ігнорування недійсних рухів набагато швидше, щоб агент дізнався, але не цитуйте мене з цього приводу.
Санавеса
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.