Aprendendo no ambiente de troca de bits

Aug 25 2020

Estou olhando para o Andrychowicz et al. paper e passando pelo desafio de implementar um DQN e, em seguida, implementar um DQN com HER.

Neste artigo, eles mencionam um ambiente de troca de bits: um estado é representado por um elemento de$[0,1]^n$, e há um estado de destino em$[0, 1]^n$. O estado atual é modificado pela execução da ação$i \in [n]$que vira pouco$i$. O estado inicial e o estado alvo são inicializados aleatoriamente a cada episódio. A recompensa é esparsa, então só há uma recompensa se o estado atual for o mesmo que o estado alvo e caso contrário$-1$.

Como é possível aprender qualquer coisa neste ambiente, muito menos uma boa aproximação da função q, especialmente porque o estado-alvo muda a cada episódio?

Suspeito que não estou entendendo o que o "estado" realmente é e, na verdade, é uma concatenação do estado atual e do estado de destino, e isso é o que é alimentado em qualquer aproximador de função q que está sendo treinado, mas se o aproximador tinha conhecimento dos estados atual e alvo, uma função quadrática não deveria cuidar desse problema rapidamente (minimizando$(target_{i} - current_{i})^{2}$para todos$i$)?

Edit: Depois de olhar para algum código no Github, parece que de fato a entrada para qualquer modelo que está sendo usado como uma q-network profunda é uma concatenação do estado atual, bem como do estado de destino. Isso está correto? Também é correto que a deep q-network não precisa ser muito complicada para aprender como resolver essa tarefa, e que os DQNs vanilla poderiam ter um bom desempenho nessa tarefa, não fosse pelo problema das recompensas serem esparsas?

Respostas

2 NeilSlater Aug 25 2020 at 15:48

Suspeito que não estou entendendo o que o "estado" realmente é e, na verdade, é uma concatenação do estado atual e do estado de destino, e isso é o que é alimentado em qualquer aproximador de função q que está sendo treinado, mas se o aproximador tinha conhecimento dos estados atual e alvo, uma função quadrática não deveria cuidar desse problema rapidamente (minimizando$(target_{i} - current_{i})^{2}$para todos$i$)?

Você está correto em sua suspeita. Sim, é um problema trivial que não requer RL. Tudo bem, é um problema de brinquedo para demonstrar um algoritmo de aprendizado, e a mesma observação pode ser feita em muitos problemas de RL de brinquedo - gridworlds, cartpole etc. Todos eles podem ser resolvidos analiticamente, e o objetivo de usar RL não é resolver o problema, mas para demonstrar e medir as capacidades de um algoritmo de aprendizagem.

Também é correto que a deep q-network não precisa ser muito complicada para aprender como resolver essa tarefa, e que os DQNs vanilla poderiam ter um bom desempenho nessa tarefa, não fosse pelo problema das recompensas serem esparsas?

Prever a recompensa futura ao inverter cada bit é semelhante a um problema XOR em cada bit. Inverter bits quando o estado e o alvo são idênticos leva o final do episódio a outro passo no futuro, enquanto fazê-lo quando o estado e o alvo são diferentes é um passo direto em direção ao fim final. O valor do estado sob uma política ótima é simplesmente a contagem negativa de bytes que diferem, que é a soma$-\sum_i target_i \oplus current_i$Onde$\oplus$é o operador XOR. O valor da ação é semelhante.

Isso deve ser resolvido por uma rede neural com uma camada oculta e o mesmo número de neurônios como entradas. Adicionar mais alguns pode fazer com que ele aprenda mais rápido e de forma mais confiável. As funções de valor para políticas não ótimas durante o aprendizado também podem exigir mais alguns neurônios porque as políticas não ótimas não terão uma relação tão simples entre o estado e o retorno esperado. Mesmo permitindo isso, a arquitetura de rede deve ser relativamente simples em comparação com, digamos, uma rede neural para resolver Pong ou Breakout.

A recompensa é esparsa, pois todos os valores, exceto end, são os mesmos, mas, na verdade, ela foi projetada para funcionar bem para a previsão de valor do estado ao considerar o retorno não descontado.