本文中(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⎤⎦⎥⎥⎥