Softmax 回归模型

来源:互联网 发布:eclipse端口号在哪改 编辑:程序博客网 时间:2024/05/20 15:10

前文已对Logistic回归模型进行过讲解;http://blog.csdn.net/zSean/article/details/77880463,Softmax 回归模型是logistic回归模型在多分类问题上的推广,

在多分类问题中,类标签y可以取两个以上的值;

1.在Logistic回归中,给定训练数据集:T={(x1,y1),(x2,y2),....(xN,yN)}, xi为实数,yi为0,1;

假设某一类的概率函数为:

w为训练模型的参数,选择一个模型参数,是损失函数最小化:

2.而在Softmax中,解决的问题是多分类问题,类标签y可以取多个不同的值k;

给定训练数据集:T={(x1,y1),(x2,y2),....(xN,yN)}, xi为实数,yi为{1,2,...k};

对于给定的测试数据输入x, 估计每一个测试数据x的每一种分类结果出现的概率。由于y的分类个数有k个,

从而输出的结果对应的为k个估计的概率值; 然而概率函数可以表示为:

当估测第一个数据x1时,

3.损失函数:

继续先描述Logistic回归模型的损失函数,然后进步推广到Softmax回归模型中的损失函数;

还是因为Logistic回归模型是二分类,所以 j 的取值为{0,1},而Softmax回归模型为多分类,从而使类别就有多个:

我们可以观察到:仅仅是在Softmax损失函数中对类标记的k个可能值进行累加,而且 x 为类别 j 的概率可以由公式表示为:

对损失函数的最小化问题,其实就是对其优化,我们使用迭代的优化算法,随机梯度下降算法;从而求取梯度公式:

4.以上已讲解了SoftMax回归,接下来我们用这个简单的模型进行MNIST的识别:

大概流程为:

1.定义算法公式,即为神经网络Forward时的计算;

2.定义loss函数,选定优化器(随机梯度下降算法),并指定优化器优化loss函数;

3.迭代地对数据进行训练;

4.在测试集或验证集上对准确率进行评测。

from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("D:/MNIST_data/", one_hot=True)import tensorflow as tf#设计算法sess = tf.InteractiveSession()x = tf.placeholder(tf.float32,[None,784])  #第一个参数为数据类型,第二个参数代表张量的shape,即为数据的尺寸,
                                            #None代表不限条数的输入,784代表每条输入时一个784维的向量
w = tf.Variable(tf.zeros([784,10]))         #w的shape为[784,10]表示特征的维数为784,类别有10类;b = tf.Variable(tf.zeros([10]))#实现SoftMax Regression算法  公式为y=softmax(Wx+b)y = tf.nn.softmax(tf.matmul(x,w)+b)y_ = tf.placeholder(tf.float32,[None,10])cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ *tf.log(y),reduction_indices=[1]))    #损失函数train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)tf.global_variables_initializer().run()for i in range(1000):#迭代训练数据    batch_xs, batch_ys=mnist.train.next_batch(1000)    train_step.run({x: batch_xs,y_:batch_ys})correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(y_,1))accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))print(accuracy.eval({x: mnist.test.images,y_:mnist.test.labels}))

    在这里Softmax回归的工作原理是:将可以判定为某类的特征相加,然后将这些特征转化为判定是这一类的概率;

5.接下来,我们讲解Softmax模型中的一些细节东西

  a.Softmax回归模型参数化具有冗余的特点(在算法实现过程中,保留所有参数,为了方便清楚,从而不设任意向量来复杂化目标函数):

b.为解决冗余问题, 从而引入权重衰减:

权重衰减的方法是:添加一个权重衰减项,

因为 r>0 ,随意损失函数任为一个严格的凸函数,从而通过求取导数,找到极值点,求取损失函数的最小值;

6.Softmax回归与Logistic回归的关系:

前面说到过Softmax回归是Logistic回归的推广,然而这时候,我们将类别参数K设置为2,也就是将类别设置为2分类;

7.Softmax 回归与K 个二元分类器问题(Logistic):

选择使用那个模型则取决于数据集所属类别的之间的关系;

假如类别之间是互斥的,也就是K个类别是相互独立的,则选择Softmax回归;

假如类别之间有联系,也就说数据A既有可能属于这一类,又有可能属于另外一类,则选择Logistic回归;(为什么有联系就选择Logistic回归呢“)

      (因为,Logistic是最优化划分二分类问题,找到一个极优的区分决策面来划分数据所属类别);


原创粉丝点击