多分类问题
Softmax回归
当有四种分类时:
普试:
a j a_{j} aj被解释为给定输入特征x时模型对y等于j的概率。
Softmax回归的损失函数
损失函数衡量的是在一个训练样例上的表现如何,所以对于一个特定的训练样本,y只能取一个值。因此最终只能针对 a j {a}_j aj 的一个值计算 a j {a}_j aj 的负对数,即在该特定训练样本中y的实际值等于j的任何值。例如,当y等于2时,损失函数只计算 − log a 2 -\log a_{2} −loga2
神经网络的Softmax输出
sigmod激活函数,激活值 a 1 {a}_1 a1 仅是 z 1 {z}_1 z1 的函数 , a 2 {a}_2 a2 也只是 z 2 {z}_2 z2 的函数。但是对于softmax函数,每一个激活值都取决于Z的所有值。
Tensorflow实现
基本实现:
更好的实现:(P68)
目的在于减小计算误差。计算机是将数字转换为二进制计算数值的,会有误差。原来是先计算出a,再将a带入到损失函数中计算损失函数,这种利用中间值计算的损失函数具有误差。
现在softmax不再单独计算,在计算cost时将a嵌入损失韩素内部一起算了。并且输出层为 liner,这样输出层只会直接输出Z的值,不再带入softmax计算了。
完整代码:
逻辑回归优化代码:
epochs 迭代次数。
多标签分类问题
多标签分类问题是指对一个样本进行多个类别的分类,而不是将样本分到唯一的类别中。在多标签分类问题中,每个样本可以属于多个类别,类别之间是相互独立的。
举个例子,假设我们有一个图像识别任务,需要对图像进行多个标签的分类,比如识别图像中的汽车、公交车、行人。一张图像可能同时包含多个标签,比如既有人又有汽车。
训练三个单独的模型,分别识别有没有汽车、公交车、行人。
训练一个模型一次识别完。输出层有三个sigmod神经元,因此我们解决的是三个二分类问题。