ソフトマックスとシグモイドについて詳しく説明する

アクティベーション機能の概要

人工知能産業に携わっている、または知識を持っている人にとって、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 xe x p xi=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 xe 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でなければなりません 正の数です

おすすめ

転載: blog.csdn.net/CFH1021/article/details/104841428