Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

活性化関数

続いて非線型変換の関数です。こちらは先ほどの線形変換とは逆の非線型の変換を行う関数です。深層学習のフレームワークではこのような関数は活性化関数(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
}

活性化関数は他にもTanhReLUなど様々な種類があり、それぞれ学習のスタイルに対して向き不向きがあります。自分の実行する学習に合わせた活性化関数を選ぶ必要があります。他の活性化関数も同様に実装していき、選択の多い実用的なフレームワークを目指します。