Softmax回归主要用于解决多类问题(类别数>2),可以看作Logistic回归在多分类问题上的一种扩展
Softmax函数
对于K个标量
x
1
,
x
2
,
⋯
,
x
K
x_1,x_2,\cdots,x_K
x1,x2,⋯,xK:
s
o
f
t
m
a
x
(
x
K
)
=
exp
(
x
K
)
∑
i
=
1
K
exp
(
x
i
)
softmax(x_K)=\frac{\exp(x_K)}{\sum_{i=1}^{K}\exp(x_i)}
softmax(xK)=∑i=1Kexp(xi)exp(xK)
其中,指数项>0,分母>=分子,因此结果必定属于区间
(
0
,
1
)
(0,1)
(0,1),且
∑
K
s
o
f
t
m
a
x
(
x
K
)
=
1
\sum_Ksoftmax(x_K)=1
∑Ksoftmax(xK)=1。也就是说,K个标量在通过softmax函数之后,可以转换成具有K个取值的分布,每个取值可以看作对应的打分,标量值越大对应的打分越高。
Softmax回归
目标类别
y
=
c
y=c
y=c的条件概率为:
p
θ
(
y
=
c
∣
x
)
=
s
o
f
t
m
a
x
(
w
c
T
x
)
=
exp
(
w
c
T
x
)
∑
c
′
=
1
C
exp
(
w
c
′
T
x
)
\begin{aligned} p_\theta(y=c\mid x) &=softmax(w_c^Tx)\\ &=\frac{\exp(w^T_cx)}{\sum_{c'=1}^C\exp(w^T_{c'}x)} \end{aligned}
pθ(y=c∣x)=softmax(wcTx)=∑c′=1Cexp(wc′Tx)exp(wcTx)
用向量表示:
y
^
=
s
o
f
t
m
a
x
(
W
T
x
)
=
exp
(
W
T
x
)
1
C
T
exp
(
W
T
x
)
\begin{aligned} \hat{y} &=softmax(W^Tx)\\ &=\frac{\exp(W^Tx)}{1_C^T\exp(W^Tx)} \end{aligned}
y^=softmax(WTx)=1CTexp(WTx)exp(WTx)
其中,
y
^
∈
R
C
\hat{y}\in\mathbb{R}^C
y^∈RC(C维向量)为所有类别的预测条件概率组成的向量,
W
∈
R
D
×
C
W\in\mathbb{R}^{D\times C}
W∈RD×C为所有判别函数对应的权重组成的向量,
1
C
T
1_C^T
1CT为C维的全为1的向量,与后项内积来表示后项所有元素的加和。
交叉熵损失:
H
(
p
r
,
p
θ
)
=
−
∑
y
=
1
C
p
r
(
y
∣
x
)
log
p
θ
(
y
∣
x
)
H(p_r,p_\theta)=-\sum_{y=1}^Cp_r(y\mid x)\log p_\theta(y\mid x)
H(pr,pθ)=−y=1∑Cpr(y∣x)logpθ(y∣x)
这里需要与logistic回归区别一下,在使用logistic回归解决多分类问题时,主要取决于不同类别之间是否互斥,等同于将多分类问题转换成了多次二分类问题。而softmax回归可以同时计算多个类别的打分,取得分最高为最终的分类。真实概率
p
r
p_r
pr和预测概率负对数(熵、自信息量)如下所示:
最终要令二者内积后的交叉熵最小,同时根据熵(自信息)的概念,当真实概率最大时对应的自信息量最小,这也就意味着当熵最小时对应的真实概率越大,越可能是最终的预测结果。如上图中,类别为1的熵
−
log
p
θ
(
y
=
1
∣
x
)
→
0
-\log p_\theta(y=1\mid x)\rightarrow 0
−logpθ(y=1∣x)→0,则对应
p
r
(
y
=
1
∣
x
)
→
m
a
x
p_r(y=1\mid x)\rightarrow max
pr(y=1∣x)→max
用向量来表示交叉熵损失:
H
(
y
,
y
^
)
=
−
y
T
log
y
^
,
y
=
[
I
(
1
=
c
)
,
I
(
2
=
c
)
,
⋯
,
I
(
C
=
c
)
]
T
H(y,\hat{y})=-y^T\log\hat{y},\ \ \ \ y=[I(1=c),I(2=c),\cdots,I(C=c)]^T
H(y,y^)=−yTlogy^, y=[I(1=c),I(2=c),⋯,I(C=c)]T
其中,y表示真实的分类,一般是one-hot向量,只有对应预测分类为1,其他地方为0。举例来说,若一个三分类问题,y属于分类3,则对应的
y
=
[
0
0
1
]
T
y=\begin{bmatrix}0&0&1\end{bmatrix}^T
y=[001]T ,若预测概率
y
^
=
[
0.3
0.3
0.4
]
T
\hat{y}=\begin{bmatrix}0.3&0.3&0.4\end{bmatrix}^T
y^=[0.30.30.4]T则对应的交叉熵损失为:
L
(
θ
)
=
H
(
y
,
y
^
)
=
−
[
0
0
1
]
log
[
0.3
0.3
0.4
]
=
−
log
0.4
\begin{aligned} \mathcal{L}(\theta)=H(y,\hat{y}) &=-\begin{bmatrix}0&0&1\end{bmatrix}\log\begin{bmatrix}0.3\\0.3\\0.4\end{bmatrix}\\ &=-\log0.4 \end{aligned}
L(θ)=H(y,y^)=−[001]log
0.30.30.4
=−log0.4
实际上也对应了正确类别对应的对数似然。
下面就可以对模型的参数进行优化了,定义模型的学习准则为:
R
(
W
)
=
−
1
N
∑
n
=
1
N
(
y
(
n
)
)
T
log
y
^
(
n
)
+
1
2
∥
W
∥
2
\mathcal{R}(W)=-\frac{1}{N}\sum_{n=1}^N(y^{(n)})^T\log\hat{y}^{(n)}+\frac{1}{2}\parallel W\parallel^2
R(W)=−N1n=1∑N(y(n))Tlogy^(n)+21∥W∥2
在求梯度之前先对softmax函数求导:
∂
s
o
f
t
m
a
x
(
x
)
∂
x
=
∂
e
x
∂
x
1
1
K
T
e
x
+
e
x
∂
∂
x
(
1
1
K
T
e
x
)
=
d
i
a
g
(
e
x
)
1
1
K
T
e
x
−
e
x
1
(
1
K
T
e
x
)
2
∂
(
1
K
T
e
x
)
∂
x
=
d
i
a
g
(
s
o
f
t
m
a
x
(
x
)
)
−
e
x
1
K
T
e
x
(
e
x
)
T
1
K
T
e
x
=
d
i
a
g
(
s
o
f
t
m
a
x
(
x
)
)
−
s
o
f
t
m
a
x
(
x
)
s
o
f
t
m
a
x
(
x
)
T
\begin{aligned} \frac{\partial softmax(x)}{\partial x} &=\frac{\partial e^x}{\partial x}\frac{1}{1_K^Te^x}+e^x\frac{\partial}{\partial x}(\frac{1}{1_K^Te^x})\\ &=diag(e^x)\frac{1}{1_K^Te^x}-e^x\frac{1}{(1_K^Te^x)^2}\frac{\partial(1_K^Te^x)}{\partial x}\\ &=diag(softmax(x))-\frac{e^x}{1_K^Te^x}\frac{(e^x)^T}{1_K^Te^x}\\ &=diag(softmax(x))-softmax(x)softmax(x)^T \end{aligned}
∂x∂softmax(x)=∂x∂ex1KTex1+ex∂x∂(1KTex1)=diag(ex)1KTex1−ex(1KTex)21∂x∂(1KTex)=diag(softmax(x))−1KTexex1KTex(ex)T=diag(softmax(x))−softmax(x)softmax(x)T
diag表示对角矩阵,因为
x
=
[
x
(
1
)
⋮
x
(
K
)
]
,
e
x
=
[
e
x
(
1
)
⋮
e
x
(
K
)
]
x=\begin{bmatrix}x^{(1)}\\ \vdots \\ x^{(K)}\end{bmatrix},e^x=\begin{bmatrix}e^{x^{(1)}}\\ \vdots \\ e^{x^{(K)}}\end{bmatrix}
x=
x(1)⋮x(K)
,ex=
ex(1)⋮ex(K)
,
∂
e
x
∂
x
=
∂
[
e
x
(
1
)
⋮
e
x
(
K
)
]
∂
x
=
[
∂
e
x
(
1
)
∂
x
⋮
∂
e
x
(
K
)
∂
x
]
其中,
∂
e
x
(
1
)
∂
x
=
[
∂
e
x
(
1
)
∂
x
(
1
)
⋮
∂
e
x
(
1
)
∂
x
(
K
)
]
=
[
e
x
(
1
)
0
⋮
0
]
因此
,
∂
e
x
∂
x
=
[
e
x
(
1
)
0
⋯
0
0
e
x
(
2
)
⋯
0
⋮
⋮
⋮
0
0
⋯
e
x
(
K
)
]
=
d
i
a
g
(
e
x
)
\begin{aligned} \frac{\partial e^x}{\partial x} &=\frac{\partial\begin{bmatrix}e^{x^{(1)}}\\ \vdots \\ e^{x^{(K)}}\end{bmatrix}}{\partial x} =\begin{bmatrix}\frac{\partial e^{x^{(1)}}}{\partial x}\\ \vdots \\ \frac{\partial e^{x^{(K)}}}{\partial x}\end{bmatrix}\\ \\ 其中,\\ \frac{\partial e^{x^{(1)}}}{\partial x} &=\begin{bmatrix}\frac{\partial e^{x^{(1)}}}{\partial x^{(1)}}\\ \vdots \\\frac{\partial e^{x^{(1)}}}{\partial x^{(K)}}\end{bmatrix} =\begin{bmatrix}e^{x^{(1)}}\\0\\\vdots\\0\end{bmatrix}\\ 因此,\\ \frac{\partial e^x}{\partial x} &=\begin{bmatrix} e^{x^{(1)}}&0&\cdots&0\\ 0&e^{x^{(2)}}&\cdots&0\\ \vdots&\vdots&&\vdots\\ 0&0&\cdots&e^{x^{(K)}} \end{bmatrix} =diag(e^{x}) \end{aligned}
∂x∂ex其中,∂x∂ex(1)因此,∂x∂ex=∂x∂
ex(1)⋮ex(K)
=
∂x∂ex(1)⋮∂x∂ex(K)
=
∂x(1)∂ex(1)⋮∂x(K)∂ex(1)
=
ex(1)0⋮0
=
ex(1)0⋮00ex(2)⋮0⋯⋯⋯00⋮ex(K)
=diag(ex)
此外,
∂
(
1
K
T
e
x
)
∂
x
=
1
K
T
d
i
a
g
(
e
x
)
=
(
e
x
)
T
\frac{\partial(1_K^Te^x)}{\partial x}=1_K^Tdiag(e^x)=(e^x)^T
∂x∂(1KTex)=1KTdiag(ex)=(ex)T,且
(
1
K
T
e
x
)
T
=
(
e
x
)
T
1
K
=
1
K
T
e
x
(1_K^Te^x)^T=(e^x)^T1_K=1_K^Te^x
(1KTex)T=(ex)T1K=1KTex
然后记
z
=
W
T
x
=
[
w
1
T
x
⋯
w
c
T
x
]
z=W^Tx=\begin{bmatrix}w_1^Tx&\cdots&w_c^Tx\end{bmatrix}
z=WTx=[w1Tx⋯wcTx],则:
∂
z
∂
w
c
=
[
∂
w
1
T
x
∂
w
c
⋯
∂
w
c
T
∂
w
c
]
=
[
0
0
⋯
x
⋯
0
]
≜
M
c
(
x
)
\frac{\partial z}{\partial w_c}=\begin{bmatrix}\frac{\partial w_1^Tx}{\partial w_c}&\cdots&\frac{\partial w_c^T}{\partial w_c}\end{bmatrix}=\begin{bmatrix}0&0&\cdots&x&\cdots&0\end{bmatrix}\triangleq\mathbb{M}_c(x)
∂wc∂z=[∂wc∂w1Tx⋯∂wc∂wcT]=[00⋯x⋯0]≜Mc(x)
对于单个样本的梯度:
∂
L
(
n
)
(
W
)
∂
W
=
−
∂
∂
w
c
(
(
y
(
n
)
)
T
log
y
^
(
n
)
)
=
−
∂
log
y
^
(
n
)
∂
w
c
y
(
n
)
=
−
∂
log
y
^
(
n
)
∂
y
^
(
n
)
∂
y
^
(
n
)
∂
z
∂
z
∂
w
c
T
y
(
n
)
=
−
M
c
(
x
(
n
)
)
(
d
i
a
g
(
y
^
(
n
)
)
−
y
^
(
n
)
(
y
^
(
n
)
)
T
)
(
d
i
a
g
(
y
^
(
n
)
)
−
1
)
y
(
n
)
=
−
M
c
(
x
(
n
)
)
(
I
−
y
^
(
n
)
(
y
^
(
n
)
)
T
(
d
i
a
g
(
y
^
(
n
)
)
−
1
)
)
y
(
n
)
=
−
M
c
(
x
(
n
)
)
(
y
(
n
)
−
y
^
(
n
)
1
C
T
y
(
n
)
)
=
−
M
c
(
x
(
n
)
)
(
y
(
n
)
−
y
^
(
n
)
)
=
−
x
(
n
)
[
y
(
n
)
−
y
^
(
n
)
]
c
\begin{aligned} \frac{\partial\mathcal{L}^{(n)}(W)}{\partial W} &=-\frac{\partial}{\partial w_c}((y^{(n)})^T\log\hat{y}^{(n)})\\ &=-\frac{\partial\log\hat{y}^{(n)}}{\partial w_c}y^{(n)}\\ &=-\frac{\partial\log\hat{y}^{(n)}}{\partial\hat{y}^{(n)}}\frac{\partial\hat{y}^{(n)}}{\partial z}\frac{\partial z}{\partial w_c^T}y^{(n)}\\ &=-\mathbb{M}_c(x^{(n)})(diag(\hat{y}^{(n)})-\hat{y}^{(n)}(\hat{y}^{(n)})^T)(diag(\hat{y}^{(n)})^{-1})y^{(n)}\\ &=-\mathbb{M}_c(x^{(n)})(I-\hat{y}^{(n)}(\hat{y}^{(n)})^T(diag(\hat{y}^{(n)})^{-1}))y^{(n)}\\ &=-\mathbb{M}_c(x^{(n)})(y^{(n)}-\hat{y}^{(n)}1_C^Ty^{(n)})\\ &=-\mathbb{M}_c(x^{(n)})(y^{(n)}-\hat{y}^{(n)})\\ &=-x^{(n)}[y^{(n)}-\hat{y}^{(n)}]_c \end{aligned}
∂W∂L(n)(W)=−∂wc∂((y(n))Tlogy^(n))=−∂wc∂logy^(n)y(n)=−∂y^(n)∂logy^(n)∂z∂y^(n)∂wcT∂zy(n)=−Mc(x(n))(diag(y^(n))−y^(n)(y^(n))T)(diag(y^(n))−1)y(n)=−Mc(x(n))(I−y^(n)(y^(n))T(diag(y^(n))−1))y(n)=−Mc(x(n))(y(n)−y^(n)1CTy(n))=−Mc(x(n))(y(n)−y^(n))=−x(n)[y(n)−y^(n)]c
梯度下降过程:
W
t
+
1
←
W
t
+
α
(
1
N
∑
n
=
1
N
x
(
n
)
(
y
(
n
)
−
y
^
(
n
)
)
T
)
W_t+1\leftarrow W_t+\alpha(\frac{1}{N}\sum_{n=1}^Nx^{(n)}(y^{(n)}-\hat{y}^{(n)})^T)
Wt+1←Wt+α(N1n=1∑Nx(n)(y(n)−y^(n))T)