本文中
(x0,x1,...,xm)
代表一个向量,也就是一个
m
行1列的矩阵。
在监督式的深度学习中,输入通常是一个向量,用x表示,输出
y
则可以分为多种情况。
- 标量。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⎤⎦⎥⎥⎥