Softmax函数

维基百科,自由的百科全书
跳转至: 导航搜索

数学,尤其是概率论和相关领域中,Softmax函数,或称归一化指数函数[1]:198,是逻辑函数的一种推广。它能将一个含任意实数的K维的向量  的“压缩”到另一个K维实向量  中,使得每一个元素的范围都在之间,并且所有元素的和为1。该函数的形式通常按下面的式子给出:

   for j = 1, …, K.

Softmax函数实际上是有限项离散概率分布的梯度对数归一化。因此,Softmax函数在包括 多项逻辑回归[1]:206–209 ,多项线性判别分析朴素贝叶斯分类器人工神经网络等的多种基于概率的多分类问题方法中都有着广泛应用。[2] 特别地,在多项逻辑回归和线性判别分析中,函数的输入是从K个不同的線性函數得到的结果,而样本向量 x 属于第 j 个分类的概率为:

这可以被视作K个线性函数Softmax函数的复合)。

例子[编辑]

输入向量对应的Softmax函数的值为。输出向量中拥有最大权重的项对应着输入向量中的最大值“4”。这也显示了这个函数通常的意义:对向量进行归一化,凸显其中最大的值并抑制远低于最大值的其他分量。

下面是使用Python进行函数计算的示例代码:

import math
z = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]
z_exp = [math.exp(i) for i in z]  
print(z_exp)  # Result: [2.72, 7.39, 20.09, 54.6, 2.72, 7.39, 20.09] 
sum_z_exp = sum(z_exp)  
print(sum_z_exp)  # Result: 114.98 
softmax = [round(i / sum_z_exp, 3) for i in z_exp]
print(softmax)  # Result: [0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]

參考資料[编辑]

  1. ^ 1.0 1.1 Bishop, Christopher M. (2006).
  2. ^ ai-faq What is a softmax activation function?