神经网络的表现

在Training Set上表现不好 ----> 可能陷入局部最优
在Testing Set上表现不好 -----> Overfitting 过拟合

虽然在机器学习中,很容易通过SVM等方法在Training Set上得出好的结果,但DL不是,所以得先看Training Set上的表现。

要注意方法适用的阶段:
比如:dropout方法只适合于:在Training Data上表现好,在Testing Data上表现不好的。
如果在Training Data上就表现不好了,那么这个方法不适用。

神经网络的改进

1. New Activation Function

梯度消失:在输入层附近梯度小,在输出层梯度大,当参数还没有更新多少时,在输出层已经收敛了,这是激活函数\(sigmoid\)对值压缩的问题。
也就是一个比较大的input进去,出来的output比较小,所以最后对total loss的影响比较小,趋于收敛。

1.1 ReLU

如何解决梯度消失?
修改activation function为ReLU(Rectified Linear Unit),
ReLU input 大于0时,input 等于 output,input小于0时,output等于0。

其中,output为0的neural可以去掉,得到一个thinner linear network。

虽然局部是线性的,但这个network从总体上来说还是非线性的。

input小于0的部分,微分为0,这样就没法很好地更新参数了,所以有以下两种方法改进。
leaky ReLU,Parametric ReLU。

1.2 Maxout

此外,还可以通过Maxout自动学习activation function。ReLU是一种特殊的Maxout。

此外maxout可以与ReLU不同,如下图所示,可以有更灵活的形状,更多的piece(即更多的element)。

因为不是max的部分可以先去掉,所以可以不用train那些w,先train线性的局部。
当然,因为训练数据很多,最后都会被train到。

2. Adaptive Learning Rate

在Adagrad的基础上,Hinton提出了RMSProp方法。

对于local minimum的问题,因为每一个dimension都在谷底的情况很少,所以local minimum并没有那么多。

当然解决这个问题,有个Momentum的方法,模拟滚动的物理现象,加上惯性。

Adam方法,RMSProp + Momentum。

如果说在Testing Data上表现不好,可以用以下三种方法。

3. Early Stopping

用验证集去模拟测试集,在Testing Set表现开始变得不好的时候,停止Training。

4. Regularization

打个比方:小孩从出生到六岁,神经网络越来越多,但六岁以后开始变少。

在原来的Loss Function(minimize square error, cross entropy)的基础上加Regularization这一项(L2),不会加bias这一项,加Regularization的目的是让曲线更加平滑。

L2 Regularization 也叫 Weight Decay,这样每次都会让weight小一点。最后会慢慢变小趋近于0,但是会与后一项梯度的值达到平衡,使得最后的值不等于0。

用L1 Regularization也是可以的。

L2下降的很快,很快就会变得很小,在接近0时,下降的很慢,会保留一些接近01的值;
L1的话,减去一个固定的值(比较小的值),所以下降的很慢。

所以,通过L1-Norm training 出来的model,参数会有很大的值。

5. Dropout

对network里面的每个neural(包括input),做sampling(抽样)。 每个neural会有p%会被丢掉,跟着的weight也会被丢掉。

形象理解:(练武功&团队合作)

Dropout就是一种终极的集成学习 Ensemble。

可以理解为,因为有很多的model,Structure都不一样,
虽然每个model可能variance很大,但是如果它们都是很复杂的model时,平均起来时bias就很小,所以就比较准了。

如果直接将weight乘以 (1-p%),结果之前做average的结果跟output y是approximated。

