softmax的原函数为:
S ( x i ) = e x i e x 0 + e x 1 + . . . + e x n = e x i ∑ j = 0 n e x j S(x_i)=\frac{e^{x_i}}{e^{x_0}+e^{x_1}+...+e^{x_n}} =\frac{e^{x_i}}{\sum_{j=0}^{n}e^{x_j}} S(xi)=ex0+ex1+...+exnexi=∑j=0nexjexi
和普通的函数有点不太一样,它是一个输入输出均为序列的映射,每一个输入对应每一个输出都有贡献,对其求导可以看作是多元函数求偏导数的过程。如下所示:
[ x 0 x 1 x 2 . . . x n ] = > S ( x i ) = > [ e x 0 e x 0 + e x 1 + . . . + e x n e x 1 e x 0 + e x 1 + . . . + e x n e x 2 e x 0 + e x 1 + . . . + e x n . . . e x n e x 0 + e x 1 + . . . + e x n ] = [ S ( x 0 ) S ( x 1 ) S ( x 2 ) . . . S ( x n ) ] \left[ \begin{matrix} x_0\\x_1\\x_2\\.\\.\\.\\x_n \end{matrix} \right]=>S(x_i)=> \left[ \begin{matrix} \frac{e^{x_0}}{e^{x_0}+e^{x_1}+...+e^{x_n}}\\ \frac{e^{x_1}}{e^{x_0}+e^{x_1}+...+e^{x_n}}\\ \frac{e^{x_2}}{e^{x_0}+e^{x_1}+...+e^{x_n}}\\ .\\.\\.\\ \frac{e^{x_n}}{e^{x_0}+e^{x_1}+...+e^{x_n}}\\ \end{matrix} \right]= \left[ \begin{matrix} S(x_0)\\S(x_1)\\S(x_2)\\.\\.\\.\\S(x_n) \end{matrix} \right] ⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡x0x1x2...xn⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤=>S(xi)=>⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡ex0+ex1+...+exnex0ex0+ex1+...+exnex1ex0+ex1
softmax的导数
最新推荐文章于 2024-03-31 15:41:05 发布