らんだむな記憶

blogというものを体験してみようか!的なー

誤差逆伝播法について再び考えてみる(3)

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装では5章「誤差逆伝播法」において計算グラフを用いつつ、各ノードで“局所的な”偏導関数を求めて連鎖律でつないでいく解説がある。*1

この仕組みは実践Pytorch - Qiitatorch.autograd.Function.backward をオーバーライドするところで見られるように思う。
pytorch/function.py at 593bb145ceea548478f83fd820de44b95d375108 · pytorch/pytorch · GitHubが基底クラスの該当部分だろうか。

Keras についてはpython - Backward propagation in Keras? - Stack Overflowについては backward を実装するといったことができなさそうだ。Automatic differentiation and gradient tape  |  TensorFlow Coreよく分からないけど、バックエンドの Tensorflow なりが自動微分でやってくれるからユーザーにはできることはない・・・ってことだろうか。
行動に抽象化されていて、全然下回りに仕組みが見えない・・・。

自動微分については自動微分を実装して理解する(前編) - Qiitaに記事があった。
また、deep-learning-v2-pytorch/Part 3 - Training Neural Networks (Exercises).ipynb at master · udacity/deep-learning-v2-pytorch · GitHubを眺めるとテンソルが記録されて、backpropagation用の関数がセットされる様子が見られる。