自動微分というアルゴリズムがある。チェーンルールを使うことで、予め微分の式を与えなくてもそれと同等の精度で微分ができるというもの。もともとの計算時間の定数倍しかかからず、かつloopが入ってたりするような微分の式を書くのに困るような計算相手でも平気なので重宝する。 http://www.kmonos.net/wlog/123.html#_2257111201 がとてもよい紹介。これは自動微分のうちでもフォワードモードというもので、ある一つの変数に関しての微分を計算出来るというやつだが、リバースモードといって多変数関数に対して一気に傾きが計算出来るというものもある。またこれを組み合わせればヘシアンをわりと素早く計算できる。 実装してみたのがこれ。 https://github.com/nos13/autodiff 他人が使うことを微塵も考えてないのでライブラリの体をあまりなしていないが…。