Recorte de perda no fluxo do tensor (no DQN do DeepMind)

Estou tentando minha própria implementação do documento DQN por Deepmind no fluxo tensorial e estou tendo dificuldades com o recorte da função de perda.

Aqui está um trecho do documento da natureza que descreve o recorte de perda:

Também achamos útil recortar o termo de erro da atualização entre -1 e 1. Porque a função de perda de valor absoluto | x | tem uma derivada de -1 para todos os valores negativos de x e uma derivada de 1 para todos os valores positivos de x, cortando o erro ao quadrado entre -1 e 1 corresponde ao uso de uma função de perda de valor absoluto para erros fora do (- 1,1) intervalo. Essa forma de recorte de erro melhorou ainda mais a estabilidade do algoritmo.

(link para o artigo completo:http://www.nature.com/nature/journal/v518/n7540/full/nature14236.html)

O que eu tentei até agora está usando

clipped_loss_vec = tf.clip_by_value(loss, -1, 1)

para cortar a perda que eu calculo entre -1 e +1. O agente não está aprendendo a política adequada neste caso. Imprimi os gradientes da rede e percebi que, se a perda cair abaixo de -1, todos os gradientes passam para 0!

Meu raciocínio para isso acontecer é que a perda cortada é uma função constante em (-inf, -1) U (1, inf), o que significa que ela tem um gradiente zero nessas regiões. Por sua vez, isso garante que os gradientes em toda a rede sejam zero (pense nisso, seja qual for a imagem de entrada que forneça à rede, a perda permanece em -1 na vizinhança local porque foi cortada).

Então, minha pergunta é de duas partes:

O que exatamente Deepmind quis dizer no excerto? Eles queriam dizer que a perda abaixo de -1 é cortada para -1 e acima de +1 é cortada para +1. Em caso afirmativo, como eles lidaram com os gradientes (ou seja, o que é essa parte das funções de valor absoluto?)

Como devo implementar o recorte de perda no fluxo tensorial, de modo que os gradientes não cheguem a zero fora da faixa cortada (mas talvez permaneçam em +1 e -1)? Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion