前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sigmoid function和softmax function

sigmoid function和softmax function

作者头像
caoqi95
发布2019-03-27 17:30:06
2K0
发布2019-03-27 17:30:06
举报

「学习内容总结自 couesera udacity 的深度学习课程,部分截图来自 coursera 的课件」

sigmoid function

sigmoid函数(σ(x)=1/(1+e-x))输出范围为(0, 1),所以可以用作输出层,表示概率。sigmoid函数常用于二分分类问题。例如在辨别一张图片是否为猫的问题中,将一张图片的特征向量输入神经网络,在输出层设置一个节点并使用sigmoid函数,结果会输出一个概率,根据这个概率就能辨别出图片是否为猫的图片。这时,输出层是将一个向量转换为标量输出。

sigmoid

softmax function

对于多类分类问题即输出多个概率的问题,sigmoid函数就使不上劲了。这时候就需要运用softmax了。 softmax是如何由来的呢? 举个简单的例子(例子来自udacity的深度学习课程里的解释),要建立一个模型,对于我们看到的动物,我们要分别输出为鸭子,海狸和海豹的概率。基于种种特征输入,现在鸭子,海狸和海豹得到的分数分别为 2 , 1 和 0。计算概率的最简单的方法就是将它们各自的得分除以它们得分的总和。所以得到概率分别为 2/3 , 1/3 和 0。但是这种方法会有个弊端,当得分包含负数会出现这样的情况:1/(1+0+(-1)),这时候就没法计算概率了。 联想到指数函数(ex)会将输入的任何数转换为正数的特性,用它来转换得分再计算概率就会避免上述方法的弊端。基于 2, 1, 0 的得分,计算概率分别为 e2/e2+e1+e0=0.67, e1/e2+e1+e0=0.24, e0/e2+e1+e0=0.09,这样就完成了一个多类分类的问题。

Python 中 softmax 的代码实现如下:

代码语言:javascript
复制
import numpy as np

def softmax(L):
    exp_L = np.exp(L)
    sum = np.sum(exp_L)
    return exp_L/sum

在神经网络中,描述多类分类问题时,输出层会设置多个节点,常用 softmax 作为输出层的激活函数,称为softmax层,对于这一层来说,输入的是向量,输出的也是向量。相对于 softmax 这么柔和地处理数据,还有一种稍显暴力的 “hard max” 的方法,即将元素最大的位置直接置为1,其余都置为0。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.01.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • sigmoid function
  • softmax function
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档