zoukankan      html  css  js  c++  java
  • Softmax函数概述——2020.2.8

    一、softmax函数简介

        softmax作为输出层的激励函数,在机器学习中常被看作是一种多分类器。通俗的意思就是,将一个物品输入,得出其中可能属于的类别概率(soft),最后得出最大可能性的判别(max)。下图为softmax的具体计算流程:

        其中,3、1、-3为输入值,计算以e为底的幂,之后求各类别之和,每个类别的输出值为,保证了各个类别输出值总和 ≤ 1(即:)。
        比如下图所,j假设有7张图,分别为飞机、汽车、轮船、猫、狗、鸟、太阳,则图像的分类标签如下表示:

        这种激励函数通常用在神经网络的最后一层作为分类器的输出,有7个节点就可以做7个不同类别的判别,有1000个节点就可以做1000个不同样本类别的判断。

    二、softmax函数优劣性分析

    优点:不同类之间分类准确
        softmax比hardmax(本文暂且称为,即利用输入本身的值计算输出值:))更容易实现one-hot目标,即放大某一类可能性与其他类的差值,方便实现不同类之间的分类判定。两者差异性见下图:


    缺点:类间紧凑,不满足进行人脸识别中特征向量对比需求
        人脸识别中特征向量相似度计算,常用欧式距离(L2 distance)和余弦距离(cosine distance),下面讨论特征向量相似度对比情况:

    1. 欧式距离:
      欧式距离越小,向量相似度越高。可能同类的特征向量距离(黄色)比不同类的特征向量距离(绿色)更大

    2. 余弦距离:
      夹角越小,余弦距离越大,向量相似度越高。可能同类的特征向量夹角(黄色)比不同类的特征向量夹角(绿色)更大

    总结

    1. Softmax训练的深度特征,会把整个超空间或者超球。如果按照分类个数进行划分,可以保证不同类别是可分的,适用于多分类任务如MNIST和ImageNet,因为测试类别必定在训练类别中。
    2. 但Softmax并不要求类内紧凑和类间分离,这一点非常不适合大数据量人脸识别任务,因为训练集的1W人数,相对测试集整个世界70亿人类来说,非常微不足道,而我们不可能拿到所有人的训练样本,并且还要求训练集和测试集不重叠。
    3. 如果需要改造Softmax,除了保证可分性外,还应做到特征向量类内尽可能紧凑,类间尽可能分离。

    三、学习总结

        之前仅仅使用过softmax做一些数据处理,但是对它的原理概念总是记忆不清,今天特总结记录一下。

    参考博客:http://www.pianshen.com/article/3582306846/

  • 相关阅读:
    dynamic 转换实体类
    泛型的简单使用
    winfrom嵌入word
    echart睡眠后台代码,
    echart实现睡眠前台代码
    Mysql时间加一天
    一道关于面向对象面试题所引发的血案(阿里)
    一道面试题让你彻底掌握JS中的EventLoop(头条)
    对象(数组)的深克隆和浅克隆(头条)
    BAT笔试题中几道关于堆栈内存和闭包作用域的题
  • 原文地址:https://www.cnblogs.com/somedayLi/p/12275896.html
Copyright © 2011-2022 走看看