深度学习基础系列(四)| 理解softmax函数
深度学习最终目的表现为解决分类或回归问题。在现实应用中,输出层我们大多采用softmax或sigmoid函数来输出分类概率值,其中二元分类可以应用sigmoid函数。
而在多元分类的问题中,我们默认采用softmax函数,具体表现为将多个神经元的输出,映射到0 ~ 1的区间中,按概率高低进行分类,各概率之和为1。
某分类的概率数学表达式为:yi = ei / ∑j=1ej
具体来说,假设有四个输出单元,分别为:
- y1 = ex1 / (ex1 + ex2 + ex3 + ex4 ),假设其概率为0.4
- y2 = ex2/ (ex1 + ex2 + ex3 + ex4 ),假设其概率为0.15
- y3 = ex3/ (ex1 + ex2 + ex3 + ex4 ),假设其概率为0.15
- y4= ex4/ (ex1 + ex2 + ex3 + ex4 ), 假设其概率为0.3
可以看出 y1 + y2 + y3 + y4 = 1。并且其中某神经元的输出若增加,则其他神经元的输出则减少,反之也成立。
最后再看看softmax函数如何求导,令y = exi / ∑exk ,分两种情况:
1. i为softmax值,我们对exi 求导,
与此相关的基础求导公式:(u/v)' = (u' v - uv') / v2 和 (ex)' = ex ,并应用链式法则可得求导过程:
dy/dexi = ( exi / ∑exk)'
= (exi * ∑exk - exi * exi ) / (∑exk)2
= exi / ∑exk - (exi / ∑exk ) * (exi / ∑exk )
= yxi - yxi2
2. i不为softmax值,我们依然对exi 求导,其过程为:
dy/dexi = ( exj / ∑exk)' 注:i ≠ j
= (0 * ∑exk - exj * exi) / (∑exk)2
= -1 * (exi / ∑exk ) * (exj / ∑exk)
= - yxi * yxj
深度学习基础系列(四)| 理解softmax函数的更多相关文章
- 深度学习基础系列(五)| 深入理解交叉熵函数及其在tensorflow和keras中的实现
在统计学中,损失函数是一种衡量损失和错误(这种损失与“错误地”估计有关,如费用或者设备的损失)程度的函数.假设某样本的实际输出为a,而预计的输出为y,则y与a之间存在偏差,深度学习的目的即是通过不断地 ...
- 深度学习基础系列(九)| Dropout VS Batch Normalization? 是时候放弃Dropout了
Dropout是过去几年非常流行的正则化技术,可有效防止过拟合的发生.但从深度学习的发展趋势看,Batch Normalizaton(简称BN)正在逐步取代Dropout技术,特别是在卷积层.本文将首 ...
- 深度学习基础系列(七)| Batch Normalization
Batch Normalization(批量标准化,简称BN)是近些年来深度学习优化中一个重要的手段.BN能带来如下优点: 加速训练过程: 可以使用较大的学习率: 允许在深层网络中使用sigmoid这 ...
- 深度学习基础系列(十一)| Keras中图像增强技术详解
在深度学习中,数据短缺是我们经常面临的一个问题,虽然现在有不少公开数据集,但跟大公司掌握的海量数据集相比,数量上仍然偏少,而某些特定领域的数据采集更是非常困难.根据之前的学习可知,数据量少带来的最直接 ...
- 深度学习基础(四) Dropout_Improving neural networks by preventing co-adaptation of feature detectors
该笔记是我快速浏览论文后的记录,部分章节并没有仔细看,所以比较粗糙. 从摘要中可以得知,论文提出在每次训练时通过随机忽略一半的feature detectors(units)可以极大地降低过拟合.该方 ...
- 深度学习基础系列(十)| Global Average Pooling是否可以替代全连接层?
Global Average Pooling(简称GAP,全局池化层)技术最早提出是在这篇论文(第3.2节)中,被认为是可以替代全连接层的一种新技术.在keras发布的经典模型中,可以看到不少模型甚至 ...
- 深度学习基础系列(一)| 一文看懂用kersa构建模型的各层含义(掌握输出尺寸和可训练参数数量的计算方法)
我们在学习成熟网络模型时,如VGG.Inception.Resnet等,往往面临的第一个问题便是这些模型的各层参数是如何设置的呢?另外,我们如果要设计自己的网路模型时,又该如何设置各层参数呢?如果模型 ...
- 深度学习基础系列(三)| sigmoid、tanh和relu激活函数的直观解释
常见的激活函数有sigmoid.tanh和relu三种非线性函数,其数学表达式分别为: sigmoid: y = 1/(1 + e-x) tanh: y = (ex - e-x)/(ex + e-x) ...
- 多线程学习-基础(四)常用函数说明:sleep-join-yield
一.常用函数的使用 (1)Thread.sleep(long millis):在指定的毫秒内让当前正在执行的线程休眠(暂停执行),休眠时不会释放当前所持有的对象的锁.(2)join():主线程等待子线 ...
随机推荐
- Elasticsearch技术解析与实战(四)shard&replica机制
序言 shard&replica机制 1.index包含多个shard 2.每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力 3.增减节点时, ...
- iOS设备分辨率
CHENYILONG Blog iOS设备分辨率 © chenyilong. Powered by Postach.io Blog
- laravel new xxx 安装laravel 慢的问题
问题:使用官方文档上安装 laravel laravel new xxx 安装速度奇慢无比,设置了composer 全局镜像也没有用 composer config -g repo.packagist ...
- zabbix lld使用trapper方式(zabbix_sender)
自动发现脚本文件输出格式: { "data": [ { "{#BIND_PERF}": "BIND INCOMING QUERY" }, { ...
- 汇编与C语句
---恢复内容开始--- 汇编与C语句 4.1C语句与汇编 学习了汇编语言之后,就需要将常用的C语言代码结构与相应的汇编语言联系起来.这样就可以在分析汇编语言的时候,明白它的意思.C语言中函数过程的调 ...
- H5 键盘兼容性小结
H5 键盘兼容性小结 在 H5 项目中,我们会经常遇到页面中存在单个甚至多个 input/textarea 输入框与底部固定元素的布局情况.在 input/textarea 输入框获取焦点时,会自动触 ...
- CMD命令利用tasklist与taskkill关闭程序
昨天远程服务器后,服务器无故卡住了,鼠标各种延迟与无反应,想在进程管理器里关闭程序也卡住,想点击重启系统也卡死无反应.纠结后win+R打开了cmd用shutdown重启才算搞定.重启期间思考了下,如何 ...
- python基础===一行 Python 代码实现并行(转)
原文:https://medium.com/building-things-on-the-internet/40e9b2b36148 译文:https://segmentfault.com/a/119 ...
- 一、springcloud服务注册、发现、调用(consul/eureka)
1.Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全 ...
- scala中“_”的用法
参见链接 http://blog.csdn.net/i6448038/article/details/50017427