シグモイド関数の微分

シェアする

  • このエントリーをはてなブックマークに追加
最近の記事
  • 10/18 【C#】GraphicsPath
  • 10/17 【C#】Bitmap画像データの拡大縮小
  • 10/15 【C#】画像の座標系
  • 10/14 【C#】画像の上下左右反転、90,180,270度回転
  • 10/3 【C#】SplitContainerのPanel固定方法
  • 9/7 【Neural Network Console】学習データの出力方法
  • 9/3 Deep Learning向け学習画像撮り込みソフト公開
  • 9/1 【Neural Network Console】新規画像のDataset作成方法
  • 8/28 【Neural Network Console】GUI表示スケールの変更
  • 8/22 【Neural Network Console】CPU/GPU処理の設定切替
  • 8/21 【Neural Network Console】Learning Rate(学習率)の設定
  • 8/20 ソニーの無償AIソフト Neural Network Consoleの入手ダウンロード、インストール
  • 8/20 Deep Learning
  • 8/20
  • 8/19 古いバージョンのVisual Studio Community/Expressの入手ダウンロード
  • 8/19 CUDAの入手、ダウンロード、インストール方法
  • 8/17 【C#.NET】マイクロソフト仕様のアフィン変換
  • 8/5 【C#】ファイルを開くダイアログボックスの表示
  • 8/2 キャノンプリンターのCDトレイはどこ?!
  • 7/6 【参考書籍】画像処理・機械学習プログラミング OpenCV 3対応
  • 6/20 【Python,matplotlib】動くグラフをAnimationGifに保存する方法
  • 6/17 シグモイド関数の微分
  • 6/15 シグモイド関数
  • 6/13 合成関数の微分
  • 6/12 WordPressで数式エディタ風に数式を入力したい
  • 6/11 PythonをVisual Studioでインストールする方法
  • 6/9 【Python】OpenCVをAnacondaでインストール(Windows編)
  • 6/6 【Python】Anacondaで複数バージョンの環境切り替え
  • 6/6 画像センシング展2017に出展します。
  • 6/1 【Office365】Web版Outlookのフォントサイズ変更
  • 6/1 【Anaconda】モジュールのアップデートでエラー発生
  • 6/1 【Anaconda】コマンドリストの表示
  • 5/29 Windows10パソコン購入
  • 5/24 Anacondaのアンインストール
  • 5/24 【Jupyter Notebook】新規プログラムの作成
  • 5/23 【Python】開発環境の構築
  • 5/23 Pythonはじめました
  • 4/6 【Office365】Web版Outlookのスレッド表示を解除する方法
  • 4/5 【Excel】フーリエ解析(FFT)
  • 3/20 Canny edge detection
  • 3/20 【Excel2016】分析ツールの表示
  • 3/5 【Visual Studio】黒い背景色を白に変更する方法
  • 2/8 【Windows10】拡張モニタに表示されたウィンドウを元に戻す
  • 2/7 複素数の計算
  • 1/18 【Excel】棒グラフの横軸の目盛を0始まりにする
  • 1/16 【Excel】フーリエ変換
  • 1/6 【OpenCV】疑似カラー(カラーマップ)
  • 11/8 【Visual Studio】検索結果のウィンドウ表示
  • 11/3 ニコン 一眼レフカメラ D5500レビュー
  • 10/26 カラーカメラはモノクロカメラを兼ねない

  • シグモイド関数を微分するには合成関数の微分を用いて行います。

    まず、シグモイド関数

    $$f(x)=\frac { 1 }{ 1+{ e }^{ -x } } $$

    において

    $$u=g(x)=1+{ e }^{ -x }$$

    と置くと、

    $$y=f(u)=\frac { 1 }{ u } ={ u }^{ -1 }$$

    より、

    $$f'(x)=\frac { dy }{ dx } =\frac { dy }{ du } \frac { du }{ dx } \\ =-{ u }^{ -2 }(-{ e }^{ -x })\\ =\frac { { e }^{ -x } }{ { u }^{ 2 } } \\ =\frac { { e }^{ -x } }{ (1+{ e }^{ -x }) ^{ 2 }}$$

    となりますが、この先がちょとトリッキーな式の変形を行い、

    $$=\frac { { e }^{ -x } }{ 1+{ e }^{ -x } } \frac { 1 }{ 1+{ e }^{ -x } } \\ =(\frac { { 1+e }^{ -x } }{ 1+{ e }^{ -x } } -\frac { 1 }{ 1+{ e }^{ -x } } )\frac { 1 }{ 1+{ e }^{ -x } } \\ =(1-\frac { 1 }{ 1+{ e }^{ -x } } )\frac { 1 }{ 1+{ e }^{ -x } }$$

    となります。

    ここで

    $$f(x)=\frac { 1 }{ 1+{ e }^{ -x } } $$

    であるから、

    $$f’(x)=(1-f(x))f(x)$$

    となるのが、シグモイド関数の微分となります。

    例によってPythonのmatplotlibを使ってグラフを書いてみると、

    import matplotlib.pyplot as plt
    import numpy as np
    
    def sigmoid(x):
        return 1 / (1 + np.exp(-x))
    
    x = np.linspace(-10, 10)
    
    #シグモイド関数
    y = sigmoid(x)
    plt.plot(x, y)
    
    #シグモイド関数の微分
    dy = (1 - sigmoid(x)) * sigmoid(x)
    plt.plot(x, dy)
    
    plt.show()
    

    derivative of sigmoid function

    途中の計算は、自分一人では解けないな。。きっと。