1.什么是softmax(激活函数)
softmax函数的形式如下:
P
(
i
)
=
exp
(
θ
i
T
x
)
∑
k
=
1
K
exp
(
θ
k
T
x
)
P(i)=\frac{\exp \left(\theta_{i}^{T} x\right)}{\sum_{k=1}^{K} \exp \left(\theta_{k}^{T} x\right)}
P(i)=∑k=1Kexp(θkTx)exp(θiTx)
它可以把一个数据映射到[0,1]之间,可以说就是取得这个数据的概率吧。
θ
\theta
θ是待求参数,要做的事情就是求出恰当的
θ
\theta
θ使
P
(
i
)
P(i)
P(i)的值最大啦。
(关于推导过程:是假设出一个
β
i
\beta_{i}
βi与样本值
x
x
x成正相关,即
β
i
=
θ
i
T
x
\beta_{i}=\theta_{i}^{T} x
βi=θiTx。所以所求出的值是一个估计值。在推导公式时,令
β
i
=
log
ϕ
i
ϕ
K
,
i
=
1
,
…
,
K
\beta_{i}=\log \frac{\phi_{i}}{\phi_{K}}, i=1, \ldots, K
βi=logϕKϕi,i=1,…,K,所以当概率密度函数真的为
log
ϕ
i
ϕ
K
\log \frac{\phi_{i}}{\phi_{K}}
logϕKϕi时,所求的概率为真实值。)
2.什么是交叉熵(损失函数)
熵:描述一个随机变量不确定性的数量,表示一个信源发送一个符号所提供的平均信息量。熵越大,正确估计这个随机变量的可能性就越小。
如果X是一个离散型随机变量,取值空间为R,其概率分布为
p
(
x
)
=
P
(
X
=
x
)
,
x
∈
R
p(x)=P(X=x),x \in \mathbf{R}
p(x)=P(X=x),x∈R。那么,X的熵
H
(
X
)
H(X)
H(X)定义为:
H
(
X
)
=
−
∑
x
∈
R
p
(
x
)
log
2
p
(
x
)
H(X)=-\sum_{x \in \mathbf{R}} p(x) \log _{2} p(x)
H(X)=−x∈R∑p(x)log2p(x)
相对熵(KL距离):衡量相同事件空间里两个概率分布相对差距。两个概率分布
p
(
x
)
p(x)
p(x)和
q
(
x
)
q(x)
q(x)的相对熵定义为:
D
(
p
∥
q
)
=
∑
x
∈
X
p
(
x
)
log
p
(
x
)
q
(
x
)
=
H
(
p
)
−
H
(
q
)
D(p \| q)=\sum_{x \in X} p(x) \log \frac{p(x)}{q(x)}=H(p)-H(q)
D(p∥q)=x∈X∑p(x)logq(x)p(x)=H(p)−H(q)
也就是说,如果p是真实分布,q是假设分布,相对熵就可以用来衡量q的无效性啦。
交叉熵:用来衡量估计模型和真实概率分布之间差异情况。
如果一个随机变量
X
,
q
(
x
)
X,q(x)
X,q(x)为用于近似
p
(
x
)
p(x)
p(x)的概率分布,那么,随机变量
X
X
X和模型
q
q
q之间的交叉熵定义为
H
(
X
,
q
)
=
H
(
X
)
+
D
(
p
∥
q
)
=
−
∑
x
p
(
x
)
log
q
(
x
)
=
E
p
(
log
1
q
(
x
)
)
\begin{aligned} H(X, q) &=H(X)+D(p \| q) \\ &=-\sum_{x} p(x) \log q(x) \\ &=E_{p}\left(\log \frac{1}{q(x)}\right) \end{aligned}
H(X,q)=H(X)+D(p∥q)=−x∑p(x)logq(x)=Ep(logq(x)1)
就和相对熵相差了一个
H
(
p
)
H(p)
H(p),都反映了
p
,
q
p,q
p,q的相似程度。
3.softmax网络工作流程
对损失函数求导,有
∂
L
o
s
s
i
∂
i
=
−
∂
ln
y
i
∂
i
=
∂
(
−
ln
e
i
∑
j
e
j
)
∂
i
=
−
1
e
i
∑
j
e
j
⋅
∂
(
e
i
∑
j
e
j
)
∂
i
=
−
∑
j
e
j
e
i
⋅
∂
(
1
−
∑
j
+
i
e
j
∑
j
e
j
)
∂
i
=
−
∑
j
e
j
e
i
⋅
(
−
∑
j
≠
i
e
j
)
⋅
∂
(
1
∑
j
e
j
)
∂
i
=
∑
j
e
j
⋅
∑
j
≠
i
e
j
e
i
⋅
−
e
i
(
∑
j
e
j
)
2
=
∑
j
≠
i
e
j
∑
j
e
j
=
−
(
1
−
e
i
∑
j
e
j
)
=
y
i
−
1
\begin{aligned} \frac{\partial L o s s_{i}}{\partial_{i}} &=-\frac{\partial \ln y_{i}}{\partial_{i}} \\ &=\frac{\partial\left(-\ln \frac{e^{i}}{\sum_{j} e^{j}}\right)}{\partial_{i}} \\ &=-\frac{1}{\frac{e^{i}}{\sum_{j} e^{j}}} \cdot \frac{\partial\left(\frac{e^{i}}{\sum_{j} e^{j}}\right)}{\partial_{i}} \\ &=-\frac{\sum_{j} e^{j}}{e^{i}} \cdot \frac{\partial\left(1-\frac{\sum_{j+i} e^{j}}{\sum_{j} e^{j}}\right)}{\partial_{i}} \\ &=-\frac{\sum_{j} e^{j}}{e^{i}} \cdot\left(-\sum_{j \neq i} e^{j}\right) \cdot \frac{\partial\left(\frac{1}{\sum_{j} e^{j}}\right)}{\partial_{i}} \\ &=\frac{\sum_{j} e^{j} \cdot \sum_{j \neq i} e^{j}}{e^{i}} \cdot \frac{-e^{i}}{\left(\sum_{j} e^{j}\right)^{2}} \\ &=\frac{\sum_{j \neq i} e^{j}}{\sum_{j} e^{j}} \\ &=-\left(1-\frac{e^{i}}{\sum_{j} e^{j}}\right) \\ &=y_{i}-1 \end{aligned}
∂i∂Lossi=−∂i∂lnyi=∂i∂(−ln∑jejei)=−∑jejei1⋅∂i∂(∑jejei)=−ei∑jej⋅∂i∂(1−∑jej∑j+iej)=−ei∑jej⋅⎝⎛−j=i∑ej⎠⎞⋅∂i∂(∑jej1)=ei∑jej⋅∑j=iej⋅(∑jej)2−ei=∑jej∑j=iej=−(1−∑jejei)=yi−1
即正向求出
y
i
+
1
y_{i}+1
yi+1则可以得到反向更新的梯度。
(梯度:梯度的方向是函数增长速度最快的方向,那么梯度的反方向就是函数衰减最快的方向。想要拿到损失函数的最小值,可以采用梯度下降法去做。)