2.2.6 Softmax函数

图片[1]-2.2.6 Softmax函数-大赛人网

Softmax将一个任意的实数向量转换为一个概率分布,确保输出值的总和为1,是二分类激活函数Sigmoid在多分类上的推广。Softmax常用于多分类问题的输出层,用来表示类别的预测概率。

Softmax会放大输入中较大的值,使得最大输入值对应的输出概率较大,其他较小的值会被压缩。即在类别之间起到了一定的区分作用。

图片[2]-2.2.6 Softmax函数-大赛人网

Softmax
函数可以用代码实现如下:

def softmax(x):
    return np.exp(x) / np.sum(np.exp(x))

考虑到x较大时,指数函数的值会非常大,容易溢出,可以改进为:

def softmax(x):
    x = x - np.max(x) # 溢出对策
    return np.exp(x) / np.sum(np.exp(x))

考虑到x为二维数组(矩阵)的情况,可以进一步写为:

def softmax(x):
    if x.ndim == 2:
        x = x.T
        x = x - np.max(x, axis=0)
        y = np.exp(x) / np.sum(np.exp(x), axis=0)
        return y.T 

    x = x - np.max(x) # 溢出对策
    return np.exp(x) / np.sum(np.exp(x))

2.2.7 其他常见激活函数

Identity(恒等函数)

图片[3]-2.2.6 Softmax函数-大赛人网

Leaky ReLU(Leaky Rectified Linear Unit)

图片[4]-2.2.6 Softmax函数-大赛人网

PReLU(Parametric Rectified Linear Unit)

图片[5]-2.2.6 Softmax函数-大赛人网

RReLU(Randomized Leaky ReLU)

图片[6]-2.2.6 Softmax函数-大赛人网

ELU(Exponential Linear Unit)

图片[7]-2.2.6 Softmax函数-大赛人网

Swish(也称Sigmoid Linear Unit,SiLU)

图片[8]-2.2.6 Softmax函数-大赛人网

Softplus

图片[9]-2.2.6 Softmax函数-大赛人网

2.2.8 如何选择激活函数

  1. 隐藏层
    1. 首选ReLU,如果效果不好可尝试Leaky ReLU等。
    2. Sigmoid在隐藏层易导致梯度消失,应尽量避免。
    3. Tanh的输出均值为0,对中心化数据更友好,但仍可能引发梯度消失,仅适用于浅层网络。
  2. 输出层
    1. 二分类选择Sigmoid。
    2. 多分类选择Softmax。
    3. 回归默认选择Identity。
© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容