本文中 (x0,x1,...,xm) 代表一个向量,也就是一个 m 行1列的矩阵。
在监督式的深度学习中,输入通常是一个向量,用
- 标量。
y 表示输入 x 属于某一类别的概率。 - 向量。此时输入
x 可能属于多个类别。 y=(y0,y1,...,yn) 。元素 yi 代表向量属于类别 i 的可能性。数值越大,可能性越高。但是,深度学习模型输出的yi 不必然是介于0和1之间的概率值, softmax 函数的作用就是对向量进行归一化,生成概率值。softmax 函数的作用如下。
softmax((y0,y1,...,yn))=(y0Σni=0yi,...,ynΣni=0yi)
也就是说, softmax 函数的输入是一个向量,而其输出也是一个向量,向量中的每个元素都是介于0和1之间的概率值。下面将以最简单的形式来描述 softmax 函数的定义和求导问题。假设输入是包含3个元素的向量,而输出是包含2个元素的向量,也就说 m=2,n=1 ,如下图所示。
图中表示了从输入到输出的一个转换过程,参数有6个,可以写成一个矩阵的形式。
θ=[w00,w10,w20w01,w11,w21]这里把与输出向量中每个元素链接的权重组织成一行,所以共有两行。令 θ0=[w00,w10,w20] , θ1=[w01,w11,w21] ,则有。
θ=[θ0θ1]用 h 来代表转换函数,则有如下式子。
y0=h(θ0,x) y1=h(θ1,x)
针对这个具体例子则有。
softmax((y0,y1))=(h(θ0,x)h(θ0,x)+h(θ1,x),h(θ1,x)h(θ0,x)+h(θ1,x))
为了方便书写,令z0=h(θ0,x)h(θ0,x)+h(θ1,x)z1=h(θ1,x)h(θ0,x)+h(θ1,x)按照对向量求导的定义,其结果应该是一个Jacobian矩阵,则对 softmax 函数的求导可以写为如下形式。
∂softmax((y0,y1))∂x=⎡⎣⎢⎢∂z0∂x∂z1∂x⎤⎦⎥⎥=⎡⎣⎢⎢⎢∂z0∂x0∂z0∂x1∂z0∂x2∂z1∂x0∂z1∂x1∂z1∂x2⎤⎦⎥⎥⎥