系列笔记 | 深度学习连载(4):优化技巧(上)
点击上方“AI有道”,选择“星标”公众号
重磅干货,第一时间送达
深度学习中我们总结出 5 大技巧:
1. Adaptive Learning Rate
我们先从Adaptive Learning Rate 谈起,我Gradient Decent 中我们已经讨论了:
AdaGrad :
紧着AdaGrad的步伐,我们进一步看:
RMSProp
神经网络训练的时候,Error Surface 很有可能非常复杂
RMSProp其实和AdaGrad 是一样的思路,但是具体求分母的时候,它考虑了历史gradient和新的g的权重a 。
Momentum
如何找到最优的网络参数呢?
optimize loss 的时候,很有可能就会遇到如下三大问题:
慢 very slow
局部最优 local minimal
鞍点 saddle point
我们可以考虑在物理世界的场景进行映射:小球从山上滑落,在局部最低的时候,他的动量让它冲出局部。
我们复习一下梯度下降:Gradient的方向和Movement 的方向相反
当我们考虑运动的动量后:
运动不在是基于梯度,而是基于以前的运动
Movement not just based on gradient, but previous movement.
其中 movement = laststep of movement - present gradient
Momentum 虽然不能保证走出“困境”,但是这是一个巨大的进步
Adam 算法
Adam 算法是结合 RMSProp 和 Momentum, 来寻找最优解。看起来比较复杂,
实际上懂 RMSProp 和 Momentum后,也就很快理解了。
2. New activation function
深度学习中我们总结出5大技巧:本节我们就从新的激活函数Relu谈起。
新的激活函数 new activation function
我们知道,激活函数在基于神经网络的深度学习中将线性变换,转换为非线性变换。是神经网络能够学到东西的重要一环。常用的激活函数有sigma, tanh 等。
从辛顿大神在2012年imagenet 中的CNN网络中引入relu,这个神奇的看上去是线性的激活函数进入我们的视野,以后扮演者非常重要的作用。
那为什么要引入relu,sigma、tanh 函数有什么缺点呢?
最主要的问题在于deep learning 无法真正deep:
如图所示,训练上8层之后,正确率急速下降。 这是为什么呢?
主要原因在于梯度消失Vanishing Gradient Problem
如图所示:传统的激活函数,数据变化后,输出的变化比输入小,而且根据ChainRule, 层数越深,梯度值相乘的结果越小,小到接近于0的时候,就无法学习了。
所以,我们引入Relu,他的特点是:
1. 计算快速(导数是1)
2. 生物学原理(貌似是大脑回路,不太了解)
3. linear piece 可以模拟任何函数(在以后的深度学习理论会讲)
4. 重点是:可以解决梯度消失的问题
Relu 可以简化神经网络:
虽然Relu看起来很好(有严格数学证明,以后会深入讲),但是在小于0的时候导数为0,对于参数学习是不利的:所以我们引入Relu的变种:leaky Relu, Parametirc Relu, 以后还会谈到 Selu
本专栏图片、公式很多来自台湾大学李弘毅老师、斯坦福大学cs229、cs231n 、斯坦福大学cs224n课程。在这里,感谢这些经典课程,向他们致敬!
作者简介:武强 兰州大学博士,谷歌全球开发专家Google Develop Expert(GDE Machine Learing 方向)
CSDN:https://me.csdn.net/dukuku5038
知乎:https://www.zhihu.com/people/Dr.Wu/activities
漫画人工智能公众号:DayuAI-Founder
系列笔记:
系列笔记 | 深度学习连载(1):神经网络
系列笔记 | 深度学习连载(2):梯度下降
系列笔记 | 深度学习连载(3):反向传播
推荐阅读
(点击标题可跳转阅读)
干货 | 公众号历史文章精选
我的深度学习入门路线
我的机器学习入门路线图
最新 AI 干货,我在看
系列笔记 | 深度学习连载(4):优化技巧(上)相关推荐
- 系列笔记 | 深度学习连载(5):优化技巧(下)
点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 深度学习中我们总结出 5 大技巧: 本节继续从第三个开始讲起. 3. Early stoppi ...
- 系列笔记 | 深度学习连载(6):卷积神经网络基础
点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 卷积神经网络其实早在80年代,就被神经网络泰斗Lecun 提出[LeNet-5, LeCun ...
- 系列笔记 | 深度学习连载(2):梯度下降
点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 我们回忆深度学习"三板斧": 1. 选择神经网络 2. 定义神经网络的好坏 ...
- 【读点论文】Deep Learning Face Representation by Joint Identification-Verification,深度学习应用在优化问题上,deepid2
Deep Learning Face Representation by Joint Identification-Verification 人脸识别的关键挑战是开发有效的特征表示,以减少个体内的差异 ...
- 【深度学习】小白学深度学习:参数优化与优化器原理
深度学习的「参数优化」 深度学习模型的优化过程是指调整模型的参数以尽量减小预测误差的过程.下面是深度学习模型优化的基本流程: 确定损失函数:衡量模型预测输出和实际输出之间误差的函数. 梯度反向传播:用 ...
- 深度学习系列:深度学习在腾讯的平台化和应用实践
深度学习系列:深度学习在腾讯的平台化和应用实践(一) 莫扎特 2015-01-04 6:05:13 大数据技术 评论(0) 深度学习是近年机器学习领域的重大突破,有着广泛的应用前景.随着Google公 ...
- 深度学习 | 训练及优化方法
---------------------------- 原文发表于夏木青 | JoselynZhao Blog,欢迎访问博文原文. ---------------------------- 深度学习 ...
- 「构建企业级推荐系统系列」深度学习在推荐系统中的应用
点击上方"数据与智能","星标或置顶公众号" 第一时间获取好内容 作者 | gongyouliu 编辑 | auroral-L 2016年DeepMind开发的 ...
- 深度学习11个实用技巧
深度学习11个实用技巧 深度学习工程师George Seif发表了一篇博文,总结了7个深度学习的技巧,本文增加了几个技巧,总结了11个深度学习的技巧,主要从提高深度学习模型的准确性和速度两个角度来分析 ...
最新文章
- python求解方程组
- PHP安装包中VC9和VC11的含义
- Android 系统Dimension和间距参数详解
- 【C++】 C++标准模板库(十一) 优先队列
- getcwd()函数用法
- MVC Scaffolding SmartCode-Engine 更新
- 具有NetBeans,WebLogic 12c,JPA和MySQL数据源的Arquillian
- aws lambda_如何为AWS Lambda实施日志聚合
- webview 调用java_Android中在WebView里实现Javascript调用Java类的方法
- 如何将一棵树转换成二叉树
- jquery根据身份证号码计算出生日期、年龄、性别代码
- java做h5小游戏服务端_神藏西游H5游戏源码服务端+客户端+搭建教程
- android 手机如何备份通讯录,手机通讯录怎么备份
- 安装 cachecloud 并搭建redis cluster集群
- TSNAdb:肿瘤新抗原数据库
- 手动删除eureka多余服务
- 网页版数据库管理工具安装教程——phpAdmin
- 怎么借书(分配资源问题)(SWUST OJ1287)
- zemax 学习笔记
- c语言实用计算器项目,C语言实现简单计算器小项目
热门文章
- 空净厂商为何对“9颗星”认证趋之若鹜?
- linux 终端控制-- 多彩输出 格式排版
- JS子元素oumouseover触发父元素onmouseout
- 对list中的元素按照元素的属性进行排序
- sql分类及基本sql操作,校对规则(mysql学习笔记二)
- Android组件的通讯-Intent
- Aix iostat命令解析
- 坐在马桶上看算法:Dijkstra最短路算法
- 手把手教你webpack4.x从零开始搭建vue项目
- uva 12508 - Triangles in the Grid(几何+计数)