在线性分类中介绍了0-1损失函数,模型为:
g
(
f
(
x
;
w
)
)
=
{
1
i
f
f
(
x
;
w
)
>
0
0
i
f
f
(
x
;
w
)
<
0
g(f(x;w))= \left\{ \begin{aligned} 1\ \ \ \ if\ \ f(x;w)>0\\ 0\ \ \ \ if\ \ f(x;w)<0 \end{aligned}\right.
g(f(x;w))={1 if f(x;w)>00 if f(x;w)<0
由于这个模型不可导,因此不能跟以前一样通过求导的方式来进行数学优化进而求解最优参数。而是需要通过将分类问题转换成概率估计问题,然后用交叉熵来建立损失函数。
对于分类问题,已知的只有判别函数
f
(
x
;
w
)
∈
R
f(x;w)\in R
f(x;w)∈R,要将分类问题看作条件概率估计问题,需要引入非线性函数
g
g
g来预测类别标签的条件概率
p
(
y
=
c
∣
x
)
p(y=c\mid x)
p(y=c∣x)。以二分类问题为例,就是找到使得
p
θ
(
y
=
1
∣
x
)
=
g
(
f
(
x
;
w
)
)
p_\theta(y=1\mid x)=g(f(x;w))
pθ(y=1∣x)=g(f(x;w))成立的非线性函数,同时另一个
p
θ
(
y
=
0
∣
x
)
=
1
−
p
θ
(
y
=
1
∣
x
)
p_\theta(y=0\mid x)=1-p_\theta(y=1\mid x)
pθ(y=0∣x)=1−pθ(y=1∣x) 。因此,只需要再找到一个激活函数g就能把线性函数的值域从实数区间“挤压”到
(
0
,
1
)
(0,1)
(0,1)之间来表示概率。
Logistic函数
Logistic函数是一个S型函数(或者说sigmoid型函数1),当x趋于负无穷时函数趋向于0,x趋于正无穷时函数趋向于1,函数整体连续单增。Logistic函数上面提到的激活函数的一种:
σ
(
x
)
=
1
1
+
exp
(
−
x
)
\sigma(x)=\frac{1}{1+\exp(-x)}
σ(x)=1+exp(−x)1
函数图像如下:
这样就实现了将判别函数 f ( x ) f(x) f(x)从实数域映射到区间 ( 0 , 1 ) (0,1) (0,1)
Logistic 回归
模型预测的条件概率
p
θ
(
y
=
1
∣
x
)
=
σ
(
w
T
x
)
≜
1
1
+
exp
(
−
w
T
x
)
p
θ
(
y
=
0
∣
x
)
=
1
−
p
θ
(
y
=
1
∣
x
)
\begin{aligned} p_\theta(y=1\mid x) &=\sigma(w^Tx)\\ &\triangleq\frac{1}{1+\exp(-w^Tx)}\\ \\ p_\theta(y=0\mid x) &=1-p_\theta(y=1\mid x) \end{aligned}
pθ(y=1∣x)pθ(y=0∣x)=σ(wTx)≜1+exp(−wTx)1=1−pθ(y=1∣x)
对于一个样本
(
x
,
y
∗
)
(x,y^*)
(x,y∗),真实的条件概率
p
r
(
y
=
1
∣
x
)
=
y
∗
p
r
(
y
=
0
∣
x
)
=
1
−
y
∗
\begin{aligned} &p_r(y=1\mid x)=y^*\\ &p_r(y=0\mid x)=1-y^*\\ \end{aligned}
pr(y=1∣x)=y∗pr(y=0∣x)=1−y∗
这里的
y
∗
y^*
y∗表示一个具体的样本值,比如对于样本
(
x
1
,
0
)
(x_1,0)
(x1,0)那么
p
r
(
y
=
0
∣
x
1
)
=
1
,
p
r
(
y
=
1
∣
x
1
)
=
0
p_r(y=0\mid x_1)=1,p_r(y=1\mid x_1)=0
pr(y=0∣x1)=1,pr(y=1∣x1)=0
用交叉熵建立两个分布之间的差异:
H
(
p
r
,
p
θ
)
=
−
∑
y
p
r
(
y
∣
x
)
log
p
θ
(
y
∣
x
)
=
−
p
r
(
y
=
1
∣
x
)
log
p
θ
(
y
=
1
∣
x
)
−
p
r
(
y
=
0
∣
x
)
log
p
θ
(
y
=
0
∣
x
)
=
−
p
r
(
y
=
1
∣
x
)
log
p
θ
(
y
=
1
∣
x
)
−
(
1
−
p
r
(
y
=
1
∣
x
)
)
log
(
1
−
p
θ
(
y
=
1
∣
x
)
)
记
p
θ
(
y
=
1
∣
x
)
=
y
^
=
−
(
y
∗
log
y
^
+
(
1
−
y
∗
)
log
(
1
−
y
^
)
)
\begin{aligned} H(p_r,p_\theta) &=-\sum_y p_r(y\mid x)\log p_\theta(y\mid x)\\ &=-p_r(y=1\mid x)\log p_\theta(y=1\mid x)-p_r(y=0\mid x)\log p_\theta(y=0\mid x)\\ &=-p_r(y=1\mid x)\log p_\theta(y=1\mid x)-(1-p_r(y=1\mid x))\log (1-p_\theta(y=1\mid x))\\ &记p_\theta(y=1\mid x)=\hat{y}\\ &=-(y^*\log\hat{y}+(1-y^*)\log(1-\hat{y})) \end{aligned}
H(pr,pθ)=−y∑pr(y∣x)logpθ(y∣x)=−pr(y=1∣x)logpθ(y=1∣x)−pr(y=0∣x)logpθ(y=0∣x)=−pr(y=1∣x)logpθ(y=1∣x)−(1−pr(y=1∣x))log(1−pθ(y=1∣x))记pθ(y=1∣x)=y^=−(y∗logy^+(1−y∗)log(1−y^))
两个分布之间差异越小,则交叉熵越小,这样就可以对其进行数学优化。取模型在训练集上的风险函数为交叉熵损失函数:
R
(
w
)
=
−
1
N
∑
n
=
1
N
(
y
^
(
n
)
log
y
^
(
n
)
+
(
1
−
y
(
n
)
)
log
(
1
−
y
^
(
n
)
)
)
+
1
2
∥
w
∥
2
\mathcal{R}(w)=-\frac{1}{N}\sum_{n=1}^N(\hat{y}^{(n)}\log\hat{y}^{(n)}+(1-y^{(n)})\log(1-\hat{y}^{(n)}))+\frac{1}{2}\parallel w\parallel^2
R(w)=−N1n=1∑N(y^(n)logy^(n)+(1−y(n))log(1−y^(n)))+21∥w∥2
其中
1
2
∥
w
∥
2
\frac{1}{2}\parallel w\parallel^2
21∥w∥2为正则项。
然后用梯度下降方式来进行优化,使损失函数尽可能接近于0。损失函数梯度为:
∂
y
^
(
n
)
∂
w
=
x
(
n
)
exp
(
−
w
T
x
(
n
)
)
(
1
+
exp
(
−
w
T
x
(
n
)
)
)
2
=
1
1
+
exp
(
−
w
T
x
(
n
)
)
⋅
1
+
exp
(
−
w
T
x
(
n
)
)
−
1
1
+
exp
(
−
w
T
x
(
n
)
)
⋅
x
(
n
)
=
y
^
(
n
)
(
1
−
y
^
(
n
)
)
x
(
n
)
∂
R
(
w
)
∂
w
=
−
1
N
∑
n
=
1
N
[
y
(
n
)
y
^
(
n
)
(
1
−
y
^
(
n
)
)
x
(
n
)
y
^
(
n
)
−
(
1
−
y
(
n
)
)
(
1
−
y
^
(
n
)
)
y
^
(
n
)
x
(
n
)
1
−
y
^
(
n
)
]
+
2
w
=
−
1
N
∑
n
=
1
N
x
(
n
)
[
y
(
n
)
(
1
−
y
^
(
n
)
)
−
(
1
−
y
(
n
)
)
y
^
(
n
)
]
+
2
w
=
−
1
N
∑
n
=
1
N
x
(
n
)
(
y
(
n
)
−
y
^
(
n
)
)
+
2
w
\begin{aligned} \frac{\partial \hat{y}^{(n)}}{\partial w} &=\frac{x^{(n)}\exp(-w^Tx^{(n)})}{(1+\exp(-w^Tx^{(n)}))^2}\\ &=\frac{1}{1+\exp(-w^Tx^{(n)})}\cdot \frac{1+\exp(-w^Tx^{(n)})-1}{1+\exp(-w^Tx^{(n)})}\cdot x^{(n)}\\ &=\hat{y}^{(n)}(1-\hat{y}^{(n)})x^{(n)}\\ \\ \frac{\partial\mathcal{R}(w)}{\partial w} &=-\frac{1}{N}\sum_{n=1}^N[y^{(n)}\frac{\hat{y}^{(n)}(1-\hat{y}^{(n)})x^{(n)}}{\hat{y}^{(n)}}-(1-y^{(n)})\frac{(1-\hat{y}^{(n)})\hat{y}^{(n)}x^{(n)}}{1-\hat{y}^{(n)}}]+2w\\ &=-\frac{1}{N}\sum_{n=1}^Nx^{(n)}[y^{(n)}(1-\hat{y}^{(n)})-(1-y^{(n)})\hat{y}^{(n)}]+2w\\ &=-\frac{1}{N}\sum_{n=1}^Nx^{(n)}(y^{(n)}-\hat{y}^{(n)})+2w \end{aligned}
∂w∂y^(n)∂w∂R(w)=(1+exp(−wTx(n)))2x(n)exp(−wTx(n))=1+exp(−wTx(n))1⋅1+exp(−wTx(n))1+exp(−wTx(n))−1⋅x(n)=y^(n)(1−y^(n))x(n)=−N1n=1∑N[y(n)y^(n)y^(n)(1−y^(n))x(n)−(1−y(n))1−y^(n)(1−y^(n))y^(n)x(n)]+2w=−N1n=1∑Nx(n)[y(n)(1−y^(n))−(1−y(n))y^(n)]+2w=−N1n=1∑Nx(n)(y(n)−y^(n))+2w
梯度向量表示了
R
(
w
)
\mathcal{R}(w)
R(w)上升的方向,因此沿梯度反方向(梯度下降方向,也就是
−
∂
R
(
w
)
∂
w
-\frac{\partial\mathcal{R}(w)}{\partial w}
−∂w∂R(w))对
w
w
w进行迭代,迭代过程为:
w
t
+
1
←
w
t
+
α
[
1
N
∑
n
=
1
N
x
(
n
)
(
y
(
n
)
−
y
^
(
n
)
)
+
2
w
]
w_{t+1}\leftarrow w_t+\alpha[\frac{1}{N}\sum_{n=1}^Nx^{(n)}(y^{(n)}-\hat{y}^{(n)})+2w]
wt+1←wt+α[N1n=1∑Nx(n)(y(n)−y^(n))+2w]
可见,
y
(
n
)
y^{(n)}
y(n)趋向于1时,
w
w
w会更大,导致判别函数
w
T
x
w^Tx
wTx增大,最终结果
σ
(
x
)
\sigma(x)
σ(x)更靠近1;同理
y
(
n
)
y^{(n)}
y(n)趋向于0时,
w
w
w会更小,导致判别函数
w
T
x
w^Tx
wTx减小,最终结果
σ
(
x
)
\sigma(x)
σ(x)更靠近0。
事实上,在进行梯度优化时并不需要将损失优化到非常小,只要能够使得判别函数经过激活函数后能够完成分类任务即可,例如:
虽然参数取值不同,但二者都可以对这两类进行很好的分类。