活性化関数
続いて非線型変換の関数です。こちらは先ほどの線形変換とは逆の非線型の変換を行う関数です。深層学習のフレームワークではこのような関数は活性化関数(activation functions)と呼ばれています。ではその中でも有名はシグモイド関数を紹介し、実装します。
Sigmoid関数
TODO:グラフ追加
$$y = \frac{1}{1 + \exp(-x)}$$
式はこのようにネイピア数の指数関数を含んでいて、少し複雑な関数ですが、私たちは分数、すなわち割り算、Exp で指数にも対応していますので、このように直感的にコードを書くことができます。
pub fn sigmoid_simple(x: &RcVariable) -> RcVariable {
let mainasu_x = -x.clone();
let y = 1.0f32.rv() / (1.0f32.rv() + exp(&mainasu_x));
y
}
活性化関数は他にもTanhやReLUなど様々な種類があり、それぞれ学習のスタイルに対して向き不向きがあります。自分の実行する学習に合わせた活性化関数を選ぶ必要があります。他の活性化関数も同様に実装していき、選択の多い実用的なフレームワークを目指します。