deep_learning_Softmax()
该节课中提到了一种叫作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()的更多相关文章
随机推荐
- Neither BindingResult nor plain target object for bean name 'command' available as request attribute
最近用JSR303在表单提交时使用Java Bean Validation验证数据.报错堆栈如下: java.lang.IllegalStateException: Neither BindingRe ...
- window server2012R2激活
slmgr /ipk D2N9P-3P6X9-2R39C-7RTCD-MDVJXslmgr /skms kms.03k.orgslmgr /ato
- Mac下配置多个SSH Keys
Mac下配置多个SSH Keys 生成SSH key # Creates a new ssh key using the provided email # 默认生成的文件名为id_rsa,可以根据命令 ...
- 【CSS】我的颜色到底听谁的?—— css的层叠性
我们之前学了很多个选择器,都可以帮我们定位到具体标签上,然后我们在设置样式.但这也不可避免会产生一个问题:如果多个选择器同时指向同一个标签,那么到底该听谁的??? css一定有自己的机制来处理这个问题 ...
- pandas中对日期型数据进行处理
因为数据不方便展示,直接上代码. 将字符串转为datetime64[ns]格式: pd.to_datetime('2019-12-20') or pd.to_datetime('20191220') ...
- 【miscellaneous】多播(组播)原理分析
为什么要使用多播: 网卡从网络上接收到目标物理地址对应的所有bit位都为1的数据报时,会收到这条消息并将其上传给驱动程序,网卡的这种工作模式称为广播模式,网卡的缺省工作模式包含直接模式和 ...
- 【图像处理】FFmpeg-0
FFmpeg是相当强大的多媒体编解码框架,在深入分析其源代码之前必须要有基本的多媒体基础知识,否则其源代码会非常晦涩难懂.本文将从介绍一些基本的多媒体只是,主要是为研读ffmpeg源代码做准备,比如一 ...
- [bzoj3162]独钓寒江雪_树hash_树形dp
独钓寒江雪 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3162 题解: 首先,如果没有那个本质相同的限制这就是个傻逼题. 直接树形dp ...
- Scala 内部类及外部类
转自:https://blog.csdn.net/yyywyr/article/details/50193767 Scala内部类是从属于外部类对象的. 1.代码如下 package com.yy.o ...
- GridFS文件操作
目录 1. GridFS介绍 2. GridFS 存取文件测试 2.1 新建项目配置pom.xml 2.2 在application.yml配置mongodb 2.3 GridFS存取文件测试 2.4 ...