Perlで学ぶディープラーニング入門

ReLU関数 - 活性化関数

ReLU関数をPerlで書いてみます。ReLU関数は活性化関数の一つです。

ReLU関数は、値が0より大きい場合はその値を、0以下の場合は0を返す関数です。

use strict;
use warnings;

# ReLU関数
sub relu {
  my ($x) = @_;
  
  my $relu = $x * ($x > 0.0);
  
  return $relu;
}

my $value1 = 0.7;
my $relu1 = relu($value1);

print "$relu1\n";

my $value2 = -0.4;
my $relu2 = relu($value2);

print "$relu2\n";

ReLU関数は、ロジックが簡単で、計算量が少なく、効果が高い活性化関数として知られています。

ReLU関数は隠れ層における活性化関数として利用されますが、出力層で出力を作成する場合にも利用することができます。

ReLU関数の導関数

ReLU関数の導関数をPerlで書いてみます。導関数とは、関数を微分したものを意味します。ReLU関数の導関数は、バックプロパゲーションに利用します。

use strict;
use warnings;

sub relu_derivative {
  my ($x) = @_;
  
  my $relu_derivative = 1 * ($x > 0.0);
  
  return $relu_derivative;
}

my $value1 = 0.7;
my $relu_derivative1 = relu_derivative($value1);

print "$relu_derivative1\n";

my $value2 = -0.4;
my $relu_derivative2 = relu_derivative($value2);

print "$relu_derivative2\n";
Side Bar