As funções de recompensa descrevem como o agente "deve" se comportar. Em outras palavras, eles têm conteúdo "normativo", estipulando o que você deseja que o agente realize. Por exemplo, alguns estados gratificantes podem representar o sabor da comida. Ou talvez, possa representar o ato de provar a comida. Portanto, na medida em que a função de recompensa determina quais são as motivações do agente, sim, você precisa inventar!s( S , um )
Não há restrições absolutas, mas se a sua função de recompensa for "melhor comportada", o agente aprenderá melhor. Na prática, isso significa velocidade de convergência e não ficar preso nos mínimos locais. Porém, especificações adicionais dependerão fortemente das espécies de aprendizado por reforço que você está usando. Por exemplo, o espaço de estado / ação é contínuo ou discreto? O mundo ou a seleção de ações são estocásticos? A recompensa é colhida continuamente, ou apenas no final?
Uma maneira de visualizar o problema é que a função de recompensa determina a dureza do problema. Por exemplo, tradicionalmente, podemos especificar um único estado a ser recompensado:
Nesse caso, o problema a ser resolvido é bastante difícil, comparado a , digamos, , onde há um gradiente de recompensa sobre os estados. Para problemas difíceis, especificar mais detalhes, por exemplo, ou pode ajudar alguns algoritmos, fornecendo pistas extras, mas potencialmente à custa de exigir mais exploração. Pode ser necessário incluir custos como termos negativos em (por exemplo, custos energéticos ), para tornar o problema bem especificado.R ( s1) = 1
R ( s2 .. n) = 0
R ( sEu) = 1 / i2R ( s , a )R ( s , a , s′)R
No caso de um espaço de estado contínuo, se você deseja que um agente aprenda facilmente, a função de recompensa deve ser contínua e diferenciável . Portanto, os polinômios podem funcionar bem para muitos algoritmos. Além disso, tente remover os mínimos localizados. Existem vários exemplos de como NÃO executar uma função de recompensa - como a função Rastrigin . Dito isto, vários algoritmos RL (por exemplo, máquinas Boltzmann ) são um pouco robustos para eles.
Se você estiver usando o RL para resolver um problema do mundo real, provavelmente descobrirá que, embora encontrar a função de recompensa seja a parte mais difícil do problema, ela está intimamente ligada à maneira como você especifica o espaço de estados . Por exemplo, em um problema dependente do tempo, a distância para a meta geralmente produz uma função de recompensa ruim (por exemplo, no problema do carro de montanha ). Tais situações podem ser resolvidas usando espaços de estados dimensionais mais altos (estados ocultos ou traços de memória) ou por RL hierárquica.
Em um nível abstrato, o aprendizado não supervisionado deveria evitar estipular o desempenho "certo e errado". Mas podemos ver agora que RL simplesmente transfere a responsabilidade do professor / crítico para a função de recompensa. Existe uma maneira menos circular de resolver o problema: ou seja, inferir a melhor função de recompensa . Um método é chamado RL inverso ou "aprendizado de aprendizagem" , que gera uma função de recompensa que reproduz os comportamentos observados. Encontrar a melhor função de recompensa para reproduzir um conjunto de observações também pode ser implementado pelos métodos MLE, Bayesiano ou da teoria da informação - se você procurar por "aprendizado por reforço inverso".
Projetar funções de recompensa é realmente um problema difícil. Geralmente, as funções de recompensa esparsas são mais fáceis de definir (por exemplo, obtenha +1 se você vencer o jogo, caso contrário, 0). No entanto, recompensas esparsas também atrasam o aprendizado, porque o agente precisa executar muitas ações antes de receber qualquer recompensa. Esse problema também é conhecido como problema de atribuição de crédito .
Em vez de ter uma representação de tabela para recompensas, você também pode usar funções contínuas (como um polinômio). Este é o caso geralmente quando o espaço de estado e o espaço de ação são contínuos, e não discretos.
fonte