什么是sigmoid激活函数?

上面我们讲了引入激活函数的意义,激活函数有多种,下面我们拿一种激活函数sigmoid来做示例,其他的类似。sigmoid函数表达式如下:

它的函数曲线图是:

看到上面的函数曲线图,可以看出是一个sigmoid函数的特点就是当输入值从负无穷变到正无穷时,输出值在0和1之间,。。。。。。。。。。。。。

更多可见:https://blog.youkuaiyun.com/qq_44594249/article/details/100561953

### 实现 Sigmoid 激活函数 Sigmoid 函数是一种常用的激活函数,广泛应用于机器学习和神经网络中。它可以将任意实数映射到一个介于 0 和 1 之间的值,因此常用于二分类问题中的输出层[^2]。其数学定义为: $$ \sigma(x) = \frac{1}{1 + e^{-x}} $$ 在 C++ 中,可以通过 `cmath` 库中的 `exp` 函数实现 Sigmoid 函数。以下是一个标准实现示例: ```cpp #include <iostream> #include <cmath> double sigmoid(double x) { return 1.0 / (1.0 + std::exp(-x)); } int main() { double x = 0.5; double result = sigmoid(x); std::cout << "Sigmoid(" << x << ") = " << result << std::endl; return 0; } ``` 该实现适用于大多数情况,但当输入值 $ x $ 很大或很小时,可能会导致数值不稳定。为了解决这一问题,可以采用分段计算的方式,以提高计算的数值稳定性[^4]。 ### 改进的 Sigmoid 实现 为了提升在极端输入下的数值稳定性,可以将 Sigmoid 函数的计算分为正负两部分进行处理: ```cpp double sigmoid(double x) { if (x > 0) { return 1.0 / (1.0 + std::exp(-x)); } else { return std::exp(x) / (1.0 + std::exp(x)); } } ``` 这种实现方式在 $ x $ 为正时使用原始公式,在 $ x $ 为负时使用等价变形,从而避免了浮点溢出问题,提高了函数的稳定性[^4]。 ### Sigmoid 函数的特性与应用 Sigmoid 函数的输出范围在 (0, 1) 之间,使其非常适合用于生成二分类问题的概率输出。然而,Sigmoid 函数在变量取绝对值非常大的正值或负值时会出现饱和现象,即梯度趋近于零,这可能导致训练过程中梯度消失问题[^5]。 尽管如此,Sigmoid 函数在逻辑回归、神经网络的输出层等场景中仍然具有广泛应用。例如,在逻辑回归中,Sigmoid 函数用于估计样本属于某一类别的概率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mark_to_win

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值