ソフトマックスとシグモイドについて詳しく説明する
アクティベーション機能の概要
人工知能産業に携わっている、または知識を持っている人にとって、softmaxとsigmoidの2つの活性化機能はなじみのないものではないと思います。これら2つの活性化機能は、ロジスティック回帰だけでなく、インタビューや筆記試験にも含まれています。これらの2つのアクティベーション関数とそれらの派生関数を習得することは非常に重要で最も基本的です。以下の詳細はsoftmaxとsigmoidです。
softmax関数
数学では、正規化された指数関数としても知られるsoftmax関数は、論理関数の拡張です。任意の実数を呼び出すk次元ベクトルzを2つのk次元ベクトルσ(z)に「圧縮」できるため、各要素の範囲は(0、1)の間になり、すべての要素の合計は次のようになります。 1.1。
softmax関数のプロパティ
softmax関数の式は次のとおりです
。F(xi)= exp(xi)∑ i = 0 kexp(xi)(i = 0、1、2、。。。k)F(x_i)= \ frac {exp(x_i)} {\ sum_ {i = 0} ^ k {exp(x_i)}}(i = 0,1,2、... k)F (x私)=∑i = 0Ke x p (x私)e x p (x私)(i=0 、1 、2 、。。。K )
×:入力データを、
EXP:べき乗;
F(X):関数出力、
0から1の間に全てのx値をマッピング;
xの全ての値のマッピングと1に等しいです。
softmax機能の使用
- 複数の分類ロジスティック回帰モデルに使用されます。
- ニューラルネットワークを構築するときは、さまざまなレイヤーでsoftmax関数を使用します。softmaxはニューラルネットワークで完全に接続されたレイヤーとして表示されます。この関数は、ネットワーク計算の結果を(0、1)間隔にマッピングし、各カテゴリを指定します。確率。
softmaxの実装コード
pythonの実装
import numpy as np
def softmax(x):
orig_shape=x.shape
#根据输入类型是矩阵还是向量分别做softmax
if len(x.shape)>1:
#矩阵
#找到每一行的最大值max,并减去该max值,目的是为了防止exp溢出
constant_shift=np.max(x,axis=1).reshape(1,-1)
x-=constant_shift
#计算exp
x=np.exp(x)
#每行求和
normlize=np.sum(x,axis=1).reshape(1,-1)
#求softmax
x/=normlize
else:
#向量
constant_shift=np.max(x)
x-=constant_shift
x=np.exp(x)
normlize=np.sum(x)
x/=normlize
assert x.shape==orig_shape
return x
ソフトマックス機能画像
import numpy as np
import matplotlib.pyplot as plt
def softmax(x):
orig_shape=x.shape
if len(x.shape)>1:
constant_shift=np.max(x,axis=1).reshape(1,-1)
x-=constant_shift
x=np.exp(x)
normlize=np.sum(x,axis=1).reshape(1,-1)
x/=normlize
else:
constant_shift=np.max(x)
x-=constant_shift
x=np.exp(x)
normlize=np.sum(x)
x/=normlize
assert x.shape==orig_shape
return x
softmax_inputs = np.arange(0,5)
softmax_outputs=softmax(softmax_inputs)
print("softmax input:: {}".format(softmax_inputs))
print("softmax output:: {}".format(softmax_outputs))
# 画图像
plt.plot(softmax_inputs,softmax_outputs)
plt.xlabel("Softmax Inputs")
plt.ylabel("Softmax Outputs")
plt.show()
図から、softmaxの入力値が大きいほど、出力値が大きいことがわかります。
シグモイド機能
シグモイド関数は、生物学で一般的なシグモイド関数であり、シグモイド成長曲線としても知られています。シグモイド関数は、0と1の間の変数をマップするためのニューラルネットワークのしきい値関数としてよく使用されます。
シグモイド機能の性質
シグモイド関数の式は次のとおりです
。F(x)= 1 1 + exp(− x)F(x)= \ frac {1} {1 + exp(-x)}F (x )=1+e x p (− x )1
x:入力データ;
exp:指数演算;
f(x):浮動小数点数である関数出力;
シグモイド機能の使用
- シグモイド関数は、ロジスティック回帰モデルのバイナリ分類に使用されます。
- ニューラルネットワークでは、シグモイド関数がアクティベーション関数として使用されます。
- 統計では、シグモイド関数イメージは一般的な累積分布関数です。
sigmoidの実装コード
pythonの実装
import numpy as np
def sigmoid(x):
return 1.0/(1+np.exp(-x))
シグモイド関数の描画
def sigmoid(x):
return 1.0/(1+np.exp(-x))
sigmoid_inputs = np.arange(-10,10)
sigmoid_outputs=sigmoid(sigmoid(sigmoid_inputs))
print("sigmoid Input :: {}".format(sigmoid_inputs))
print("sigmoid Output :: {}".format(sigmoid_outputs))
plt.plot(sigmoid_inputs,sigmoid_outputs)
plt.xlabel("Sigmoid Inputs")
plt.ylabel("Sigmoid Outputs")
plt.show()
softmaxとsigmoidの比較
一般 | ソフトマックス | シグモイド |
---|---|---|
公式 | F(xi)= exp(xi)∑ i = 0 kexp(xi)F(x_i)= \ frac {exp(x_i)} {\ sum_ {i = 0} ^ k {exp(x_i)}} F (x私)=∑i = 0Ke x p (x私)e x p (x私) | F(x)= 1 1 + exp(− x)F(x)= \ frac {1} {1 + exp(-x)} F (x )=1 + e x p (− x )1 |
自然 | 離散確率分布 | 非線形マッピング |
仕事 | マルチカテゴリ | 2つのカテゴリ |
ドメイン | 一次元ベクトル | 単一の値 |
範囲 | [0、1] | (0、1) |
結果の合計 | 1でなければなりません | 正の数です |