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;
}

関連情報