softmax回归推导及python实例分析

softmax函数

softmax函数也称为归一化指数函数,将每个元素的范围控制在(0,1)之间,并且所有元素的和为1。

函数公式为:
σ ( z j ) = e z j ∑ k = 1 K e z k , j = 1 , . . . , K \sigma(z_j)=\frac{e^{z_j}}{\sum_{k=1}^K{e^{z_k} }}, j=1,...,K σ(zj)=k=1Kezkezj,j=1,...,K
计算步骤为:

  1. 每个元素的值为 z j z_j zj,计算 e z j e^{z_j} ezj
  2. 将所有元素的 e z j e^{z_j} ezj累加
  3. 用每个元素的 e z j e^{z_j} ezj值除以累加值,即为该元素的softmax值

用python代码实现为:

import math
z = [1.0,2.0,3.0,4.0,1.0,2.0,3.0]
z_exp = [math.exp(i) for i in z]
sum_z_exp = sum(z_exp)
softmax = [i/sum_z_exp for i in z_exp]
print(softmax)
# softmax=[0.02, 0.06, 0.17, 0.47, 0.02, 0.06, 0.17]

元素和softmax值对应关系为:

原值 softmax
1.0 0.02
2.0 0.06
3.0 0.17
4.0 0.47

可以看到最大元素4.0的softmax值远大于其他值,因为exp指数计算放大了值的影响。

交叉熵损失

在二分类的情况下,每个类别的预测概率为p1-p,表达式为:
L = − [ y ⋅ l o g ( p ) + ( 1 − y ) ⋅ l o g ( 1 − p ) ] L=-[y \cdot log(p)+(1-y)\cdot log(1-p)] L=[ylog(p)+(1y)log(1p)]

  • y表示样本label,正例为1,负例为0
  • p表示样本预测为正例的概率

多分类就是对二分类的扩展,表达式为:
L = − ∑ j = 1 k y j l o g ( p j ) L=-\sum_{j=1}^k y_j log(p_j) L=j=1kyjlog(pj)

  • K表示类别的数量
  • y j y_j yj值为0或1,若y属于第j类则值为1,否则为0
  • p j p_j pj表示样本属于类别j的概率

代入softmax的损失函数为:
J ( θ ) = − 1 m [ ∑ i = 1 m ∑ j = 1 k y j l o g ( p j ) ] J(\theta)=-\frac{1}{m}[\sum_{i=1}^{m}\sum_{j=1}^{k}y_jlog(p_j)] J(θ)=m1[i=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值