Qual é um exemplo de uso da diferenciação automática, como implementado no Tensorflow, e por que é importante?

7

Eu tenho uma compreensão decente de redes neurais, propagação traseira e regra de cadeia, no entanto, estou lutando para entender a diferenciação automática.

A seguir, consulte a diferenciação automática fora do contexto da propagação de retorno:

  • Como a diferenciação automática calcula o gradiente a partir de uma matriz?
  • Quais são os requisitos para calcular um gradiente? Uma função precisa ser especificada?
  • Quais são alguns casos de uso para isso (além da propagação de retorno)?
  • Por que é importante e quais são as alternativas?

Estou esquecendo de algo?

Greg
fonte
3
A diferenciação automática, também conhecida como diferenciação algorítmica, é uma maneira automatizada de calcular numericamente derivadas de uma função especificada por um programa de computador, mas as funções podem ser indiretamente definidas pelo programa de computador. É útil para calcular gradientes, jacobianos e hessianos para uso em otimização numérica, entre outras coisas. A retropropagação é uma implementação do modo reverso de diferenciação automática para calcular o gradiente de um problema de otimização de rede neural . Consulte en.wikipedia.org/wiki/Automatic_differentiation .
Mark L. Stone
3
Alternativas são diferenciação simbólica e diferenças finitas, que geralmente são mais lentas, e as diferenças finitas podem ser menos precisas. Derivados codificados à mão podem ser usados ​​se o humano puder descobrir o derivado, mas em muitos casos é propenso a erros humanos.
Mark L. Stone
Onde posso encontrar exemplos simples para ver como é implementado? É o tf.gradientmétodo que eu deveria estar olhando?
Greg
3
Veja a lista de ferramentas e software de diferenciação automática no link da Wikipedia e também links que incluem exemplos de uso. Outra alternativa à diferenciação automática é a diferenciação de etapas complexas (derivada) aero-comlab.stanford.edu/Papers/martins.aiaa.01-0921.pdf , que acaba sendo quase a mesma coisa que o modo avançado de diferenciação automática.
Mark L. Stone

Respostas:

12

Nos sistemas de auto diferenciação, principalmente um operador (por exemplo, adição, subtração) é definido junto com sua diferenciação.

Portanto, depois de escrever uma função empilhando uma série de operadores, o sistema pode descobrir por si mesmo como as derivadas correspondentes devem ser calculadas, geralmente usando gráficos de computação e a regra da cadeia.

A diferenciação automática é benéfica para a otimização baseada em gradiente (por exemplo, treinar uma rede neural usando descida de gradiente), pois evita o cálculo matemático, a implementação do código e a verificação das derivadas numericamente, caso a caso.

Veja como definir um operador (op) em Teano e Tensorflow .

dontloo
fonte