Sigmoid函數導數推導詳解

Sigmoid函數導數推導詳解

  • 在邏輯回歸中,Sigmoid函數的導數推導是一個關鍵步驟,它使得梯度下降算法能夠高效地計算。

1. Sigmoid函數定義

首先回顧Sigmoid函數的定義:

g ( z ) = 1 1 + e ? z g(z) = \frac{1}{1 + e^{-z}} g(z)=1+e?z1?

2. 導數推導過程

  1. 從Sigmoid函數出發:
    g ( z ) = 1 1 + e ? z g(z) = \frac{1}{1 + e^{-z}} g(z)=1+e?z1?

  2. u = 1 + e ? z u = 1 + e^{-z} u=1+e?z,則 g ( z ) = u ? 1 g(z) = u^{-1} g(z)=u?1

  3. 使用鏈式法則:
    d g d z = d g d u ? d u d z = ? u ? 2 ? ( ? e ? z ) = e ? z ( 1 + e ? z ) 2 \frac{dg}{dz} = \frac{dg}{du} \cdot \frac{du}{dz} = -u^{-2} \cdot (-e^{-z}) = \frac{e^{-z}}{(1 + e^{-z})^2} dzdg?=dudg??dzdu?=?u?2?(?e?z)=(1+e?z)2e?z?

  4. 現在,我們將其表示為 g ( z ) g(z) g(z)的函數:
    e ? z 1 + e ? z = 1 ? 1 1 + e ? z = 1 ? g ( z ) \frac{e^{-z}}{1 + e^{-z}} = 1 - \frac{1}{1 + e^{-z}} = 1 - g(z) 1+e?ze?z?=1?1+e?z1?=1?g(z)

  5. 因此:
    g ′ ( z ) = 1 1 + e ? z ? e ? z 1 + e ? z = g ( z ) ? ( 1 ? g ( z ) ) g'(z) = \frac{1}{1 + e^{-z}} \cdot \frac{e^{-z}}{1 + e^{-z}} = g(z) \cdot (1 - g(z)) g(z)=1+e?z1??1+e?ze?z?=g(z)?(1?g(z))

3. 代碼實現

import numpy as np
import matplotlib.pyplot as pltdef sigmoid(z):return 1 / (1 + np.exp(-z))def sigmoid_derivative(z):return sigmoid(z) * (1 - sigmoid(z))z = np.linspace(-10, 10, 100)
plt.figure(figsize=(10, 6))
plt.plot(z, sigmoid(z), label="Sigmoid function")
plt.plot(z, sigmoid_derivative(z), label="Sigmoid derivative")
plt.xlabel("z")
plt.ylabel("g(z)")
plt.title("Sigmoid Function and its Derivative")
plt.legend()
plt.grid(True)
plt.show()

在這里插入圖片描述

4. 導數性質分析

  1. 最大值:當 g ( z ) = 0.5 g(z) = 0.5 g(z)=0.5時,導數達到最大值 0.25 0.25 0.25
  2. 對稱性:導數在 z = 0 z=0 z=0時最大,隨著 ∣ z ∣ |z| z增大而迅速減小
  3. 非負性:導數始終非負,因為 0 < g ( z ) < 1 0 < g(z) < 1 0<g(z)<1

5. 導數形式的重要型

  • 在邏輯回歸的梯度下降中,需要計算損失函數對參數的導數。由于損失函數中包含Sigmoid函數,這個導數形式使得計算變得非常簡潔:

? ? θ j J ( θ ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) ? y ( i ) ) x j ( i ) \frac{\partial}{\partial \theta_j}J(\theta) = \frac{1}{m}\sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} ?θj???J(θ)=m1?i=1m?(hθ?(x(i))?y(i))xj(i)?

  • 其中 h θ ( x ) = g ( θ T x ) h_\theta(x) = g(\theta^T x) hθ?(x)=g(θTx)。如果沒有這個簡潔的導數形式,梯度計算會復雜得多。

  • 推導損失函數對 θ j \theta_j θj?的偏導數:
    ? ? θ j J ( θ ) = ? 1 m ∑ i = 1 m ( y i 1 h θ ( x i ) ? ( 1 ? y i ) 1 1 ? h θ ( x i ) ) ? ? θ j h θ ( x i ) = ? 1 m ∑ i = 1 m ( y i 1 g ( θ T x i ) ? ( 1 ? y i ) 1 1 ? g ( θ T x i ) ) g ( θ T x i ) ( 1 ? g ( θ T x i ) ) x i j = ? 1 m ∑ i = 1 m ( y i ( 1 ? g ( θ T x i ) ) ? ( 1 ? y i ) g ( θ T x i ) ) x i j = 1 m ∑ i = 1 m ( h θ ( x i ) ? y i ) x i j \begin{align*} \frac{\partial}{\partial \theta_j} J(\theta) &= -\frac{1}{m}\sum_{i=1}^m \left(y_i \frac{1}{h_\theta(x_i)} - (1-y_i)\frac{1}{1-h_\theta(x_i)}\right) \frac{\partial}{\partial \theta_j} h_\theta(x_i) \\ &= -\frac{1}{m}\sum_{i=1}^m \left(y_i \frac{1}{g(\theta^T x_i)} - (1-y_i)\frac{1}{1-g(\theta^T x_i)}\right) g(\theta^T x_i)(1-g(\theta^T x_i)) x_i^j \\ &= -\frac{1}{m}\sum_{i=1}^m \left(y_i(1-g(\theta^T x_i)) - (1-y_i)g(\theta^T x_i)\right) x_i^j \\ &= \frac{1}{m}\sum_{i=1}^m (h_\theta(x_i) - y_i) x_i^j \end{align*} ?θj???J(θ)?=?m1?i=1m?(yi?hθ?(xi?)1??(1?yi?)1?hθ?(xi?)1?)?θj???hθ?(xi?)=?m1?i=1m?(yi?g(θTxi?)1??(1?yi?)1?g(θTxi?)1?)g(θTxi?)(1?g(θTxi?))xij?=?m1?i=1m?(yi?(1?g(θTxi?))?(1?yi?)g(θTxi?))xij?=m1?i=1m?(hθ?(xi?)?yi?)xij??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81255.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81255.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81255.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MS31860T——8 通道串行接口低邊驅動器

