基础概念【softmax|normalizatoin|standardization】
目录
一、softmax
二、normalization
三、standardization
一、softmax
为什么使用softmax,不用normalization?
“max” because amplifies probability of largest
“soft” because still assigns some probability to smaller
softmax层是一种归一化的方式,常应用在多分类的最后一阶段,对于网络产生的结果 xi 执行 softmax(X)i = exp(xi) / ∑jn exp(xj)
作用:
1、将原来的输入归一到[0,1]区间
2、使用exp的意义是 exp是单调递增函数且函数值为正数,这样可以保证根据输出大小得出概率,也是为了之后求导方便,exp的导数为exp
3、上溢和下溢问题
假设所有的xi都等于某个常数c, 我们可以发现所有的输出都是 1/n。从数值上来说,当c的量级很大时,exp(c)就会出现上溢的问题,当c是很小的负数时,exp(c)就会下溢,这意味着softmax的分母会变成0,所以最后的结果是未定义的。
这两个问题能通过计算softmax(z)同时解决,其中 z = x - maxi xi , 因为softmax解析上的函数值不会因为从输入向量减去或者加上标量而改变即softmax( X - c ) = softmax(X),通过减去maxi xi
导致exp的参数最大为0,这排除了上溢的可能,另外对于分母来说至少会有一项是1,这样避免了下溢
二、Normalization
1、含义: 将数据的值压缩到[0,1]区间,便于不同单位或者量级的指标能够进行比较和加权
2、好处:
1 提高迭代求解的收敛速度
归一化在梯度下降求解中的作用
在梯度下降中多数时候原始数据若没经过特征处理,数据的各个维度是存在着量级的差别,假如线性函数Ax+By+b=C,X维度数量级是十,Y的数量级是万,那么求出的A就比B大,那么在用梯度下降求解最优解过程中,对A求偏导每次变化是和X成线性的(结果只和x相关),对B求偏导是和B成线性的(结果只与y相关),这样就造成两个维度下降速度不一致的问题,在图像上面显示就是A每次走的step很小,B的step很大,可能导致某一个维度由于数量级较大已经到达最低点,而其他维度由于数量级的差异未到达最低点,先到达最低点的维度需要等待其他维度,走出的曲线是震荡性较大图像:
---------------------
作者:golden_xuhaifeng
来源:CSDN
原文:https://blog.csdn.net/golden_xuhaifeng/article/details/79742581
版权声明:本文为博主原创文章,转载请附上博文链接!

如左图所示,x1的取值范围大,所以θ1 只需经过少量几步就可以到达 极值点,但是由于x2的取值范围小,所以θ2要经过许多步才能到达极值点,经过归一化之后,如右图,θ1和θ2
可以同时经过相同的步数到达极值点,因此归一化可以提高迭代收敛的速度。
2 提高迭代求解的精度
比如计算欧式距离:由于x1的取值范围 大于 x2的取值范围,因此最后x1对距离结果的影响要大于x2,这就会造成精精度的损失
3、归一化方法:
1、归一到【0,1】区间

2、归一到【-1,1】

3、归一到【a,b】
(1)首先找到原本样本数据X的最小值Min及最大值Max
(2)计算系数:k=(b-a)/(Max-Min)
(3)得到归一化到[a,b]区间的数据:Y=a+k(X-Min) 或者 Y=b+k(X-Max)
三、Standardization
对每个特征的数据值变成 均值为0,方差为1
好处:
1 使得不同度量之间的特征具有可比性,对目标函数的影响体现在几何分布上,而不是数值上
2 不改变数据原始分布
归一化和标准化区别:
归一化特点:使各个特征维度对目标函数的影响权重是一致的,即使得那些扁平分布的数据伸缩变换成类圆形。这也就改变了原始数据的一个分布。
标准化特点:通过一系列的平移压缩操作,不改变原始数据的分布

