Pracujemy nad modelem Bayesian dla procesu czasoprzestrzennego i używamy samplera No-U-Turn (NUTS), który wymaga modelu prawdopodobieństwa logarytmicznego i jego gradientu w odniesieniu do parametrów modelu. Mówiąc bardziej zwięźle, mamy dość skomplikowaną funkcję logarytmu prawdopodobieństwa , obejmującą rozkłady statystyczne, produkty Kroneckera, wykładnicze, stosunki, instrukcje if-else itp., I musimy je podać i jego gradient do NUTS. Kilka pakietów ( MCMC Stana i Julii ) wykorzystuje przeciążenie operatora (o ile mi wiadomo), aby automatycznie uzyskać gradient.
Gdybyśmy byli w stanie stworzyć własną funkcję gradientu, być może przy użyciu narzędzia do automatycznego porównywania transformacji kodu źródłowego, czy uzyskalibyśmy lepszą wydajność, czy też OO jest tak samo dobre czy lepsze?