CHARLORÉ / AQUATIC MEMORY

Charloré

Deep Learning notes(2)

546 字
3 分钟
Deep Learning notes(2)

2 损失函数与成本函数#

2.1 什么是损失函数L(y^,y)L(\hat y,y)?#

损失函数 Loss Function:衡量一个训练样本预测得有多差。

理想情况下:

  • 预测正确时,损失应该小;

  • 预测错误时,损失应该大;

  • 而且越自信地预测错误,惩罚最好越严重。

例如真实值 y=1y=1:y^=0.99\hat y=0.99:预测很好;y^=0.7\hat y=0.7:还可以;y^=0.001\hat y=0.001:不仅错,而且错得非常自信。 因此我们希望损失函数能够体现这种差异。

2.2 为什么一般不用平方误差?#

原因: sigmoid 是一个非线性函数,和平方误差组合以后,关于参数 w,bw,b 的优化问题可能成为非凸优化问题。

平方差:L(y^,y)=12(y^−y)2L(\hat y,y)=\frac12(\hat y-y)^2

假设真实标签 y=1y=1,模型预测 y^=0.8\hat y=0.8,那么损失为 12(0.8−1)2=0.02\frac12(0.8-1)^2=0.02;如果预测 y^=0.1\hat y=0.1,损失为 12(0.1−1)2=0.405\frac12(0.1-1)^2=0.405。看起来非常合理。

但在Logistic回归中 y^=σ(wTx+b)\hat y=\sigma(w^Tx+b) ,所以平方差实际上变成 L(w,b)=12(σ(wTx+b)−y)2L(w,b)=\frac12\left(\sigma(w^Tx+b)-y\right)^2。

而非凸函数可能存在多个局部最小值,不适合作为标准Logistic回归的目标损失函数。

2.3 Logistic回归使用什么损失函数?#

L(y^,y)=−[yln⁡y^+(1−y)ln⁡(1−y^)]L(\hat y,y) = -\left[ y\ln\hat y + (1-y)\ln(1-\hat y) \right]

该损失函数通常称为 Log Loss、Binary Cross-Entropy,二元交叉熵损失。

  1. 当 y=1y=1时:
L(y^,1)=−ln⁡y^L(\hat y,1)=-\ln\hat y

假设真实答案为 y=1y=1。

当 y^=0.9\hat y=0.9 时,L=−ln⁡0.9≈0.105L=-\ln0.9\approx0.105。 当 y^=0.5\hat y=0.5 时,L=−ln⁡0.5≈0.693L=-\ln0.5\approx0.693。 当 y^=0.1\hat y=0.1 时,L=−ln⁡0.1≈2.303L=-\ln0.1\approx2.303。 当 y^=0.001\hat y=0.001 时,L=−ln⁡0.001≈6.908L=-\ln0.001\approx6.908。

  1. 当 y=0y=0 时:
L(y^,0)=−ln⁡(1−y^)L(\hat y,0)=-\ln(1-\hat y)

假设真实答案为 y=0y=0。

y^=0.1\hat y=0.1,则 L=−log⁡0.9≈0.105L=-\log0.9\approx0.105。 y^=0.5\hat y=0.5,则 L=−log⁡0.5≈0.693L=-\log0.5\approx0.693。 y^=0.9\hat y=0.9,则 L=−log⁡0.1≈2.303L=-\log0.1\approx2.303。 y^=0.999\hat y=0.999,则 L=−log⁡0.001≈6.908L=-\log0.001\approx6.908。

预测越自信地犯错,惩罚越严重。

2.4 什么是成本函数J(w,b)J(w,b)??#

成本函数 Cost Function:衡量整个训练集预测得有多差。

把所有样本的损失取平均:

J(w,b)=1m∑i=1mL(y^(i),y(i))J(w,b) = \frac1m \sum_{i=1}^{m} L\left(\hat y^{(i)},y^{(i)}\right)

即成本函数衡量参数 w,bw,b 在整个训练集上的总体表现。

2.5 Logistic回归训练的计算链#

w,b→z(i)→y^(i)→L(i)→J(w,b)w,b \rightarrow z^{(i)} \rightarrow \hat y^{(i)} \rightarrow L^{(i)} \rightarrow J(w,b)

即给定训练数据:

{(x(1),y(1)),(x(2),y(2)),⋯ ,(x(m),y(m))}\left\{ (x^{(1)},y^{(1)}), (x^{(2)},y^{(2)}), \cdots, (x^{(m)},y^{(m)}) \right\}

对于每个样本:

z(i)=wTx(i)+bz^{(i)}=w^Tx^{(i)}+b

sigmoid函数:

y^(i)=σ(z(i))\hat y^{(i)}=\sigma(z^{(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]

成本函数:

J(w,b)=1m∑i=1mL(i)J(w,b)=\frac1m\sum_{i=1}^{m}L^{(i)}

目的:找到一组 w,bw,b,让整个训练集上的平均损失 J(w,b)J(w,b) 尽可能小。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Deep Learning notes(2)
https://charlore.cn/posts/deep-learning-notes-2/
作者
路人蛃
发布于
2026-09-27
许可协议
CC BY-NC-SA 4.0

评论区