2009年7月26日日曜日

シグモイド関数 (sigmoid function)

階段関数(step function)は微分不可能な点がある。 パーセプトロンのBP法などでは、傾きを求めるために微分する必要があるので、階段関数の代わりにシグモイド関数が使用される。

シグモイド関数


C言語での実装

#include <stdio.h>
#include <math.h>

/* ---------------------------------------------
  シグモイド関数を計算する
  引数1: x
  引数2: gain ゲイン
  戻り値 シグモイド関数
 ---------------------------------------------*/
double sigmoid(double x, double gain)
{
  return 1.0 / (1.0 + exp(-gain * x));
}

/* main */
int main(void)
{
    double sig;
    double x = -6.0;
    double step = 0.01;

    while ( x < 6.0 + step ) {
        sig = sigmoid(x, 1.0);
        printf("%.5f\t%.16f\n", x, sig);
        x += step;
    }

    return 0;
}
実行例
gnuplotを使用して出力結果をプロットすると以下のように表示される。

0 件のコメント:

コメントを投稿