文章目录
将神经网络应用到多类分类问题中时,输出层的形式不能用logistic函数(sigmoid激活函数),而应该推广到softmax函数。二分类问题与多分类问题的神经网络模型的最大区别就是输出层。因此下面重点讲解softmax函数的原理。
1. Softmax回归详解
在softmax回归中,我们解决的是多分类问题(相对于logistic回归解决的二分类问题),标记
y
y
y可以取
k
k
k个不同的值。对于训练集
{
(
x
(
1
)
,
y
(
1
)
)
,
⋯
,
(
x
(
m
)
,
y
(
m
)
)
}
\{(x^{(1)},y^{(1)}),\cdots,(x^{(m)},y^{(m)})\}
{(x(1),y(1)),⋯,(x(m),y(m))},我们有
y
(
j
)
∈
{
1
,
2
,
⋯
,
k
}
y^{(j)}\in \{1,2,\cdots,k\}
y(j)∈{1,2,⋯,k}。
对于给定的测试输入
x
x
x,我们想用假设函数针对每一个类别
j
j
j估算出概率值
P
(
y
=
j
∣
x
)
P(y=j|x)
P(y=j∣x)。因此,我们的假设函数要输出一个
k
k
k维的向量(向量元素的和为1)来表示
k
k
k个估计的概率值。我们采用如下形式的假设函数
h
θ
(
x
)
h_{\theta}(x)
hθ(x):
h
θ
(
x
(
i
)
)
=
[
P
(
y
(
i
)
=
1
∣
x
(
i
)
;
θ
)
P
(
y
(
i
)
=
2
∣
x
(
i
)
;
θ
)
⋮
P
(
y
(
i
)
=
10
∣
x
(
i
)
;
θ
)
]
=
1
∑
j
=
1
k
e
θ
j
T
x
(
i
)
[
e
θ
1
T
x
(
i
)
e
θ
2
T
x
(
i
)
⋮
e
θ
k
T
x
(
i
)
]
(1-1)
\begin{aligned} h_{\theta}(x^{(i)})&= \begin{bmatrix} P(y^{(i)}=1|x^{(i)};\theta) \\ P(y^{(i)}=2|x^{(i)};\theta) \\ \vdots \\ P(y^{(i)}=10|x^{(i)};\theta) \end{bmatrix} \\ &=\frac{1}{\sum_{j=1}^ke^{\theta_j^Tx^{(i)}}} \begin{bmatrix} e^{\theta_1^Tx^{(i)}} \\ e^{\theta_2^Tx^{(i)}} \\ \vdots \\ e^{\theta_k^Tx^{(i)}} \end{bmatrix} \\ \tag{1-1} \end{aligned}
hθ(x(i))=⎣⎢⎢⎢⎡P(y(i)=1∣x(i);θ)P(y(i)=2∣x(i);θ)⋮P(y(i)=10∣x(i);θ)⎦⎥⎥⎥⎤=∑j=1keθjTx(i)1⎣⎢⎢⎢⎢⎡eθ1Tx(i)eθ2Tx(i)⋮eθkTx(i)⎦⎥⎥⎥⎥⎤(1-1)
假设输入向量
x
x
x的维数为
n
n
n,则参数
θ
\theta
θ是一个
k
×
(
n
+
1
)
k\times (n+1)
k×(n+1)的参数矩阵,之所以是
n
+
1
n+1
n+1是因为把截距项
b
b
b表示成了
θ
0
×
x
0
\theta_0\times x_0
θ0×x0,其中
x
0
=
1
x_0=1
x0=1是一个人工辅助变量。
利用极大似然估计的方法,可以得到每一类的后验概率表达式:
P
(
y
(
i
)
∣
x
(
i
)
;
θ
)
=
∏
j
=
1
k
{
e
θ
j
T
x
(
i
)
∑
l
=
1
k
e
θ
l
T
x
(
i
)
}
1
(
y
(
i
)
=
j
)
(1-2)
P(y^{(i)}|x^{(i)};\theta)=\prod_{j=1}^k\left\{\frac{e^{\theta_j^Tx^{(i)}}}{\sum_{l=1}^ke^{\theta_l^Tx^{(i)}}}\right\}^{1(y^{(i)}=j)} \tag{1-2}
P(y(i)∣x(i);θ)=j=1∏k{∑l=1keθlTx(i)eθjTx(i)}1(y(i)=j)(1-2)
似然函数为:
L
(
θ
)
=
P
(
Y
∣
X
;
θ
)
=
∏
i
=
1
m
P
(
y
(
i
)
∣
x
(
i
)
;
θ
)
=
∏
i
=
1
m
∏
j
=
1
k
{
e
θ
j
T
x
(
i
)
∑
l
=
1
k
e
θ
l
T
x
(
i
)
}
1
(
y
(
i
)
=
j
)
(1-3)
\begin{aligned} L(\theta) &=P(\boldsymbol{Y}|\boldsymbol{X};\theta) \\ &=\prod_{i=1}^{m}P(y^{(i)}|x^{(i)};\theta) \\ &=\prod_{i=1}^{m}\prod_{j=1}^k\left\{\frac{e^{\theta_j^Tx^{(i)}}}{\sum_{l=1}^ke^{\theta_l^Tx^{(i)}}}\right\}^{1(y^{(i)}=j)}\\ \tag{1-3} \end{aligned}
L(θ)=P(Y∣X;θ)=i=1∏mP(y(i)∣x(i);θ)=i=1∏mj=1∏k{∑l=1keθlTx(i)eθjTx(i)}1(y(i)=j)(1-3)
对数似然函数为:
l
(
θ
)
=
log
L
(
θ
)
=
∑
i
=
1
m
∑
j
=
1
k
1
(
y
(
i
)
=
j
)
log
e
θ
j
T
x
(
i
)
∑
l
=
1
k
e
θ
l
T
x
(
i
)
(1-4)
\begin{aligned} l(\theta) &=\log L(\theta) \\ &=\sum_{i=1}^{m}\sum_{j=1}^k1(y^{(i)}=j)\log{\frac{e^{\theta_j^Tx^{(i)}}}{\sum_{l=1}^ke^{\theta_l^Tx^{(i)}}}}\\ \tag{1-4} \end{aligned}
l(θ)=logL(θ)=i=1∑mj=1∑k1(y(i)=j)log∑l=1keθlTx(i)eθjTx(i)(1-4)
上面的
(
1
−
4
)
(1-4)
(1−4)就是loss function。
cost function为:
J
(
θ
)
=
−
1
m
[
∑
i
=
1
m
∑
j
=
1
k
1
(
y
(
i
)
=
j
)
log
e
θ
j
T
x
(
i
)
∑
l
=
1
k
e
θ
l
T
x
(
i
)
]
(1-5)
J(\theta)=-\frac{1}{m}\left[\sum_{i=1}^{m}\sum_{j=1}^k1(y^{(i)}=j)\log{\frac{e^{\theta_j^Tx^{(i)}}}{\sum_{l=1}^ke^{\theta_l^Tx^{(i)}}}}\right] \tag{1-5}
J(θ)=−m1[i=1∑mj=1∑k1(y(i)=j)log∑l=1keθlTx(i)eθjTx(i)](1-5)
多分类问题的目标就是利用训练数据来训练模型参数
θ
\theta
θ使其能够最小化
(
1
−
5
)
(1-5)
(1−5)。
(
1
−
5
)
(1-5)
(1−5)是一个凸函数,可以利用梯度下降法得到全局最小值。