1

Я делаю программу, которая учит 2 игроков играть в обычную настольную игру, используя Укрепление обучения и метод обучения временным различиям (TD (λ)) на основе последействия. Обучение происходит путем обучения нейронной сети. Я использую Sutton's NonLinear TD/Backprop neural network) Мне очень понравилось бы ваше мнение о моей следующей дилемме. Основного алгоритма/псевдокод для воспроизведения поворота между двумя противниками этоУкрепление обучения-ТД обучения от последействия

WHITE.CHOOSE_ACTION(GAME_STATE); //White player decides on its next move by evaluating the current game state (TD(λ) learning) 

GAME_STATE = WORLD.APPLY(WHITE_PLAYERS_ACTION); //We apply the chosen action of the player to the environment and a new game state emerges 

IF (GAME STATE != FINAL){ // If the new state is not final (not a winning state for white player), do the same for the Black player 

    BLACK.CHOOSE_ACTION(GAME_STATE) 

GAME_STATE = WORLD.APPLY(BLACK_PLAYERS_ACTION) // We apply the chosen action of the black player to the environment and a new game state emerges. 
} 

Когда каждый игрок должен вызвать его метод обучения PLAYER.LEARN (GAME_STATE). Вот диллема.

ВАРИАНТ A. Сразу после переезда каждого игрока, после того, как новый afterstate возникает следующим образом:

WHITE.CHOOSE_ACTION(GAME_STATE); 
GAME_STATE = WORLD.APPLY(WHITE_PLAYERS_ACTION); 
WHITE.LEARN(GAME_STATE) // White learns from the afterstate that emerged right after his action 
IF (GAME STATE != FINAL){ 
    BLACK.CHOOSE_ACTION(GAME_STATE) 
    GAME_STATE = WORLD.APPLY(BLACK_PLAYERS_ACTION) 
    BLACK.LEARN(GAME_STATE) // Black learns from the afterstate that emerged right after his action 

OPTION B. Сразу после переезда каждого игрока, после того, как новый afterstate появляется, но после того, как противники двигаются, если противник совершает победный ход.

WHITE.CHOOSE_ACTION(GAME_STATE); 
GAME_STATE = WORLD.APPLY(WHITE_PLAYERS_ACTION); 
WHITE.LEARN(GAME_STATE) 
IF (GAME_STATE == FINAL) //If white player won 
    BLACK.LEARN(GAME_STATE) // Make the Black player learn from the White player's winning afterstate 
IF (GAME STATE != FINAL){ //If white player's move did not produce a winning/final afterstate 
    BLACK.CHOOSE_ACTION(GAME_STATE) 
    GAME_STATE = WORLD.APPLY(BLACK_PLAYERS_ACTION) 
    BLACK.LEARN(GAME_STATE) 
    IF (GAME_STATE == FINAL) //If Black player won 
     WHITE.LEARN(GAME_STATE) //Make the White player learn from the Black player's winning afterstate 

Я считаю, что вариант B является более разумным.

ответ

0

Как правило, с обучением TD, агент будет иметь 3 функции:

  • начала (наблюдение) → действие
  • шаг (наблюдение, вознаграждение) → Действие
  • отделка (вознаграждение)

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

Смежные вопросы