Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

機械学習 (Machine Learning)

ソフトマックス関数とは?ロジスティック回帰との関係性もご紹介

投稿日:2022年9月28日 更新日:

<目次>

(1) ソフトマックス関数とは?ロジスティック回帰との関係性もご紹介
 (1-1) 目的
 (1-2) ソフトマックス関数とは?
 (1-3) ソフトマックス関数の特徴
 (1-4) ソフトマックス関数とロジスティック回帰の関係
 (1-5) オマケ:Pythonでの計算

(1) ソフトマックス関数とは?ロジスティック回帰との関係性もご紹介

(1-1) 目的

ディープラーニングで頻繁に登場する「ソフトマックス関数」について、その特徴と「なぜニューラルネットワークで使われるのか?」を理解する。

目次にもどる

(1-2) ソフトマックス関数とは?

ディープラーニングの分野において、ニューラルネットワークのモデルの出力層を定義する際の「活性化関数」などに利用される関数です。

・ソフトマックス関数の式
$$ softmax(x)_i = \frac{e^{x_i}}{\sum^{N}_{j=1}e_{x_j}} \quad (i=1,2,…,n) $$

・ソフトマックス関数の一般式
$$ \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{pmatrix} = \frac{e^{x_i}}{\sum^{n}_{j=1}e_{x_j}} \begin{pmatrix} e_{x_1} \\ e_{x_2} \\ \vdots \\ e_{x_n} \end{pmatrix} $$

・総和が1になる

$$ \sum^{n}_{i=1} softmax(x)_i = 1 \quad (i=1,2,…,n) $$

(1-3) ソフトマックス関数の特徴

 (図121)

●特徴①:出力ynの元々の大小関係が保たれる
 
晴:0.18 → 0.23 (2番目に大きい)
曇:-0.52 → 0.11 (3番目に大きい)
雨:1.26 → 0.66 (1番目に大きい)
 
●特徴②:出力は0~1の範囲の数値になる
・変換前の出力が負の数でも、この法則は成り立ちます。
 
●特徴③:ベクトルの成分が正規化されている
・全部の出力(0.23 + 0.11 + 0.66)を足し合わせると1になる
$$ \sum^{n}_{i=1} softmax(x)_i = 1 \quad (i=1,2,…,n) $$

上記の特徴を踏まえると、それぞれの事象が「相互に排他的」である限り、ソフトマックス関数の出力は「確率」として扱える

目次にもどる

(1-4) ソフトマックス関数とロジスティック回帰の関係

ソフトマックス関数は前述のような「特徴①~特徴③」を持っている事から、ニューラルネットワークのモデルとも非常に相性が良い事が分かっています。
 
・①ソフトマックス関数は「多クラスロジスティクス回帰」モデルの「活性化関数」として使われています。
⇒「活性化関数」は、ニューラルネットワークにおける出力(yの値)を決める関数です。
⇒つまり線形結合(x1*w1 +…+ xn*wn + b)後の出力yの決定に使う関数(ステップ関数、シグモイド関数)
 
・②ソフトマックス関数なら「多クラス分類」が可能
⇒ステップ関数やシグモイド関数は2値分類(発火する/しない)なので「迷惑メールである/でない」といった2値の分類しか出来ない。
⇒しかし、ソフトマックス関数なら「多クラス分類」が出来るので、例えば「晴れ/曇り/雨/雷/雪/台風」など2個以上の分類が可能
 
(図131)

(表1)
●モデル名 ●活性化関数
⇒出力値を決定する関数
●出力クラス数
単純パーセプトロン ステップ関数 2
(2値分類)

⇒発火する/しないの2値のみ

ロジスティック回帰 シグモイド関数 2
(2値分類)

⇒発火する/しないの2値のみ

多クラスロジスティック回帰 ソフトマックス関数 2以上
(多クラス分類)
(参考)
・ステップ関数は2値(0か1)なので、グレーゾーンは表現できない
 ⇒(例)迷惑メールっぽいが、そうでないものも「迷惑メール判定」されてしまう
・シグモイド関数は「確率」を表現できるので、グレーゾーンも表現可能
 ⇒(例)迷惑メールっぽいが、そうでないものも「受信ボックス」に入れる判断も可能

(1-5) オマケ:Pythonでの計算

(サンプル)
import numpy as np
import matplotlib.pyplot as plt

def softmax(x):
    # xの各値に対してソフトマックス関数を計算
    return np.exp(x) / np.sum(np.exp(x), axis=0)

X = [-0.52, 0.18, 1.26]
print(softmax(X))
(図141)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-機械学習 (Machine Learning)

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

ディープラーニングのロジスティクス回帰をPythonで実装した例をご紹介

  <目次> (1) ディープラーニングのロジスティック回帰をPythonで実装した例をご紹介  (1-1) 実装のフロー  (1-2) 実装例 (1) ディープラーニングのロジスティック回 …

確率的勾配降下法(SGD)をロジスティック回帰に適用しPythonで実装した例をご紹介

  <目次> (1) 確率的勾配降下法(SGD)をロジスティック回帰に適用しPythonで実装した例をご紹介  (1-1) (課題)「勾配降下法」が抱える課題  (1-2) (対策)確率的勾 …

no image

AzureのMachine Learning(機械学習)の始め方

  <目次> (1) AzureのMachine Learning(機械学習)の始め方  (1-0) やりたいこと  (1-1) STEP1:(事前準備)ワークスペースの作成  (1-2) …

no image

Tensorflowで「Could not load dynamic library ‘cudart64_110.dll’」が出る原因と対処

  <目次> (1) Tensorflowで「Could not load dynamic library ‘cudart64_110.dll’」が出る原因と対処   …

tensorflowのmatmulの使い方について(次元別の仕様やnumpy.matmulとの違いを整理)

  <目次> (1) tensorflowのmatmulの使い方について(次元別の仕様やnumpy.matmulとの違いを整理)  (1-1) tensorflow.matmulの次元別の挙 …

  • English (United States)
  • 日本語
Top