title: DL2 - 在实际应用中如何使得神经网络高效工作
date: 2019-08-14 02:40:57
tags: deeplearning
categories: deeplearning

Welcome to MyBlog!
本文所有截图和文字均借鉴于:Coursera

1 如何设置你的训练集/开发集/测试集

在训练一个神经网络时, 你必须做出许多决定, 例如你的神经网络将会有多少层啊 并且每一层中包含多少个隐藏神经元啊, 学习速率是多少啊, 还有每一层你想用什么激活函数啊 当你开始一个新的应用时, 你几乎不可能一次性就正确地猜到上面提及的, 以及未提及的超参数的准确数值 因此在实际应用中 机器学习是一个***高度迭代的过程***。

机器学习的应用是相当反复的迭代的过程, 你只需要将这个循环进行许多次, 就有希望能为你的应用中的网络找出好的参数, 所以有一件事能决定你能多快地取得进展, 那就是你进行迭代过程时的效率, 而恰当地将你的数据集分为训练集, 开发集和测试集让你的迭代效率更高

1.1 比例

当样本个数只有100、1000、10000时,被广泛认为的最佳比例是60/20/20%。

但是在大数据时代,当你有100万个训练样本时,可能只需要1万个用作开发集和测试集就足够了。

1.2 确保开发集和测试集中的数据分布相同

你需要用开发集对许多不同的模型进行评估, 费尽全力改善模型在开发集上的性能, 如果开发集和测试集的数据分布相同就很方便, 但是因为深度学习算法对训练数据量需求巨大, 我能看到一种趋势是用各种有创意的办法, 比如爬取网页, 来获得比其它途径大得多的训练集, 即使这会带来一些代价, 也就是训练集的数据分布, 与开发集和测试集的数据分布不同, 但你只需要遵守这个经验法则, 你的算法进步速度就会更快

2 bias(偏差)和variance(方差)

2.1 偏差和方差的区别

偏差:预测值或者估计值期望与真实值期望之间的差距。

方差:预测结果的分布情况/分布范围/离散程度。

偏差:评价对象时单个模型,期望输出和真实标记的差别。

方差:评价对象时多个模型,表示多个模型差异程度。

以上图为例:

  1. 左上的模型偏差最大,右下的模型偏差最小;
  1. 左上的模型方差最小,右下的模型方差最大;

2.2 过拟合和欠拟合

高方差:你的训练集误差是1%,而对于开发集误差 为了便于讨论 我们假设是11% 在这个例子里 你的模型对训练集处理得非常好 但是相对来说,开发集处理得就有些不尽如人意 所以这可能是在处理训练集时过拟合了

高偏差:假设训练集的误差是15%,假设你的开发集误差是16%, 在这种情况下,我们假设人工识别误差是0% 因为人可以直接看到这些图片,并判断出这是否是一只猫, 所以看上去,这个算法在训练集上的表现并不尽如人意 如果它并未将训练集数据处理得很好 这就是欠拟合。

3 机器学习的基本准则

high bias: bigger network、train longer、更高级的优化算法、更换神经网络结构

high variance: more data、正则化?、更适合的神经网络结构

只要你能不断扩大所训练的网络的规模 只要你能不断获得更多数据 虽然这两点都不是永远成立的 但如果这两点是可能的 那扩大网络几乎总是能够 减小偏差而不增大方差 只要你用恰当的方式正则化的话 而获得更多数据几乎总是能够 减小方差而不增大偏差 所以归根结底 有了这两步以后 再加上能够选取不同的网络来训练 以及获取更多数据的能力 我们就有了能够且只单独削减偏差 或者能够并且单独削减方差 同时不会过多影响另一个指标的能力 我认为这就是诸多原因中的一个 它能够解释为何深度学习在监督学习中如此有用

4 regularization正则化

4.1 什么是L2正则化

在神经网络中 你有一个代价函数 它是你所有参数的函数 包括w[1] b[1]到w[L] b[L] 这里大写的L是神经网络的层数 因此 代价函数是m个训练样本上 的损失之和 至于正则化 再加上lambda/2m 乘以所有参数W的范数的平方之和 这里W是你的参数矩阵 这里矩阵范数的平方定义为 对于i和j 对矩阵中每一个元素的平方求和

L2正则化也被称为权重衰减(表现在目标函数/参数更新)

4.2 为什么正则化可以防止过拟合(减少方差问题)

如果不加此项,模型必定倾向于最小化损失函数J(θ)
,这么一来就很可能发生overfitting。引入该项后,如果模型过于复杂,该项的次数(degree)也更高,引发的惩罚(penalization)值也更大,由此抑制了模型的过度复杂化,λ也被称为惩罚因子。
λ过小,则对“防止过拟合”几乎无影响。λ过大,则使损失函数前半部分的权重大大降低,试想如果λ接近无限大,最终的结果是所有的θ都接近0,因此需要选择适当的λ。

举一个极端的例子,当lanbda非常大的时候,神经网络的许多神经节点将被弱化,看起来就像一个不容易过拟合的小型网络。

4.3 随机失活正则化(丢弃发dropout)

4.4 其他防止过拟合的方法

1 数据集扩充:比如水平翻转,随机裁剪、随机扭曲、随机放大来变化图片(廉价的方式)

2 早终止法:

5 标准化处理