MS31860T 是一款 8 通道低邊驅動器&#xff0c;包含 SPI 串口通信、 PWM斬波器配置、過流保護、短路保護、欠壓鎖定和過熱關斷功能&#xff0c; 芯片可以讀取每個通道的狀態。MS31860T 可以診斷開路的負載情況&#xff0c;并可以讀取故障信息。外部故障引腳指示芯片的故障狀態。…

騰訊 Kuikly 正式開源,了解一下這個基于 Kotlin 的全平臺框架

在 3月的時候通過 《騰訊 TDF 即將開源 Kuikly 跨端框架&#xff0c;Kotlin 支持全平臺》 我們大致知道了 Kuikly 的基本情況&#xff0c;Kuikly 是一個面向終端技術棧的跨端開發框架&#xff0c;完全基于kotlin語言開發&#xff0c;提供原生的性能和體驗。 按照官方的說法&…

AI驅動UI自動化測試框架調研

隨著應用復雜度增加&#xff0c;手動測試變得費時且易出錯&#xff0c;而自動化測試可提高效率和可靠性。如何借助大模型和一些自動化測試框架進行自動化測試&#xff0c;是一個研發團隊很重要的訴求。 目前主流的自動化測試框架很多&#xff0c;Midscene.js結合Playwright提供…

關系型數據庫設計指南

1. 前言 在自己獨立開發一個項目的過程中&#xff0c;我發現了一些以往寫小 Demo 從來沒有遇到過的問題。 最近在獨立制作一個全棧的通知管理平臺。一開始我沒有考慮太多&#xff0c;直接根據頭腦中零星的想法就開擼后端數據庫 model 和 API&#xff0c;用的是學了半成品的 M…

詳解TypeScript中的類型斷言及其繞過類型檢查機制

TypeScript中的類型斷言及其繞過類型檢查機制 一、類型斷言的本質與工作原理編譯時與運行時的區別TypeScript編譯器處理類型斷言的步驟 二、類型斷言的詳細語法與進階用法基礎語法對比鏈式斷言斷言修飾符1. 非空斷言操作符 (!)代碼分析1. getLength 函數分析用法說明&#xff1…

XLSX.utils.sheet_to_json設置了blankrows:true,但無法獲取到開頭的空白行

在用sheetJs的XLSX庫做導入&#xff0c;遇到一個bug。如果開頭行是空白行的話&#xff0c;調用sheet_to_json轉數組獲得的數據也是沒有包含空白行的。這樣會導致在設置對應的起始行時&#xff0c;解析數據不生效。 目前是直接跳過了開頭的兩行空白行 正確應該獲得一下數據 問…

PostgreSQL 數據庫下載和安裝

官網&#xff1a; PostgreSQL: Downloads 推薦下載網站&#xff1a;EDB downloads postgresql 我選了 postgresql-15.12-1-windows-x64.exe 鼠標雙擊&#xff0c;開始安裝&#xff1a; 安裝路徑&#xff1a; Installation Directory: D:\Program Files\PostgreSQL\15 Serv…

一、Javaweb是什么?

1.1 客戶端與服務端 客戶端 &#xff1a;用于與用戶進行交互&#xff0c;接受用戶的輸入或操作&#xff0c;且展示服務器端的數據以及向服務器傳遞數據。 例如&#xff1a;手機app&#xff0c;微信小程序、瀏覽器… 服務端 &#xff1a;與客戶端進行交互&#xff0c;接受客戶…

奇偶ASCII值判斷

