Atualmente, estou lendo sobre aprendizado de máquina e me perguntei como aplicá-lo para jogar o Connect Four .
Minha tentativa atual é de um classificador multiclasse simples usando um modelo de função sigmóide e o método one-vs-all.
Na minha opinião, os recursos de entrada devem ser o estado (disco do jogador 1, disco do jogador 2, vazio) dos campos de grade 7x6 = 42.
A saída seria o número da linha para colocar o disco. Como esse é um número discreto entre 1 e 7, acho que isso pode ser tratado como um problema de classificação em várias classes.
Mas como eu gero exemplos de treinamento utilizáveis no aprendizado supervisionado?
O objetivo principal é vencer o jogo, mas o resultado obviamente não é conhecido ao realizar todos os turnos, exceto o último. Se eu deixar apenas dois jogadores que decidem aleatoriamente o que fazer jogar um contra o outro milhares de vezes, será suficiente simplesmente dar todas as voltas feitas pelo vencedor de cada rodada como exemplos de treinamento? Ou tenho que fazer isso de uma maneira completamente diferente?
Edit: Como sugerido nos comentários, li um pouco sobre o aprendizado por reforço. Pelo que sei, o Q-Learning deve fazer o truque, ou seja, preciso aproximar uma função Q do estado atual e a ação a ser tomada para ser a recompensa cumulativa máxima a partir desse estado. Então, cada passo seria escolher a ação que resulta no valor máximo de Q. No entanto, este jogo tem muitos estados para fazer isso, por exemplo, como uma tabela de pesquisa. Então, qual é uma maneira eficaz de modelar essa função Q?