pytorch深度学习基础(四)——损失函数

前言

在进行深度学习的过程中我们需要有一个评判标准来评价模型,损失函数就是通过比较预测值与真实值的来对模型当前的权值进行评价的

损失函数

均方误差(MSE)

均方误差也被称作最小二乘法,常用于解决回归问题
公式

这里原本的公式应该为
E = 1 n ∑ k ( y k − t k ) 2 E=\frac{1}{n} \sum_k(y_k-t_k)^2 E=n1k(yktk)2
由于n表示的是数据的数量,当数据集选定好了之后这个值就不会改变,所以可以看作一个常数,为了求导的值尽量简单,我们将n替换成了2,代码中将使用下面的公式
E = 1 2 ∑ k ( y k − t k ) 2 E=\frac{1}{2} \sum_k(y_k-t_k)^2 E=21k(yktk)2
其中y_k是表示神经网络的输出,t_k表示监督数据,k表示数据的维数。
代码

def mean_squared_error(y, t):
    return 0.5 * np.sum((y-t)**2)

L2范式与闵可夫斯基距离

在深度学习中我们记: ∣ ∣ x ∣ ∣ = ∣ ∣ x ∣ ∣ 2 = ∑ i n x i 2 为 L 2 范式 在深度学习中我们记:||x||=||x||_2= \sqrt {\sum_i^nx_i^2}为L2范式 在深度学习中我们记:∣∣x∣∣=∣∣x2=inxi2 L2范式
闵可夫斯基距离: D ( x , y ) = ( ∑ i n ∣ x i − y i ∣ p ) 1 p 闵可夫斯基距离:D(x, y)=(\sum_i^n|x_i-y_i|^p)^{\frac{1}{p}} 闵可夫斯基距离:D(x,y)=(inxiyip)p1
一般可以使用闵可夫斯基距离作为损失函数,通常使用p为1或2的情况。其中当p=1时为曼哈顿距离,p=2时为欧氏距离

交叉熵误差(cross_entropy_error)

交叉熵是均方差损失函数与sigmoid激活函数组合,交叉熵函数可以替代均方差损失函数与sigmoid激活函数组合,从一定程度上降低了梯度下降的可能,常被用于解决互斥多分类问题。
公式

E = − ∑ k t k l o g y k E=-\sum_kt_klogy_k E=ktklogyk

其中log表示以e为底数的自然对数(loge)。y_k是神经网络的输出,t_k是正确解标签。

代码

def cross_entropy_error(y, t):
    if y.ndim == 1:
        t = t.reshape(1, t.size)
        y = y.reshape(1, y.size)
        
    # 监督数据是one-hot-vector的情况下,转换为正确解标签的索引
    if t.size == y.size:
        t = t.argmax(axis=1)
             
    batch_size = y.shape[0]
    return -np.sum(np.log(y[np.arange(batch_size), t] + 1e-7)) / batch_size

极大似然损失函数(LR)

极大似然损失常被用于多标签不互斥多分类问题
公式
E = − ∑ k ( t k l o g y k + ( 1 − t k ) l o g ( 1 − y k ) ) E=-\sum_k(t_klogy_k+(1-tk)log(1-yk)) E=k(tklogyk+(1tk)log(1yk))
极大似然损失函数与交叉熵误差损失函数很相似
两种公式的使用情况

  • 交叉熵损失函数:所有标签满足同一分布,即所有标签取其一(互斥多分类),常在输出层为softmax函数的情况下使用。
  • 极大似然损失函数:每个标签都是一个二项分布,即每个标签都有是或不是两种选择(多标签不互斥多分类),常在输出层为sigmoid函数的情况下使用。

代码

def logistics_regression(y, t):
    if y.ndim == 1:
        t = t.reshape(1, t.size)
        y = y.reshape(1, y.size)
    batch_size = y.shape[0]
    print(batch_size)
    return -np.sum(y * np.log(t) + (1 - y) * np.log(1 - t)) / batch_size

应用场景总结

交叉熵误差和极大似然损失函数一般用于分类问题,均方误差和闵可夫斯基距离一般用于回归问题,也可以用于分类问题,但效果要比交叉熵误差和极大似然损失差。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾醒(AiXing-w)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值