3.4.1 分类问题
整节理论知识,详见书本。
3.4.2 网络架构
整节理论知识,详见书本。
3.4.3 全连接层的参数开销
整节理论知识,详见书本。
3.4.4 softmax运算
整节理论知识,详见书本。
3.4.5 小批量样本的向量化
整节理论知识,详见书本。
3.4.6 损失函数
整节理论知识,详见书本。
3.4.7 信息论基础
整节理论知识,详见书本。
以下为结合视频《“交叉熵”如何做损失函数?打包理解“信息量”、“比特”、“熵”、“KL散度”、“交叉熵”》对交叉熵的理解:
-
为什么香农要把信息量定义为 − log P ( j ) -\log P(j) −logP(j)?
香农如此定义当然并非一时兴起。
假设有一事件的概率为 P P P,该事件可拆分为两个小事件,这两个小事件的概率分别为 P 1 P_1 P1 和 P 2 P_2 P2。那么显然 P = P 1 × P 2 P=P_1\times P_2 P=P1×P2。
我们假设信息量为 f ( P ( j ) ) f(P(j)) f(P(j))(自变量为概率),则为了保持量纲需要满足 f ( P ) = f ( P 1 ) + f ( P 2 ) f(P)=f(P_1)+f(P_2) f(P)=f(P1)+f(P2)。
为了满足以上两个式子,顺理成章的想到给 f ( P ( j ) ) f(P(j)) f(P(j)) 应该是对数运算,即 f ( P ( j ) ) = log ( P ( j ) ) f(P(j))=\log(P(j)) f(P(j))=log(P(j))。
又为了满足概率越大信息量越小的直观感受,可在给对数运算取负值,至此即得出信息量的定义 f ( P ( j ) ) = − log P ( j ) f(P(j))=-\log P(j) f(P(j))=−logP(j)。
-
何为熵?
熵的定义式如下:
H ( P ) = ∑ j − P ( j ) log P ( j ) H(P)=\sum_j-P(j)\log P(j) H(P)=j∑−P(j)logP(j)显而易见, 熵 = ∑ j 概率 × 信息量 熵=\sum_j概率\times信息量 熵=∑j概率×信息量,也就是说熵实际上就是事件信息量的期望。
-
什么是交叉熵?为什么交叉熵能当损失函数?
为了计量的是真实值与估计值之间的差距,在这里自然的使用真实值与估计值的信息量的均差,称之为 KL 散度:
D K L ( y ∣ y ^ ) = ∑ j = 1 q y j ( f ( y ^ j ) − f ( y j ) ) = ∑ j = 1 q y j ( ( − log y ^ j ) − ( − log y j ) ) = ∑ j = 1 q y j ( − log y ^ j ) − ∑ j = 1 q y j ( − log y j ) = 交叉熵 − 熵 \begin{align} D_{KL}(y|\hat{y})&=\sum_{j=1}^q y_j(f(\hat{y}_j)-f(y_j))\\ &=\sum_{j=1}^q y_j((-\log\hat{y}_j)-(-\log y_j))\\ &=\sum_{j=1}^q y_j(-\log\hat{y}_j)-\sum_{j=1}^q y_j(-\log y_j)\\ &=交叉熵-熵 \end{align} DKL(y∣y^)=j=1∑qyj(f(y^j)−f(yj))=j=1∑qyj((−logy^j)−(−logyj))=j=1∑qyj(−logy^j)−j=1∑qyj(−logyj)=交叉熵−熵由吉布斯不等式知,KL 散度的前项一定大于后向,即 D K L ( y ∣ y ^ ) ≥ 0 D_{KL}(y|\hat{y})\ge0 DKL(y∣y^)≥0。
因此便可以取交叉熵作为真实值与估计值之间的差距,且最小化交叉熵即可最小化损失。
3.4.8 模型预测和评估
整节理论知识,详见书本。
练习
(1)我们可以更深入地探讨指数族与 softmax 之间的联系。
a. 计算 softmax 交叉熵损失 l ( y , y ^ ) l(\boldsymbol{y},\hat{\boldsymbol{y}}) l(y,y^) 的二阶导数。
b. 计算 s o f t m a x ( o ) \mathrm{softmax}(\boldsymbol{o}) softmax(o) 给出的分布方差,并与上面计算的二阶导数匹配。
a. 由 3.5.6 2 知道:
∂
l
(
y
,
y
^
)
∂
o
j
=
exp
(
o
j
)
∑
k
=
1
q
exp
(
o
k
)
−
y
j
=
s
o
f
t
m
a
x
(
o
)
j
−
y
j
\frac{\partial l(\boldsymbol{y},\hat{\boldsymbol{y}})}{\partial o_j}=\frac{\exp(o_j)}{\sum^q_{k=1}\exp(o_k)}-y_j=\mathrm{softmax}(\boldsymbol{o})_j-y_j
∂oj∂l(y,y^)=∑k=1qexp(ok)exp(oj)−yj=softmax(o)j−yj
则二阶导为:
∂
2
l
(
y
,
y
^
)
∂
o
j
2
=
∂
exp
(
o
j
)
∑
k
=
1
q
exp
(
o
k
)
−
y
j
∂
o
j
=
exp
(
o
j
)
∑
k
=
1
q
exp
(
o
k
)
−
exp
2
(
o
j
)
(
∑
k
=
1
q
exp
(
o
k
)
)
2
−
0
=
exp
(
o
j
)
∑
k
=
1
q
exp
(
o
k
)
(
1
−
exp
(
o
j
)
∑
k
=
1
q
exp
(
o
k
)
)
=
s
o
f
t
m
a
x
(
o
)
j
(
1
−
s
o
f
t
m
a
x
(
o
)
j
)
\begin{align} \frac{\partial^2 l(\boldsymbol{y},\hat{\boldsymbol{y}})}{\partial o_j^2}&=\frac{\partial \frac{\exp(o_j)}{\sum^q_{k=1}\exp(o_k)}-y_j}{\partial o_j}\\ &=\frac{\exp(o_j)\sum^q_{k=1}\exp(o_k)-\exp^2(o_j)}{(\sum^q_{k=1}\exp(o_k))^2}-0\\ &=\frac{\exp(o_j)}{\sum^q_{k=1}\exp(o_k)}(1-\frac{\exp(o_j)}{\sum^q_{k=1}\exp(o_k)})\\ &=\mathrm{softmax}(\boldsymbol{o})_j(1-\mathrm{softmax}(\boldsymbol{o})_j) \end{align}
∂oj2∂2l(y,y^)=∂oj∂∑k=1qexp(ok)exp(oj)−yj=(∑k=1qexp(ok))2exp(oj)∑k=1qexp(ok)−exp2(oj)−0=∑k=1qexp(ok)exp(oj)(1−∑k=1qexp(ok)exp(oj))=softmax(o)j(1−softmax(o)j)
b.先求均值:
s
o
f
t
m
a
x
(
o
)
‾
=
1
q
∑
j
=
1
q
s
o
f
t
m
a
x
(
o
)
j
=
1
q
∑
j
=
1
q
exp
(
o
j
)
∑
k
=
1
q
exp
(
o
k
)
=
1
q
∑
j
=
1
q
exp
(
o
j
)
∑
k
=
1
q
exp
(
o
k
)
=
1
q
\begin{align} \overline{\mathrm{softmax}(\boldsymbol{o})}&=\frac{1}{q}\sum^q_{j=1}\mathrm{softmax}(\boldsymbol{o})_j\\ &=\frac{1}{q}\sum^q_{j=1}\frac{\exp(o_j)}{\sum^q_{k=1}\exp(o_k)}\\ &=\frac{1}{q}\frac{\sum^q_{j=1}\exp(o_j)}{\sum^q_{k=1}\exp(o_k)}\\ &=\frac{1}{q} \end{align}
softmax(o)=q1j=1∑qsoftmax(o)j=q1j=1∑q∑k=1qexp(ok)exp(oj)=q1∑k=1qexp(ok)∑j=1qexp(oj)=q1
方差为:
V
a
r
(
o
)
=
1
q
∑
j
=
1
q
(
s
o
f
t
m
a
x
(
o
)
j
−
s
o
f
t
m
a
x
(
o
)
‾
)
2
=
1
q
[
(
s
o
f
t
m
a
x
(
o
)
1
−
1
q
)
2
+
(
s
o
f
t
m
a
x
(
o
)
2
−
1
q
)
2
+
⋯
+
(
s
o
f
t
m
a
x
(
o
)
q
−
1
q
)
2
]
=
1
q
(
1
q
+
∑
j
=
1
q
s
o
f
t
m
a
x
2
(
o
)
j
−
2
q
∑
j
=
1
q
s
o
f
t
m
a
x
(
o
)
j
)
=
1
q
(
1
q
−
2
q
+
∑
j
=
1
q
s
o
f
t
m
a
x
2
(
o
)
j
)
=
−
1
q
2
+
1
q
∑
j
=
1
q
s
o
f
t
m
a
x
2
(
o
)
j
\begin{align} \mathrm{V\ ar}(o)&=\frac{1}{q}\sum^q_{j=1}(\mathrm{softmax}(\boldsymbol{o})_j-\overline{\mathrm{softmax}(\boldsymbol{o})})^2\\ &=\frac{1}{q}\left[(\mathrm{softmax}(\boldsymbol{o})_1-\frac{1}{q})^2+(\mathrm{softmax}(\boldsymbol{o})_2-\frac{1}{q})^2+\dots+(\mathrm{softmax}(\boldsymbol{o})_q-\frac{1}{q})^2\right]\\ &=\frac{1}{q}(\frac{1}{q}+\sum^q_{j=1}\mathrm{softmax}^2(\boldsymbol{o})_j-\frac{2}{q}\sum^q_{j=1}\mathrm{softmax}(\boldsymbol{o})_j)\\ &=\frac{1}{q}(\frac{1}{q}-\frac{2}{q}+\sum^q_{j=1}\mathrm{softmax}^2(\boldsymbol{o})_j)\\ &=-\frac{1}{q^2}+\frac{1}{q}\sum^q_{j=1}\mathrm{softmax}^2(\boldsymbol{o})_j \end{align}
V ar(o)=q1j=1∑q(softmax(o)j−softmax(o))2=q1[(softmax(o)1−q1)2+(softmax(o)2−q1)2+⋯+(softmax(o)q−q1)2]=q1(q1+j=1∑qsoftmax2(o)j−q2j=1∑qsoftmax(o)j)=q1(q1−q2+j=1∑qsoftmax2(o)j)=−q21+q1j=1∑qsoftmax2(o)j
上式与二阶导数式匹配为:
V
a
r
(
o
)
=
−
1
q
2
+
1
q
∑
j
=
1
q
s
o
f
t
m
a
x
2
(
o
)
j
=
−
1
q
2
−
1
q
(
1
−
∑
j
=
1
q
s
o
f
t
m
a
x
2
(
o
)
j
)
+
1
q
=
−
1
q
2
−
1
q
(
∑
j
=
1
q
s
o
f
t
m
a
x
(
o
)
j
−
∑
j
=
1
q
s
o
f
t
m
a
x
2
(
o
)
j
)
+
1
q
=
−
1
q
2
−
1
q
∑
j
=
1
q
(
s
o
f
t
m
a
x
(
o
)
j
−
s
o
f
t
m
a
x
2
(
o
)
j
)
+
1
q
=
q
−
1
q
2
−
1
q
∑
j
=
1
q
∂
2
l
(
y
,
y
^
)
∂
o
j
2
\begin{align} \mathrm{V\ ar}(o)&=-\frac{1}{q^2}+\frac{1}{q}\sum^q_{j=1}\mathrm{softmax}^2(\boldsymbol{o})_j\\ &=-\frac{1}{q^2}-\frac{1}{q}(1-\sum^q_{j=1}\mathrm{softmax}^2(\boldsymbol{o})_j)+\frac{1}{q}\\ &=-\frac{1}{q^2}-\frac{1}{q}(\sum^q_{j=1}\mathrm{softmax}(\boldsymbol{o})_j-\sum^q_{j=1}\mathrm{softmax}^2(\boldsymbol{o})_j)+\frac{1}{q}\\ &=-\frac{1}{q^2}-\frac{1}{q}\sum^q_{j=1}(\mathrm{softmax}(\boldsymbol{o})_j-\mathrm{softmax}^2(\boldsymbol{o})_j)+\frac{1}{q}\\ &=\frac{q-1}{q^2}-\frac{1}{q}\sum^q_{j=1}\frac{\partial^2 l(\boldsymbol{y},\hat{\boldsymbol{y}})}{\partial o_j^2}\\ \end{align}
V ar(o)=−q21+q1j=1∑qsoftmax2(o)j=−q21−q1(1−j=1∑qsoftmax2(o)j)+q1=−q21−q1(j=1∑qsoftmax(o)j−j=1∑qsoftmax2(o)j)+q1=−q21−q1j=1∑q(softmax(o)j−softmax2(o)j)+q1=q2q−1−q1j=1∑q∂oj2∂2l(y,y^)
(2)假设我们有3个类别出现的的概率相等,即概率向量是 ( 1 3 , 1 3 , 1 3 ) \left(\frac{1}{3}, \frac{1}{3}, \frac{1}{3}\right) (31,31,31)。
a. 如果我们尝试为它设计二进制代码,有什么问题?
b. 请设计一个更好的代码。(提示:如果我们尝试为两个独立的观测结果编码会发生什么,如果我们为 n n n 个观测值联合编码怎么办?)
a. 3不是2的幂,用两位二进制编码则会浪费一个编码,这样后面就会很麻烦。
b. 如 3.4.1 所述,可使用独热编码,即分别使用 100、010 和 001 代表上述三个类别。
(3)softmax 是对上面介绍的映射的误称(虽然深度学习领域很多人都使用这个名字)。真正的 softmax 被定义为 R e a k S i f t M a x ( a , b ) = log ( exp ( a ) + exp ( b ) ) \mathrm{ReakSiftMax}(a,b)=\log(\exp(a)+\exp(b)) ReakSiftMax(a,b)=log(exp(a)+exp(b))。
a. 证明 R e a k S i f t M a x ( a , b ) > max ( a , b ) \mathrm{ReakSiftMax}(a,b)>\max(a,b) ReakSiftMax(a,b)>max(a,b)
b. 证明 λ − 1 R e a k S i f t M a x ( λ a , λ b ) > max ( a , b ) \lambda^{-1}\mathrm{ReakSiftMax}(\lambda a,\lambda b)>\max(a,b) λ−1ReakSiftMax(λa,λb)>max(a,b) 成立,前提是 λ > 0 \lambda>0 λ>0
c. 证明对于 λ → ∞ \lambda\to\infty λ→∞,有 λ − 1 R e a k S i f t M a x ( λ a , λ b ) → max ( a , b ) \lambda^{-1}\mathrm{ReakSiftMax}(\lambda a,\lambda b)\to\max(a,b) λ−1ReakSiftMax(λa,λb)→max(a,b)。
d. sofrmax 会是什么样子?
e. 将其扩展到两个以上的数字。
a. R e a k S i f t M a x ( a , b ) = log ( exp ( a ) + exp ( b ) ) > log ( exp ( max ( a , b ) ) ) = max ( a , b ) \mathrm{ReakSiftMax}(a,b)=\log(\exp(a)+\exp(b))>\log(\exp(\max(a,b)))=\max(a,b) ReakSiftMax(a,b)=log(exp(a)+exp(b))>log(exp(max(a,b)))=max(a,b)
b. 若
λ
>
0
\lambda>0
λ>0 则:
λ
−
1
R
e
a
k
S
i
f
t
M
a
x
(
λ
a
,
λ
b
)
=
λ
−
1
log
(
exp
(
λ
a
)
+
exp
(
λ
b
)
)
>
λ
−
1
log
(
exp
(
max
(
λ
a
,
λ
b
)
)
)
=
λ
−
1
max
(
λ
a
,
λ
b
)
=
λ
−
1
λ
max
(
a
,
b
)
=
max
(
a
,
b
)
\begin{align} \lambda^{-1}\mathrm{ReakSiftMax}(\lambda a,\lambda b)=\lambda^{-1}\log(\exp(\lambda a)+\exp(\lambda b))>\lambda^{-1}\log(\exp(\max(\lambda a,\lambda b)))&=\lambda^{-1}\max(\lambda a,\lambda b)\\ &=\lambda^{-1}\lambda\max(a,b)\\ &=\max(a,b) \end{align}
λ−1ReakSiftMax(λa,λb)=λ−1log(exp(λa)+exp(λb))>λ−1log(exp(max(λa,λb)))=λ−1max(λa,λb)=λ−1λmax(a,b)=max(a,b)
若
λ
<
0
\lambda<0
λ<0 则:
λ
−
1
R
e
a
k
S
i
f
t
M
a
x
(
λ
a
,
λ
b
)
=
λ
−
1
log
(
exp
(
λ
a
)
+
exp
(
λ
b
)
)
<
λ
−
1
log
(
exp
(
min
(
λ
a
,
λ
b
)
)
)
=
λ
−
1
min
(
λ
a
,
λ
b
)
=
λ
−
1
λ
max
(
a
,
b
)
=
max
(
a
,
b
)
\begin{align} \lambda^{-1}\mathrm{ReakSiftMax}(\lambda a,\lambda b)=\lambda^{-1}\log(\exp(\lambda a)+\exp(\lambda b))<\lambda^{-1}\log(\exp(\min(\lambda a,\lambda b)))&=\lambda^{-1}\min(\lambda a,\lambda b)\\ &=\lambda^{-1}\lambda\max(a,b)\\ &=\max(a,b) \end{align}
λ−1ReakSiftMax(λa,λb)=λ−1log(exp(λa)+exp(λb))<λ−1log(exp(min(λa,λb)))=λ−1min(λa,λb)=λ−1λmax(a,b)=max(a,b)
c. 若
a
≠
b
a\ne b
a=b,则:
lim
λ
→
∞
exp
(
max
(
λ
a
,
λ
b
)
)
≫
lim
λ
→
∞
exp
(
min
(
λ
a
,
λ
b
)
)
\lim_{\lambda\to\infty}\exp(\max(\lambda a,\lambda b))\gg\lim_{\lambda\to\infty}\exp(\min(\lambda a,\lambda b))
λ→∞limexp(max(λa,λb))≫λ→∞limexp(min(λa,λb))
故:
lim
λ
→
∞
λ
−
1
R
e
a
k
S
i
f
t
M
a
x
(
λ
a
,
λ
b
)
=
lim
λ
→
∞
λ
−
1
log
(
exp
(
λ
a
)
+
exp
(
λ
b
)
)
=
lim
λ
→
∞
λ
−
1
log
(
exp
(
max
(
λ
a
,
λ
b
)
)
)
=
lim
λ
→
∞
λ
−
1
max
(
λ
a
,
λ
b
)
=
lim
λ
→
∞
λ
−
1
λ
max
(
a
,
b
)
=
max
(
a
,
b
)
\begin{align} \lim_{\lambda\to\infty}\lambda^{-1}\mathrm{ReakSiftMax}(\lambda a,\lambda b)&=\lim_{\lambda\to\infty}\lambda^{-1}\log(\exp(\lambda a)+\exp(\lambda b))\\ &=\lim_{\lambda\to\infty}\lambda^{-1}\log(\exp(\max(\lambda a,\lambda b)))\\ &=\lim_{\lambda\to\infty}\lambda^{-1}\max(\lambda a,\lambda b)\\ &=\lim_{\lambda\to\infty}\lambda^{-1}\lambda \max(a,b)\\ &=\max(a,b) \end{align}
λ→∞limλ−1ReakSiftMax(λa,λb)=λ→∞limλ−1log(exp(λa)+exp(λb))=λ→∞limλ−1log(exp(max(λa,λb)))=λ→∞limλ−1max(λa,λb)=λ→∞limλ−1λmax(a,b)=max(a,b)
若
a
=
b
a= b
a=b,则:
lim
λ
→
∞
λ
−
1
R
e
a
k
S
i
f
t
M
a
x
(
λ
a
,
λ
b
)
=
lim
λ
→
∞
λ
−
1
log
(
exp
(
λ
a
)
+
exp
(
λ
b
)
)
=
lim
λ
→
∞
λ
−
1
log
(
2
exp
(
max
(
λ
a
,
λ
b
)
)
)
=
lim
λ
→
∞
λ
−
1
[
max
(
λ
a
,
λ
b
)
+
log
2
]
=
lim
λ
→
∞
[
λ
−
1
λ
max
(
a
,
b
)
+
λ
−
1
log
2
]
=
max
(
a
,
b
)
+
0
=
max
(
a
,
b
)
\begin{align} \lim_{\lambda\to\infty}\lambda^{-1}\mathrm{ReakSiftMax}(\lambda a,\lambda b)&=\lim_{\lambda\to\infty}\lambda^{-1}\log(\exp(\lambda a)+\exp(\lambda b))\\ &=\lim_{\lambda\to\infty}\lambda^{-1}\log(2\exp(\max(\lambda a,\lambda b)))\\ &=\lim_{\lambda\to\infty}\lambda^{-1}[\max(\lambda a,\lambda b)+\log2]\\ &=\lim_{\lambda\to\infty}[\lambda^{-1}\lambda \max(a,b)+\lambda^{-1}\log2]\\ &=\max(a,b)+0\\ &=\max(a,b) \end{align}
λ→∞limλ−1ReakSiftMax(λa,λb)=λ→∞limλ−1log(exp(λa)+exp(λb))=λ→∞limλ−1log(2exp(max(λa,λb)))=λ→∞limλ−1[max(λa,λb)+log2]=λ→∞lim[λ−1λmax(a,b)+λ−1log2]=max(a,b)+0=max(a,b)
d.
s
o
f
t
m
i
n
(
o
)
j
=
s
o
f
t
m
a
x
(
−
o
)
j
\mathrm{softmin}(\boldsymbol{o})_j=\mathrm{softmax}(-\boldsymbol{o})_j
softmin(o)j=softmax(−o)j,故softmin 长这个样子:
s
o
f
t
m
i
n
(
o
)
j
=
exp
(
−
o
j
)
∑
k
=
1
q
exp
(
−
o
k
)
\mathrm{softmin}(\boldsymbol{o})_j=\frac{\exp(-o_j)}{\sum^q_{k=1}\exp(-o_k)}
softmin(o)j=∑k=1qexp(−ok)exp(−oj)
详细参见官方文档 SOFTMIN
e. 扩展到 n 个参数为:
R
e
a
k
S
i
f
t
M
a
x
(
x
1
,
x
2
…
,
x
n
)
=
log
(
exp
(
x
1
)
+
exp
(
x
2
)
+
⋯
+
exp
(
x
n
)
)
\mathrm{ReakSiftMax}(x_1,x_2\dots,x_n)=\log(\exp(x_1)+\exp(x_2)+\dots+\exp(x_n))
ReakSiftMax(x1,x2…,xn)=log(exp(x1)+exp(x2)+⋯+exp(xn))