《DRL》P10-P15-损失函数-优化(梯度下降和误差的反向传播)


简介

本文介绍了神经网络中的损失函数及其优化方法。损失函数用于衡量模型预测值与真实值之间的差异,其中交叉熵损失函数在分类问题中尤为重要。文章详细解释了交叉熵的概念,并通过二分类任务示例,阐述了如何使用sigmoid函数和交叉熵损失函数进行模型训练。在多类别分类任务中,softmax函数与交叉熵损失函数的结合提供了一个强大的训练框架。此外,文章还介绍了均方误差、平均绝对误差等其他损失函数,以及梯度下降和反向传播算法在神经网络优化中的应用。最后,讨论了激活函数的选择对模型训练效果的影响。

损失函数

神经网络的参数是自动学习的,那么它是如何自动学习的呢?

这需要损失函数(Loss Function)来引导。

损失函数通常被定义为一种计算误差的量化方式,也就是计算网络输出的预测值和目标值之间的损失值或者代价大小

损失值被用来作为优化神经网络参数的目标,我们优化的参数包括权重和偏差。

交叉熵损失

首先介绍KL(Kullback-Leibler)散度 起作用是衡量两个分布 P ( x ) P(x) P(x) Q ( x ) Q(x) Q(x) 的相似度:
D K L ( P ∥ Q ) = E x ∼ P [ log ⁡ P ( x ) Q ( x ) ] = E x ∼ P [ log ⁡ P ( x ) − log ⁡ Q ( x ) ] D_{\mathrm{KL}}(P\|Q)=\mathbb{E}_{x\sim P}\bigg[\log\frac{P(x)}{Q(x)}\bigg]=\mathbb{E}_{x\sim P}[\log P(x)-\log Q(x)] DKL(PQ)=ExP[logQ(x)P(x)]=ExP[logP(x)logQ(x)]
KL散度是一个非负的指标,并且只有P和Q两个分布一样时才取值0。当我们讨论KL散度 D K L ( P ∥ Q ) D_{\mathrm{KL}}(P\|Q) DKL(PQ)时,我们假设分布P是已知的并且固定的。这意味着P是一个确定性的概率分布,它的概率密度函数(或概率质量函数)是固定的,不随时间或样本的变化而变化。
因此,KL散度中的第一部分 E x ∼ P [ log ⁡ P ( x ) ] \mathbb{E}_{x\sim P}[\log P(x)] ExP[logP(x)]实际上是分布P的熵 H ( P ) H(P) H(P)。熵是分布P的一个性质,它衡量了P的不确定性或信息量。由于P是固定的,它的熵也是一个固定的数值,不依赖于我们选择的另一个分布Q。

因为KL散度的第一个项和Q没有关系,我们引入交叉熵的概念并把公式的第一项移除。

以下是交叉熵的定义:
H ( P , Q ) = − E x ∼ P log ⁡ Q ( x ) H(P,Q)=-\mathbb{E}_{x\sim P}\log Q(x) H(P,Q)=ExPlogQ(x)

当我们说通过Q来最小化交叉熵,我们实际上是在尝试找到一个Q,使得 − E x ∼ P [ log ⁡ Q ( x ) ] -\mathbb{E}_{x\sim P}[\log Q(x)] ExP[logQ(x)]尽可能小。由于KL散度的第一部分(即P的熵)是一个常数,不依赖于Q,所以当我们最小化交叉熵时,我们实际上是在最小化KL散度的第二部分。

因此,最小化交叉熵的效果等同于最小化KL散度,因为交叉熵是KL散度中唯一依赖于Q的部分。当交叉熵最小时,KL散度的第二部分也最小,而第一部分是固定的,所以整个KL散度也就最小了。

总结来说,最小化交叉熵H(P,Q)就是在最小化KL散度 D K L ( P ∥ Q ) D_{\mathrm{KL}}(P\|Q) DKL(PQ)中与Q有关的部分,而KL散度的另一部分(P的熵)是固定的,所以最小化交叉熵就等同于最小化KL散度。

在多类别分类任务中,深度神经网络通过softmax函数输出的是不同类别概率的分布,而不是直接输出一个样本属于的类别。softmax和交叉熵的结合为多类别分类任务提供了一个强大的框架,其中softmax提供了一种将网络输出转换为概率分布的方法,而交叉熵则提供了一个衡量这些概率分布与真实分布之间差异的度量,从而可以有效地训练网络。

例子:

在二分类任务中如何使用sigmoid函数和交叉熵损失函数来进行模型训练和损失计算。

  1. 二分类任务:在二分类任务中,每个数据样本 x i x_i xi都有一个对应的标签 y i y_i yi,这个标签是0或1。例如,如果我们是在做垃圾邮件分类,标签1可能代表垃圾邮件,而标签0代表非垃圾邮件。

    在二分类问题中,每个样本 x i x_i xi 都有一个对应的真实标签 y i y_i yi,这个标签通常是二进制的,即 y i ∈ { 0 , 1 } y_i \in \{0, 1\} yi{ 0,1}。为了将这个标签转化为概率分布,我们可以使用 one-hot 编码:

    • 如果 y i = 1 y_i = 1 yi=1,则真实标签对应的概率分布是 [ 0 , 1 ] [0, 1] [0,1],表示样本属于类别 1 的概率是 1,属于类别 0 的概率是 0。
    • 如果 y i = 0 y_i = 0 yi=0,则真实标签对应的概率分布是 [ 1 , 0 ] [1, 0] [1,0],表示样本属于类别 0 的概率是 1,属于类别 1 的概率是 0。
  2. 模型预测:模型的任务是预测每个样本属于类别1的概率,记为 y ^ i , 1 \hat{y}_{i,1} y^i,1。由于在二分类问题中,样本只属于两个类别中的一个,所以样本属于类别0的概率就是 1 − y ^ i , 1 1 - \hat{y}_{i,1} 1y^i,1,记为 y ^ i , 2 \hat{y}_{i,2} y^i,2

  3. 使用sigmoid函数:在二分类神经网络中,最后一层通常使用sigmoid激活函数,它的输出是一个介于0和1之间的值,可以解释为样本属于类别1的概率。sigmoid函数定义为:
    sigmoid ( x ) = 1 1 + e − x \text{sigmoid}(x) = \frac{1}{1 + e^{-x}} sigmoid(x)=1+ex1
    其中, x x x是神经网络的原始输出(logit)。在这个例子中,我们可以令 y ^ i = sigmoid ( x i ) \hat{y}_i = \text{sigmoid}(x_i) y^i=sigmoid(xi)

  4. 交叉熵损失:现在我们有了真实标签的概率分布 [ y i , 1 − y i ] [y_i, 1 - y_i] [yi,1yi] 和模型预测的概率分布 [ y ^ i , 1 − y ^ i ] [\hat{y}_i, 1 - \hat{y}_i] [y^i,1y^i],我们可以计算交叉熵损失:
    对于每个样本 i i i,交叉熵损失是:
    L i = − ( y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ) L_i = - \left( y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right) Li=(yilog(y^i)+(1yi)log(1y^i))
    交叉熵损失函数用于衡量模型预测的概率分布与真实标签之间的差异。在二分类任务中,交叉熵损失函数可以写为:
    L = − 1 N ∑ i = 1 N ( y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ) L = -\frac{1}{N} \sum_{i=1}^{N} \left( y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right) L=N1i=1N(yilog(y^i)+(1yi)log(1y^i))
    其中, N

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值