近年、機械学習への応用により自動微分の技術が再び脚光を浴び始めています1。例えばDeepLearningを微分な可能な関数の組み合わせ論へと発展させた微分可能プログラミング2では、プログラミングにより実装した関数の導関数を求める操作が基本的な役割を果たしています。この記事では自動微分に対する理解をより深めるために、自動微分のアルゴリズムをゼロから実装していきたいと思います。 自動微分 自動微分はプログラムによって定義された数学的な関数が与えられたときに、その導関数をアルゴリズムによって機械的に求める手法です。 例えば