nndl / solutions

《神经网络与深度学习》课后习题答案-分享讨论
695 stars 79 forks source link

习题2-1 #16

Open xh286286 opened 4 years ago

xh286286 commented 4 years ago

分析为什么平方损失函数不适用于分类问题.

分类问题中的标签,是没有连续的概念的。每个标签之间的距离也是没有实际意义的,所以预测值和标签两个向量之间的平方差这个值不能反应分类这个问题的优化程度。

比如分类 1,2,3, 真实分类是1, 而被分类到2和3错误程度应该是一样的, 但是平方损失函数的损失却不相同.

shazhongcheng commented 4 years ago

2.1 image

shazhongcheng commented 4 years ago

2.2 image

shazhongcheng commented 4 years ago

2.3 image

shazhongcheng commented 4 years ago

2.4 image

shazhongcheng commented 4 years ago

2.5 image

shazhongcheng commented 4 years ago

2.6(第二小题是我猜的) image image image

WangFengtu1996 commented 4 years ago

2.1

jeinlee1991 commented 4 years ago

二分类呢?类别为0和1,模型预测输出一个概率p (0<=p<=1),这样的话,使用平方损失,没有什么不合适啊(起码直观上是这样的)

felixdae commented 4 years ago

二分类呢?类别为0和1,模型预测输出一个概率p (0<=p<=1),这样的话,使用平方损失,没有什么不合适啊(起码直观上是这样的)

loss function 非凸

ZiqiSun commented 4 years ago

2.1 image

图片失效了

fattypiggy commented 3 years ago

2.2 image

2.2的第一问:书上有几乎相同的答案,唯一区别就是加了权重。

jianli-Alex commented 3 years ago

2.2 83342545-572d7080-a323-11ea-856d-f58fc0ccaaac

2.2的第一小问: 记权重对角矩阵),则将经验风险函数写成矩阵形式为: ^{2}=\frac{1}{2}(Y-XW)^TR(Y-XW)) 求偏导得到: 令偏导为0解得:

fattypiggy commented 3 years ago

2.9: 试分析什么因素会导致模型出现图2.6所是的高偏差和高方差的情况。 答案: 高偏差原因:

  1. 数据特征过少;
  2. 模型复杂度太低;
  3. 正则化系数λ太大;

高方差原因:

  1. 数据样例过少;
  2. 模型复杂度过高;
  3. 正则化系数λ太小;
  4. 没有使用交叉验证;

【注】:单纯增加训练集数目一般不会减小高偏差,但是会减小高方差。

jianli-Alex commented 3 years ago

2.6和2.7 image image

2.6(1) 可以得到似然函数: 化成对数似然函数: 求偏导数得到: =>

2.6(2) 得到最大后验概率:

