我们知道max,假如说我有两个数,a和b,并且a>b,如果取max,那么就直接取a,没有第二种可能。
但有的时候我不想这样,因为这样会造成分值小的那个饥饿。所以我希望分值大的那一项经常取到,分值小的那一项也偶尔可以取到,那么我用softmax就可以了 。
现在还是a和b,a>b,如果我们取按照softmax来计算取a和b的概率,那a的softmax值大于b的,所以a会经常取到,而b也会偶尔取到,概率跟它们本来的大小有关。所以说不是max,而是softmax 。
softmax的定义:
它能将一个含任意实数的K维的向量Z“压缩”到另一个K维实向量f(z),使得每一个元素的范围都在(0,1)之间,并且所有元素的和为1。
softmax公式.png
输入向量[1,2,3,4,1,2,3]对应的Softmax函数的值为[0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]。输出向量中拥有最大权重的项对应着输入向量中的最大值“4”。这也显示了这个函数通常的意义:对向量进行归一化,凸显其中最大的值并抑制远低于最大值的其他分量。
Softmax回归 VS k个二元分类器
http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92
Softmax回归,处理多分类问题
逻辑回归,主要处理二分类问题
如果你在开发一个音乐分类的应用,需要对k种类型的音乐进行识别,那么是选择使用softmax分类器呢,还是使用logistic回归算法建立 k个独立的二元分类器呢?
这一选择取决于你的类别之间是否互斥,例如,如果你有四个类别的音乐,分别为:古典音乐、乡村音乐、摇滚乐和爵士乐,那么你可以假设每个训练样本只会被打上一个标签(即:一首歌只能属于这四种音乐类型的其中一种),此时你应该使用类别数 k = 4 的softmax回归。(如果在你的数据集中,有的歌曲不属于以上四类的其中任何一类,那么你可以添加一个“其他类”,并将类别数 k 设为5。)
如果你的四个类别如下:人声音乐、舞曲、影视原声、流行歌曲,那么这些类别之间并不是互斥的。例如:一首歌曲可以来源于影视原声,同时也包含人声 。这种情况下,使用4个二分类的logistic回归分类器更为合适。这样,对于每个新的音乐作品 ,我们的算法可以分别判断它是否属于各个类别。
与神经网络的关系
神经网络是一个多层次的分类模型,其实logistic回归和softmax回归可以看出最简单的神经网络,结构如下图所示:
lr_softmax.png
一般的神经网络有输入层,隐含层以及输出层构成,而上图中只有输入层和输出层,而没有隐含层。神经网络处理二分类时,输出层为一个节点,但处理K(K>2)分类问题时,数据节点为K个,这个logistic回归和softmax回归保持一致。值得注意的,在神经网络中的最后一层隐含层和输出层就可以看成是logistic回归或softmax回归模型,之前的层只是从原始输入数据从学习特征,然后把学习得到的特征交给logistic回归或softmax回归处理。
因此,可以把处理分类问题的神经网络分成两部分,特征学习和logistic回归或softmax回归。
Softmax Regression模型
数字手写体图片的识别,实际上可以转化成一个概率问题,如果我们知道一张图片表示9的概率为80%,而剩下的20%概率分布在8,6和其他数字上,那么从概率的角度上,我们可以大致推断该图片表示的是9.
Softmax Regression是一个简单的模型,很适合用来处理得到一个待分类对象在多个类别上的概率分布。所以,这个模型通常是很多高级模型的最后一步。
Softmax Regression大致分为两步(暂时不知道如何合理翻译,转原话):
Step 1: add up the evidence of our input being in certain classes;
Step 2: convert that evidence into probabilities.
为了利用图片中各个像素点的信息,我们将图片中的各个像素点的值与一定的权值相乘并累加,权值的正负是有意义的,如果是正的,那么表示对应像素值(不为0的话)对表示该数字类别是积极的;否则,对应像素值(不为0的话)对表示该数字类别是起负面作用的。下面是一个直观的例子,图片中蓝色表示正值,红色表示负值(蓝色区域的形状趋向于数字形状):
最后,我们在一个图片类别的evidence(不知如何翻译..)中加入偏置(bias),加入偏置的目的是加入一些与输入独立无关的信息。所以图片类别的evidence可表示为
evidencei=∑jWijxj+bievidencei=∑jWijxj+bi
其中,WiWi 和 bibi 分别为类别 ii 的权值和偏置,jj 是输入图片 xx 的像素索引。然后,我们将得到的evidence值通过一个”softmax”函数转化为概率值 yy :
y=softmax(evidence)y=softmax(evidence)
这里softmax函数的作用相当于是一个转换函数,它的作用是将原始的线性函数输出结果以某种方式转换为我们需要的值,这里我们需要0-9十个类别上的概率分布。softmax函数的定义如下:
softmax(x)=normalize(exp(x))softmax(x)=normalize(exp(x))
具体计算方式如下
softmax(x)i=exp(xi)Σjexp(xj)softmax(x)i=exp(xi)Σjexp(xj)
这里的softmax函数能够得到类别上的概率值分布,并保证所有类别上的概率值之和为1. 下面的图示将有助于你理解softmax函数的计算过程:
网友评论