softmax 简析

什么是softmax

意为 soft max,柔软的最大值。softmax的数学公式为

                       (1)

一组原始数据共k个Z_1 Z_2Z_3...Z_jZ_{j+1}...Z_k (j=1...k),每一个元素Z_j根据公式(1)转为 \sigma (Z)_j  ,得到一组新的数据共k个。即将原有数据指数后标准化处理为0~1间的数,且k个数据总和为1.

 

这样的softmax公式一般用于分类问题。

 

如何用softmax分类:

1,人们对样本进行分类时,一般会给每个样本一些特征值,如样本学生A:数学12分,英语16分,生物20分。例子中的一系列分数值即为研究样本的特征,在此例中,共3个特征。

即输入值A(12,16,20),即输入值X(X_1, X_2, X_3X_2X_3

 

2,在输入值的基础上,使用一定分类器F,y=F(x),根据自己需要的类别数确定一共输出几个y,如两类,(1,0),(0,1),则输出值(y_1 ,y_2),希望y_1 ,y_2的值尽可能接近(1,0)或者(0,1)。由于分类器不定,输出的y_1 ,y_2不一定在(0,1)之间,所以需要一个对y_1 ,y_2标准化处理的过程。这时就可以使用softmax公式,将y_1 ,y_2,转化成0~1之间的数。

 

3,对分类器输出值y_1 ,y_2,使用softmax函数,转化成0~1之间的数。

4,经过softmax的y_1 ,y_2,只是0~1间的数,并非绝对的(1,0)(0,1),即计算出的样本分类值和实际样本的分类值之间有差距,好的分类器需要使两者之间的差距尽可能小。这时候需要一个损失函数,来表述计算样本分类值和实际样本的分类值的差距。损失函数最小,差距最小,分类器越好。这里可以采用交叉熵函数计算。

 

综上过程回答两点:

1,什么是softmax函数

将一组数据标准化为0~1的一组数据,且数的总和为1

2,softmax函数如何用到分类问题上

将特征值输入到分类器,得到分类器输出值,对这组输出值使用softmax使输出值成为0~1之间的数,将计算输出值与实际样本输出值(一般为one-hot输出)计算损失函数,损失函数极小值时,训练得到模型最优参数。

one-hot:一组数据中,只有1个数为1,其他都为0。在分类中应用,分n类(n=3),其中一类的标签one-hot为(1,0 ,0 ),(0,1,0),(0,0,1)

 

 

06-22
### Softmax函数的定义与用法 Softmax函数是一种将实数值向量转换为概率分布的数学函数。它的输出是一个向量,其中每个元素表示对应类别的概率[^1]。Softmax函数的定义如下: 对于输入向量 \( z = [z_1, z_2, ..., z_n] \),Softmax函数的输出为: \[ \text{softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}} \] 其中 \( e^{z_i} \) 是指数函数,确保输出值始终为正数,并且所有输出值的总和为1。 在机器学习中,Softmax函数通常用于多分类问题中的输出层激活函数。它能够将模型预测的原始分数(logits)转换为概率分布,便于解释和比较[^3]。 以下是Python中实现Softmax函数的一个简单示例: ```python import numpy as np def softmax(z): # 为了数值稳定性,减去最大值避免溢出 z_exp = np.exp(z - np.max(z)) return z_exp / np.sum(z_exp) # 示例输入 z = np.array([2.0, 1.0, 0.1]) output = softmax(z) print(output) ``` 上述代码通过减去向量的最大值来提高数值稳定性,这是为了避免指数运算时出现过大的数值导致溢出[^2]。 ### 在深度学习框架中的应用 在实际应用中,Softmax函数通常与交叉熵损失函数结合使用。然而,直接分开计算Softmax和交叉熵可能会引发数值不稳定的问题。因此,许多深度学习框架(如TensorFlow和PyTorch)提供了统一的接口,同时计算Softmax和交叉熵,以确保数值稳定性[^2]。 例如,在TensorFlow中可以使用以下代码实现Softmax回归模型: ```python import tensorflow as tf # 定义输入和标签 logits = tf.placeholder(tf.float32, shape=[None, n_classes]) labels = tf.placeholder(tf.float32, shape=[None, n_classes]) # 使用TensorFlow内置的softmax_cross_entropy_with_logits_v2函数 loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=labels, logits=logits)) ``` ### 数值稳定性的重要性 当输入向量的值较大时,直接计算Softmax可能会导致数值溢出。为了解决这一问题,通常会在计算前从输入向量中减去其最大值。这种操作不会改变Softmax的结果,但能显著提高数值稳定性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值