Sigmoid和softmax
时间: 2024-12-31 22:38:39 浏览: 11
### Sigmoid 函数与 Softmax 函数的区别
#### 定义差异
Sigmoid 函数定义如下:
\[ \sigma(z) = \frac{1}{1 + e^{-z}} \]
该函数能够将实数值压缩至 (0, 1),因此非常适合用于二元分类问题,其中输出可解释为属于某一类别的概率[^2]。
相比之下,Softmax 函数则适用于多类别分类情况。对于给定的输入向量 \( z \),Softmax 计算方式如下所示:
\[ \text{softmax}(z_i) = \frac{\exp(z_i)}{\sum_{j=1}^{n}\exp(z_j)} \]
这里 n 表示类别总数目。通过这种方式,Softmax 可以确保所有预测的概率总和等于 1,并且每个单独的概率都在区间 [0, 1] 内[^3]。
```python
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def softmax(x):
exp_x = np.exp(x - np.max(x)) # 防止溢出
return exp_x / exp_x.sum(axis=-1, keepdims=True)
# 测试数据点
test_input = np.array([1.0, 2.0, 3.0])
print("Sigmoid output:", sigmoid(test_input))
print("Softmax output:", softmax(test_input.reshape((1,-1))))
```
#### 应用场景对比
当面对的是简单的二分类任务时,通常会选择使用 Sigmoid 函数作为模型的最后一层激活函数。这是因为 Sigmoid 的输出可以直接被视作样本属于正类的可能性大小[^1]。
然而,在涉及多个离散标签的情况下,则更倾向于采用 Softmax 来完成最终决策过程。比如图像识别领域内的手写数字辨识(MNIST 数据集),或是自然语言处理里的词性标注等问题都适合运用 Softmax 进行解决。
阅读全文