神经网络损失函数

                                           神经网络损失函数

                                                                                       2018, AUG 3

顾名思义,从标题就能知道损失函数(Loss function)一定就是来计算神经网络在训练中的损失的。

以下是百度百科的通俗定义,在统计学中损失函数是一种衡量损失和错误(这种损失与“错误地”估计有关,如费用或者设备的损失)程度的函数。

说完了定义那到了举例时间了:主要拿Softmax loss来分析

Softmax:

                                                              

这里的K也就是我们分类的类别。然后这个函数是怎么用的呢,我们可以简单的举一个分类的例子来看下。假设我们输入一张猫的图片,并且有3个类别,得到三个未标准化(unnormalized)的对数(Log)概率分别是3.1, 4.3, -0.6

类别\图片猫.img未标准化的概率(exp)概率
3.1  
4.3  
-0.6  

概率计算公式:

                                                            ​​

如果我们让这些分数表示属于不同类别的概率,不同类别的概率中有一个是正确的,所以我们想要使正确分类的概率的对数最大,根据损失函数我们要是负的正确分类概率的对数最小,所以正确分类的对数要高,那么负的就要很低,使用log里面的值,就是这组数据正确分类的Softmax值,它占的比重越大,这个样本的Loss也就越小,可以看下面程序的输出便知道

类别\图片猫.img未标准化的概率(exp)概率
3.122.20.23
4.373.70.76
-0.60.550.01

对softmax的结果计算cross entropy loss:

                                                                  

import numpy as np

x = np.array([3.1, 4.3, -0.6])

y = []
p = []

for i in range(len(x)):
    y.append(np.exp(x[i]))
for i in range(len(x)):
    p.append(np.exp(x[i])/sum(y))

print("1.输入的图片属于猫-狗-猪类的得分:", x)
print("2.经过e^x处理后猫-狗-猪的分数:", y)
print("3.图片属于某猫-狗-猪类的概率:", p)
print("4.占的比重越大,样本的Loss也就越小 = ", -np.log(p))
print("5.loss = ", -np.log(p[0]))

1.输入的图片属于猫-狗-猪类的得分: [ 3.1  4.3 -0.6]
2.经过e^x处理后猫-狗-猪的分数: [22.197951281441636, 73.69979369959579, 0.5488116360940265]
3.图片属于某猫-狗-猪类的概率: [0.23015804876852072, 0.7641516326203891, 0.005690318611090187]
4.占的比重越大,样本的Loss也就越小 =  [1.46898904 0.26898904 5.16898904]
5.loss =  1.4689890374923653

输出第四点只是为了让大家更直观的理解为什么占比(也就是概率)越大,样本loss越小。因为我们输入的是猫的图片,所以,我们最后的损失值也就是对应猫所在的那个,也是就最后的loss = 1.46.......

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值