Sigmoid 函数是什么?

Sigmoid 函数 是一种常用的数学函数,具有 S 形的曲线特征。它在机器学习、控制系统和神经网络中广泛应用,主要用于将输入值映射到一个平滑的、有界的输出范围内(通常是 0 到 1 或 -1 到 1)。以下是 Sigmoid 函数的详细介绍:


1. Sigmoid 函数的定义

最常见的 Sigmoid 函数是 Logistic Sigmoid 函数,其数学表达式为:

σ(x)=11+ex\sigma(x) = \frac{1}{1 + e^{-x}}

其中:

  • xx 是输入值,可以是任意实数。

  • ee 是自然对数的底数(约等于 2.71828)。

  • σ(x)\sigma(x) 是输出值,范围在 (0,1)(0, 1) 之间。


2. Sigmoid 函数的特性

  • 输出范围:Sigmoid 函数的输出值范围是 (0,1)(0, 1),即无论输入值多大或多小,输出值都会接近 0 或 1,但永远不会达到 0 或 1。

  • 平滑性:Sigmoid 函数是连续且可导的,其导数可以用函数本身表示:

    σ(x)=σ(x)(1σ(x))\sigma'(x) = \sigma(x) \cdot (1 – \sigma(x))

    这一特性在梯度下降等优化算法中非常有用。

  • 对称性:Sigmoid 函数关于点 (0,0.5)(0, 0.5) 对称。

  • 单调性:Sigmoid 函数是单调递增的,即随着 xx 的增加,σ(x)\sigma(x) 也会增加。


3. Sigmoid 函数的图像

Sigmoid 函数的图像是一条 S 形曲线,如下图所示:

复制
      1 |          *
        |         * 
        |        *  
        |       *   
        |      *    
        |     *     
        |    *      
        |   *       
        |  *        
        | *         
        |*          
      0 +----------------
         -∞          +∞
  • xx 趋近于 -\infty 时,σ(x)\sigma(x) 趋近于 0。

  • xx 趋近于 ++\infty 时,σ(x)\sigma(x) 趋近于 1。

  • x=0x = 0 时,σ(x)=0.5\sigma(x) = 0.5


4. Sigmoid 函数的应用

Sigmoid 函数在多个领域中有广泛应用,包括:

(1) 机器学习与神经网络

  • 激活函数:Sigmoid 函数常用于神经网络的激活函数,将神经元的输入映射到 (0,1)(0, 1) 之间。

  • 二分类问题:在逻辑回归中,Sigmoid 函数用于将线性模型的输出转换为概率值(0 到 1 之间)。

(2) 控制系统

  • 平滑控制:Sigmoid 函数用于实现平滑的控制响应,例如在比例控制器中,将过程变量与设定值之间的偏差映射到控制输出。

(3) 概率建模

  • 概率分布:Sigmoid 函数可以用于表示概率值,例如在二分类问题中,输出值可以解释为属于某一类的概率。


5. Sigmoid 函数的变体

除了标准的 Logistic Sigmoid 函数外,还有一些常见的变体:

(1) 双曲正切函数(Tanh)

tanh(x)=exexex+ex\tanh(x) = \frac{e^x – e^{-x}}{e^x + e^{-x}}

  • 输出范围是 (1,1)(-1, 1)

  • 与 Sigmoid 函数类似,但关于原点对称。

(2) Hard Sigmoid

HardSigmoid(x)=max(0,min(1,x+12))\text{HardSigmoid}(x) = \max(0, \min(1, \frac{x + 1}{2}))

  • 输出范围是 [0,1][0, 1]

  • 计算速度更快,但平滑性较差。


6. Sigmoid 函数的优缺点

优点:

  • 输出值范围有限,适合表示概率或归一化的值。

  • 平滑且可导,适合梯度下降等优化算法。

缺点:

  • 梯度消失问题:当输入值 xx 很大或很小时,Sigmoid 函数的导数接近 0,导致梯度下降更新缓慢。

  • 非零中心性:Sigmoid 函数的输出值范围是 (0,1)(0, 1),不是以 0 为中心的,可能导致训练效率降低。


7. proportionalControl 函数中的应用

proportionalControl 函数中,Sigmoid 函数用于将过程变量 processVar 与设定值 setPt 之间的偏差映射到控制输出 ctrl 的范围内(minmax)。具体公式为:

ctrl=min+(maxmin)σ(2pBandlog(100)(processVarsetPtpBand2))\text{ctrl} = \text{min} + (\text{max} – \text{min}) \cdot \sigma\left(\frac{-2}{\text{pBand}} \cdot \log(100) \cdot (\text{processVar} – \text{setPt} – \frac{\text{pBand}}{2})\right)

  • processVar 接近 setPt 时,Sigmoid 函数的输出接近 0,ctrl 接近 min

  • processVar 接近 setPt + pBand 时,Sigmoid 函数的输出接近 1,ctrl 接近 max

  • setPtsetPt + pBand 之间,Sigmoid 函数实现平滑过渡。


总结

Sigmoid 函数是一种重要的数学工具,具有平滑、有界的特性,广泛应用于机器学习、控制系统和概率建模等领域。在 proportionalControl 函数中,它用于实现平滑的比例控制响应。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