游戲AI的創造思路-技術基礎-sigmoid函數詳解

在前面的機器學習和深度學習的內容中,大量出現了sigmoid函數,所以本篇為大家介紹下sigmoid函數,希望對大家理解前面的算法和后面的Transformer有所幫助

目錄

3.8. sigmoid函數

3.8.1. 定義

3.8.2. 性質

3.8.3. 應用

3.8.4. 缺點

3.8.5. sigmoid函數的導數

3.8.5.1. 導數的定義

3.8.5.2. 導數的性質

3.8.5.3. 導數的應用

3.8.5.4. 注意事項

3.8.6. Python代碼實現


3.8. sigmoid函數

3.8.1. 定義

sigmoid函數是一種常見的數學函數,其形狀為“S”形曲線。

在機器學習和深度學習中,特別是在處理二分類問題時,sigmoid函數被廣泛用作激活函數。

sigmoid函數的數學公式為:

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

其中,( e )是自然對數的底數(約等于2.71828)。

3.8.2. 性質

  • 值域:sigmoid函數的值域為(0, 1),這意味著無論輸入( x )是什么,輸出總是在0和1之間。這個性質使得sigmoid函數非常適合用于表示概率或者將任意實數映射到(0, 1)區間內。
  • 單調性:sigmoid函數在其定義域內是單調遞增的。
  • 可導性:sigmoid函數在其定義域內是可導的,這個性質在神經網絡中非常重要,因為它允許我們使用梯度下降等優化算法來訓練網絡。其導數為:

