分类包含两种情况:1.我们只关心样本属于哪个列别(硬分类);2.我们希望得到样本属于每个类别的概率(软分类)。
3.4 softmax回归
3.4.1 分类问题
表示与类别之间的自然顺序无关的分类标签的方法:独热编码,类别对应的分量设置为1,其他所有分量设置为0。
3.4.2 网络架构
为了解决线性模型的分类问题,我们需要和输出一样多的仿射函数,每个输出对应于每个类别的条件概率。
通过向量形式表达运算过程为
o
=
W
x
+
b
\mathbf{o=Wx+b}
o=Wx+b
3.4.3 全连接层的参数开销
具有 d d d个输入和 q q q个输出的全连接层的参数开销为 O ( d q ) \mathcal{O} (dq) O(dq),可以将d个输入转换为q个输出的参数开销减少到 O ( d q n ) \mathcal{O}(\frac{dq}{n}) O(ndq),其中超参数 n n n可以由我们灵活指定。
3.4.4 softmax运算
softmax函数:1.能够将为规范化的预测变换为非负数并且总和为1;2.不会改变未规范化的预测之前的大小顺序;3.让模型保持可导的性质。
y
^
=
s
o
f
t
m
a
x
(
o
)
,其中
y
^
j
=
e
x
p
(
o
j
)
∑
k
e
x
p
(
o
j
)
\widehat{\mathbf{y}}=softmax(\mathbf{o}),其中\widehat{y} _{j} =\frac{exp(o _{j} )}{ {\textstyle \sum_{k}^{}}exp(o _{j}) }
y
=softmax(o),其中y
j=∑kexp(oj)exp(oj)
且
a
r
g
m
a
x
j
y
^
j
=
a
r
g
m
a
x
j
o
j
\underset{j}{argmax}\ \widehat{y}_{j} = \underset{j}{argmax}\ o_{j}
jargmax y
j=jargmax oj
3.4.5 小批量样本的矢量化
为了提高计算下效率并且充分利用GPU,我们通常会对小批量样本的数据执行矢量计算。假设小批量样本的特征为
X
∈
R
n
×
d
\mathbf{X} \in R^{n\times d}
X∈Rn×d,权重为
W
∈
R
d
×
q
\mathbf{W} \in R^{d\times q}
W∈Rd×q,偏置为
b
∈
R
1
×
q
\mathbf{b} \in R^{1\times q}
b∈R1×q。softmax回归的矢量计算表达式为:
O
=
X
W
+
b
\mathbf{O=XW+b}
O=XW+b
Y
^
=
s
o
f
t
m
a
x
(
O
)
\widehat{\mathbf{Y} } =softmax(\mathbf{O} )
Y
=softmax(O)
3.4.6 损失函数
3.4.6.1 对数似然
softmax函数给出了一个向量
y
^
\widehat{\mathbf{y} }
y
,我们可以将其视为“对给定任意输入
x
\mathbf{x}
x的每个类的条件概率”。假设整个数据集{X, Y}具有n个样本,则最大似然函数为:
P
(
Y
∣
X
)
=
∏
i
=
1
n
P
(
y
(
i
)
∣
x
(
i
)
)
P(Y|X)=\prod_{i=1}^{n} P(y^{(i)}|x^{(i)})
P(Y∣X)=i=1∏nP(y(i)∣x(i))
根据最大似然估计,我们最大化
P
(
Y
∣
X
)
P\mathbf{(Y|X)}
P(Y∣X),相当于最小化负对数似然:
−
l
o
g
P
(
Y
∣
X
)
=
∑
i
=
1
n
−
l
o
g
P
(
y
(
i
)
∣
x
(
i
)
)
=
∑
i
=
1
n
l
(
y
(
i
)
,
y
^
(
i
)
)
-logP\mathbf{(Y|X)}=\sum_{i=1}^{n}-logP(\mathbf{y} ^{(i)}|\mathbf{x} ^{(i)}) =\sum_{i=1}^{n}l(\mathbf{y} ^{(i)}, \mathbf{\widehat{y} } ^{(i)})
−logP(Y∣X)=i=1∑n−logP(y(i)∣x(i))=i=1∑nl(y(i),y
(i))
其中,对于任何标签
y
\mathbf{y}
y和模型预测
y
^
\widehat{\mathbf{y}}
y
,损失函数为:
l
(
y
,
y
^
)
=
−
∑
j
=
1
q
y
j
l
o
g
y
^
j
l(\mathbf{y} , \widehat{\mathbf{y}} )=-\sum_{j=1}^{q}y_{j} log\widehat{y} _{j }
l(y,y
)=−j=1∑qyjlogy
j
3.4.6.2 softmax及其导数
利用softmax的定义,我们得到:
l
(
y
,
y
^
)
=
−
∑
j
=
1
q
y
j
l
o
g
e
x
p
(
o
j
)
∑
k
=
1
q
e
x
p
(
o
k
)
=
∑
j
=
1
q
y
j
l
o
g
∑
k
=
1
q
e
x
p
(
o
k
)
−
∑
j
=
1
q
y
i
o
j
l(\mathbf{y} , \widehat{\mathbf{y} } )=-\sum_{j=1}^{q}y_{j}log\frac{exp(o_{j} )}{ {\textstyle \sum_{k=1}^{q}exp(o_{k} )} } \newline \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ = \sum_{j=1}^{q}y_{j}log\sum_{k=1}^{q}exp(o_{k})-\sum_{j=1}^{q}y_{i} o_{j}
l(y,y
)=−j=1∑qyjlog∑k=1qexp(ok)exp(oj) =j=1∑qyjlogk=1∑qexp(ok)−j=1∑qyioj
相对于任何未规范化的预测
o
j
o_{j}
oj的导数:
∂
o
j
l
(
y
,
y
^
)
=
e
x
p
(
o
j
)
∑
k
=
1
q
e
x
p
(
o
k
)
−
y
j
=
s
o
f
t
m
a
x
(
o
)
j
−
y
j
\partial_{ o_{j} } l(\mathbf{y,\widehat{y}} )=\frac{exp(o_{j} )}{ {\textstyle \sum_{k=1}^{q}}exp(o_{k} ) } -y_{j} = softmax(\mathbf{o} )_{j} -y_{j}
∂ojl(y,y
)=∑k=1qexp(ok)exp(oj)−yj=softmax(o)j−yj
3.4.7 信息论基础
3.4.7.1 熵
在信息论中,分布P的熵可以通过以下方程得到:
H
[
P
]
=
∑
j
−
P
(
j
)
l
o
g
P
(
j
)
H[P]=\sum_{j}^{}-P(j)logP(j)
H[P]=j∑−P(j)logP(j)
3.4.7.1 信息量
一个事件的信息量就是这个事件发生概率的负对数。概率越低,信息量越大。
I
(
j
)
=
l
o
g
1
P
(
j
)
=
−
l
o
g
(
P
(
j
)
)
I(j)=log\frac{1}{P(j)}=-log(P(j))
I(j)=logP(j)1=−log(P(j))
3.4.8 模型预测和评估
我们使用精度来评估模型的性能,精度等于正确预测数与预测总数之间的比率。