损失函数的作用
-
假设把猫这张图片分成四个像素点,分别为:56、231、24、2(实际应该是三维的,因为还有颜色通道的维度,这里简化成二维)。
-
像素点拿到以后,进行三分类,粉红色为第一组W1,绿色为第二组W2,灰色为第三组W3,即cat,dog,ship。对应权重W的三行四列矩阵,三代表三类,四代表每个类别有四个像素点。
-
通过得分函数计算得分。(实际就是矩阵运算)
-
结果保存于 f ( x ; W , b ) f(x;W,b) f(x;W,b)矩阵,可以得出不同类权重W对于此四个像素值计算的结果大小不同。
-
这里暂时对大小无定义。
对W的其中一行说明,如第二行:1.5、1.3、2.1、0.0,其中2.1最大,也就是说明2.1这个位置对应的像素点即第三个像素点24对判断此图属于dog类最重要。0.0最小,说明第四个像素点2对判断这张图是dog不太重要。
对于第一行的负值(-0.5)来说,正值起到促进作用,故负值起到抑制作用。
那W矩阵是如何得到的?
W矩阵是优化而来的。一开始可以随机产生一个3×4的矩阵,其中元素都是随机值,上述就是随机值的例子。但我们不难发现,猫是负的分,狗和船是正的分,明明是一只猫,但得到的结果却是负分,继而错误的将图片判断为狗了。产生这种现象的原因不是x的问题,因为x属于输入数据,因此W存在问题,需要变化。
可以得出,神经网络在整个的生命周期当中实际上就是在做一件事:什么样的W能更适合于咱们的数据去做当前这个任务
因此,在得到随机W之后,需要通过优化不断改善W,就和不断学习一样。W作为决策很重要,b仅仅是微调。
那上面这个W有多不好?
损失函数既能做分类,也能做回归,做的事情很多,唯一的区别就是损失函数如何定义的。因此做不同任务就是损失函数不同而已。
对于如上图例子,第一张图片car的得分最高,将猫的图片错误的判断成了车,因此做的不好。
怎么办?
通过上述损失函数可以将好的测试变成接近于0的数值。
- 第二列车的值最大判断的是正确的,因此通过计算得到0。
- 第三列青蛙的判断为负值,就很离谱,因此损失函数计算出的值也很大。