机器学习- softmax激活函数

softmax函数

softmax函数,一般用于多分类的问题上,将多个神经元的输入,映射在(0,1)之间。可以当作概率的计算。这一点跟sigmoid函数相似。

softmax的计算公式为:
S i = e i ∑ j = 1 n e j S_i = \frac{e^i}{\sum_{j=1}^n e^j} Si=j=1nejei
【值得关注的是: ∑ i = 1 n S i = 1 \sum_{i=1}^n S_i = 1 i=1nSi=1

相当于每个神经元的exp值 除上 所有神经元的exp值总和。

举个简单的例子。
输入三个神经元的值,分别是 1,2,3,then e 1 = 2.7 , e 2 = 7.3 , e 3 = 20 e^1 = 2.7, e^2 = 7.3, e^3 = 20 e1=2.7,e2=7.3,e3=20
S 1 = 2.7 2.7 + 7.3 + 20 = 0.09 , S 2 = 7.3 2.7 + 7.3 + 20 = 0.24 , S 3 = 20 2.7 + 7.3 + 20 = 0.67 S_1 = \frac{2.7}{2.7+7.3+20}= 0.09, S_2 = \frac{7.3}{2.7+7.3+20}= 0.24,S_3 = \frac{20}{2.7+7.3+20}= 0.67 S1=2.7+7.3+202.7=0.09,S2=2.7+7.3+207.3=0.24,S3=2.7+7.3+2020=0.67

S 1 + S 2 + S 3 = 1 S_1 +S_2 + S_3 = 1 S1+S2+S3=1, 所以softmax求出来的值可以当作 概率,记为logit

实际上问题,输入的神经元为每个class的值,然后通过softmax函数的过滤,变成每个class的概率值,因此可应用在分类问题上,即选取概率最大的那个类别便是 predict值

值得关注的另一个问题是:sofrmax经常遇到数值溢出的问题,因为有大量的指数运算,因此当输入值太大,便会出现溢出error。因此一般会对输入值进行处理,比如减去数值中的最大值。
例子如下:

score = np.array([122,232,333])
#减去array中的最大值
score -= np.max(score)
#然后再算每个softMax值
S = np.exp(score)/np.sum(np.exp(score))
ReLU函数 【Rectified Linear Unit修正线性单元】

ReLU函数的公式如下:
f ( x ) = { 0 , if  x  =< 0 x , if  x  >0 f(x) = \begin{cases} 0, & \text{if $x$ =< 0} \\ x, & \text{if $x$ >0} \end{cases} f(x)={0,x,if x =< 0if x >0
ReLU函数是分段函数,用来把所有的负值变成0,而正值不变。称为单侧抑制。 由于ReLU函数的存在,使得神经网络中的神经元具有了稀疏激活性,运行效率大大地增强。而且ReLU使得模型能够更好地挖掘相关特征,拟合训练数据。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jianafeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值