输出层的设计
神经网络可以用在分类问题和回归问题上,不过需要根据情况改变输出层的激活函数。一般而言,回归问题用恒等函数,分类问题用softmax函数。
1、恒等函数和softmax函数
- 恒等函数:将输入按原样输出,对于输入的信息,不加以任何改动地直接输出。
- softmax函数:
图示:
- 实现softmax注意事项:
溢出问题解决措施:减去输出信号最大值。 - softmax特征:softmax函数的输出是0.0到1.0之间的实数。并且,softmax函数的输出值的总和是1。输出可以解释为“概率”。
- 即便使用了softmax函数,各个元素之间的大小关系也不会改变。这是因为指数函数(y = exp(x))是单调递增函数。
- 神经网络在进行分类时,输出层的softmax函数可以省略。
2、softmax函数 VS sigmoid函数
softmax函数
-
softmax =多类别分类问题=只有一个正确答案=互斥输出(手写数字)。构建分类器,解决只有唯一正确答案的问题时,用softmax函数处理各个原始输出值。softmax函数的分母综合了原始输出值的所有因素,这意味着,softmax函数得到的不同概率之间相互关联。
-
softmax函数,又称归一化指数函数。
sigmoid函数
-
sigmoid =多标签分类问题=多个正确答案=非独占输出。构建分类器,解决有多个正确答案的问题时,用sigmoid函数分别处理各个原始输出值。
-
sigmoid函数是一种logistic函数。
-
优点:1、sigmoid函数的输出在(0,1)之间,输出范围有限,优化稳定,可以用作输出层。2. 连续函数,便于求导。
-
缺点:1. 最明显的就是饱和性,容易造成梯度消失。2.激活函数的偏移现象。sigmoid函数的输出值均大于0,使得输出不是0的均值,这会导致后一层的神经元将得到上一层非0均值的信号作为输入,这会对梯度产生影响。 3. 计算复杂度高,因为sigmoid函数是指数形式。
总结
- softmax函数是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。
- sigmoid函数可以用来解决多标签问题,softmax函数用来解决单标签问题。
- 对于某个分类场景,当softmax函数能用时,sigmoid函数一定可以用。