神经网络好难理解(一):奇奇怪怪的损失函数Loss,函数本身是否始终一致

奇奇怪怪的损失函数Loss

前言

本篇博客仅涉及直觉理解,不包括严谨的数学运算。默认读者已经很熟系神经网络的基本结构和反向传播过程,这里仅仅对损失函数的一小点知识做出个人理解,说错了请大哥们指正。

这里博主是看到了如下b站up主的视频链接有感而发的:

https://www.bilibili.com/video/BV1bx411M7Zx?t=211

本篇小博客内容:loss函数本身在训练过程中是否不变

1.loss函数数学角度的输入输出关系:

从数学角度来看,神经网络本质上是一个函数,叫它f(x);Loss函数也是个函数,叫它L(f(x),Y),其中Y是标签。

对于f而言:
输入:x;
输出:网络的输出端口;
函数参数:W

对于L而言:
输入:w;
输出:损失值,往往是一个数;
函数参数:x,y

这是我认为两个函数应有的输入输出关系。在学习过程中也有发现f(x,w)这样的说法,即x和w都是输入,函数本身没有参数。我想说这样的理解也没什么问题,但是我没有从这个角度考虑过后续的Loss和梯度下降的理解,可能我看完计算图就又有启发了吧

在默认该输入输出关系的情况下,我就有一个问题了:我们训练神经网络的时候是用batch进行输入训练,极端情况甚至是用单个(x,y)进行数据训练,从数学角度而言,L的函数参数一直在改变,那么L本身的形状也一直在改变,那又如何谈到什么下山之类的,毕竟你这个山是变化的啊。

比如 给L输入(x1,y1)和(x2,y2)两个数据点,L可能完全是两个不同形状的函数了:
(x1,y1)作为参数:
在这里插入图片描述

(x2,y2)作为参数:
在这里插入图片描述

这个图可能很极端,可能差别没有这么大,但是x和y作为参数本身不一致的话函数形状就确实不一致。

那我这一寻思,这梯度下降啥的都无从谈起啊,这函数形状都不一样,都懵了。

然后我看了b站视频好像有点懂了:最开始训练的时候,是把所有的x,y都输入到网络中,然后求个loss的平均值,也就是说,这个时候(x,y)不是单个点的数据,而是整个数据集

那这就恍然大明白了,这个L的参数是固定的,那么函数本身就是固定的,应用梯度下降进行下山自然和合理

*然后就是博主猜测:当使用mini-batch和单个SGD进行损失函数计算时,每个batch或者每个单个数据点进行loss计算时,其loss函数形状都不太一致,但是由于mini-batch本身代表包含了整个数据集的特征,其L = (Loss求和) / batch_size,相当于每一个单个的(x,y)对应的L函数相加求平均,可以理解成:整个数据集这样的L求和再平均,与一个batch的L求和在平均的函数形状几乎差不多,所以可以采用这样的方法;而单个SGD也能偶尔好使也可能说明,每个(x,y)对应的L函数可能也张差不多,或者其有种特殊联系之类的,还没有深究

暂时over 困扰我很久的问题终于有点小明白了 后续如果有恍然大明白的地方会在这里更新

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值