• softmax函数


           前面提到激活函数,在实现手写体 mnist 数据集的识别任务中的反向传播过程文件(mnist_backward.py) 用到了softmax函数,又称归一化指数函数。下面就谈谈我对其的理解。

    它能将一个含任意实数的K维的向量z的“压缩”到另一个K维实向量σ(z) 中,使得每一个元素的范围都在(0,1)之间,并且所有元素的和为1。

    Softmax是一种形如下式的函数:

    我们知道max,假如说我有两个数,a和b,并且a>b,如果取max,那么就直接取a,没有第二种可能  但有的时候我不想这样,因为这样会造成分值小的那个取不到。所以我希望分值大的那一项经常取到,分值小的那一项也偶尔可以取到,那么我用softmax就可以了 现在还是a和b,a>b,如果我们取按照softmax来计算取a和b的概率,那a的softmax值大于b的,所以a会经常取到,而b也会偶尔取到,概率跟它们本来的大小有关。所以说不是max,而是 Soft max 那各自的概率究竟是多少呢,我们下面就来具体看一下

           假设上面这个图中的Z1,Z2,Z3为一个三分类模型的output vector,为[3,1,-3],3代表类别1所对应的分量,1为类别2对应的分量,-3为类别3对应的分量。经过Softmax函数作用后,将其转化为了[0.88,0.12,0],这就代表了输入的这个样本被分到类别1的概率为0.88,分到类别2的概率为0.12,分到类别3的概率几乎为0。这就是Softmax函数的作用
           因此Softmax函数得到的是一个[0,1]之间的值,现在讨论其求导过程

    下面我们举出一个简单例子,原理一样,目的是为了帮助大家容易理解!

     

    我们能得到下面公式:

    z4 = w41*o1+w42*o2+w43*o3

    z5 = w51*o1+w52*o2+w53*o3

    z6 = w61*o1+w62*o2+w63*o3

    z4,z5,z6分别代表结点4,5,6的输出,01,02,03代表是结点1,2,3往后传的输入.

    那么我们可以经过softmax函数得到

     

     为了形式化说明,我这里认为训练数据的真实输出为第j个为1,其它均为0

    j=i对应例子里就是如下图所示:

    比如我选定了j为4,那么就是说我现在求导传到4结点这!

     

    这里对应我的例子图如下,我这时对的是j不等于i,往前传:

     

     本文参考:

    知乎专题:https://www.zhihu.com/question/23765351 

  • 相关阅读:
    为Jupyter只安装目录的扩展包
    前端菜鸟的小程序摸索记录
    小计:Shopee批量删除修复~附脚本
    Python3 与 C# 并发编程之~ 协程篇
    记一次硬件故障,并普及点硬件知识
    小计:协同办公衍生出的需求
    监控MySQL|Redis|MongoDB的执行语句(go-sniffer)
    Linux IO实时监控iostat命令详解
    Linux下的磁盘缓存
    使用top命令查看系统状态
  • 原文地址:https://www.cnblogs.com/fcfc940503/p/10983906.html
Copyright © 2020-2023  润新知