输出层的激活函数——softmax函数

本文探讨了机器学习中的两类主要问题——分类和回归,以及它们对应的激活函数。分类问题通常使用sigmoid或softmax函数,其中softmax用于多分类任务,输出为概率分布。回归问题则常采用恒等函数。在实现softmax函数时,需要注意溢出问题,可以通过减去最大值的方式来避免。此外,文章还介绍了softmax函数的优化技巧,以确保数值稳定性。
摘要由CSDN通过智能技术生成

概括

机器学习的问题大致可以分为分类问题和回归问题。分类问题是数据属于哪一个类别的问题。比如,区分图像中的人是男性还是女性的问题就是分类问题。而回归问题是根据某个输入预测一个(连续的)数值的问题。比如,根据一个人的图像预测这个人的体重问题是回归问题(类似“57.4kg”这样的预测)。

输出层所用的激活函数,根据求解问题的性质决定。一般,回归问题可以用恒等函数,二元分类问题可以用sigmoid函数,多元分类问题可以用softmax函数。

恒等函数:输出=输入

在这里插入图片描述

softmax函数:输出为一个函数

在这里插入图片描述
其中exp为指数函数,表示假设输出层共有n个神经元,计算第k个神经元的输出yk。ak代表第k个输出神经元的输入,ai代表第i个输出神经元的输入,公式分子表示ak的指数函数,分母表示所有输出神经元的输入指数函数的和

代码实现softmax

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

softmax函数的注意事项

上述softmax函数的实现存在溢出问题。在计算指数时,比如e的5000次方,数据将会非常大,计算机处理“数”时,数值必须在4字节或8字节的有限数据宽度内,超出的数据则会显示为无穷(inf),所以要对softmax函数进行改进,防止数据的溢出。

在这里插入图片描述
如图中,将分子分母同时乘以C,然后将C提进指数函数中,图中用的logC理解成数学中的lnC,然后用C’代替logC,通过控制C’来控制exp函数中的指数,来实现softmax函数不因为数据过大而出错。C’可以使用任何值,为防止溢出,一般使用输入信号中的最大值。
例子:
在这里插入图片描述

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值