Não faz sentido usar algoritmos de otimização baseados em gradiente se você puder fornecer apenas um gradiente numérico? Caso contrário, por que fornecer um gradiente numérico em primeiro lugar, se é trivial executar diferenciação finita para a própria biblioteca de otimização?
[EDITAR]
Apenas para esclarecer, minha pergunta é, de fato, em um sentido mais geral do que uma aplicação específica. Embora meu campo de aplicação seja a otimização de probabilidade em várias estruturas estatísticas.
Meu problema com a diferenciação automática é que sempre parece haver um problema. A biblioteca do AD não pode se propagar para chamadas de biblioteca externa (como BLAS) ou você precisa refazer seu fluxo de trabalho de forma tão drástica que dificulta lidar com isso ... especialmente se você estiver trabalhando com linguagens sensíveis ao tipo. Minhas queixas com o AD são uma questão completamente separada. Mas eu quero acreditar!
Acho que preciso formular melhor minha pergunta, mas estou fazendo um péssimo trabalho. Se houver uma opção para usar um algoritmo de otimização livre de derivado ou um algoritmo de otimização baseado em derivado com a ressalva de que só posso fornecer um gradiente numérico, qual, em média, será superior?