奇偶ASCII值判斷 Description 任意輸入一個字符&#xff0c;判斷其ASCII是否是奇數&#xff0c;若是&#xff0c;輸出YES&#xff0c;否則&#xff0c;輸出NO。例如&#xff0c;字符A的ASCII值是65&#xff0c;則輸出YES&#xff0c;若輸入字符B(ASCII值是66)&#xff0c;則輸…

OpenCV 圖形API(74)圖像與通道拼接函數-----合并三個單通道圖像(GMat)為一個多通道圖像的函數merge3()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 從3個單通道矩陣創建一個3通道矩陣。 此函數將多個矩陣合并以生成一個單一的多通道矩陣。即&#xff0c;輸出矩陣的每個元素將是輸入矩陣元素的…

多節點監測任務分配方法比較與分析

多監測節點任務分配方法是分布式系統、物聯網&#xff08;IoT&#xff09;、工業監測等領域的核心技術&#xff0c;其核心目標是在資源受限條件下高效分配任務&#xff0c;以優化系統性能。以下從方法分類、對比分析、應用場景選擇及挑戰等方面進行系統闡述&#xff1a; 圖1 多…

【推薦系統筆記】BPR損失函數公式

一、BPR損失函數公式 BPR 損失函數的核心公式如下&#xff1a; L BPR ? ∑ ( u , i , j ) ∈ D ln ? σ ( x ^ u i j ) λ ∣ ∣ Θ ∣ ∣ 2 L_{\text{BPR}} - \sum_{(u, i, j) \in D} \ln \sigma(\hat{x}_{uij}) \lambda ||\Theta||^2 LBPR??(u,i,j)∈D∑?lnσ(x^ui…

Java 核心--泛型枚舉

作者&#xff1a;IvanCodes 發布時間&#xff1a;2025年4月30日&#x1f913; 專欄&#xff1a;Java教程 各位 CSDN伙伴們&#xff0c;大家好&#xff01;&#x1f44b; 寫了那么多代碼&#xff0c;有沒有遇到過這樣的“驚喜”&#xff1a;滿心歡喜地從 ArrayList 里取出數據…

新能源行業供應鏈規劃及集成計劃報告(95頁PPT)(文末有下載方式)

資料解讀&#xff1a;《數字化供應鏈規劃及集成計劃現狀評估報告》 詳細資料請看本解讀文章的最后內容。 該報告圍繞新能源行業 XX 企業供應鏈展開&#xff0c;全面評估其現狀&#xff0c;剖析存在的問題&#xff0c;并提出改進方向和關鍵舉措&#xff0c;旨在提升供應鏈競爭力…

Centos 7 yum配置出現一下報錯:

One of the configured repositories failed (CentOS-$releaserver-Base), and yum doesnt have enough cached data to continue. At this point the only safe thing yum can do is fail. There are a few ways to work "fix" this: 1.解決CentOS Yum Repositor…

Redis 常見問題深度剖析與全方位解決方案指南

Redis 是一款廣泛使用的開源內存數據庫&#xff0c;在實際應用中常會遇到以下一些常見問題&#xff1a; 1.內存占用問題 問題描述&#xff1a;隨著數據量的不斷增加&#xff0c;Redis 占用的內存可能會超出預期&#xff0c;導致服務器內存不足&#xff0c;影響系統的穩定性和…

HOOK上癮思維模型——AI與思維模型【88】

一、定義 HOOK上癮思維模型是一種通過設計一系列的觸發&#xff08;Trigger&#xff09;、行動&#xff08;Action&#xff09;、獎勵&#xff08;Reward&#xff09;和投入&#xff08;Investment&#xff09;環節&#xff0c;來促使用戶形成習慣并持續使用產品或服務的思維框…

【playwright】內網離線部署playwright

背景&#xff1a;安裝好python3.9后&#xff0c;由于內網無法使用pip安裝playwright&#xff0c;多方收集資料&#xff0c;終于部署完成&#xff0c;現匯總如下&#xff1a; 1、playwright需要python3.7以上的版本&#xff0c;如果低于這個版本先要將python解釋器升級 2、在可…

Unity動態列表+UniTask異步數據請求

Unity動態列表UniTask異步數據請求 很久沒有寫東西了。最近有一個需求&#xff0c;在Unity項目里&#xff0c;有幾個比較長的列表&#xff0c;經歷了一翻優化&#xff0c;趁這幾日閑暇&#xff0c;記錄下來&#xff0c;給自己留個筆記&#xff0c;也送給有緣之人共同探討吧。 …

pandas讀取Excel數據(.xlsx和.xls)到treeview

對于.xls文件&#xff0c;xlrd可能更合適&#xff0c;但需要注意新版本的xlrd可能不支持xlsx&#xff0c;不過用戶可能同時需要處理兩種格式&#xff0c;所以可能需要結合openpyxl和xlrd&#xff1f;或者直接用pandas&#xff0c;因為它內部會處理這些依賴。 然后&#xff0c;…