[ f'(x) = f(x)(1 - f(x)) ]

  • 形狀:sigmoid函數的形狀類似于“S”,在( x = 0 )附近變化較快,而在遠離0的地方變化較慢。這種特性使得sigmoid函數在處理一些需要非線性變換的問題時非常有用。

3.8.3. 應用

  1. 二分類問題:在機器學習中,sigmoid函數常用于二分類問題的輸出層,將網絡的輸出轉換為概率值。例如,在邏輯回歸中,sigmoid函數用于將線性回歸的輸出轉換為預測為正類的概率。
  2. 神經網絡激活函數:雖然近年來ReLU(Rectified Linear Unit)等激活函數在深度學習中更為流行,但sigmoid函數仍然在某些情況下被用作神經網絡的激活函數,特別是在需要輸出概率或進行二分類的任務中。

3.8.4. 缺點

盡管sigmoid函數有其優點,但在深度學習中作為激活函數時也存在一些缺點:

  1. 梯度消失問題:當輸入值遠離0時,sigmoid函數的導數接近于0。在深層神經網絡中,這可能導致梯度在反向傳播過程中迅速減小,使得網絡難以訓練。
  2. 計算成本:sigmoid函數涉及指數運算,這在計算上可能相對昂貴,尤其是在大規模數據集和深層網絡上。
  3. 非零中心化:sigmoid函數的輸出總是大于0,這意味著在神經網絡中,后續層的輸入總是正的。這可能導致權重更新的不穩定性。

3.8.5. sigmoid函數的導數

sigmoid函數的導數表示了該函數的斜率,即函數值隨輸入變量變化的速率。以下是關于sigmoid函數導數的詳細解釋:

3.8.5.1. 導數的定義

sigmoid函數的導數定義為函數值與其補的乘積,具體公式為:

[ f'(x) = f(x)(1 - f(x)) ]

其中,( f(x) )是sigmoid函數的值。

這個公式表明,sigmoid函數的導數可以通過原函數的值來計算。

3.8.5.2. 導數的性質
  • 范圍:sigmoid函數的導數值在0到0.25之間。當輸入值( x )趨近于正無窮或負無窮時,導數值趨近于0;而當輸入值接近0時,導數值接近其最大值0.25。
  • 與函數值的關系:導數值與原函數值密切相關。
    • 當sigmoid函數的值( f(x) )接近1或0時,其導數值會變小,表明函數在這些區域的變化率較小。
    • 相反,當( f(x) )接近0.5(即( x )接近0)時,導數值較大,說明函數在這一區域變化較快。
3.8.5.3. 導數的應用
  • 神經網絡訓練:在神經網絡中,sigmoid函數的導數對于使用反向傳播算法進行權重更新至關重要。通過計算導數,我們可以了解函數值隨輸入變化的敏感度,并據此調整網絡參數。
  • 優化算法:在優化算法中,如梯度下降法,sigmoid函數的導數用于計算損失函數關于模型參數的梯度,從而指導參數更新的方向和步長。
3.8.5.4. 注意事項

雖然sigmoid函數的導數在神經網絡訓練中有其應用,但由于存在梯度消失的問題(即在函數值接近1或0時導數值很小),在深層網絡中可能導致訓練困難。

因此,在實際應用中需要權衡sigmoid函數的優缺點。

3.8.6. Python代碼實現

import numpy as np  def sigmoid(x):  """  計算sigmoid函數值。  參數:  x -- 輸入值,可以是標量、向量或矩陣  返回:  s -- sigmoid函數的值,與輸入x的形狀相同  """  s = 1 / (1 + np.exp(-x))  return s  def sigmoid_derivative(x):  """  計算sigmoid函數的導數。  參數:  x -- 輸入值,可以是標量、向量或矩陣  返回:  ds -- sigmoid函數的導數,與輸入x的形狀相同  """  s = sigmoid(x)  ds = s * (1 - s)  return ds  # 示例用法  
x = np.array([1, 2, 3])  
print("Sigmoid Function Values:")  
print(sigmoid(x))  print("Sigmoid Derivative Values:")  
print(sigmoid_derivative(x))

這段代碼首先定義了兩個函數:sigmoidsigmoid_derivativesigmoid函數計算給定輸入x的sigmoid值,而sigmoid_derivative函數則計算sigmoid函數在給定輸入x處的導數。

在示例用法部分,我們創建了一個NumPy數組x,其中包含三個元素,并分別調用了sigmoidsigmoid_derivative函數來計算這些值的sigmoid函數值和導數。

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

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

相關文章

Flutter實現頁面間傳參

帶參跳轉 步驟 在router中配置這個路由需要攜帶的參數,這里的參數是 arguments,注意要用花括號包裹參數名稱 在相應組件中實現帶參構造函數 在state類中可以直接使用${widget.arguments}來訪問到傳遞的參數 在其他頁面中使用Navigator.pushNamed()帶參跳轉

【昇思初學入門】第八天打卡-模型保存與加載

模型保存與加載 學習心得 保存 CheckPoint 格式文件,在模型訓練過程中,可以添加檢查點(CheckPoint)用于保存模型的參數,以便進行推理及再訓練使用。如果想繼續在不同硬件平臺上做推理,可通過網絡和CheckPoint格式文件生成對應的…

C++中常用的標志庫

標準庫 C標準庫是一個強大的工具集&#xff0c;它包含了一組豐富的類和函數&#xff0c;可以幫助開發者進行各種操作&#xff0c;如輸入輸出、字符串操作、數據結構管理、算法實現等。以下是一些常用的C標準庫及其使用方法。 1. 輸入輸出庫 <iostream> 用于標準輸入輸…

2024年最新通信安全員考試題庫

61.架設架空光纜&#xff0c;可使用吊板作業的情況是&#xff08;&#xff09;。 A.在2.2/7規格的電桿與墻壁之間的吊線上&#xff0c;吊線高度5m B.在2.2/7規格的墻壁與墻壁之間的吊線上&#xff0c;吊線高度6m C.在2.2/7規格的電桿與電桿之間的吊線上&#xff0c;吊線高度…

[leetcode]24-game

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:static constexpr int TARGET 24;static constexpr double EPSILON 1e-6;static constexpr int ADD 0, MULTIPLY 1, SUBTRACT 2, DIVIDE 3;bool judgePoint24(vector<int> &nums) {vector&l…

【C++LeetCode】【熱題100】三數之和【中等】-不同效率的題解【6】

題目&#xff1a; 暴力方法&#xff1a; class Solution { public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> res;std::unordered_set<std::string> uniqueValues;//保證結果唯一for(int i0;i<n…

工商業儲能柜用的Acrel-2000ES儲能能量管理系統-安科瑞 蔣靜

概述 Acrel-2000ES儲能能量管理系統&#xff0c;專門針對工商業儲能柜、儲能集裝箱研發的一款儲能EMS&#xff0c;具有完善的儲能監控與管理功能,涵蓋了儲能系統設備(PCS、BMS、電表、消防、空調等)的詳細信息&#xff0c;實現了數據采集、數據處理、數據存儲、數據查詢與分析…

PHP米表域名出售管理源碼帶后臺

源碼介紹 html5米表源碼PHP域名銷售程序安裝方法&#xff1a; 本站已測試,各項功能正常,功能易用,不復雜,非常適合個人米表使用 1、所有文件傳至網站目錄 2、瀏覽器執行http://你的訪問網址/install 3、輸入mysql帳號及密碼信息&#xff0c;提交安裝 源碼截圖 源碼下載 …

MySQL程序使用的選項文件

MySQL程序使用的選項文件如下&#xff1a; 顯示幫助消息并退出。 在具有多個網絡接口的計算機上&#xff0c;使用此選項可以選擇用于連接MySQL服務器的接口。 安裝字符集的目錄。 如果可能&#xff0c;壓縮客戶端和服務器之間發送的所有信息。 從MySQL 8.0.18開始&#xff0c;…

GPOPS-II教程(3): 航天器最優控制問題

文章目錄 問題描述GPOPS代碼main functioncontinuous functionendpoint function完整代碼代碼仿真結果 最后 問題描述 例子出自論文 Direct solution of nonlinear optimal control problems using quasilinearization and Chebyshev polynomials&#xff08;DOI&#xff1a;1…

新手選擇代理IP時這幾點誤區一定要避開!

在選擇代理IP時&#xff0c;許多用戶可能會因為對代理IP的認識不足或受到一些誤導&#xff0c;而陷入一些常見的誤區。這些誤區不僅可能導致用戶無法達到預期的效果&#xff0c;還可能帶來一些不必要的風險。下面&#xff0c;IPIDEA代理IP就與大家一同分析在選擇代理IP時需要避…

國企:2024年6月中國鐵路相關招聘信息,6.27截止

中國鐵路濟南局集團有限公司2024年度 招聘普通高校本科及以上學歷畢業生公告(三) 中國鐵路濟南局集團有限公司根據企業發展需要,擬招聘普通高等院校本科及以上學歷畢業生,現將有關事項公告如下: 一、招聘計劃 本次招聘崗位均為生產一線操作技能崗位,具體崗位、專業要求…

【教資優秀作文】

目錄 不沉湎于過去&#xff0c; 向未來進發 轉變思維方式&#xff0c;風景這邊獨好 一英尺的距離 面對逆境&#xff0c;智者生存 機遇與準備 1. 巴西足球名將貝利在足壇初露鋒芒時 &#xff0c;一個記者問他&#xff1a;“你哪一個球踢得最好&#xff1f; ” 他回答說&am…

說說ThreadLocal的實現原理

ThreadLocal是什么&#xff1f; ThreadLocal是Java中的一個類&#xff0c;用于創建線程局部變量和解決線程安全。每個線程都有自己獨立的變量副本&#xff0c;彼此之間互不影響。它的主要作用是在多線程環境下&#xff0c;確保每個線程都有自己的變量實例&#xff0c;避免了變…

Retrofit類型安全的HTTP客戶端庫(json)

簡介 Retrofit是Square公司開發的一個類型安全的HTTP客戶端庫&#xff0c;用于Android和Java平臺&#xff0c;它使得與Web服務的交互變得更加簡單快捷。Retrofit將HTTP API轉換成Java接口&#xff0c;讓你可以用更簡潔的代碼形式調用RESTful API&#xff0c;Android網絡編程重點…

在前端開發過程中如果函數參數很多,該如何精簡

1. 在前端開發過程中如果函數參數很多&#xff0c;該如何精簡 1.1. 對象參數&#xff08;對象字面量&#xff09;&#xff1a;1.2. 默認參數和解構賦值&#xff1a;1.3. 使用類或構造函數&#xff1a;1.4. 利用閉包或者高階函數&#xff1a;1.5. 利用ES6的擴展運算符&#xff1…

【LeetCode】每日一題:反轉鏈表

題解思路 循環的方法需要注意prev應該是None開始&#xff0c;然后到結束的時候prev是tail&#xff0c;遞歸的思路很難繞過彎來&#xff0c;主要在于很難想清楚為什么可以返回尾節點&#xff0c;需要多做遞歸題&#xff0c;以及遞歸過程中&#xff0c;可以不使用尾節點來找當前…

Nuxt3 的生命周期和鉤子函數(二)

title: Nuxt3 的生命周期和鉤子函數&#xff08;二&#xff09; date: 2024/6/26 updated: 2024/6/26 author: cmdragon excerpt: 摘要&#xff1a;本文深入介紹了Nuxt.js框架中幾個關鍵的生命周期鉤子函數&#xff0c;包括app:redirected&#xff08;SSR環境下重定向前觸發…

20240626讓飛凌的OK3588-C開發板在相機使用1080p60分辨率下預覽

20240626讓飛凌的OK3588-C開發板在相機使用1080p60分辨率下預覽 2024/6/26 15:15 4.2.1 全編譯測試 在源碼路徑內&#xff0c;提供了編譯腳本 build.sh&#xff0c;運行該腳本對整個源碼進行編譯&#xff0c;需要在終端切換到解壓 出來的源碼路徑&#xff0c;找到 build.sh 文件…

6.26作業

1.整理思維導圖 2.統計家目錄下.c文件的個數 ls ~/*.c | wc -l 3.終端輸入一個.sh文件&#xff0c;判斷文件是否由可執行權限&#xff0c;如果有可執行權限運行腳本&#xff0c;沒有可執行權限添加可執行權限后&#xff0c;再運行腳本 #!/bin/bash read -p "請輸入一個.…