From 9ba2d46d3748491ea88fdf93c96f6aa1c2274204 Mon Sep 17 00:00:00 2001 From: Sameer Agarwal Date: Tue, 29 Nov 2016 19:45:53 -0800 Subject: [PATCH] Add an article on derivatives Change-Id: I4d3efbc38dc068035f30ff808dfdc7970408a010 --- docs/source/bibliography.rst | 4 + docs/source/derivatives.rst | 1005 +++++++++++++++++ docs/source/forward_central_error.png | Bin 0 -> 57776 bytes docs/source/forward_central_ridders_error.png | Bin 0 -> 75579 bytes docs/source/index.rst | 1 + docs/source/nnls_solving.rst | 2 +- 6 files changed, 1011 insertions(+), 1 deletion(-) create mode 100644 docs/source/derivatives.rst create mode 100644 docs/source/forward_central_error.png create mode 100644 docs/source/forward_central_ridders_error.png diff --git a/docs/source/bibliography.rst b/docs/source/bibliography.rst index ab2a29f71..5352c6503 100644 --- a/docs/source/bibliography.rst +++ b/docs/source/bibliography.rst @@ -94,6 +94,10 @@ Bibliography Part II: Implementation and Experiments**, Management Science, 20(5), 863-874, 1974. +.. [Press] W. H. Press, S. A. Teukolsky, W. T. Vetterling + & B. P. Flannery, **Numerical Recipes**, Cambridge University + Press, 2007. + .. [Ridders] C. J. F. Ridders, **Accurate computation of F'(x) and F'(x) F"(x)**, Advances in Engineering Software 4(2), 75-76, 1978. diff --git a/docs/source/derivatives.rst b/docs/source/derivatives.rst new file mode 100644 index 000000000..e0638c988 --- /dev/null +++ b/docs/source/derivatives.rst @@ -0,0 +1,1005 @@ +.. default-domain:: cpp + +.. cpp:namespace:: ceres + +.. _chapter-on_derivatives: + +============== +On Derivatives +============== + +.. _section-introduction: + +Introduction +============ + +Ceres Solver like all gradient based optimization algorithms, depends +on being able to evaluate the objective function and its derivatives +at arbitrary points in its domain. Indeed, defining the objective +function and its `Jacobian +`_ is +the principal task that the user is required to perform when solving +an optimization problem using Ceres Solver. The correct and efficient +computation of the Jacobian is the key to good performance. + +Ceres Solver offers considerable flexibility in how the user can +provide derivatives to the solver. She can use: + + 1. :ref:`section-analytic_derivatives`: The user figures out the + derivatives herself, by hand or using a tool like + `Maple `_ or + `Mathematica `_, and + implements them in a ::class:`CostFunction`. + 2. :ref:`section-numerical_derivatives`: Ceres numerically computes + the derivative using finite differences. + 3. :ref:`section-automatic_derivatives`: Ceres automatically computes + the analytic derivative. + +Which of these three approaches (alone or in combination) should be +used depends on the situation and the tradeoffs the user is willing to +make. Unfortunately, numerical optimization textbooks rarely discuss +these issues in detail and the user is left to her own devices. + +The aim of this article is to fill this gap and describe each of these +three approaches in the context of Ceres Solver with sufficient detail +that the user can make an informed choice. + +tl;dr +----- + +And for the impatient amongst you, here is some high level advice: + + 1. Use :ref:`section-automatic_derivatives`. + 2. In some cases it maybe worth using + :ref:`section-analytic_derivatives`. + 3. Avoid :ref:`section-numerical_derivatives`. Use it as a measure of + last resort, mostly to interface with external libraries. + +.. _section-spivak_notation: + +Spivak Notation +=============== + +To preserve our collective sanities, we will use Spivak's notation for +derivatives. It is a functional notation that makes reading and +reasoning about expressions involving derivatives simple. + +For a univariate function :math:`f`, :math:`f(a)` denotes its value at +:math:`a`. :math:`Df` denotes its first derivative, and +:math:`Df(a)` is the derivative evaluated at :math:`a`, i.e + +.. math:: + Df(a) = \left . \frac{d}{dx} f(x) \right |_{x = a} + +:math:`D^nf` denotes the :math:`n^{\text{th}}` derivative of :math:`f`. + +For a bi-variate function :math:`g(x,y)`. :math:`D_1g` and +:math:`D_2g` denote the partial derivatives of :math:`g` w.r.t the +first and second variable respectively. In the classical notation this +is equivalent to saying: + +.. math:: + + D_1 g = \frac{\partial}{\partial x}g(x,y) \text{ and } D_2 g = \frac{\partial}{\partial y}g(x,y). + + +:math:`Dg` denotes the Jacobian of `g`, i.e., + +.. math:: + + Dg = \begin{bmatrix} D_1g & D_2g \end{bmatrix} + +More generally for a multivariate function :math:`g:\mathbb{R}^m +\rightarrow \mathbb{R}^n`, :math:`Dg` denotes the :math:`n\times m` +Jacobian matrix. :math:`D_i g` is the partial derivative of :math:`g` +w.r.t the :math:`i^{\text{th}}` coordinate and the +:math:`i^{\text{th}}` column of :math:`Dg`. + +Finally, :math:`D^2_1g, D_1D_2g` have the obvious meaning as higher +order partial derivatives derivatives. + +For more see Michael Spivak's book `Calculus on Manifolds +`_ +or a brief discussion of the `merits of this notation +`_ by +Mitchell N. Charity. + +.. _section-analytic_derivatives: + +Analytic Derivatives +==================== + +Consider the problem of fitting the following curve (`Rat43 +`_) to +data: + +.. math:: + y = \frac{b_1}{(1+e^{b_2-b_3x})^{1/b_4}} + +That is, given some data :math:`\{x_i, y_i\},\ \forall i=1,... ,n`, +determine parameters :math:`b_1, b_2, b_3` and :math:`b_4` that best +fit this data. + +Which can be stated as the problem of finding the +values of :math:`b_1, b_2, b_3` and :math:`b_4` are the ones that +minimize the following objective function [#f1]_: + +.. math:: + \begin{align} + E(b_1, b_2, b_3, b_4) + &= \sum_i f^2(b_1, b_2, b_3, b_4 ; x_i, y_i)\\ + &= \sum_i \left(\frac{b_1}{(1+e^{b_2-b_3x_i})^{1/b_4}} - y_i\right)^2\\ + \end{align} + +To solve this problem using Ceres Solver, we need to define a +:class:`CostFunction` that computes the residual :math:`f` for a given +:math:`x` and :math:`y` and its derivatives with respect to +:math:`b_1, b_2, b_3` and :math:`b_4`. + +Using elementary differential calculus, we can see that: + +.. math:: + \begin{align} + D_1 f(b_1, b_2, b_3, b_4; x,y) &= \frac{1}{(1+e^{b_2-b_3x})^{1/b_4}}\\ + D_2 f(b_1, b_2, b_3, b_4; x,y) &= + \frac{-b_1e^{b_2-b_3x}}{b_4(1+e^{b_2-b_3x})^{1/b_4 + 1}} \\ + D_3 f(b_1, b_2, b_3, b_4; x,y) &= + \frac{b_1xe^{b_2-b_3x}}{b_4(1+e^{b_2-b_3x})^{1/b_4 + 1}} \\ + D_4 f(b_1, b_2, b_3, b_4; x,y) & = \frac{b_1 \log\left(1+e^{b_2-b_3x}\right) }{b_4^2(1+e^{b_2-b_3x})^{1/b_4}} + \end{align} + +With these derivatives in hand, we can now implement the +:class:`CostFunction`: as + +.. code-block:: c++ + + class Rat43Analytic : public SizedCostFunction<1,4> { + public: + Rat43Analytic(const double x, const double y) : x_(x), y_(y) {} + virtual ~Rat43Analytic() {} + virtual bool Evaluate(double const* const* parameters, + double* residuals, + double** jacobians) const { + const double b1 = parameters[0][0]; + const double b2 = parameters[0][1]; + const double b3 = parameters[0][2]; + const double b4 = parameters[0][3]; + + residuals[0] = b1 * pow(1 + exp(b2 - b3 * x_), -1.0 / b4) - y_; + + if (!jacobians) return true; + double* jacobian = jacobians[0]; + if (!jacobian) return true; + + jacobian[0] = pow(1 + exp(b2 - b3 * x_), -1.0 / b4); + jacobian[1] = -b1 * exp(b2 - b3 * x_) * + pow(1 + exp(b2 - b3 * x_), -1.0 / b4 - 1) / b4; + jacobian[2] = x_ * b1 * exp(b2 - b3 * x_) * + pow(1 + exp(b2 - b3 * x_), -1.0 / b4 - 1) / b4; + jacobian[3] = b1 * log(1 + exp(b2 - b3 * x_)) * + pow(1 + exp(b2 - b3 * x_), -1.0 / b4) / (b4 * b4); + return true; + } + + private: + const double x_; + const double y_; + }; + +This is tedious code, which is hard to read with a lot of +redundancy. So in practice we will cache some sub-expressions to +improve its efficiency, which would give us something like: + +.. code-block:: c++ + + class Rat43AnalyticOptimized : public SizedCostFunction<1,4> { + public: + Rat43AnalyticOptimized(const double x, const double y) : x_(x), y_(y) {} + virtual ~Rat43AnalyticOptimized() {} + virtual bool Evaluate(double const* const* parameters, + double* residuals, + double** jacobians) const { + const double b1 = parameters[0][0]; + const double b2 = parameters[0][1]; + const double b3 = parameters[0][2]; + const double b4 = parameters[0][3]; + + const double t1 = exp(b2 - b3 * x_); + const double t2 = 1 + t1; + const double t3 = pow(t2, -1.0 / b4); + residuals[0] = b1 * t3 - y_; + + if (!jacobians) return true; + double* jacobian = jacobians[0]; + if (!jacobian) return true; + + const double t4 = pow(t2, -1.0 / b4 - 1); + jacobian[0] = t3; + jacobian[1] = -b1 * t1 * t4 / b4; + jacobian[2] = -x_ * jacobian[1]; + jacobian[3] = b1 * log(t2) * t3 / (b4 * b4); + return true; + } + + private: + const double x_; + const double y_; + }; + +What is the difference in performance of these two implementations? + +========================== ========= +CostFunction Time (ns) +========================== ========= +Rat43Analytic 255 +Rat43AnalyticOptimized 92 +========================== ========= + +``Rat43AnalyticOptimized`` is :math:`2.8` times faster than +``Rat43Analytic``. This difference in run-time is not uncommon. To +get the best performance out of analytically computed derivatives, one +usually needs to optimize the code to account for common +sub-expressions. + + +When should you use analytical derivatives? +------------------------------------------- + +#. The expressions are simple, e.g. mostly linear. + +#. A computer algebra system like `Maple + `_ , `Mathematica + `_, or `SymPy + `_ can be used to symbolically + differentiate the objective function and generate the C++ to + evaluate them. + +#. Performance is of utmost concern and there is algebraic structure + in the terms that you can exploit to get better performance than + automatic differentiation. + + That said, getting the best performance out of analytical + derivatives requires a non-trivial amount of work. Before going + down this path, it is useful to measure the amount of time being + spent evaluating the Jacobian as a fraction of the total solve time + and remember `Amdahl's Law + `_ is your friend. + +#. There is no other way to compute the derivatives, e.g. you + wish to compute the derivative of the root of a polynomial: + + .. math:: + a_3(x,y)z^3 + a_2(x,y)z^2 + a_1(x,y)z + a_0(x,y) = 0 + + + with respect to :math:`x` and :math:`y`. This requires the use of + the `Inverse Function Theorem + `_ + +#. You love the chain rule and actually enjoy doing all the algebra by + hand. + + +.. _section-numerical_derivatives: + +Numeric derivatives +=================== + +The other extreme from using analytic derivatives is to use numeric +derivatives. The key observation here is that the process of +differentiating a function :math:`f(x)` w.r.t :math:`x` can be written +as the limiting process: + +.. math:: + Df(x) = \lim_{h \rightarrow 0} \frac{f(x + h) - f(x)}{h} + + +Forward Differences +------------------- + +Now of course one cannot perform the limiting operation numerically on +a computer so we do the next best thing, which is to choose a small +value of :math:`h` and approximate the derivative as + +.. math:: + Df(x) \approx \frac{f(x + h) - f(x)}{h} + + +The above formula is the simplest most basic form of numeric +differentiation. It is known as the *Forward Difference* formula. + +So how would one go about constructing a numerically differentiated +version of ``Rat43Analytic`` in Ceres Solver. This is done in two +steps: + + 1. Define *Functor* that given the parameter values will evaluate the + residual for a given :math:`(x,y)`. + 2. Construct a :class:`CostFunction` by using + :class:`NumericDiffCostFunction` to wrap an instance of + ``Rat43CostFunctor``. + +.. code-block:: c++ + + struct Rat43CostFunctor { + Rat43CostFunctor(const double x, const double y) : x_(x), y_(y) {} + + bool operator()(const double* parameters, double* residuals) const { + const double b1 = parameters[0][0]; + const double b2 = parameters[0][1]; + const double b3 = parameters[0][2]; + const double b4 = parameters[0][3]; + residuals[0] = b1 * pow(1.0 + exp(b2 - b3 * x_), -1.0 / b4) - y_; + return true; + } + + const double x_; + const double y_; + } + + CostFunction* cost_function = + new NumericDiffCostFunction( + new Rat43CostFunctor(x, y)); + +This is about the minimum amount of work one can expect to do to +define the cost function. The only thing that the user needs to do is +to make sure that the evaluation of the residual is implemented +correctly and efficiently. + +Before going further, it is instructive to get an estimate of the +error in the forward difference formula. We do this by considering the +`Taylor expansion `_ of +:math:`f` near :math:`x`. + +.. math:: + \begin{align} + f(x+h) &= f(x) + h Df(x) + \frac{h^2}{2!} D^2f(x) + + \frac{h^3}{3!}D^3f(x) + \cdots \\ + Df(x) &= \frac{f(x + h) - f(x)}{h} - \left [\frac{h}{2!}D^2f(x) + + \frac{h^2}{3!}D^3f(x) + \cdots \right]\\ + Df(x) &= \frac{f(x + h) - f(x)}{h} + O(h) + \end{align} + +i.e., the error in the forward difference formula is +:math:`O(h)` [#f4]_. + + +Implementation Details +^^^^^^^^^^^^^^^^^^^^^^ + +:class:`NumericDiffCostFunction` implements a generic algorithm to +numerically differentiate a given functor. While the actual +implementation of :class:`NumericDiffCostFunction` is complicated, the +net result is a ``CostFunction`` that roughly looks something like the +following: + +.. code-block:: c++ + + class Rat43NumericDiffForward : public SizedCostFunction<1,4> { + public: + Rat43NumericDiffForward(const Rat43Functor* functor) : functor_(functor) {} + virtual ~Rat43NumericDiffForward() {} + virtual bool Evaluate(double const* const* parameters, + double* residuals, + double** jacobians) const { + functor_(parameters[0], residuals); + if (!jacobians) return true; + double* jacobian = jacobians[0]; + if (!jacobian) return true; + + const double f = residuals[0]; + double parameters_plus_h[4]; + for (int i = 0; i < 4; ++i) { + std::copy(parameters, parameters + 4, parameters_plus_h); + const double kRelativeStepSize = 1e-6; + const double h = std::abs(parameters[i]) * kRelativeStepSize; + parameters_plus_h[i] += h; + double f_plus; + functor_(parameters_plus_h, &f_plus); + jacobian[i] = (f_plus - f) / h; + } + return true; + } + + private: + scoped_ptr functor_; + }; + + +Note the choice of step size :math:`h` in the above code, instead of +an absolute step size which is the same for all parameters, we use a +relative step size of :math:`\text{kRelativeStepSize} = 10^{-6}`. This +gives better derivative estimates than an absolute step size [#f2]_ +[#f3]_. This choice of step size only works for parameter values that +are not close to zero. So the actual implementation of +:class:`NumericDiffCostFunction`, uses a more complex step size +selection logic, where close to zero, it switches to a fixed step +size. + + +Central Differences +------------------- + +:math:`O(h)` error in the Forward Difference formula is okay but not +great. A better method is to use the *Central Difference* formula: + +.. math:: + Df(x) \approx \frac{f(x + h) - f(x - h)}{2h} + +Notice that if the value of :math:`f(x)` is known, the Forward +Difference formula only requires one extra evaluation, but the Central +Difference formula requires two evaluations, making it twice as +expensive. So is the extra evaluation worth it? + +To answer this question, we again compute the error of approximation +in the central difference formula: + +.. math:: + \begin{align} + f(x + h) &= f(x) + h Df(x) + \frac{h^2}{2!} + D^2f(x) + \frac{h^3}{3!} D^3f(x) + \frac{h^4}{4!} D^4f(x) + \cdots\\ + f(x - h) &= f(x) - h Df(x) + \frac{h^2}{2!} + D^2f(x) - \frac{h^3}{3!} D^3f(c_2) + \frac{h^4}{4!} D^4f(x) + + \cdots\\ + Df(x) & = \frac{f(x + h) - f(x - h)}{2h} + \frac{h^2}{3!} + D^3f(x) + \frac{h^4}{5!} + D^5f(x) + \cdots \\ + Df(x) & = \frac{f(x + h) - f(x - h)}{2h} + O(h^2) + \end{align} + +The error of the Central Difference formula is :math:`O(h^2)`, i.e., +the error goes down quadratically whereas the error in the Forward +Difference formula only goes down linearly. + +Using central differences instead of forward differences in Ceres +Solver is a simple matter of changing a template argument to +:class:`NumericDiffCostFunction` as follows: + +.. code-block:: c++ + + CostFunction* cost_function = + new NumericDiffCostFunction( + new Rat43CostFunctor(x, y)); + +But what do these differences in the error mean in practice? To see +this, consider the problem of evaluating the derivative of the +univariate function + +.. math:: + f(x) = \frac{e^x}{\sin x - x^2}, + +at :math:`x = 1.0`. + +It is straightforward to see that :math:`Df(1.0) = +140.73773557129658`. Using this value as reference, we can now compute +the relative error in the forward and central difference formulae as a +function of the absolute step size and plot them. + +.. figure:: forward_central_error.png + :figwidth: 100% + :align: center + +Reading the graph from right to left, a number of things stand out in +the above graph: + + 1. The graph for both formulae have two distinct regions. At first, + starting from a large value of :math:`h` the error goes down as + the effect of truncating the Taylor series dominates, but as the + value of :math:`h` continues to decrease, the error starts + increasing again as roundoff error starts to dominate the + computation. So we cannot just keep on reducing the value of + :math:`h` to get better estimates of :math:`Df`. The fact that we + are using finite precision arithmetic becomes a limiting factor. + 2. Forward Difference formula is not a great method for evaluating + derivatives. Central Difference formula converges much more + quickly to a more accurate estimate of the derivative with + decreasing step size. So unless the evaluation of :math:`f(x)` is + so expensive that you absolutely cannot afford the extra + evaluation required by central differences, **do not use the + Forward Difference formula**. + 3. Neither formula works well for a poorly chosen value of :math:`h`. + + +Ridders' Method +--------------- +So, can we get better estimates of :math:`Df` without requiring such +small values of :math:`h` that we start hitting floating point +roundoff errors? + +One possible approach is to find a method whose error goes down faster +than :math:`O(h^2)`. This can be done by applying `Richardson +Extrapolation +_` to the +problem of differentiation. This is also known as *Ridders' Method* +[Ridders]_. + +Let us recall, the error in the central differences formula. + +.. math:: + \begin{align} + Df(x) & = \frac{f(x + h) - f(x - h)}{2h} + \frac{h^2}{3!} + D^3f(x) + \frac{h^4}{5!} + D^5f(x) + \cdots\\ + & = \frac{f(x + h) - f(x - h)}{2h} + K_2 h^2 + K_4 h^4 + \cdots + \end{align} + +The key thing to note here is that the terms :math:`K_2, K_4, ...` +are indepdendent of :math:`h` and only depend on :math:`x`. + +Let us now define: + +.. math:: + + A(1, m) = \frac{f(x + h/2^{m-1}) - f(x - h/2^{m-1})}{2h/2^{m-1}}. + +Then observe that + +.. math:: + + Df(x) = A(1,1) + K_2 h^2 + K_4 h^4 + \cdots + +and + +.. math:: + + Df(x) = A(1, 2) + K_2 (h/2)^2 + K_4 (h/2)^4 + \cdots + +Here we have halved the step size to obtain a second central +differences estimate of :math:`Df(x)`. Combining these two estimates, +we get: + +.. math:: + + Df(x) = \frac{4 A(1, 2) - A(1,1)}{4 - 1} + O(h^4) + +which is an approximation of :math:`Df(x)` with truncation error that +goes down as :math:`O(h^4)`. But we do not have to stop here, we can +iterate this process to obtain even more accurate estimates as +follows: + +.. math:: + + A(n, m) = \begin{cases} + \frac{\displaystyle f(x + h/2^{m-1}) - f(x - + h/2^{m-1})}{\displaystyle 2h/2^{m-1}} & n = 1 \\ + \frac{\displaystyle 4 A(n - 1, m + 1) - A(n - 1, m)}{\displaystyle 4^{n-1} - 1} & n > 1 + \end{cases} + +It is straightforward to show that the approximation error in +:math:`A(n, 1)` is :math:`O(h^{2n})`. To see how the above formula can +be implemented in practice to compute :math:`A(n,1)` it is helpful to +structure the computation as the following tableau: + +.. math:: + \begin{array}{ccccc} + A(1,1) & A(1, 2) & A(1, 3) & A(1, 4) & \cdots\\ + & A(2, 1) & A(2, 2) & A(2, 3) & \cdots\\ + & & A(3, 1) & A(3, 2) & \cdots\\ + & & & A(4, 1) & \cdots \\ + & & & & \ddots + \end{array} + +So, to compute :math:`A(n, 1)` for increasing values of :math:`n` we +move from the left to the right, computing one column at a +time. Assuming that the primary cost here is the evaluation of the +function :math:`f(x)`, the cost of computing a new column of the above +tableau is two function evaluations. Since the cost of evaluating +:math:`A(1, n)`, requires evaluating the central difference formula +for step size of :math:`2^{1-n}h` + +Applying this method to :math:`f(x) = \frac{e^x}{\sin x - x^2}` +starting with a fairly large step size :math:`h = 0.01`, we get: + +.. math:: + \begin{array}{rrrrr} + 141.678097131 &140.971663667 &140.796145400 &140.752333523 &140.741384778\\ + &140.736185846 &140.737639311 &140.737729564 &140.737735196\\ + & &140.737736209 &140.737735581 &140.737735571\\ + & & &140.737735571 &140.737735571\\ + & & & &140.737735571\\ + \end{array} + +Compared to the *correct* value :math:`Df(1.0) = 140.73773557129658`, +:math:`A(5, 1)` has a relative error of :math:`10^{-13}`. For +comparison, the relative error for the central difference formula with +the same stepsize (:math:`0.01/2^4 = 0.000625`) is :math:`10^{-5}`. + +The above tableau is the basis of Ridders' method for numeric +differentiation. The full implementation is an adaptive scheme that +tracks its own estimation error and stops automatically when the +desired precision is reached. Of course it is more expensive than the +forward and central difference formulae, but is also significantly +more robust and accurate. + +Using Ridder's method instead of forward or central differences in +Ceres is again a simple matter of changing a template argument to +:class:`NumericDiffCostFunction` as follows: + +.. code-block:: c++ + + CostFunction* cost_function = + new NumericDiffCostFunction( + new Rat43CostFunctor(x, y)); + +The following graph shows the relative error of the three methods as a +function of the absolute step size. For Ridders's method we assume +that the step size for evaluating :math:`A(n,1)` is :math:`2^{1-n}h`. + +.. figure:: forward_central_ridders_error.png + :figwidth: 100% + :align: center + +Using 10 function evaluations that are needed to compute +:math:`A(5,1)` we are able to approximate :math:`Df(1.0)` about a 1000 +times better than the best central differences estimate. To put these +numbers in perspective, machine epsilon for double precision +arithmetic is :math:`\approx 2.22 \times 10^{-16}`. + +Going back to ``Rat43``, let us also look at the runtime cost of the +various methods for computing numeric derivatives. + +========================== ========= +CostFunction Time (ns) +========================== ========= +Rat43Analytic 255 +Rat43AnalyticOptimized 92 +Rat43NumericDiffForward 262 +Rat43NumericDiffCentral 517 +Rat43NumericDiffRidders 3760 +========================== ========= + +As expected, Central Differences is about twice as expensive as +Forward Differences and the remarkable accuracy improvements of +Ridders' method cost an order of magnitude more runtime. + +Recommendation +-------------- + +Numeric differentiation should be used when you cannot compute the +derivatives either analytically or using automatic differention. This +is usually the case when you are calling an external library or +function whose analytic form you do not know or even if you do, you +are not in a position to re-write it in a manner required to use +automatic differentiation (discussed below). + +When using numeric differentiation, use at least Central Differences, +and if execution time is not a concern or the objective function is +such that determining a good static relative step size is hard, +Ridders' method is recommended. + +.. _section-automatic_derivatives: + +Automatic Derivatives +===================== + +We will now consider automatic differentiation. It is a technique that +can compute exact derivatives, fast, while requiring about the same +effort from the user as is needed to use numerical differentiation. + +Don't believe me? Well here goes. The following code fragment +implements an automatically differentiated ``CostFunction`` for +``Rat43``. + +.. code-block:: c++ + + struct Rat43CostFunctor { + Rat43CostFunctor(const double x, const double y) : x_(x), y_(y) {} + + template + bool operator()(const T* parameters, T* residuals) const { + const T b1 = parameters[0][0]; + const T b2 = parameters[0][1]; + const T b3 = parameters[0][2]; + const T b4 = parameters[0][3]; + residuals[0] = b1 * pow(1.0 + exp(b2 - b3 * x_), -1.0 / b4) - y_; + return true; + } + + private: + const double x_; + const double y_; + }; + + + CostFunction* cost_function = + new AutoDiffCostFunction( + new Rat43CostFunctor(x, y)); + +Notice that compared to numeric differentiation, the only difference +when defining the functor for use with automatic differentiation is +the signature of the ``operator()``. + +In the case of numeric differentition it was + +.. code-block:: c++ + + bool operator()(const double* parameters, double* residuals) const; + +and for automatic differentiation it is a templated function of the +form + +.. code-block:: c++ + + template bool operator()(const T* parameters, T* residuals) const; + + +So what does this small change buy us? The following table compares +the time it takes to evaluate the residual and the Jacobian for +`Rat43` using various methods. + +========================== ========= +CostFunction Time (ns) +========================== ========= +Rat43Analytic 255 +Rat43AnalyticOptimized 92 +Rat43NumericDiffForward 262 +Rat43NumericDiffCentral 517 +Rat43NumericDiffRidders 3760 +Rat43AutomaticDiff 129 +========================== ========= + +We can get exact derivatives using automatic differentiation +(``Rat43AutomaticDiff``) with about the same effort that is required +to write the code for numeric differentiation but only :math:`40\%` +slower than hand optimized analytical derivatives. + +So how does it work? For this we will have to learn about **Dual +Numbers** and **Jets** . + + +Dual Numbers & Jets +------------------- + +.. NOTE:: + + Reading this and the next section on implementing Jets is not + necessary to use automatic differentiation in Ceres Solver. But + knowing the basics of how Jets work is useful when debugging and + reasoning about the performance of automatic differentiation. + +Dual numbers are an extension of the real numbers analogous to complex +numbers: whereas complex numbers augment the reals by introducing an +imaginary unit :math:`\iota` such that :math:`\iota^2 = -1`, dual +numbers introduce an *infinitesimal* unit :math:`\epsilon` such that +:math:`\epsilon^2 = 0` . A dual number :math:`a + v\epsilon` has two +components, the *real* component :math:`a` and the *infinitesimal* +component :math:`v`. + +Surprisingly, this simple change leads to a convenient method for +computing exact derivatives without needing to manipulate complicated +symbolic expressions. + +For example, consider the function + +.. math:: + + f(x) = x^2 , + +Then, + +.. math:: + + \begin{align} + f(10 + \epsilon) &= (10 + \epsilon)^2\\ + &= 100 + 20 \epsilon + \epsilon^2\\ + &= 100 + 20 \epsilon + \end{align} + +Observe that the coefficient of :math:`\epsilon` is :math:`Df(10) = +20`. Indeed this generalizes to functions which are not +polynomial. Consider an arbitrary differentiable function +:math:`f(x)`. Then we can evaluate :math:`f(x + \epsilon)` by +considering the Taylor expansion of :math:`f` near :math:`x`, which +gives us the infinite series + +.. math:: + \begin{align} + f(x + \epsilon) &= f(x) + Df(x) \epsilon + D^2f(x) + \frac{\epsilon^2}{2} + D^3f(x) \frac{\epsilon^3}{6} + \cdots\\ + f(x + \epsilon) &= f(x) + Df(x) \epsilon + \end{align} + +Here we are using the fact that :math:`\epsilon^2 = 0`. + +A **Jet** is a :math:`n`-dimensional dual number, where we augment the +real numbers with :math:`n` infinitesimal units :math:`\epsilon_i,\ +i=1,...,n` with the property that :math:`\forall i, j\ +\epsilon_i\epsilon_j = 0`. Then a Jet consists of a *real* part +:math:`a` and a :math:`n`-dimensional *infinitesimal* part +:math:`\mathbf{v}`, i.e., + +.. math:: + x = a + \sum_j v_{j} \epsilon_j + +The summation notation gets tedius, so we will also just write + +.. math:: + x = a + \mathbf{v}. + +where the :math:`\epsilon_i`'s are implict. Then, using the same +Taylor series expansion used above, we can see that: + +.. math:: + + f(a + \mathbf{v}) = f(a) + Df(a) \mathbf{v}. + +Similarly for a multivariate function +:math:`f:\mathbb{R}^{n}\rightarrow \mathbb{R}^m`, evaluated on +:math:`x_i = a_i + \mathbf{v}_i,\ \forall i = 1,...,n`: + +.. math:: + f(x_1,..., x_n) = f(a_1, ..., a_n) + \sum_i D_i f(a_1, ..., a_n) \mathbf{v}_i + +So if each :math:`\mathbf{v}_i = e_i` were the :math:`i^{\text{th}}` +standard basis vector. Then, the above expression would simplify to + +.. math:: + f(x_1,..., x_n) = f(a_1, ..., a_n) + \sum_i D_i f(a_1, ..., a_n) \epsilon_i + +and we can extract the coordinates of the Jacobian by inspecting the +coefficients of :math:`\epsilon_i`. + +Implementing Jets +^^^^^^^^^^^^^^^^^ + +In order for the above to work in practice, we will need the ability +to evaluate arbitrary function :math:`f` not just on real numbers but +also on dual numbers, but one does not usually evaluate functions by +evaluating their Taylor expansions, + +This is where C++ templates and operator overloading comes into +play. The following code fragment has a simple implementation of a +``Jet`` and some operators/functions that operate on them. + +.. code-block:: c++ + + template struct Jet { + double a; + Eigen::Matrix v; + }; + + template Jet operator+(const Jet& f, const Jet& g) { + return Jet(f.a + g.a, f.v + g.v); + } + + template Jet operator-(const Jet& f, const Jet& g) { + return Jet(f.a - g.a, f.v - g.v); + } + + template Jet operator*(const Jet& f, const Jet& g) { + return Jet(f.a * g.a, f.a * g.v + f.v * g.a); + } + + template Jet operator/(const Jet& f, const Jet& g) { + return Jet(f.a / g.a, f.v / g.a - f.a * g.v / (g.a * g.a)); + } + + template Jet exp(const Jet& f) { + return Jet(exp(f.a), exp(f.a) * f.v); + } + + // This is a simple implementation for illustration purposes, the + // actual implementation of pow requires careful handling of a number + // of corner cases. + template Jet pow(const Jet& f, const Jet& g) { + return Jet(pow(f.a, g.a), + g.a * pow(f.a, g.a - 1.0) * f.v + + pow(f.a, g.a) * log(f.a); * g.v); + } + + +With these overloaded functions in hand, we can now call +``Rat43CostFunctor`` with an array of Jets instead of doubles. Putting +that together with appropriately initialized Jets allows us to compute +the Jacobian as follows: + +.. code-block:: c++ + + class Rat43Automatic : public ceres::SizedCostFunction<1,4> { + public: + Rat43Automatic(const Rat43CostFunctor* functor) : functor_(functor) {} + virtual ~Rat43Automatic() {} + virtual bool Evaluate(double const* const* parameters, + double* residuals, + double** jacobians) const { + // Just evaluate the residuals if Jacobians are not required. + if (!jacobians) return (*functor_)(parameters[0], residuals); + + // Initialize the Jets + ceres::Jet<4> jets[4]; + for (int i = 0; i < 4; ++i) { + jets[i].a = parameters[0][i]; + jets[i].v.setZero(); + jets[i].v[i] = 1.0; + } + + ceres::Jet<4> result; + (*functor_)(jets, &result); + + // Copy the values out of the Jet. + residuals[0] = result.a; + for (int i = 0; i < 4; ++i) { + jacobians[0][i] = result.v[i]; + } + return true; + } + + private: + std::unique_ptr functor_; + }; + +Indeed, this is essentially how :class:`AutoDiffCostFunction` works. + +Pitfalls +-------- + +Automatic differentiation frees the user from the burden of computing +and reasoning about the symbolic expressions for the Jacobians, but +this freedom comes at a cost. For example consider the following +simple functor: + +.. code-block:: c++ + + struct Functor { + template bool operator()(const T* x, T* residual) const { + residual[0] = 1.0 - sqrt(x[0] * x[0] + x[1] * x[1]); + return true; + } + }; + +Looking at the code for the residual computation, one does not foresee +any problems. However, if we look at the analytical expressions for +the Jacobian: + +.. math:: + + y &= 1 - \sqrt{x_0^2 + x_1^2}\\ + D_1y &= -\frac{x_0}{\sqrt{x_0^2 + x_1^2}},\ + D_2y = -\frac{x_1}{\sqrt{x_0^2 + x_1^2}} + +we find that it is an indeterminate form at :math:`x_0 = 0, x_1 = +0`. + +There is no single solution to this problem. In some cases one needs +to reason explicitly about the points where indeterminacy may occur +and use alternate expressions using `L'Hopital's rule +`_ (see for +example some of the conversion routines in `rotation.h +`_. In +other cases, one may need to regularize the expressions to eliminate +these points. + +.. rubric:: Footnotes + +.. [#f1] The notion of best fit depends on the choice of the objective + function used to measure the quality of fit. Which in turn + depends on the underlying noise process which generated the + observations. Minimizing the sum of squared differences is + the right thing to do when the noise is `Gaussian + `_. In + that case the optimal value of the parameters is the `Maximum + Likelihood Estimate + `_. +.. [#f2] `Numerical Differentiation + `_ +.. [#f3] [Press]_ Numerical Recipes, Section 5.7 +.. [#f4] In asymptotic error analysis, an error of :math:`O(h^k)` + means that the absolute-value of the error is at most some + constant times :math:`h^k` when :math:`h` is close enough to + :math:`0`. + + + +TODO +==== + +#. Inverse function theorem +#. Add references in the various sections about the things to + do. NIST, RIDDER's METHOD, Numerical Recipes. +#. Calling iterative routines. +#. Discuss, forward v/s backward automatic differentiation and + relation to backprop, impact of large parameter block sizes on + differentiation performance. +#. Why does the quality of derivatives matter? +#. Reference to how numeric derivatives lead to slower convergence. +#. Pitfalls of Numeric differentiation. +#. Ill conditioning of numeric differentiation/dependence on curvature. diff --git a/docs/source/forward_central_error.png b/docs/source/forward_central_error.png new file mode 100644 index 0000000000000000000000000000000000000000..56d10b0c797bdb2949ee6375b0e8c6f44705ae3e GIT binary patch literal 57776 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 literal 0 HcmV?d00001 diff --git a/docs/source/forward_central_ridders_error.png b/docs/source/forward_central_ridders_error.png new file mode 100644 index 0000000000000000000000000000000000000000..ecea674eed4cae3f35af7b52c122b972a711ad13 GIT binary patch literal 75579 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∋MRFWiou=`-srIXjaM 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