2.7 \propto{}logP(y|X,\mu;\sigma)+logP(\mu;\mu_0,\sigma0)) ![](http://latex.codecogs.com/gif.latex?=-\\frac{1}{2\\sigma^2}\sum{i=1}^N(x-\mu)^2-\frac{1}{2\sigma^20}\sum{i=1}^N(\mu-\mu_0)^2) 前一项是最大似然,后一项是正则化项,当N趋于无穷时,根据大数定律后一项趋于0,此时最大后验趋近于最大似然

Yeaoer commented 3 years ago

2.2第一问 1

dyluns commented 3 years ago

2.1 image

请问有2-8和2-10的答案吗

VittorioYan commented 3 years ago

2.1

  • 损失函数起到优化的作用
  • 如果该损失函数得到的不同结果的并不能起到很好的放映真实值与预测值之间的不同, 那么这个函数肯定是不能知道我们进行优化的,所有该函数就不适用
  • 关于分类问题,类别之间的排序,并没有包含相似的含义。 对于类别为1的物体,预测为2,和预测为3 ,虽然根据平方损失函数得到的值不同,2比3更优,但是事实是,两者并没有区别。
  • 综上,平方损失函数不太适合分类问题。

感觉这个答案是正解,2L不太对。对于分类任务来说,预测到其他类别的损失一样是没问题的,但是预测到3比预测到2更优是不能接受的。

coldrainsnow commented 3 years ago

2.1

  1. 损失函数是用来量化模型预测和真实标签之间的差异
  2. 而平方损失函数是线性回归的一种,所以最后的标签y应为实数。
  3. 分类问题中的标签y是离散的类别 综上,从理论层面来说平方损失函数就可能并不适用于分类问题。

这里有个具体的例子,是在NNDL书中3.6节讲到二分类问题时损失函数的对比,通过这个例子我们可以发现,除了平方损失,其他损失函数都 比较适合于二分类问题。由于截图上传后无法显示,所以大家可以自己看下3.6节的例子。

josephcui commented 3 years ago

对2.2中的权重可以从非参的角度理解。例如在局部线性核估计中,r^{(n)}即是核密度K((X_i-x)/h) 。其思想是:预测x点处的y值时,距离x较近的点在预测中应该有更大的权重。

wujiekd commented 3 years ago

2.1 其实吧,大家讨论损失函数不能用平方损失函数,都是在基于最后一层激活层使用了sigmoid或softmax函数,但如果假设我们把最后一层激活层拿走,直接定义平方损失函数作为最后一层,其实效果跟交叉熵+softmax效果差不多,之前在半监督学习的一个数据集上做过训练。所以,我认为,其实还是可以适用的,得看具体情况,如何优化了,但从信息熵角度来看,交叉熵会使得每一个样本预测正确的值越大越好,但真的需要越大越好吗?

这个还是不好说的,毕竟NN的可解释性还在探索中,MSE的目标是使得预测正确即可,其实也是达到了理想的预期,我觉得吧,还是那句话,“没有免费的午餐”。

STU-ECHO commented 3 years ago

2.6(第二小题是我猜的) image image image

字鬼了点,小兄弟

xueguoqing01 commented 3 years ago

分析为什么平方损失函数不适用于分类问题.

分类问题中的标签,是没有连续的概念的。每个标签之间的距离也是没有实际意义的,所以预测值和标签两个向量之间的平方差这个值不能反应分类这个问题的优化程度。

比如分类 1,2,3, 真实分类是1, 而被分类到2和3错误程度应该是一样的, 但是平方损失函数的损失却不相同.

对于二分类问题,如果label=1,那么预测值0.9就是要比0.8要好啊 @xh286286

Sky-zzt commented 1 year ago

额 是可以的,mse 至少可以做二分类。是可以被证明的。

MYD753Q commented 1 year ago

①目标函数不一致:分类问题的目标是将样本正确分类到不同的类别中,而不是预测一个连续值。平方损失函数的目标是最小化预测值与真实值之间的平方差异,这与分类问题的目标不一致。 ②异常值敏感性:平方损失函数对异常值非常敏感。在分类问题中,异常值通常表示样本的错误分类,这意味着对异常值的错误分类会导致非常高的损失。分类问题中的异常值更常见,因为分类问题涉及到预测离散的类别标签,而异常值可能导致较大的误差。 ③梯度消失:平方损失函数在分类问题中容易出现梯度消失的问题。由于分类问题的输出是一个概率或类别标签,使用平方损失函数时,梯度可能变得非常小,使得模型难以学习或收敛。 ④不可导性:在分类问题中,常用的激活函数(如sigmoid、softmax)通常与平方损失函数不兼容。这是因为这些激活函数产生的输出不是连续的,而平方损失函数对于连续的输出是可导的。因此,在分类问题中使用平方损失函数可能会导致不可导的情况,使得无法使用常规的优化算法进行训练。

4A1BF2A6 commented 2 months ago

平方损失函数(MSE)在分类问题中不适用,主要原因可以通俗地解释为以下几点:

分类是“非黑即白”的:

在分类问题中,比如判断邮件是不是垃圾邮件,答案是“是”或“不是”,没有中间值。但平方损失函数却把预测值和真实值之间的差距“平方”了,这意味着即使你猜得差不多,只要不完全正确,损失仍然很大,这不符合分类问题的实际。

“大错特错”和“小错”没区别:

如果你预测一个类别是90%,而实际是80%,和你预测是10%,而实际是80%,在使用平方损失函数时,这两种情况的损失是一样的。这在分类问题中是不合理的,因为第一种情况明显比第二种情况更接近真实值。 对“错误”的放大:

平方损失函数会将小的预测错误放大成大的损失,这可能导致模型在训练过程中过于关注那些预测错误很大的少数样本,而对于整体分类性能的提升并不利。 梯度“跑得慢”:

当预测和真实值差距很大时,平方损失函数的梯度也会很大,导致在训练过程中梯度下降“跑得快”,但容易“跑过头”或者“跑偏”。当差距很小时,梯度又很小,导致学习过程“跑得慢”。

“异常值”影响力太大:

分类问题中的异常值(即离群点)会导致平方损失函数的值急剧增加,从而在优化过程中对模型的训练产生不公平的影响。 所以,为了更好地适应分类问题的特点,通常会使用交叉熵损失函数,它更能够反映预测概率分布和真实分布之间的差异,并在训练过程中提供更稳定的梯度。这就好比交叉熵损失函数更像是一个“细致的导师”,能够更加准确地指出预测中的小错误,并帮助你逐步改进;而平方损失函数则更像是一个“严格的老师”,对任何小错误都“大发雷霆”,不易于帮助你改正错误。