Python
機械学習
数学
softmax

ソフトマックス関数実装したヅラ

More than 1 year has passed since last update.

ソフトマックス関数とは

分類問題等でよく使われる活性化関数
なぜなら、正解ラベルへの推論を確率で割り振ってくれるため。
例)
mnistで手書きの8に対してのソフトマックス
[0.05, 0.01, 0.04, 0.1, 0.02, 0.05, 0.2, 0.03, 0.4, 0.1]

左の要素から数字の0,1,2,....9の予測確率に対応(4割の確率で8だと予測している)
すべての要素を足すと1になる。

実装

softmax.py
# coding: UTF-8
import numpy as np

# ソフトマックス関数
def softmax(a):
    # 一番大きい値を取得
    c = np.max(a)
    # 各要素から一番大きな値を引く(オーバーフロー対策)
    exp_a = np.exp(a - c)
    sum_exp_a = np.sum(exp_a)
    # 要素の値/全体の要素の合計
    y = exp_a / sum_exp_a

    return y 


a = [23.0, 0.94, 5.46]
print (softmax(a))
# [  9.99999976e-01   2.62702205e-10   2.41254141e-08]

参考文献
ゼロから作るDeep Learning