Softmax回归
-
是什么?
Softmax回归是一个线性的多类分类模型,Softmax函数的功能是将各个类别的“打分”转化为合理的概率值
-
为什么?
假设一个样本可能有三个类别:第一类打分为a,第二类打分为b,第三类打分为c。打分越高代表属于这个类别的概率越高,但是打分本身不代表概率,打分的值可以是负数,也可以很大,但概率要求在0到1之间,并且三类加起来的概率等于1. Softmax函数就可以用来解决这个问题。
-
怎么用?
如何将上述的(a,b,c)转换成合理的概率值,这里对他们使用softmax函数后,相应的值会 ($e^a/(e^a+e^b+e^c), e^b/(e^a+e^b+e^c), e^c/((e^a+e^b+e^c))$,这三个数加起来正好等于1。
假设x代表输入图片(假设为784维向量),W代表权重(假设为形状为[784,10]的矩阵),b代表偏差(假设是一个10维的向量),Logit就是上述各个类别打分:
$Logit = W^Tx + b$
用softmax将其转换成各个类别的概率值:
$y = Softmax(Logit)$
交叉熵
-
是什么?
首先什么是熵,化学中我们学过熵表示一种物质的不稳定程度,熵越大越不稳定。 在信息论中,熵表示不确定度,熵越小,不确定度越小。
以下内容来自百度百科:
在信息论中,交叉熵是表示两个概率分布p,q,其中p表示真实分布,q表示非真实分布,在相同的一组事件中,其中,用非真实分布q来表示某个事件发生所需要的平均比特数。
假设现在有一个样本集中两个概率分布p,q,其中p为真实分布,q为非真实分布。假如,按照真实分布p来衡量识别一个样本所需要的编码长度的期望为: $h(p) = -p(i)log(p(i)) $
但是,如果采用错误的分布q来表示来自真实分布p的平均编码长度,则应该是: $h(p,q) = -p(i)log(q(i)) $ 此时就将$h(p, q)$称为交叉熵
-
为什么?
在softmax回归模型中,通常使用“交叉熵”损失来衡量相似性。
-
怎么用?
交叉熵损失越小,模型的输出与和实际标签越接近,模型的预测也就越准。
梯度下降
-
是什么?
梯度下降我们可以理解机器学习中为向目标值靠近的方法。 其中有两个基础算法:最小二乘法和随机梯度下降。
-
为什么?
最小二乘法通过最小化误差的平方和寻求数据的最佳函数匹配。(如果不熟悉的话,可以查阅高等数学(同济大学第七版)第九章第十节)
举个例子,若干个点分布在向量空间中,如果希望找出一条直线和这些点达到最佳匹配,那么最简单的一个方法就是希望这些点到直线的值最小。
随机梯度下降算法,通过不停判断和选择当下目标的最优路径,使得能够在最短路径下达到最优的结果。
举个例子,假设我们在山上,想要以最快的速度下山,那么就要选择最陡峭的地方往下走,但是由于不熟悉道路,每走过一段路程就要重新选择一遍最陡峭的路径,这样一路走下来,可以在最短时间走到底。
-
怎么用?
用数学来讲的话,可以把下山想象成一个函数$f(x)$,而每次想要以最快的速度下降就要对$f(x)$求导,这样$x$就会以最快的方向减小,从而推断出$x$的最优解。
x y y_的意义,tf.argmax的作用
x表示输入,y表示预测,y_表示实际特征。
在说tf.argmax之前,先讲讲独热的概念: 所谓独热,就是“一位有效编码“。我们用N维向量表示N个类别,每个类别占据独立的一位,任何时候独热表示中只有一位是1其他都为0。
而tf.argmax的功能是取出数组中最大值的下标,因此可以通过tf.argmax得出预测中概率最大的类别。
tf.reshape(x, [-1, 28, 28 , 1])中 -1 的作用
将输入x还原为28x28的图片形式,[-1, 28, 28, 1]中的-1表示形状的第一维的大小是根据x自动确定的。