如果你对左图的那种代价函数使用梯度下降法 那可能必须使用非常小的学习率 因为假如从这里开始 梯度下降法需要经历许多步 反复辗转 才能好不容易终于挪到这个最小值 而如果等值线更趋近于圆形 那无论从何开始 梯度下降法几乎都能直接朝向最小值而去 你可以在梯度下降中采用更长的步长 而无需像左图那样来回摇摆缓慢挪动 当然在实践中 w是一个高维向量 把它画在二维空间中可能无法正确传递出高维中的感觉 但大体上的感觉是你的代价函数会更圆 优化过程更容易进行 因为各种特征的尺度会比较接近

6 梯度 消失/爆发

当训练神经网络时我们会遇到一个问题 尤其是当训练层数非常多的神经网络时 这个问题就是梯度的消失和爆炸 它的意思是当你在训练一个深度神经网络的时候 损失函数的导数或者说斜率 有时会变得非常大 或者非常小甚至是呈指数级减小 这使训练变得很困难

针对此问题的***部分***解决方法:虽然不能完全解决它 但帮助很大 该方法就是更好 更细致地随机初始化你的神经网络

7 梯度检测

导数的正式定义 就是对于很小的

DL2 - Improving Deep Neural Networks- Hyperparameter tuning, Regularization and Optimization相关推荐

  1. Improving Deep Neural Networks:Initialization and Regularization

    0-# 前言 学习一项调优的技术时,通常需要明确三点:Why?What?How? 一.Initialization(参数初始化) 严格意义上讲,"参数初始化"并不算调优手段,any ...

  2. 机器学习入门课程笔记(二)——deeplearning.ai: Improving Deep Neural Networks

    欢迎前往我的个人博客网站:mathscode.top获取更多学习资源. 所有文本内容会在知乎: MathsCode同步 所有开放资源会在Github: MathsCode开放下载 有问题欢迎大家评论或 ...

  3. 《Improving Deep Neural Networks》的理论知识点

    原文博客:Doi技术团队 链接地址:https://blog.doiduoyi.com/authors/1584446358138 初心:记录优秀的Doi技术团队学习经历 目录 文章目录 目录 深度学 ...

  4. coursera 吴恩达 -- 第二课 Improving Deep Neural Networks :第一周课后习题(3)Gradient Checking

    改正后 differrence降到了 e−7 e − 7 e^{-7}

  5. [论文品读]·d-vector解读(Deep Neural Networks for Small Footprint Text-Dependent Speaker Verification)

    Deep Neural Networks for Small Footprint Text-Dependent Speaker Verification 目录 ABSTRACT 1. INTRODUC ...

  6. 【翻译】Aggregated Residual Transformations for Deep Neural Networks

    Aggregated Residual Transformations for Deep Neural Networks 作者:Saining Xie1 Ross Girshick2 Piotr Do ...

  7. 3.Deep Neural Networks for YouTube Recommendations论文精细解读

    一.总述 今天分享的是Deep Neural Networks for Y ouTube Recommendations这篇论文的一些核心,这篇论文被称为推荐系统工程实践领域的一篇神文,每一个细节都值 ...

  8. [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)...

    译自:http://sebastianruder.com/multi-task/ 1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我 ...

  9. [深度学习论文笔记][Adversarial Examples] Deep Neural Networks are Easily Fooled: High Confidence Predictions

    Nguyen, Anh, Jason Yosinski, and Jeff Clune. "Deep neural networks are easily fooled: High conf ...

最新文章

  1. Html中各种空格的显示
  2. java三段式if_Java几种常用的断言风格你怎么选?
  3. Fiddler 抓包高级进阶篇-天罗地网抓包大法
  4. Qt实现拖动一个lineEdit同时拖动mainwindow
  5. linux进程篇 (二) 进程的基本控制
  6. JFreeChart应用实例-折线图
  7. Python 异常处理 Python 基础教程 try..except
  8. 【机器学习基础】范数与正则化
  9. LiveVideoStack 2020 年度盘点
  10. vue cli 4.x打包后如何部署到tomcat服务器上
  11. Python数据可视化2018:数据可视化库为什么这么多?
  12. html表单action属性值,HTML中的form表单中的action属性
  13. IIS配置教程。。。。。
  14. java程序设计简明教程张晓龙_Java网络编程简明教程
  15. SHELL中的引用之引用变量
  16. Qt Creator配置FreeImage库
  17. 蝶形算法(H.264)
  18. python画建筑物_通过Python将故宫的建筑物图片,转化为手绘图
  19. 马原复习思维导图-前三章
  20. cnzz.php,PHP curl抓取cnzz统计数据

热门文章

  1. ibm aix_IBM AIX设备驱动程序开发
  2. 微信公众号消息text换行问题
  3. php实现数字英文验证码,php 英文、数字验证码的完整代码
  4. 哈工大计算机学院崔启航,2014-2015年度哈尔滨工业大学学生先进集体及先进个人评选结果公示...
  5. Django(静态文件和Django应用和分布式路由)
  6. 软件测试团队口号及队名,团队队名口号(精选50句)
  7. rgb 接口lcd 驱动调试
  8. 彩色照片转化为黑白照片
  9. 支付入门-易宝支付实践
  10. python抢红包程序算法,Python 抢红包算法模拟