softmax
的方程为:
p = softmax ( z ) where p i = e z i ∑ j = 1 k e z j for i = 1 , ⋯ , k . \boldsymbol{p}=\text{softmax}(\boldsymbol{z})\, \text{where}\, p_i=\frac{e^{z_i}}{\sum^k_{j=1}e^{z_j}} \text{for}\, i=1,\cdots,k . p=softmax(z)wherepi=∑j=1kezjezifori=1,⋯,k.
上式中 p \boldsymbol{p} p和 z \boldsymbol{z} z都是 k k k维列向量,形状为 k × 1 k\times1 k×1。对softmax
直接求导并不难,用求导法则中的除法法则1即可实现: ( f g ) ′ = f ′ g − f g ′ g 2 \left(\frac{f}{g}\right)'=\frac{f'g-fg'}{g^2} (gf)′=g2f′g−fg′。注意:因为 p \boldsymbol{p} p和 z \boldsymbol{z} z都是 k k k维列向量,最后求导结果 ∂ p ∂ z \frac{\partial\boldsymbol{p}}{\partial\boldsymbol{z}} ∂z∂p应该是个 k × k k\times k k×k的矩阵。我在这里简单算下导数矩阵中的一个小元素,假设 m = ∑ j = 1 k e z j m=\sum^k_{j=1}e^{z_j} m=∑j=1kez
Softmax求导
于 2021-04-22 17:49:35 首次发布