深層学習-活性化関数

 

 

上図のネットワークを構成する層は入力層、隠れ層、出力層の3つあるので「3層ネットワーク」と呼ぶ場合や、実質的に重みをもつ層は2層であるから「2層ネットワーク」と呼ぶこともあります。

 

 

 

上図では、ある入力に対して入力が0以上であれば1を返し、入力が0以下であれば0を返します。

 

 

 

活性化関数

 

これは活性化関数の中でも、階段関数(ステップ関数)と呼ばれるものになります。

▼ステップ関数

def step_function(x):
    return np.array(x > 0, dtype=np.int)

 

 

 

階段関数を用いればパーセプトロンを表現することができましたが、活性化関数を別の関数を用いることでニューラルネットワークを表現することができるようになります。

 

  • シグモイド関数

def sigmoid(x):
    return 1 / (1 + np.exp(-x))    

 

 

 

  • ReLU関数

def relu(x):
    return np.maximum(0, x)

 

 

 

 

 

出力層における恒等関数とソフトマックス関数

 

ニューラルネットワークでは、分類問題か回帰問題を扱うかによって出力層の活性化関数を使い分けます。

一般的に、回帰問題では恒等関数を使い、分類問題ではソフトマックス関数を使います。

 

分類問題:あるデータからどのグループに属しているかを判別する

回帰問題:あるデータから、数値の予測を行う

 

 

恒等関数

 

回帰問題で用いる恒等関数とは、入力をそのまま出力する関数です。

つまり出力層で恒等関数を用いると、入力信号をそのまま出力します。

 

 

 

ソフトマックス関数

 

分類問題で用いるソフトマックス関数とは、以下の式で表されます。

def softmax(x):
    if x.ndim == 2:
        x = x.T
        x = x – np.max(x, axis=0)
        y = np.exp(x) / np.sum(np.exp(x), axis=0)
        return y.T 

    x = x – np.max(x) # オーバーフロー対策
    return np.exp(x) / np.sum(np.exp(x))

 

深層学習ー手書き数字認識
以下の手書き数字認識では、MNISTデータセットという手書き数字画像のデータセットを用います。 MNISTデータセットは以下のような画像データセットで...

コメント