softmax関数とクスエントロピー誤差の合成関数の導関数
softmax関数とクロスエントロピー関数の合成関数の導関数をPerlで記述してみます。
実は、softmax関数の導関数は、そう簡単ではありません。
ですが、softmax関数とクロスエントロピー関数の合成関数の導関数は簡単な表現になります。
このため、softmax関数とクスエントロピー誤差の合成関数の導関数を、逆誤伝播法に利用します。
use strict; use warnings; # softmaxクロスエントロピー誤差の導関数 sub softmax_cross_entropy_cost_derivative { my ($softmax_outputs, $desired_outputs) = @_; my $length = @$softmax_outputs; my $softmax_cross_entropy_cost_derivative = []; for (my $i = 0; $i < @$softmax_outputs; $i++) { $softmax_cross_entropy_cost_derivative->[$i] = ($softmax_outputs->[$i] - $desired_outputs->[$i]) / $length; } return $softmax_cross_entropy_cost_derivative; }