DL2 - Improving Deep Neural Networks- Hyperparameter tuning, Regularization and Optimization
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 偏差和方差的区别
偏差:预测值或者估计值期望与真实值期望之间的差距。
方差:预测结果的分布情况/分布范围/离散程度。
偏差:评价对象时单个模型,期望输出和真实标记的差别。
方差:评价对象时多个模型,表示多个模型差异程度。
以上图为例:
- 左上的模型偏差最大,右下的模型偏差最小;
- 左上的模型方差最小,右下的模型方差最大;
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相关推荐
- Improving Deep Neural Networks:Initialization and Regularization
0-# 前言 学习一项调优的技术时,通常需要明确三点:Why?What?How? 一.Initialization(参数初始化) 严格意义上讲,"参数初始化"并不算调优手段,any ...
- 机器学习入门课程笔记(二)——deeplearning.ai: Improving Deep Neural Networks
欢迎前往我的个人博客网站:mathscode.top获取更多学习资源. 所有文本内容会在知乎: MathsCode同步 所有开放资源会在Github: MathsCode开放下载 有问题欢迎大家评论或 ...
- 《Improving Deep Neural Networks》的理论知识点
原文博客:Doi技术团队 链接地址:https://blog.doiduoyi.com/authors/1584446358138 初心:记录优秀的Doi技术团队学习经历 目录 文章目录 目录 深度学 ...
- coursera 吴恩达 -- 第二课 Improving Deep Neural Networks :第一周课后习题(3)Gradient Checking
改正后 differrence降到了 e−7 e − 7 e^{-7}
- [论文品读]·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 ...
- 【翻译】Aggregated Residual Transformations for Deep Neural Networks
Aggregated Residual Transformations for Deep Neural Networks 作者:Saining Xie1 Ross Girshick2 Piotr Do ...
- 3.Deep Neural Networks for YouTube Recommendations论文精细解读
一.总述 今天分享的是Deep Neural Networks for Y ouTube Recommendations这篇论文的一些核心,这篇论文被称为推荐系统工程实践领域的一篇神文,每一个细节都值 ...
- [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)...
译自:http://sebastianruder.com/multi-task/ 1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我 ...
- [深度学习论文笔记][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 ...
最新文章
- Html中各种空格的显示
- java三段式if_Java几种常用的断言风格你怎么选?
- Fiddler 抓包高级进阶篇-天罗地网抓包大法
- Qt实现拖动一个lineEdit同时拖动mainwindow
- linux进程篇 (二) 进程的基本控制
- JFreeChart应用实例-折线图
- Python 异常处理 Python 基础教程 try..except
- 【机器学习基础】范数与正则化
- LiveVideoStack 2020 年度盘点
- vue cli 4.x打包后如何部署到tomcat服务器上
- Python数据可视化2018:数据可视化库为什么这么多?
- html表单action属性值,HTML中的form表单中的action属性
- IIS配置教程。。。。。
- java程序设计简明教程张晓龙_Java网络编程简明教程
- SHELL中的引用之引用变量
- Qt Creator配置FreeImage库
- 蝶形算法(H.264)
- python画建筑物_通过Python将故宫的建筑物图片,转化为手绘图
- 马原复习思维导图-前三章
- cnzz.php,PHP curl抓取cnzz统计数据
热门文章