深度学习优化基础

1、网络优化参数

sigmoid函数:1/(1+e^(-x))::便于求导的平滑函数,但是容易出现梯度消失问题;函数中值不是0,会导致模型训练的收敛速度变慢。。。

tanh函数:(e^x-e^(-x))/(e^x+e^(-x))::解决了zero-centered问题,但是梯度消失和幂运算的问题还在。

RELU:max{0,x}::在正区间解决了梯度消失问题,计算速度很快;但是也不是zero-centered,且存在DEAD RELU Problem(某些神经元可能永远不会参加计算,导致相应参数无法被更新)。解决方法:采用Xavier初始化方法,以及避免lr设置太大或者使用Adagrad等自动调节lr算法。

LEAKY RELU函数:max{0.01x,x}::解决DEAD RELU PROBLEM;但是理论是好,实际应用也不一定绝对比RELU好。

指数线性单元ELU函数:

α(e^x-1)  , x<=0

x              ,x>0       ::有较高的噪声鲁棒性,但是需要计算指数,所以计算量较大。

SELU函数:SELU(x)=λ(ELU(x))    ::自归一化神经网络中提出,只要把激活函数换程SELU就能使得输入在经过一定层数后变成固定分布。

Softmax函数:(可视作Sigmoid函数的泛化形式):本质上就是将一个K维的任意实数向量压缩(映射)成另一个K维的实数向量,其中向量中的每个元素取值都介于(0,1)之间。一般用于多分类神经网络。

 

2、参数初始化方法

参数初始化条件:1、各层激活值不会出现饱和现象;2、各层激活值不为0

随机生成小的随机数:从均值为0,标准差为1的高斯分布中取样,这样参数的每个维度来自于一个多维的高斯分布。一般,参数初始值不能太小,容易出现梯度弥散(反向传播时会导致较小的梯度产生)。

标准初始化:权重参数从确定的区间均匀随机取值,

Xavier初始化:从方差来考虑,激活值的方差和层数无关,反向传播梯度的方差和层数无关,Xavier通常和ReLU一起使用。

 

3、最优化方法:

  优化方法时深度学习中最重要的话题,通常时利用目标函数的导数通过多次迭代来求解无约束最优化问题。

常见有:梯度下降(批量梯度下降,随机梯度下降(SGD),基于动量项的SGD);牛顿法(基于二阶梯度,快,但是Hesseian矩阵不可逆就难办了)、拟牛顿法(用正定矩阵来代替Hesseian矩阵的逆)、共轭梯度法;

  以上方法中堆所有参数使用同一个更新速率,但同一个速率不一定适合所有参数。

Adagrad算法(自适应维各个参数分配不同学习率的算法,其学习率是单调递减的,训练后期学习率非常小,要手工设置一个全局的厨师学习率)、Adadelta算法(不依赖全局学习率但RMSprop可算作Adadelta的一个特例仍然依赖于全局lr)、Adam算法(本质上是带有动量项的RMSprop算法)。

4、归一化方法

特征归一化:BN,LN, GN;权重归一化:WN   (目的:满足数据的独立同分布要求这一基本假设)

5、正则化方法:(预测和训练效果一样好,泛化能力强)

参数惩罚:(常用的就是在损失函数上添加范数约束)

DROPOUT(训练过程中随机丢弃输入,得到子网络,显著降低过拟合:这里通过对每个层随机选择激活函数的子集设置为0)与DROP CONNECT(前者的一般化形式,区别前者的激活函数子集设为0,这里将权重设为0)

提前停止:

训练样本扩充:实际上最有效的防止过拟合的方法是增加训练样本。

 

转载于:https://www.cnblogs.com/jphuang-/p/11114921.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

稳定高效大型系统架构---集群中间件开发

那现在来说&#xff0c;稳定的中间件应该是什么样子呢&#xff1f; 对于客户端请求&#xff0c;如果发现服务停止&#xff0c;可以实现服务无缝转移&#xff0d;&#xff0d;&#xff0d;这叫不丢失任何服务. 对于多个客户端请求&#xff0c;可以讲请求轮巡到不同的服务器上&am…

css实现web前端最美的loading加载动画!

这些好看的loading效果&#xff0c;你还只会用第三方库吗&#xff1f;CSS3教你实现 ​前言 loading效果在实际开发中是很常见的&#xff0c;尤其是在Ajax请求的时候&#xff0c;可以给用户一个很好的交互体验。 今天这篇文章我们一起来看看如何通过CSS3实现各种不同的loadin…

如何使用Hibernate从Play生成DDL脚本! 框架项目

好的&#xff0c;因此您一直在使用hibernate属性名称“ hibernate.hbm2ddl.auto ” value “ 更新 ”来不断更新数据库架构&#xff0c; 但是现在您需要一个完整的DDL脚本吗&#xff1f; 从您的Global Class onStart中使用此方法来导出DDL脚本。 只需为其提供实体的包名称&…

C# 设计模式,工厂方法

C#工厂方法 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Text;5 using System.Threading.Tasks;6 7 namespace 工厂方法 {8 class Program {9 static void Main(string[] args) { 10 IFacotry i new Fact…

javascript中令人迷惑的this

JS中的this很多时候会让人捉摸不透&#xff0c;不知道这个this到底指向的是什么。现在根据自己的理解写下这篇文章做一个总结。 我们知道this指向谁一般情况下是在运行时决定的&#xff0c;并且运行时决定this指向的因素又有很多&#xff0c;例如是不是被bind了&#xff0c;或…

容易忽视但是功能灰常强大的Java API(五. 二分查找)

五. 二分查找 二分查找是一个高效的查找算法&#xff0c;在java的集合对象中也提供了二分查找的算法&#xff0c;如下面的java api接口&#xff1a; java.util.Arrays.binarySearch(java.lang.Object,java.lang.Object,java.util.Comparator) java.util.Arrays.binarySear…

