Rainbow Engine

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

IT技術 (Technology)

ソフトマックス関数の微分の導出をご紹介

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

 

<目次>

(1) ソフトマックス関数の微分の導出をご紹介
 (1-1) ソフトマックス関数とは?
 (1-2) ソフトマックス関数の微分(一般式)
 (1-3) ソフトマックス関数の微分の導出(証明)

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

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

ソフトマックス関数の解説については、下記記事をご参照ください。
⇒(参考)ソフトマックス関数とは?ロジスティック回帰との関係性もご紹介

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

(1-2) ソフトマックス関数の微分(一般式)

\( Y=\sum^{n}_{j=1}e^{x_j} \)と置くと、ソフトマックス関数の微分を次のように表せます。
 
・①i=jの場合
$$ \frac{\partial y_i}{\partial x_i} = \frac{e^{x_i}Y-e^{x_i}e^{x_i}}{Y^2} = p(x_i) (1 – p(x_i))$$
 
・②i≠jの場合
$$ \frac{\partial y_i}{\partial x_j} = -\frac{e^{x_i}e^{x_j}}{Y^2} = -p(x_i)p(x_j)$$
 

(1-3) ソフトマックス関数の微分の導出(証明)

●STEP0:前提確認

・ソフトマックス関数は、ある入力に対する「出力の確率」として扱える
$$ softmax(x_i) = \frac{e^{x_i}}{\sum^{n}_{j=1}e_{x_j}} = p(x_i) \quad (i=1,2,…,n)  $$

●STEP1:i=jの場合の微分

・商の微分(Quotient Rule)を適用
$$ \frac{\partial P(x_i)}{\partial x_i} = \frac{ \frac{\partial e^{x_i}}{\partial x_i} Y – e^{x_i} \frac{\partial Y}{\partial x_i} }{ Y^2 } $$
・1項目は\( e^{x_i} \)(そのまま。ネイピア数の微分で、係数なし)
$$ \quad \quad \quad \quad = \frac{ e^{x_i} Y – e^{x_i} \frac{\partial Y}{\partial x_i} }{ Y^2 } $$
・2項目は分母\(Y\)をそのまま
$$ \quad \quad \quad \quad = \frac{ e^{x_i} Y – e^{x_i} \frac{\partial Y}{\partial x_i} }{ Y^2 } $$
・3項目は分子\( e^{x_i} \)をそのまま(変化なし)
$$ \quad \quad \quad \quad = \frac{ e^{x_i} Y – e^{x_i} \frac{\partial Y}{\partial x_i} }{ Y^2 } $$
・4項目は微分の結果、\( \frac{\partial Y}{\partial x_i} = \frac{\partial \sum^{n}_{j=1}e^{x_j}}{\partial x_i} = \frac{ \partial (e^{x_1} + e^{x_2} + \cdots e^{x_i} + \cdots + e^{x_n}) }{ \partial x_i} = 0 + 0 + \cdots e^{x_i} + \cdots 0 = e^{x_i} \)なので
$$ \quad \quad \quad \quad = \frac{ e^{x_i} Y – e^{x_i} e^{x_i} }{ Y^2 } $$
・式変形
$$ \quad \quad \quad \quad = \frac{ e^{x_i} }{ Y } \cdot \frac{ Y – e^{x_i} }{ Y } $$
$$ \quad \quad \quad \quad = \frac{ e^{x_i} }{ Y } (1- \frac{ e^{x_i} }{ Y }) $$
$$ \quad \quad \quad \quad = p(x_i) (1 – p(x_i)) $$
よって、ソフトマックス関数の微分(i=jの場合)は自分自身を用いた簡易な式で表現できる事が分かりました。

●STEP2:i≠jの場合の微分

・残りの分母の項についても、ソフトマックス関数の結果に影響を与えるため、それらに関しても微分します。
$$ softmax(x)_i = \frac{e^{x_i}}{  (e^{x_1} + e^{x_2} + \cdots e^{x_i} + \cdots + e^{x_n}) } \quad (i=1,2,…,n) $$
(図121)
・商の微分(Quotient Rule)を適用
$$ \frac{\partial P(x_i)}{\partial x_j} = \frac{ \frac{\partial e^{x_i}}{\partial x_j} Y – e^{x_i} \frac{\partial Y}{\partial x_j} }{ Y^2 } $$
・1項目は0になる
⇒\(e_{x_i}\)の\( x_{j} \)に関する微分は0になります(\( x_{j} \)が分子に含まれないため)
$$ \frac{\partial P(x_i)}{\partial x_j} = \frac{ 0 \cdot Y – e^{x_i} \frac{\partial Y}{\partial x_j} }{ Y^2 } $$
・2項目は計算不要(1項目が0なので)
・3項目は分子をそのまま代入
$$ \frac{\partial P(x_i)}{\partial x_j} = \frac{ 0 – e^{x_i} \frac{\partial Y}{\partial x_j} }{ Y^2 } $$
・4項目は微分の結果、\( \frac{\partial Y}{\partial x_j} = \frac{\partial \sum^{n}_{j=1}e^{x_j}}{\partial x_j} = \frac{ \partial (e^{x_1} + e^{x_2} + \cdots e^{x_i} + \cdots + e^{x_n}) }{ \partial x_j} = 0 + 0 + \cdots e^{x_j} + \cdots 0 = e^{x_i} \)なので
$$ \frac{\partial P(x_i)}{\partial x_j} = \frac{ 0 – e^{x_i} e^{x_j} }{ Y^2 } $$
・式変形
$$ \quad \quad \quad \quad = – \frac{ e^{x_i} }{ Y } \cdot \frac{ e^{x_j} }{ Y } $$
$$ \quad \quad \quad \quad = – p(x_i) p(x_j) $$
よって、ソフトマックス関数の微分(i≠jの場合)も自分自身を用いた簡易な式で表現できる事が分かりました。

Adsense審査用広告コード


Adsense審査用広告コード


-IT技術 (Technology)

執筆者:


comment

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

関連記事

Miroのプラン比較の調査をしてみた

  <目次> (1) Miroのプラン比較の調査をしてみた  (1-1) 目的  (1-2) 調査結果   (1-2-1) 各プランの概要   (1-2-2) 機能比較の補足 (1) Mir …

バイナリエディタの使い方や見方(「アドレス」や「テキスト」とは?)

<目次> (1) バイナリエディタの使い方や見方(「アドレス」や「テキスト」とは?)  (1-1) バイナリデータ・バイナリエディタとは?  (1-2) バイナリエディタの見方  (1-3) バイナリ …

no image

P2P(Procure to Payment)とは?概要や流れをご紹介

  <目次> (1) P2P(Procure to Payment)とは?概要や流れをご紹介  (1-1) 概要  (1-2) 流れ   ●①必要性チェック(Indentify Needs) …

OpenAIのAPIを使ったSlackボットの作り方

  <目次> (1) OpenAIのAPIを使ったSlackボットの作り方  (1-1) やりたいこと  (1-2) 前提条件  (1-3) サンプルコード (1) OpenAIのAPIを使 …

画面設計の項目一覧の書き方とサンプルのご紹介

  <目次> (1) 画面設計の項目一覧の書き方とサンプルのご紹介  (1-1) 項目一覧とは?  (1-2) 項目一覧の書き方は?  (1-3) 項目一覧のサンプル (1) 画面設計の項目 …

  • English (United States)
  • 日本語
Top