Home > MachineLearning > Main text

Softmax function


Tag: python, machine learning

目录


概念

softmax函数(归一化的指数函数):”squashes”(maps) a K-dimensional vector z of arbitrary real values to a K-dimensional vector σ(z) of real values in the range (0, 1) that add up to 1 (from wiki)。

  • 向量原来的每个值都转换为指数的概率值:\(\sigma(z)_{j}=\frac{e^{z_{j}}}{\sum^{K}_{k=1}e^{z_{k}}}\)。
  • 转换后的值是个概率值,在[0,1]之间;
  • 转换后的向量加和为1。
  • 下面是用代码举例子说明是怎么计算的:
  • >>> 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]
    >>> sum_z_exp = sum(z_exp)
    >>> softmax = [i / sum_z_exp for i in z_exp]
    >>> print([round(i, 3) for i in softmax])
    [0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]
    

应用

  • 神经网络的多分类问题,作为最后一层(输出层),转换为类别概率,如下图所示,但是这个图里面e的下标k应该写错了位置,k应该是z的下标(一般最后基于概率值有一个独热编码,对应具体的类别):
  • 将某个值转换为激活概率,比如增强学习领域,此时的其公式为:\(P_{t}(a)=\frac{e^{\frac{q_{t}(a)}{T}}}{\sum^{n}_{i=1}e^{\frac{q_{t}(i)}{T}}}\)

softmax vs logistic

  • 参考这里:logistic函数和softmax函数
  • logistic: 二分类问题,基于多项式分布
  • softmax:多分类问题,基于伯努利分布
  • 因此logistic是softmax函数的一个特例,就是当K=2时的情况。所以在逻辑回归那里,也有softmax regression(多元逻辑回归)用于多分类问题,我在这里也记录了一点。
  • 在多分类里面,也可以使用多个one-vs-all的逻辑回归,达到多元回归的目的,这种操作和直接的softmax回归有什么不同?softmax回归输出的类是唯一互斥的,但是多个逻辑回归的输出类别不一定是互斥的。


If you link this blog, please refer to this page, thanks!
Post link:https://tsinghua-gongjing.github.io/posts/softmax-function.html

Previous: sklearn: 教程