在上篇中,我们得到了对数几率回归模型表达式,如公式(3-5)所示:
ln
(
y
1
−
y
)
=
w
T
x
+
b
\ln\left(\frac{y}{1 - y}\right) = w^T x + b
ln(1−yy)=wTx+b
将
y
y
y 视作类后验概率
P
(
Y
=
1
∣
x
)
P(Y=1|x)
P(Y=1∣x), 则对数几率回归模型的表达式(3-5)可重写为如下(3-6):
ln
P
(
Y
=
1
∣
x
)
P
(
Y
=
0
∣
x
)
=
w
T
x
+
b
\ln \frac{P(Y = 1 | x)}{P(Y = 0 | x)} = w^T x + b
lnP(Y=0∣x)P(Y=1∣x)=wTx+b
展开后,得到的公式 (3-7) 是:
P
(
Y
=
1
∣
x
)
=
e
w
T
x
+
b
1
+
e
w
T
x
+
b
P(Y = 1 | x) = \frac{e^{w^T x + b}}{1 + e^{w^T x + b}}
P(Y=1∣x)=1+ewTx+bewTx+b
公式 (3-8) 是:
P
(
Y
=
0
∣
x
)
=
1
1
+
e
w
T
x
+
b
=
1
−
y
^
P(Y = 0 | x) = \frac{1}{1 + e^{w^T x + b}} = 1 - \hat{y}
P(Y=0∣x)=1+ewTx+b1=1−y^
将式(3-7)和式(3-8)综合,可得:
P
(
y
∣
x
)
=
y
^
y
(
1
−
y
^
)
1
−
y
P(y | x) = \hat{y}^y (1 - \hat{y})^{1 - y}
P(y∣x)=y^y(1−y^)1−y
对式(3-9)两边取对数,改为求和式,并取负号,有式(3-10):
−
ln
P
(
y
∣
x
)
=
−
1
m
∑
i
=
1
m
(
y
i
ln
y
^
i
+
(
1
−
y
i
)
ln
(
1
−
y
^
i
)
)
-\ln P(y | x) = -\frac{1}{m} \sum_{i=1}^m \left( y_i \ln \hat{y}_i + (1 - y_i) \ln (1 - \hat{y}_i) \right)
−lnP(y∣x)=−m1i=1∑m(yilny^i+(1−yi)ln(1−y^i))
式(3-10)就是经典的交叉熵损失函数,其中
y
^
=
1
1
+
e
−
(
w
T
x
+
b
)
\hat{y} = \frac{1}{1 + e^{-(w^T x + b)}}
y^=1+e−(wTx+b)1
以下为公式之间转换的的具体步骤
1. 从公式(3-6)到公式 (3-7)步骤:
我们可以利用
P
(
Y
=
0
∣
x
)
=
1
−
P
(
Y
=
1
∣
x
)
P(Y = 0 | x) = 1 - P(Y = 1 | x)
P(Y=0∣x)=1−P(Y=1∣x) 这个关系,将公式 (3-6) 写成:
ln
P
(
Y
=
1
∣
x
)
1
−
P
(
Y
=
1
∣
x
)
=
w
T
x
+
b
\ln \frac{P(Y = 1 | x)}{1 - P(Y = 1 | x)} = w^T x + b
ln1−P(Y=1∣x)P(Y=1∣x)=wTx+b
然后对这个方程进行指数运算,以消除对数:
P
(
Y
=
1
∣
x
)
1
−
P
(
Y
=
1
∣
x
)
=
e
w
T
x
+
b
\frac{P(Y = 1 | x)}{1 - P(Y = 1 | x)} = e^{w^T x + b}
1−P(Y=1∣x)P(Y=1∣x)=ewTx+b
现在将这个方程两边同时乘以
1
−
P
(
Y
=
1
∣
x
)
1 - P(Y = 1 | x)
1−P(Y=1∣x):
P
(
Y
=
1
∣
x
)
=
e
w
T
x
+
b
⋅
(
1
−
P
(
Y
=
1
∣
x
)
)
P(Y = 1 | x) = e^{w^T x + b} \cdot (1 - P(Y = 1 | x))
P(Y=1∣x)=ewTx+b⋅(1−P(Y=1∣x))
接下来,将右侧展开并整理得到:
P
(
Y
=
1
∣
x
)
=
e
w
T
x
+
b
−
P
(
Y
=
1
∣
x
)
⋅
e
w
T
x
+
b
P(Y = 1 | x) = e^{w^T x + b} - P(Y = 1 | x) \cdot e^{w^T x + b}
P(Y=1∣x)=ewTx+b−P(Y=1∣x)⋅ewTx+b
将所有关于
P
(
Y
=
1
∣
x
)
P(Y = 1 | x)
P(Y=1∣x) 的项移到方程左侧:
P
(
Y
=
1
∣
x
)
+
P
(
Y
=
1
∣
x
)
⋅
e
w
T
x
+
b
=
e
w
T
x
+
b
P(Y = 1 | x) + P(Y = 1 | x) \cdot e^{w^T x + b} = e^{w^T x + b}
P(Y=1∣x)+P(Y=1∣x)⋅ewTx+b=ewTx+b
提取出左边的
P
(
Y
=
1
∣
x
)
P(Y = 1 | x)
P(Y=1∣x):
P
(
Y
=
1
∣
x
)
⋅
(
1
+
e
w
T
x
+
b
)
=
e
w
T
x
+
b
P(Y = 1 | x) \cdot (1 + e^{w^T x + b}) = e^{w^T x + b}
P(Y=1∣x)⋅(1+ewTx+b)=ewTx+b
最后,将两边同时除以
1
+
e
w
T
x
+
b
1 + e^{w^T x + b}
1+ewTx+b,得到:
P
(
Y
=
1
∣
x
)
=
e
w
T
x
+
b
1
+
e
w
T
x
+
b
P(Y = 1 | x) = \frac{e^{w^T x + b}}{1 + e^{w^T x + b}}
P(Y=1∣x)=1+ewTx+bewTx+b
这就是公式 (3-7) 的推导过程。
2. 到公式(3-8)的步骤
从公式 (3-7) 开始,我们已经得到了
P
(
Y
=
1
∣
x
)
P(Y = 1 | x)
P(Y=1∣x) 的表达式:
P
(
Y
=
1
∣
x
)
=
e
w
T
x
+
b
1
+
e
w
T
x
+
b
P(Y = 1 | x) = \frac{e^{w^T x + b}}{1 + e^{w^T x + b}}
P(Y=1∣x)=1+ewTx+bewTx+b
因为
P
(
Y
=
0
∣
x
)
P(Y = 0 | x)
P(Y=0∣x) 和
P
(
Y
=
1
∣
x
)
P(Y = 1 | x)
P(Y=1∣x) 之间的关系为:
P
(
Y
=
0
∣
x
)
=
1
−
P
(
Y
=
1
∣
x
)
P(Y = 0 | x) = 1 - P(Y = 1 | x)
P(Y=0∣x)=1−P(Y=1∣x)
将
P
(
Y
=
1
∣
x
)
P(Y = 1 | x)
P(Y=1∣x) 的表达式代入:
P
(
Y
=
0
∣
x
)
=
1
−
e
w
T
x
+
b
1
+
e
w
T
x
+
b
P(Y = 0 | x) = 1 - \frac{e^{w^T x + b}}{1 + e^{w^T x + b}}
P(Y=0∣x)=1−1+ewTx+bewTx+b
化简右侧的表达式:
P
(
Y
=
0
∣
x
)
=
1
+
e
w
T
x
+
b
−
e
w
T
x
+
b
1
+
e
w
T
x
+
b
=
1
1
+
e
w
T
x
+
b
P(Y = 0 | x) = \frac{1 + e^{w^T x + b} - e^{w^T x + b}}{1 + e^{w^T x + b}} = \frac{1}{1 + e^{w^T x + b}}
P(Y=0∣x)=1+ewTx+b1+ewTx+b−ewTx+b=1+ewTx+b1
这就是公式 (3-8) 的推导结果。
3. 到公式3-9的步骤
这是逻辑回归模型中,给定特征 x x x 和目标变量 y y y 的条件概率 P ( y ∣ x ) P(y | x) P(y∣x) 的表达式。要推导这个公式,我们从逻辑回归中的概率定义出发:
-
当 y = 1 y = 1 y=1 时,即 y y y 属于正类的情况,概率 P ( y = 1 ∣ x ) P(y = 1 | x) P(y=1∣x) 就是公式 (3-7):
P ( y = 1 ∣ x ) = y ^ = e w T x + b 1 + e w T x + b P(y = 1 | x) = \hat{y} = \frac{e^{w^T x + b}}{1 + e^{w^T x + b}} P(y=1∣x)=y^=1+ewTx+bewTx+b -
当 y = 0 y = 0 y=0 时,即 y y y 属于负类的情况,概率 P ( y = 0 ∣ x ) P(y = 0 | x) P(y=0∣x) 就是公式 (3-8):
P ( y = 0 ∣ x ) = 1 − y ^ = 1 1 + e w T x + b P(y = 0 | x) = 1 - \hat{y} = \frac{1}{1 + e^{w^T x + b}} P(y=0∣x)=1−y^=1+ewTx+b1
将这两种情况综合起来,逻辑回归的条件概率可以表示为:
P
(
y
∣
x
)
=
y
^
y
(
1
−
y
^
)
1
−
y
P(y | x) = \hat{y}^y (1 - \hat{y})^{1 - y}
P(y∣x)=y^y(1−y^)1−y
为什么这个表达式成立:
-
当 y = 1 y = 1 y=1 时, y ^ y = y ^ \hat{y}^y = \hat{y} y^y=y^ 且 ( 1 − y ^ ) 1 − y = ( 1 − y ^ ) 0 = 1 (1 - \hat{y})^{1 - y} = (1 - \hat{y})^0 = 1 (1−y^)1−y=(1−y^)0=1,所以公式简化为:
P ( y = 1 ∣ x ) = y ^ P(y = 1 | x) = \hat{y} P(y=1∣x)=y^ -
当 y = 0 y = 0 y=0 时, y ^ y = y ^ 0 = 1 \hat{y}^y = \hat{y}^0 = 1 y^y=y^0=1 且 ( 1 − y ^ ) 1 − y = 1 − y ^ (1 - \hat{y})^{1 - y} = 1 - \hat{y} (1−y^)1−y=1−y^,因此公式简化为:
P ( y = 0 ∣ x ) = 1 − y ^ P(y = 0 | x) = 1 - \hat{y} P(y=0∣x)=1−y^
因此,公式 (3-9) 是一种统一的表达式,同时适用于 y = 1 y = 1 y=1 和 y = 0 y = 0 y=0 两种情况,并且简洁地描述了给定输入 x x x 时 y y y 为正类或负类的概率。
这也是逻辑回归模型的最大似然估计的基础,在后续的损失函数(如交叉熵损失)推导中将用到这一表达式。
4. 到公式3-10的步骤
要推导这个公式,我们可以从最大似然估计出发,再通过负对数似然函数来构造损失函数。
第一步:构造似然函数
我们希望最大化给定训练数据
{
(
x
i
,
y
i
)
}
i
=
1
m
\{(x_i, y_i)\}_{i=1}^m
{(xi,yi)}i=1m 的联合概率。根据公式 (3-9),给定输入
x
i
x_i
xi 和输出
y
i
y_i
yi 的条件概率
P
(
y
i
∣
x
i
)
P(y_i | x_i)
P(yi∣xi) 为:
P
(
y
i
∣
x
i
)
=
y
^
i
y
i
(
1
−
y
^
i
)
1
−
y
i
P(y_i | x_i) = \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1 - y_i}
P(yi∣xi)=y^iyi(1−y^i)1−yi
对于所有样本的联合似然函数
L
L
L,即所有样本点
x
i
x_i
xi 和其对应输出
y
i
y_i
yi 的联合概率为:
L
=
∏
i
=
1
m
P
(
y
i
∣
x
i
)
=
∏
i
=
1
m
y
^
i
y
i
(
1
−
y
^
i
)
1
−
y
i
L = \prod_{i=1}^m P(y_i | x_i) = \prod_{i=1}^m \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1 - y_i}
L=i=1∏mP(yi∣xi)=i=1∏my^iyi(1−y^i)1−yi
第二步:取对数似然函数
为了简化计算,我们取似然函数的对数:
ln
L
=
∑
i
=
1
m
ln
P
(
y
i
∣
x
i
)
=
∑
i
=
1
m
ln
(
y
^
i
y
i
(
1
−
y
^
i
)
1
−
y
i
)
\ln L = \sum_{i=1}^m \ln P(y_i | x_i) = \sum_{i=1}^m \ln \left( \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1 - y_i} \right)
lnL=i=1∑mlnP(yi∣xi)=i=1∑mln(y^iyi(1−y^i)1−yi)
根据对数的性质,可以将对数作用到每个乘积项上:
ln
L
=
∑
i
=
1
m
(
y
i
ln
y
^
i
+
(
1
−
y
i
)
ln
(
1
−
y
^
i
)
)
\ln L = \sum_{i=1}^m \left( y_i \ln \hat{y}_i + (1 - y_i) \ln (1 - \hat{y}_i) \right)
lnL=i=1∑m(yilny^i+(1−yi)ln(1−y^i))
第三步:构造损失函数
为了最大化似然函数
L
L
L,我们可以最小化负对数似然函数。这就是我们通常称为的交叉熵损失函数:
−
ln
L
=
−
∑
i
=
1
m
(
y
i
ln
y
^
i
+
(
1
−
y
i
)
ln
(
1
−
y
^
i
)
)
-\ln L = - \sum_{i=1}^m \left( y_i \ln \hat{y}_i + (1 - y_i) \ln (1 - \hat{y}_i) \right)
−lnL=−i=1∑m(yilny^i+(1−yi)ln(1−y^i))
为了将损失函数标准化,我们对样本数
m
m
m 进行平均,得到:
−
1
m
∑
i
=
1
m
(
y
i
ln
y
^
i
+
(
1
−
y
i
)
ln
(
1
−
y
^
i
)
)
-\frac{1}{m} \sum_{i=1}^m \left( y_i \ln \hat{y}_i + (1 - y_i) \ln (1 - \hat{y}_i) \right)
−m1i=1∑m(yilny^i+(1−yi)ln(1−y^i))
这就是公式 (3-10),表示的是交叉熵损失函数,其中 y ^ i \hat{y}_i y^i 是模型的预测值,而 y i y_i yi 是实际的标签。
直观理解:
- y i ln y ^ i y_i \ln \hat{y}_i yilny^i 是当 y i = 1 y_i = 1 yi=1 时的损失,即当实际标签为 1 时,损失取决于预测为 1 的概率 y ^ i \hat{y}_i y^i。
- ( 1 − y i ) ln ( 1 − y ^ i ) (1 - y_i) \ln (1 - \hat{y}_i) (1−yi)ln(1−y^i) 是当 y i = 0 y_i = 0 yi=0 时的损失,即当实际标签为 0 时,损失取决于预测为 0 的概率 1 − y ^ i 1 - \hat{y}_i 1−y^i。
交叉熵损失衡量了模型预测的概率分布与实际标签之间的差异,损失越小,模型预测越准确。