Antecedentes:
Estou usando a aproximação do valor Q da Rede Neural na minha tarefa de aprendizado por reforço. A abordagem é exatamente a mesma descrita nesta pergunta , porém a pergunta em si é diferente.
Nesta abordagem, o número de saídas é o número de ações que podemos executar. E, em palavras simples, o algoritmo é o seguinte: faça a ação A, explore a recompensa, peça ao NN para prever os valores de Q para todas as ações possíveis, escolha o valor máximo de Q, calcule Q para uma ação específica A como R + max(new_state_Q)
. Ajuste o modelo nos valores Q previstos com apenas um deles substituído por R + max(new_state_Q)
.
Pergunta: Qual é a eficiência dessa abordagem se o número de saídas for grande?
Tentativa: digamos que há 10 ações que podemos executar. Em cada etapa, solicitamos que o modelo preveja 10 valores; em tenra idade, essa previsão é total confusão. Em seguida, modificamos 1 valor da saída e ajustamos o modelo nesses valores.
Tenho dois pensamentos opostos sobre quão boa é ruim essa abordagem e não consigo decidir qual é a correta:
- De um ponto de vista, estamos treinando cada neurônio 9 vezes em dados aleatórios e apenas uma vez nos dados próximos ao valor real. Se NN previu 5 para a ação A no estado S, mas o valor real é -100, ajustaremos NN 9 vezes com o valor 5 e depois uma vez com o valor -100. Parece loucura.
- De outro ponto de vista, o aprendizado da rede neural é implementado como propagação reversa de um erro ; portanto, quando o modelo previu 5 e o treinamos em 5, ele não aprenderá nada novo, pois o erro é 0. Os pesos não são tocados . E somente quando calcularmos -100 e ajustá-lo ao modelo, ele fará o recálculo do peso.
Qual opção está certa? Talvez haja algo mais que eu não esteja levando em consideração?
ATUALIZAÇÃO: Por "quão eficiente", quero dizer comparar com uma abordagem com uma recompensa prevista pelo resultado. Obviamente, a ação fará parte da entrada nesse caso. Portanto, a abordagem nº 1 faz previsões para todas as ações baseadas em algum estado, a abordagem nº 2 faz previsões para ações específicas tomadas em algum estado.
Respostas:
Portanto, as duas opções que queremos comparar são:
Seguindo minha própria intuição, duvido que exista uma diferença significativa em termos de poder de representação ou velocidade de aprendizado (em termos de iterações) entre essas duas opções.
Para poder de representação, a primeira opção fornece uma rede ligeiramente '' menor '' perto das entradas e uma rede '' mais larga '' perto das saídas. Se, por qualquer motivo, fosse benéfico ter mais pesos próximos aos nós de entrada, por exemplo, isso poderia ser conseguido praticamente tornando a primeira camada oculta (próxima às entradas) um pouco maior também.
Quanto à velocidade de aprendizado, a preocupação que você parece ter é basicamente na linha de geralmente ter apenas um sinal de aprendizado preciso para uma das saídas, e não para as outras. Com a segunda opção, no entanto, exatamente o mesmo pode ser dito para pesos conectados aos nós de entrada, então duvido que haja uma diferença significativa lá.
Como eu mencionei, todas as opções acima são baseadas apenas na minha intuição, seria interessante ver referências mais confiáveis nisso.
fonte