引于https://www.zhihu.com/question/20467170
从采用大单位的身高和体重这两个特征来看,如果采用标准化,不改变样本在这两个维度上的分布,则左图还是会保持二维分布的一个扁平性;而采用归一化则会在不同维度上对数据进行不同的伸缩变化(归一区间,会改变数据的原始距离,分布,信息),使得其呈类圆形。
虽然这样样本会失去原始的信息,但这防止了归一化前直接对原始数据进行梯度下降类似的优化算法时最终解被数值大的特征所主导。归一化之后,各个特征对目标函数的影响权重是一致的。这样的好处是在提高迭代求解的精度。
基础概念【softmax|normalizatoin|standardization】的更多相关文章
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- TCP/IP基础概念及通信过程举例
TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...
- Jmeter基础之---jmeter基础概念
Jmeter基础之---jmeter基础概念 JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. JMeter 介绍: 一个非常优 ...
- 快速入门系列--WCF--01基础概念
转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...
- 理解 angular2 基础概念和结构 ----angular2系列(二)
前言: angular2官方将框架按以下结构划分: Module Component Template Metadata Data Binding Directive Service Dependen ...
- JavaBean 基础概念、使用实例及代码分析
JavaBean 基础概念.使用实例及代码分析 JavaBean的概念 JavaBean是一种可重复使用的.且跨平台的软件组件. JavaBean可分为两种:一种是有用户界面的(有UI的):另一种是没 ...
- RabbitMQ基础概念详细介绍
http://blog.csdn.net/column/details/rabbitmq.html 转至:http://www.ostest.cn/archives/497 引言 你是否遇到过两个(多 ...
- linux设备驱动归纳总结(二):模块的相关基础概念【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-59415.html linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10 ...
- linux设备驱动归纳总结(一)内核的相关基础概念【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxx ...
随机推荐
- 五一出门必备的手机APP神器 让你瞬间大开眼界
如今我们手机上有各种各样的软件,但是比较实用的又有哪些呢?所以每次大家都会花上很久的时间去查找满意的软件吧!今天就给大家送上一波福利,因为五一小长假就要到来了,说不定大家会使用到呢! 轻颜相机 轻颜相 ...
- 七、Android动画
Android的动画可以分为三种:View动画.帧动画和属性动画,帧动画也属于View动画的一种,只不过它和平移.旋转等常见的View动画在表现形式上略有不同而已. 1.View动画 平移动画:Tra ...
- 章节十、6-CSS---用CSS 定位子节点
以该网址为例(https://learn.letskodeit.com/p/practice) 一.通过子节点定位元素 1.例如我们需要定位这个table表格 2.当我们通过table标签直接定位时, ...
- Testlink1.9.17使用方法(第二章 登录&汉化设置)
第二章 登录&汉化设置 QQ交流群:585499566 1,使用超级账户admin/admin登录. 2,登录后,会提示创建一个新的项目,先不要创建,先进入用户管理,设置成中文显示,也就是汉化 ...
- 神经网络MPLClassifier分类
代码: # -*- coding: utf-8 -*- """ Created on Fri Aug 24 14:38:56 2018 @author: zhen &qu ...
- C#-之属性(2)
1. 属性结合字段和方法得多个方面,对于对象的用户来说,属性就像字段(这样就可以修改属性值或者访问),对于类的实现者来说,属性包括两个各部分get访问器(用于读取属性)和set访问器(用于设置属性 ...
- 验证码的实现py3
import randomflag = 1try_=0while (flag): try_ +=1 yan = "" for i in range(0,4): cun=random ...
- lazyMan
class Lazyman { constructor() { this.tasks = []; this.init(); } init() { const task = () => { con ...
- vue前端开发。。。
1. 官网下载 https://nodejs.org/en/ 2. 安装cnpm 在命令行: npm install -g cnpm --registry=https://registry.np ...
- 四、Jedis操作Redis
前言: 原来我们操作mysql需要用的jdbc,现在操作redis则需要jedis,jedis是客户端,而redis是服务器,使用jedis客户端来操作redis. 在这里要使用jedis操作red ...