《动手学深度学习 Pytorch版》 3.4 softmax回归

3.4.1 分类问题

整节理论知识,详见书本。

3.4.2 网络架构

整节理论知识,详见书本。

3.4.3 全连接层的参数开销

整节理论知识,详见书本。

3.4.4 softmax运算

整节理论知识,详见书本。

3.4.5 小批量样本的向量化

整节理论知识,详见书本。

3.4.6 损失函数

整节理论知识,详见书本。

3.4.7 信息论基础

整节理论知识,详见书本。

以下为结合视频《“交叉熵”如何做损失函数?打包理解“信息量”、“比特”、“熵”、“KL散度”、“交叉熵”》对交叉熵的理解:

  1. 为什么香农要把信息量定义为 − 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)

  2. 何为熵?

    熵的定义式如下:
    H ( P ) = ∑ j − P ( j ) log ⁡ P ( j ) H(P)=\sum_j-P(j)\log P(j) H(P)=jP(j)logP(j)

    显而易见, 熵 = ∑ j 概率 × 信息量 熵=\sum_j概率\times信息量 =j概率×信息量,也就是说熵实际上就是事件信息量的期望。

  3. 什么是交叉熵?为什么交叉熵能当损失函数?

    为了计量的是真实值与估计值之间的差距,在这里自然的使用真实值与估计值的信息量的均差,称之为 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(yy^)=j=1qyj(f(y^j)f(yj))=j=1qyj((logy^j)(logyj))=j=1qyj(logy^j)j=1qyj(logyj)=交叉熵

    吉布斯不等式知,KL 散度的前项一定大于后向,即 D K L ( y ∣ y ^ ) ≥ 0 D_{KL}(y|\hat{y})\ge0 DKL(yy^)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 ojl(y,y^)=k=1qexp(ok)exp(oj)yj=softmax(o)jyj

则二阶导为:
∂ 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} oj22l(y,y^)=ojk=1qexp(ok)exp(oj)yj=(k=1qexp(ok))2exp(oj)k=1qexp(ok)exp2(oj)0=k=1qexp(ok)exp(oj)(1k=1qexp(ok)exp(oj))=softmax(o)j(1softmax(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=1qsoftmax(o)j=q1j=1qk=1qexp(ok)exp(oj)=q1k=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=1q(softmax(o)jsoftmax(o))2=q1[(softmax(o)1q1)2+(softmax(o)2q1)2++(softmax(o)qq1)2]=q1(q1+j=1qsoftmax2(o)jq2j=1qsoftmax(o)j)=q1(q1q2+j=1qsoftmax2(o)j)=q21+q1j=1qsoftmax2(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=1qsoftmax2(o)j=q21q1(1j=1qsoftmax2(o)j)+q1=q21q1(j=1qsoftmax(o)jj=1qsoftmax2(o)j)+q1=q21q1j=1q(softmax(o)jsoftmax2(o)j)+q1=q2q1q1j=1qoj22l(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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值