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;
}
Perl AI深層学習入門