斯坦福大学深度学习公开课cs231n学习笔记(1)softmax函数理解与应用
我学习使用的是带中文翻译字幕的网易课程,公开课地址:http://study.163.com/course/courseLearn.htm?courseId=1003223001#/learn/video?lessonId=1003734105&courseId=1003223001
该节课中提到了一种叫作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)代表的是真实的概率分布p=[0,…1,…,0],那么可以看出上式是概率分布为的相对熵公式,是对第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://en.wikipedia.org/wiki/Softmax_function
https://zhuanlan.zhihu.com/p/25723112
http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92
https://www.cnblogs.com/maybe2030/p/5678387.html?utm_source=tuicool&utm_medium=referral
http://blog.csdn.net/bea_tree/article/details/51489969#t10
https://github.com/YuDamon/Softmax
https://www.cnblogs.com/neopenx/p/5590756.html
斯坦福大学深度学习公开课cs231n学习笔记(1)softmax函数理解与应用相关推荐
- 斯坦福大学深度学习公开课cs231n学习笔记(10)卷积神经网络
前记:20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时,发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(Convolution ...
- 斯坦福大学 iOS 开发公开课总结
斯坦福大学 iOS 开发公开课总结 前言 iPhone 开发相关的教程中最有名的,当数斯坦福大学发布的 "iPhone 开发公开课 " 了.此公开课在以前叫做<iPhone ...
- ios专题 - 斯坦福大学iOS开发公开课总结
转自:http://blog.devtang.com/blog/2012/02/05/mvc-in-ios-develop/ 前言 iphone开发相关的教程中最有名的,当数斯坦福大学发布的" ...
- 斯坦福大学iOS开发公开课总结
前言 iphone开发相关的教程中最有名的,当数斯坦福大学发布的"iphone开发公开课"了.此公开课在以前叫做<iphone开发教程>,今年由于平板电脑的流行,所以也 ...
- 转:深度学习课程及深度学习公开课资源整理
http://www.52nlp.cn/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E8%AF%BE%E7%A8%8B%E6%B7%B1%E5%BA%A6%E5%AD%A ...
- 学习:深度学习公开课
[转] http://www.leiphone.com/news/201701/0milWCyQO4ZbBvuW.html 导语:入门机器学习不知道从哪着手?看这篇就够了. 在当下的机器学习热潮,人才 ...
- Deep Learning 9_深度学习UFLDL教程:linear decoder_exercise(斯坦福大学深度学习教程)...
前言 实验内容:Exercise:Learning color features with Sparse Autoencoders.即:利用线性解码器,从100000张8*8的RGB图像块中提取颜色特 ...
- 谷歌深度学习公开课任务 5: Word2VecCBOW
为什么80%的码农都做不了架构师?>>> 本文由码农场同步,最新版本请查看原文:http://www.hankcs.com/ml/cbow-word2vec.html 课上讲的 ...
- 斯坦福大学深度学习与自然语言处理第二讲:词向量
斯坦福大学在三月份开设了一门"深度学习与自然语言处理"的课程:CS224d: Deep Learning for Natural Language Processing,授课老师是 ...
- 斯坦福大学深度学习与自然语言处理第四讲:词窗口分类和神经网络
斯坦福大学在三月份开设了一门"深度学习与自然语言处理"的课程:CS224d: Deep Learning for Natural Language Processing,授课老师是 ...
最新文章
- 小黑小波比.404 (Not Found)
- python调用接口时传多个参数_python接口自动化11-post传data参数案例
- elk 的报错和优化
- 【bzoj3672】购票
- HDU 3788 ZOJ问题
- 详解C与C++的联系与区别
- 中等职计算机应用基础,中等职业计算机应用基础答案
- 《SpringCloud超级入门》使用Eureka编写服务消费者《十一》
- 潮流趋势UI素材|梯度半透明、透明套件
- 我可以隐藏HTML5号码输入的旋转框吗?
- ADS创建自己的Project模板
- 使用傅里叶模态法分析闪耀光栅
- 均匀分布的期望和方差
- STM32单片机的优缺点分析
- 大数据行业最顶尖明星人才TOP20
- 利用MATLAB进行车辆的速度测量
- 力扣解题思路:1419. 数青蛙
- 手机党心声:“离开手机生活”这是不可能的!
- 遗传算法(进化类算法)中的选择,交叉,变异等一系列问题解析(二)
- ThreeJS加载geojson数据实现3D地图
热门文章
- Android---------------ContentProvider的学习
- 常用算法之----快速排序
- 我的python之行
- 使用malloc分别分配2KB的空间,然后用realloc调整为6KB的内存空间,打印指针地址...
- 计算机网络与应用第三次笔记
- C#文件上传到服务器——转载至wcj1984abc
- 文件I/O(不带缓冲)之read函数
- [转]rails常用验证方法
- SharePoint2010企业开发最佳实践(八)---- SPWeb 对象
- 新写的一个商品比较控件CompareGrid,没有做设计视图。有兴趣的联络我。公布源码。...