【笔记】机器学习 - 李宏毅 - 10 - Tips for Training DNN的更多相关文章

  1. DNN训练技巧(Tips for Training DNN)

    本博客是针对李宏毅教授在Youtube上上传的课程视频<ML Lecture 9-1:Tips for Training DNN>的学习笔记. 课程链接 Recipe of Deep Le ...

  2. 重构(Refactoring)技巧读书笔记(General Refactoring Tips)

    重构(Refactoring)技巧读书笔记 之一 General Refactoring Tips, Part 1 本文简要整理重构方法的读书笔记及个人在做Code Review过程中,对程序代码常用 ...

  3. Andrew Ng机器学习课程10补充

    Andrew Ng机器学习课程10补充 VC dimension 讲到了如果通过最小化训练误差,使用一个具有d个参数的hypothesis class进行学习,为了学习好,一般需要参数d的线性关系个训 ...

  4. Andrew Ng机器学习课程10

    Andrew Ng机器学习课程10 a example 如果hypothesis set中的hypothesis是由d个real number决定的,那么用64位的计算机数据表示的话,那么模型的个数一 ...

  5. 写出完美论文的十个技巧10 Tips for Writing the Perfect Paper

    10 Tips for Writing the Perfect Paper Like a gourmet meal or an old master painting, the perfect col ...

  6. 10 Tips for Writing Better Code (阅读理解)

    出发点 http://www.tuicool.com/articles/A7VrE33 阅读中文版本<编写质优代码的十个技巧>,对于我编码十年的经验,也有相同感受, 太多的坑趟过,太多的经 ...

  7. 笔记-python-standard library-8.10 copy

    笔记-python-standard library-8.10 copy 1.      copy source code:Lib/copy.py python中的赋值语句不复制对象,它创建了对象和目 ...

  8. SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章)

    SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章) 示例数据库:点我 CHAPTER 08 数据修改 8.1 插入数据 8.1.1 INSERT VALUES 语句 8.1 ...

  9. 机器学习笔记P1(李宏毅2019)

    该博客将介绍机器学习课程by李宏毅的前两个章节:概述和回归. 视屏链接1-Introduction 视屏链接2-Regression 该课程将要介绍的内容如下所示: 从最左上角开始看: Regress ...

随机推荐

  1. java-zhisji

    1. int indexOf(int ch):用来检查给定的一个字符在当前字符串中第一次出现的下标位置.这里的下标和数组的下标意思相近,0表示该字符串的第1个字符,以此类推.当该字符串中并不     ...

  2. 分析Ajax爬取今日头条街拍美图-崔庆才思路

    站点分析 源码及遇到的问题 代码结构 方法定义 需要的常量 关于在代码中遇到的问题 01. 数据库连接 02.今日头条的反爬虫机制 03. json解码遇到的问题 04. 关于response.tex ...

  3. BZOJ 1046 [HAOI2007]上升序列(LIS + 贪心)

    题意: m次询问,问下标最小字典序的长度为x的LIS是什么 n<=10000, m<=1000 思路: 先nlogn求出f[i]为以a[i]开头的LIS长度 然后贪心即可,复杂度nm 我们 ...

  4. symfony传参,接收参数,twig方法记录

    呜呜呜,很烦,让我自己完成一个在线学习系统后端,和前端整合一下,我把接口参数搞了半天(学习symfony太久远),记录一下屈辱历史,以后注意,不然上线了一堆bug,很烦 下面是几种返回的数据的格式 1 ...

  5. 题解 bzoj1954【Pku3764 The xor – longest Path】

    做该题之前,至少要先会做这道题. 记 \(d[u]\) 表示 \(1\) 到 \(u\) 简单路径的异或和,该数组可以通过一次遍历求得. \(~\) 考虑 \(u\) 到 \(v\) 简单路径的异或和 ...

  6. 《C# 爬虫 破境之道》:第二境 爬虫应用 — 第五节:小总结带来的优化与重构

    在上一节中,我们完成了一个简单的采集示例.本节呢,我们先来小结一下,这个示例可能存在的问题: 没有做异常处理 没有做反爬应对策略 没有做重试机制 没有做并发限制 …… 呃,看似平静的表面下还是隐藏着不 ...

  7. Python3 (一) 基本类型

    前言: 什么是代码? 代码是现实世界事物在计算机世界中的映射. 什么事写代码? 写代码是将现实世界中的事物用计算机语言来描述. 一.数字:整形与浮点型 整型:int 浮点型:float (没有单精度和 ...

  8. css常用元素通用样式表

    @charset "utf-8";html,body,a,h1,h2,h3,h4,h5,h6,p,a,b,i,em,s,u,dl,dt,dd,ul,ol,li,strong,spa ...

  9. 【笔记】Git简明教程

    前言 Git这个东西我曾经有学过,但学的内容太多了,有点懵,不太理解,磕磕碰碰的,走了不少弯路.不过最近我在B站上发现了一个讲的很好的教程:<表严肃讲Git>.因此,我决定用文字的方式分享 ...

  10. ELK-图示nginx中ip的地理位置

    一.环境准备: ELK stack 环境一套 geolite数据库文件 二.下载geolite数据库(logstash机器上解压,logstash需调用): geolite官网:https://dev ...