机器学习中的概率分布与Softmax函数详解
立即解锁
发布时间: 2025-09-01 00:04:25 阅读量: 15 订阅数: 36 AIGC 


人机协同机器学习实战
### 机器学习中的概率分布与Softmax函数详解
#### 1. 概率分布概述
在机器学习里,概率分布指的是预测标签对应的数值总和为100%。不过,这并不意味着每个数值都能反映模型对预测结果的真实置信度。
以神经网络、逻辑回归等判别式监督学习算法为例,这些算法的主要任务是依据特征对标签进行区分,而非判断自身预测的置信度。神经网络最后一层输出的原始分数,是网络在对预测结果进行区分,其数值会因模型参数的不同而有所变化。
通常情况下,多数模型会表现出过度自信的倾向,即对最可能的标签给出的分数高于其实际概率;但在处理稀有数据时,模型又可能会信心不足。所以,这些算法输出的分数往往需要进行转换,以更接近真实的置信度。
在不同的机器学习库中,概率分布可能有不同的名称。而且,“分数”“置信度”和“概率”这些术语在开源库和商业库中常被混用,甚至在同一个库中都可能缺乏一致性。例如,在开发亚马逊的自然语言处理服务时,对于预测结果对应的数值,经过讨论后决定使用“分数”而非“置信度”,因为系统输出的结果并不符合严格统计学意义上的置信度定义。
#### 2. Softmax函数深入解析
在机器学习中,最常见的模型是神经网络,而神经网络的预测结果通常会通过Softmax函数转换为0 - 1范围内的分数。Softmax函数的定义如下:
\[ \sigma(z_i) = \frac{e^{z_i}}{\sum_{j} e^{z_j}} \]
Softmax函数常用于模型的最后一层,作为激活函数来生成概率分布;也可用于将线性激活函数(对数几率)的输出转换为概率分布。不过,Softmax函数存在信息损失,它无法区分因强竞争信息导致的不确定性和因信息缺失导致的不确定性。
若使用的是将线性激活函数用于输出层,再通过Softmax转换为概率分布的架构,最后一层采用具有负值的激活函数(如Leaky ReLU),往往比具有零下限的函数(如ReLU)更适合有人参与的架构。对于一些主动学习策略而言,这有助于量化单个输出的负信息量。若已知其他激活函数在预测标签方面更准确,可考虑为主动学习对最后一层进行重新训练。
#### 3. 使用Softmax将模型输出转换为置信度
以下是使用PyTorch库实现Softmax函数的示例代码:
```python
import math
import torch
class SoftmaxExample:
def softmax(self, scores, base=math.e):
"""Returns softmax array for array of scores
Converts a set of raw scores from a model (logits) into a
probability distribution via softmax.
The probability distribution will be a set of real numbers
such that each is in the range 0-1.0 and the sum is 1.0.
Assumes input is a pytorch tensor: tensor([1.0, 4.0, 2.0, 3.0])
Keyword arguments:
prediction -- pytorch tensor of any real numbers.
base -- the base for the exponential (default e)
"""
exps = (base**scores.to(dtype=torch.float)) # exponents of input
sum_exps = torch.sum(exps) # sum of all exponentials
prob_dist = exps / sum_exps # normalize exponentials
return prob_dist
```
严格来说,这个函数应被称为softargmax,但在机器学习领域,它通常被简称为Softmax,也可能被称为玻
0
0
复制全文
相关推荐









