[cs231n] assignment1 softmax线性分类器部分

主要难度在于关于Softmax的求导:

《[cs231n] assignment1 softmax线性分类器部分》

来讨论一下几个思考题:

  1. Why do we expect our loss to be close to -log(0.1)? Explain briefly.

    因为经过loss函数是-log(exp(f(yi)/sigma(exp(f(j))),而每一个计算出的f值是差不多相等的(真实的计算出的scores应该要大,因此最后这个值应当要越小越好),所以损失函数大致接近-log(0.1).

  2. Is it possible to add a new data point to a training set that would leave the SVM loss unchanged, but not the Softmax classifier loss?

    就是问你是否可能在训练集中增加一个数据点,让SVM的损失函数保持不变,但是Softmax分类器的损失函数变了的情况?

可能的,如果点在边界外即更差情况,那么SVM的hinge loss是还是不管的,而Softmax显然变了。

附上naive的求导数的方法(向量化的还要再思考一下,目前我写的还没完全向量化):

点赞
  1. ohazyi说道:

    “在实际使用中,SVM和Softmax经常是相似的:通常说来,两种分类器的表现差别很小,不同的人对于哪个分类器更好有不同的看法。相对于Softmax分类器,SVM更加“局部目标化(local objective)”,这既可以看做是一个特性,也可以看做是一个劣势。考虑一个评分是[10, -2, 3]的数据,其中第一个分类是正确的。那么一个SVM(Delta =1)会看到正确分类相较于不正确分类,已经得到了比边界值还要高的分数,它就会认为损失值是0。SVM对于数字个体的细节是不关心的:如果分数是[10, -100, -100]或者[10, 9, 9],对于SVM来说没设么不同,只要满足超过边界值等于1,那么损失值就等于0。

    对于softmax分类器,情况则不同。对于[10, 9, 9]来说,计算出的损失值就远远高于[10, -100, -100]的。换句话来说,softmax分类器对于分数是永远不会满意的:正确分类总能得到更高的可能性,错误分类总能得到更低的可能性,损失值总是能够更小。但是,SVM只要边界值被满足了就满意了,不会超过限制去细微地操作具体分数。这可以被看做是SVM的一种特性。举例说来,一个汽车的分类器应该把他的大量精力放在如何分辨小轿车和大卡车上,而不应该纠结于如何与青蛙进行区分,因为区分青蛙得到的评分已经足够低了。“

发表评论

电子邮件地址不会被公开。 必填项已用*标注