深度学习softmax函数理解
文章目录
- 一,引入
- 二,softmax是什么?
- 三,为什么 使用exe^xex
- 实现
- 总结
一,引入
我们为什么要引入这个函数,我们知道在机器学习当中,一些问题大概可以分为两种,一种是分类问题,一种是回归问题。
但,分类问题中可以有二分类问题和多分类问题。
对于而分类问题,我们可以很容易的想到使用逻辑回归算法。逻辑回归算法本身的逻辑并不复杂,最关键的步骤是将线性模型中输出值通过某种方式映射到[0,1]区间内。
通过sigmoid函数可以判断,根据头发等判断是否为男女,肿瘤问题等等。
对于softmax可以理解为就是解决多分类问题,将多分类问题结果通过概率的形式展现出来。
二,softmax是什么?
如果要说明softmax是什么的问题,就不得不提那种是非softmax的形式,举个例子,例如ReLu函数就是一种非softmax,而是一种hardmax
。对于多分类问题(这里讨论的是两种分类以上),我么想要得到的信息是对于每种可能类别的可信度。即对每种可能结果赋予一个概率值。
下面给出softmax的定义:
ziz_izi为第i个节点的输出值,C为节点的个数,可能输出结果的总数(分类类别数)。
通过上例中就可以将多分类问题的输出值(无论是多大)转化为范围在[0, 1]
和为1的概率分布。
三,为什么 使用exe^xex
认为最主要的是 对于exe^xex,随着x的不断上升,斜率在不断的增大。当我们在x上有一点微小的变化时,都会导致y上的变化值较大。能够将输出的数值拉开距离,比较好的区分开来。
还有一个优点是在bp
网络中求梯度,和使用各种梯度下降法去优化参数的时候,exe^xex求导为本身。
在pytroch中,Softmax与交叉熵损失函数同时实现。
实现
def softmax(X):""":param X::return:"""# 对向量中的每一个求他 e^x的值X_exp = torch.exp(X)# 对其进行一阶求和partition = X_exp.sum(1, keepdim=True) # 对求出的值任然保持维度return X_exp / partition #这里利用了一个广播机制, 将所有的数都进行除法的运算def net(X):# -1return softmax(torch.matmul(X.reshape((-1, W.shape[0])), W) + b)
总结
如果模型输出为非互斥类别,且可以同时选择多个类别,则采用Sigmoid函数计算该网络的原始输出值。如果模型输出为互斥类别,且只能选择一个类别,则采用Softmax函数计算该网络的原始输出值。
参考:
[1] https://zhuanlan.zhihu.com/p/105722023
[2] http://www.noobyard.com/article/p-voihadih-qc.html
[3] https://www.bilibili.com/video/BV1K64y1Q7wu?from=search&seid=9124491475035014829&spm_id_from=333.337.0.0
[4] https://blog.csdn.net/bitcarmanlee/article/details/82320853
深度学习softmax函数理解相关推荐
- 深度学习loss函数理解
机器学习中的范数规则化之L0.L1.L2范数及loss函数 监督机器学习问题无非就是"minimizeyour error while regularizing your parameter ...
- 运用深度学习教机器人理解自然语言
运用深度学习教机器人理解自然语言 2016-08-16 16:33 转载 CSDN 1条评论 雷锋网按:本文作者Jonathan是21CT的首席科学家.他主要研究机器学习和人工智能如何使用在文本和知识 ...
- 【深度学习】深入理解Batch Normalization批归一化
[深度学习]深入理解Batch Normalization批归一化 转自:https://www.cnblogs.com/guoyaohua/p/8724433.html 这几天面试经常被问到BN层的 ...
- 深度学习之感性理解-机器学习基础一
深度学习之感性理解-机器学习基础一 机器学习是什么 机器学习用来干嘛的 机器学习是怎么做的 机器学习是什么 关于机器学习的定义,网上很多,我就不多说了,谈谈自己的理解.简单的说就是有一个事情想让计算机 ...
- 【深度学习】入门理解ResNet和他的小姨子们(一)---ResNet
2015年由He KaiMing 大神 提出的ResNet现在是一种经典模型.在这之前,虽然VGG的深度已经高达19层了,但是152层的ResNet真的让我们目瞪口呆. ResNet这篇文章则是CVP ...
- 基于深度学习的语义理解技术在机器翻译中的应用
作者:禅与计算机程序设计艺术 <基于深度学习的语义理解技术在机器翻译中的应用>技术博客文章 引言 1.1. 背景介绍 随着全球化的推进,跨语言交流需求日益增长,机器翻译技术应运而生.翻译技 ...
- 深度学习Caffe 入门理解使用教程
2019独角兽企业重金招聘Python工程师标准>>> 1.首先caffe 安装我就不解释了 如果有人安装不会的话 可以加我qq 1050316096 ,我会按照使用方式来介绍,首先 ...
- 深度学习-softmax回归
softmax regression 1- softmax 基本概念 1-1 极大似然估计 2- Fashion-MNIST图像分类数据集 2-1 下载数据集 2-2 可视化 3- softmax回归 ...
- 【深度学习】深入理解Batch Normalization批标准化
这几天面试经常被问到BN层的原理,虽然回答上来了,但还是感觉答得不是很好,今天仔细研究了一下Batch Normalization的原理,以下为参考网上几篇文章总结得出. Batch Normaliz ...
最新文章
- matlab中句柄图性对像的设置
- qt找不到打印机_Qt无法调起打印机问题(QPrintDialog: Cannot be used on non-native printers)解决...
- elif是不是java关键字_C# 中的#if、#elif、#else、#endif等条件编译符号 (转载)
- TypeScript入门教程 之 解构
- Flink读数据 addSource
- HDU 2068 Choose the best route
- Ruby的case语句
- 实用网站推荐——office模板(PPT)
- PLSQL14下载与安装及使用
- 数学公式截图转Latex格式
- 安卓手机续航测试软件,10款手机电池续航测试对决:都是骁龙865手机,续航差距有多大?...
- 移远EC200T模块应用移植
- 【阿里云IoT+YF3300】9.快速开发modbus设备驱动
- 静态站点 免费_七个站点,您可以随意使用免费照片
- PPT到Word的文档转换(未果)
- python在vsc制作动态二维码_用VScode愉快的写python代码
- Android自带模拟器的安装
- Java中Stream详细使用教程
- Flarum部署:从源码到docker到放弃
- Linux cooked capture v1 层的处理