Tensorflow实现两个隐藏层的Softmax分类器
Softmax分类器介绍
之前用Tensorflow实现Logistic回归模型的博客里面讲解了Logistic,最后顺便提了一下Softmax模型,并给出了一个实例。Softmax是用于分类过程,用来实现多分类的,简单来说,它把一些输出的神经元映射到(0-1)之间的实数,并且归一化保证和为1,从而使得多分类的概率之和也刚好为1。不同于Logistic回归模型,Logistic回归是用于二分类,输出结果非0即1,而Softmax是用于多分类问题,输出结果属于哪个类是以概率的形式给出来的。比如mnist数据集上面的一个例子,输入数据是8,用softmax回归模型判断可能会给出属于不同数字的概率:
这是一种较为通俗的解释,当然我们也可以直接从这个名字入手去解释,Softmax可以分为soft和max,max也就是最大值,假设有两个变量a,b。如果a>b,则max为a,反之为b。那么在分类问题里面,如果只有max,输出的分类结果只有a或者b,是个非黑即白的结果。但是在现实情况下,我们希望输出的是取到某个分类的概率,或者说,我们希望分值大的那一项被经常取到,而分值较小的那一项也有一定的概率偶尔被取到,所以我们就应用到了soft的概念,即最后的输出是每个分类被取到的概率。
Softmax函数
求特征: i i i代表第i类, j j j代表一张图片的第 j j j个像素。 W W W是权重, b b b是偏置。在网络的最后一层是一个线性输出层:
z j = ∑ j w j , i x i + b j z_{j}=\sum_{j}w_{j,i}x_{i}+b_{j} zj=j∑wj,ixi+bj
求softmax:接下来对所有特征计算softmax,首先是计算一个指数 e x p exp exp函数,然后在对其进行标准化,保证所有类别输出的概率和为1.其中判定为第 i i i类的概率可以由下面公式得到:
s o f t m a x ( x ) j = e x p ( z j ) ∑ j e x p ( x j ) softmax(x)_{j}=\frac{exp(z_{j})}{\sum_{j}exp(x_{j})} softmax(x)