该节课中提到了一种叫作softmax的函数,因为之前对这个概念不了解,所以本篇就这个函数进行整理,如下:

维基给出的解释:softmax函数,也称指数归一化函数,它是一种logistic函数的归一化形式,可以将K维实数向量压缩成范围[0-1]的新的K维实数向量。函数形式为:

(1)

其中,分母部分起到归一化的作用。至于取指数的原因,第一是要模拟max的行为,即使得大的数值更大;第二是方便求导运算。

在概率论中,softmax函数输出可以代表一个类别分布--有k个可能结果的概率分布。

从定义中也可以看出,softmax函数与logistic函数有着紧密的的联系,对于logistic函数,定义如下:

最显著的区别:logistic 回归是针对二分类问题,softmax则是针对多分类问题,logistic可看成softmax的特例。

二分类器(two-class classifier)要最大化数据集的似然值等价于将每个数据点的线性回归输出推向正无穷(类1)和负无穷(类2)。逻辑回归的损失方程(Loss Function):

对于给定的测试输入 ,假如想用假设函数针对每一个类别j估算出概率值 。即估计  的每一种分类结果出现的概率。因此,假设函数将要输出一个  维的向量(向量元素的和为1)来表示这  个估计的概率值。 假设函数  形式如下:

其中  是模型的参数。请注意 这一项对概率分布进行归一化,使得所有概率之和为 1 。

其代价函数可以写为

其中,1{真}=1,1{假}=0.

12.23补充:

关于代价函数,softmax用的是cross-entropy loss,信息论中有个重要的概念叫做交叉熵cross-entropy, 公式是:

香农熵的公式:


交叉熵与 loss的联系,设p(x)代表的是真实的概率分布,那么可以看出上式是概率分布为的相对熵公式,是对第i个类别概率的估计。使用损失函数可以描述真实分布于估计分布的交叉熵。交叉熵可以看做熵与相对熵之和:,这里的相对熵也叫作kl距离,在信息论中,D(P||Q)表示当用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布。又因为真实值的熵是不变的,交叉熵也描述预测结果与真实结果的相似性,用来做损失函数可保证预测值符合真实值。

softmax的应用:

在人工神经网络(ANN)中,Softmax常被用作输出层的激活函数。其中,表示第L层(通常是最后一层)第j个神经元的输入,表示第L层第j个神经元的输出,表示自然常数。注意看,表示了第L层所有神经元的输入之和。

不仅是因为它的效果好,而且它使得ANN的输出值更易于理解,即神经元的输出值越大,则该神经元对应的类别是真实类别的可能性更高。

12.17补充:softmax求导

由公式(1)可知,softmax函数仅与分类有关:

其负对数似然函数为:

对该似然函数求导,得:

注:参考博客里上面求导公式有误,已更正。

对于①条件:先Copy一下Softmax的结果(即prob_data)到bottom_diff,再对k位置的unit减去1
对于②条件:直接Copy一下Softmax的结果(即prob_data)到bottom_diff
对于③条件:找到ignore位置的unit,强行置为0。

转自:https://blog.csdn.net/liusandian/article/details/80370214

deep_learning_Softmax()的更多相关文章

随机推荐

  1. JAVA 基础编程练习题7 【程序 7 处理字符串】

    7 [程序 7 处理字符串] 题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 程序分析:利用 while 语句,条件为输入的字符不为'\n'. package cskaoya ...

  2. Linux显存占用无进程清理方法(附批量清理命令)

    在跑TensorFlow.pytorch之类的需要CUDA的程序时,强行Kill掉进程后发现显存仍然占用,这时候可以使用如下命令查看到top或者ps中看不到的进程,之后再kill掉: fuser -v ...

  3. HTML5 DOM 新增数据类型

    HTML5 DOM 新增数据类型 前言 相对于HTML4当中的DOM,在HTML5中的DOM,新增了很多复杂数据类型,为实际的应用提供了便捷的操作. 在HTML5 DOM中,新增了如下的内容: HTM ...

  4. centos 系统字体库安装中文字体

    一,centos系统默认不支持中文字体的,需要手动安装windows系统中的中文字体库到centos中. 首先,将windows系统中的字体拷贝出来: windows:打开C:\Windows\Fon ...

  5. harbor API 与tag 清理

    harbor API 官方swagger swagger在线查看 harbor tag 清理 python程序 import requests import json class RequestCli ...

  6. 教你如何在Ubuntu上安装最新的Python版本

    参考链接:https://cloud.tencent.com/developer/news/343104

  7. kubernetes的namespaces总是Terminating

    0.尝试强制删除不行 删除时带上–force --grace-period=0参数 ,无法删除:kubectl delete namespace rook-ceph --force --grace-p ...

  8. phpstorm设置的快捷键突然失效了,提示: IdeaVim ...

    下班后,打开PHPstorm,突然感觉不对,经常用的快捷键突然用不了. 例如按了 Ctrl+F 快捷键后,提示:  IdeaVim! Using the Ctrl+F shortcut for Vim ...

  9. C语言Ⅰ博客作业11

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10130 我在这个课程的 ...

  10. PAT A1002 A+B for Polynomials(25)

    AC代码 转载自https://www.cnblogs.com/zjutJY/p/9413766.html #include <stdio.h> #include<string.h& ...