忽略loss函数直接对loss数值进行讨论... 嗯~~~ 天呐!流氓!
loss数值代表啥呢?我觉得代表的就是你的模型输出与真实结果之间的距离(度量),这个距离的计算方式是你自己定义的(loss函数),所以这个数值代表啥得看你怎么定义这个loss。
一、交叉熵
假设你在训练一个简单的分类模型,使用交叉熵作为损失函数,交叉熵损失函数如下:
其中
为总的样本数,
为总的类别数,
为one-hot标签,当
的类别为
时
,否则为
。我们把问题简化,令
,
,则有
首先我们由
中的变量解释可知
只能为
或
,我们假设
(
同理),则
于是有如下推导:
.
那么下面我们看看这个
是怎么来的。
一般们会将网络的输出(logits)使用Softmax转化为概率分布,再与one-hot label计算交叉熵,Softmax的计算方法如下:
其中
,
即输出
转化为的概率(对应上面的
).
显然,对于任意的
,都有
,因此,对于任意的
,都有
(前开后开),
不能取到
, 这与
中
的必要条件矛盾,故
不能为
.
因此,当你使用交叉熵作为损失函数的时候,loss也确实不能收敛到
,没办法,臣妾真的做不到。
二、MSE
假设你在训练一个简单的回归任务,输入数据是你们班同学的身高,回归你们班同学的体重,
假设你们班有十个同学,身高分别是
(
);体重分别是
(斤)。
你使用的损失函数为MSE
你使用一个网络开始训练,然后经过你一顿训练,网络收敛了,可能是网络拟合到了
这个终极公式(就是上面身高体重在二维空间中所在的直线),也可能是任务太简单,反正你教啥我就学啥,老子直接过拟合,训练loss不再降低了。这时候训练loss是多少呢?那它不就是0吗?
你随便给网络一个身高(这十个人里面的),网络都给你一个和真实结果一样的预测,你拿MSE一算,嗬,loss还真就是0。
三、其他
这个时候你突然明白了,loss原来是我自己定义的啊,于是你在 MSE(公式
)上一顿修改,定义了新的loss
然后你又重新训练身高体重网络,你盯着loss日志。
嗬,loss降了。
靠,降到
了!!!
卧去,怎么降到负数了???
以上都是脑洞,但是意思就是那个意思。
溜了溜了。