神经网络之softmax函数

1.什么是softmax函数:

首先给出softmax函数的公式:

                              y_{k}=\frac{e^{a_{k}}}{\sum_{i=1}^{n}e^{a_{i}}}

这个式子表示假设输出层共有n个神经元,计算第k个神经元的输出y_{k}。softmax函数的分子是输出层输入信号a_{k}的指数函数,分母是所有输入信号的指数函数的和。

"soft" because still assigns some probability to smallest a_{k}

"max" because amplifies probability of largest a_{k}

2.什么时候用softmax:

神经网络可以用在分类问题和回归问题上。一般而言,回归问题用恒等函数,就是原样输出;分类问题用softmax函数

分类问题是数据属于哪一类别的问题。比如区分图像中的动物是猫还是狗的问题就是分类问题。

回归问题是根据某个输入预测一个(连续的)数值问题。比如根据一个人的图像预测体重。

3.softmax函数的python实现:

按照softmax函数公式:

import numpy as np


def softmax(a):
    exp_a = np.exp(a)
    sum_exp_a = np.sum(exp_a)
    y = exp_a / sum_exp_a

    return y


a = np.array([2, 5, 6])

print(softmax(a))

4.实现softmax函数时的注意事项及改进:

上面的softmax函数的实现虽然正确描述了公式,但是在计算机的运算上有一定缺陷。这个缺陷就是溢出问题。因为计算机就在处理“数”时,数值必须在4字节或8字节的有限数据宽度内。这意味着数存在有效位数,也就是说,可以表示的数值范围是有限的。因此会出现超大值无法表示的问题。

softmax函数的实现中要进行指数函数的运算,所以指数的值可能会变得非常大。如e^{1000}的结果会返回一个表示无穷大的inf。如果在这些超大值之间进行出发运算,结果会出现不确定的情况。

因此要对softmax的实现进行改进:

y_{k}=\frac{e^{a_{k}}}{\sum_{i=1}^{n}e^{a_{i}}}=\frac{Ce^{a_{k}}}{C\sum_{i=1}^{n}e^{a_{i}}}=\frac{e^{a_{k}+lnC}}{\sum_{i=1}^{n}e^{a_{i}+lnC}}=\frac{e^{a_{k}+C^{'}}}{\sum_{i=1}^{n}e^{a_{i}+C^{'}}}

这个式子说明,在进行sotfmax函数的指数运算时,加上或减去某个常数并不会改变运算的结果。这里的C'可以使用任何值,但是为了防止溢出,一般会使用输入信号中的最大值。所以softmax函数可以改为:

import numpy as np


def softmax(a):
    c = np.max(a)
    exp_a = np.exp(a - c) 
    sum_exp_a = np.sum(exp_a)
    y = exp_a / sum_exp_a

    return y


a = np.array([990, 1000, 1010])

print(softmax(a))

5.softmax函数的特征

对于

a = np.array([2, 5, 6])

print(softmax(a))
print(np.sum(softmax(a)))

输出为:

可以发现softmax函数的输出是0.0到1.0之间的实数。并且,softmax函数的输出值的总和是1。输出总和为1是softmax函数的一个重要性质。因此,我们才可以把softmax函数的输出解释为“概率”。也就是说,通过使用softmax函数,可以用概率方法处理问题。

 

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值