TensorFlow神经网络到深度学习
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.4 softmax处理分类问题

softmax基本上可以算是分类任务的标配。在本节中将要学会softmax为什么能分类?以及如何使用softmax来分类。

3.4.1 什么是softmax

对于3.3节介绍的激活函数,其输出值只有两种(0,1、-1,1或-1,0),而现实生活中需要对某一问题进行多种分类,这就需要使用softmax算法。

softmax算法就是如果判断输入属于某一个类的概率大于属于其他类的概率,那么这个类对应的值就逼近于1,其他类的值就逼近于0。该算法的主要应用就是多分类,而且是互斥的,即只能属于其中的一个类。与sigmoid激活函数不同的是,一般的激活函数只能分为两类,所以可以理解成softmax是sigmoid激活函数的扩展,其算法为

把所有值用e的n次方计算出来,求和后算每个值占的比率,保证总和为1,一般就可以认为softmax得出的就是概率。

这里的exp(logits)指的就是elogits

3.4.2 softmax原理

softmax原理很简单,softmax网络模型输入为x1x2,输出为y1y2y3三个类,如图3-13所示。

图3-13 softmax网络模型

对于属于y1类的概率,可以转化成输入x1满足某个条件的概率与x2满足某个条件的概率的乘积。

在网络模型里把等式两边都取ln。这样,ln后属于y1类的概率就可以转化成ln后的x1满足某个条件的概率加上ln后的x2满足某个条件的概率。这样y1=x1·w11+x2·w12+ln后,即y1类的概率。这也是softmax公式中要进行一次e的logits次方的原因。

注意:等式两边取ln是神经网络中常用的技巧,主要用来将概率的乘法转变成加法,即ln(x×y)=lnx+lny。然后在后续计算中再将其转变成e的x次方,还原成原来的值。

了解完e的n次方的意义后,softmax就变得简单了。

举例:某个样本输出的值y1为5,y2为3,y3为2。那么对应的概率就为y1=5/10=0.5,y2=3/10,y3=2/10,于是取最大值的y1为最终的分类。

softmax在机器学习中有非常广泛的应用,下面利用softmax对MNIST数据进行分类,演示softmax对分类的处理效果。

【例3-9】对MNIST数据进行分类处理。

运行程序,输出如下: