1. softmax定义
softmax的中文名是指数归一化,常用于多分类模型。假设我们要分k类,模型输出为(a1, a2, ...ak)的向量,可以用softmax对向量进行归一化处理,处理后该向量的元素和为1,softmax的公式如下:
Pi=∑j=1keajeai
2. softmax的数值稳定
由于网络原始输出的数字范围是不可控的,在softmax公式中使用指数次方形式进行计算,那么很容易指数次方处理后的结果超过了计算机的数字表示范围,从而造成softmax的数值不稳定。为了解决这一问题,可以使用一些数学技巧来缩小指数归一化得到结果数字的范围:
Pi=∑j=1kceajceai=∑j=1keaj+logceai+logc
想要使指数尽可能地不越界,只需要让logc值非常小就可以了,通常我们取:
logc=−max(ai)
3. softmax求导
我们对softmax对类别i的预测概率Pi进行求导,考虑两种情况:
当i==j时,
∂aj∂L=∑j=1keaj2eai∑j=1keaj−eai2=Pi(1−Pi)
当i!=j时,
∂aj∂L=∑j=1keaj2−eaieaj=−PiPj
4. cross entropy loss与softmax的关系
cross entropy loss定义如下:
L=−i=1∑kyilogPi
上式中yi,当样本真实类别为i时为1,反之为0。
计算cross entropy的导数(链式法则+分情况相加):
∂aj∂L=∂Pi∂L∂aj∂Pi=Pi−yiPi(1−Pi)+i=j∑PiyiPiPj=−yj+yjPj+i=j∑yjPj=−yj+Pj
整个求导过程看似复杂,最终求出来的结果却非常简洁,也非常易于理解,就是softmax预测出来的j的概率Pi和真实标签yj的偏差值。