打印 PRINT

打印 PRINT 字符串和数值类型 可以直接输出。 print(1) #out:1 print(a) #out:a 变量 无论什么类型&#xff0c;数值&#xff0c;字符串&#xff0c;列表&#xff0c;字典...都可以直接输出 n 1 s a list_a [1,3,4] dict_c {a:3,b:4} print(n) #out&…

css3帮你轻松实现圆角效果,不一样的前端页面。

在Web前端页面实现圆角效果&#xff0c;CSS3帮你轻松实现&#xff0c;一个人人皆知的属性 圆角边框的绘制是Web页面和Web应用程序中经常用来美化页面效果的手法之一。今天&#xff0c;小编为大家介绍CSS3提供的可以将矩形变为圆角矩形的一个属性 技术等级&#xff1a;中级 | 适…

使用Vysper,TomEE和PrimeFaces将XMPP服务器嵌入JSF Web应用程序内部

我有一个需要在完成某些工作时通知用户的应用程序。 它使用JSF和Primefaces&#xff0c;因此可以使用大气 &#xff08;也称为Push&#xff09;来实现这种通知。 但是另一个有趣的方法是使用嵌入在Java Web应用程序中的XMPP服务器。 好的&#xff0c;好的&#xff0c;您不必嵌…

appium和selenium不同与相同之处

原文来自&#xff1a; https://www.cnblogs.com/zhengshuheng/p/6370398.html selenium是web端的自动化&#xff0c;appium是app端的自动化&#xff0c;它继承了webdriver(也就是selenium 2) 转载于:https://www.cnblogs.com/lv-lxz/p/11118862.html

Mockito 101

Mockito是一个模拟框架&#xff0c;可让您使用简洁的API编写漂亮的测试。 它偏向于最低规格&#xff0c;使不同的行为看起来有所不同&#xff0c;并显示清晰的错误消息。 创造嘲弄 要使用Mockito创建模拟&#xff0c;只需使用Mock注释模拟&#xff0c;然后调用MockitoAnnotati…

前端开发常用代码片段(下篇)

二十二、正则表达式 //验证邮箱/^\w ([0-9a-zA-Z] [.]) [a-z]{2,4}$///验证手机号/^1[3|5|8|7]\d{9}$///验证URL/^http:\/\/. \.///验证身份证号码/(^\d{15}$)|(^\d{17}([0-9]|X|x)$)///匹配字母、数字、中文字符/^([A-Za-z0-9]|[\u4e00-\u9fa5])*$///匹配中文字符/[\u4e00-\u9…

使用 Visual Studio 编译 wget 为库文件

添加代码与预编译指令与上一篇使用 Visual Studio 编译 wget 为可执行文件一致&#xff0c;区别在于这回建的是静态库工程&#xff08;编译为动态库过程类似:)&#xff09; 从wget的main函数开始读下来&#xff0c;发现问题不少&#xff0c;程序可能基于效率或者编码方便的因素…

动态规划(0-1背包)--- 改变一组数的正负号使得它们的和为一给定数

改变一组数的正负号使得它们的和为一给定数 494. Target Sum (Medium) Input: nums is [1, 1, 1, 1, 1], S is 3. Output: 5 Explanation:-11111 3 1-1111 3 11-111 3 111-11 3 1111-1 3There are 5 ways to assign symbols to make the sum of nums be target 3. 题目描述…

关于设计模式的胡思乱想

设计模式是一个指导&#xff0c;并不强制。有很多地方并不需要设计模式介入&#xff0c;因为设计模式是分离变化&#xff0c;很多代码是一次性的&#xff0c;不会变。如果我们一开始写程序的时候就加入设计模式&#xff0c;这样就显得过度设计&#xff0c;既耗时又费力。 并且…

JSR 310新日期/时间API的自定义JSR 303 Bean验证约束

借助JSR 310&#xff0c;Java 8终于为我们带来了不错的日期和时间API。 对于仍在使用Java 7的那些人&#xff08;例如我目前在我的当前项目中&#xff09;&#xff0c;有很好的反向移植&#xff0c;请访问www.threeten.org了解更多详细信息。 但是&#xff0c;由于有关该主题的…

H5之audio标签放音兼容所有浏览器方法

前端交流群&#xff0c;群文件提供大量文档、书籍和资料。期待你的加入&#xff01;群号&#xff1a;127768464 由于项目需要&#xff0c;最近刚做了一个网页放音的功能&#xff0c;使用到了H5新标签<audio></audio>&#xff0c;但是audio只能支持IE8以上的浏…

VisualStudio2010 SP1 SP1 SDK SQLServer 2008 SP3 下载地址

SP1:http://go.microsoft.com/fwlink/?LinkId210710 SP1 SDK:http://www.microsoft.com/download/en/details.aspx?id21835 SQLServer2008 sp3:http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid757bca07-7b52-46fb-ab92-476be9339442&displaylangzh-cn …

python高级特性:迭代器与生成器

前言 有一个列表 l [a,b,c,d,e] 我想取列表中的内容&#xff0c;有几种方式&#xff1f; # 1.最简单的方法用for循环。 for i in l:print(i,end" ") # 2.用列表内置的方法。 while 1:if l:print(l.pop(),end" ") 这是用常见的方式取出列表中的数据。 …

webpack中实现按需加载

当页面中一个文件过大并且还不一定用到的时候&#xff0c;我们希望在使用到的时候才开始加载这个文件俗称按需加载。这样可以减少页面的响应时间&#xff0c;提高访问速度。 使用webpack打包的出来的文件要实现以上的要求有两种方式&#xff0c;一个是webpack特有的require.en…