Deep Learning.ai学习笔记_第三门课_结构化机器学习项目
目录
目标:学习一些机器学习优化改进策略,使得搭建的学习模型能够朝着最有希望的方向前进。
第一周 机器学习策略(1)
搭建机器学习系统的挑战:尝试和改变的东西太多,比如超参数。
什么是正交化?
正交化是协助调节搭建机器学习系统的方法之一,类比老式电视机的调节按钮,正交化指的是电视设计师设计这样的按钮,使得每个按钮都只调整一个性质,这样调整电视图像就很容易,就可以把图像跳到正中。
训练神经网络时,使用early stopping虽然可以改善过拟合,但是该功能没有那么正交化,因为他同时影响训练集的拟合和改善开发集的表现这两件事情。
单一数字评估指标
在搭建的学习模型选择优化过程中,最好把多个评估指数按照某一个公式标准转换为单一的评估指标,这样处理的效果是可以大大加快训练和选择的效率。
满足和优化指标
有时形成单一数字评估指标不太现实,这时选择多个指标中其中的某一个指标或者两个指标,作为评估当前学习模型是一种不错的选择。
训练/开发/测试集划分
开发集和测试集最好来自同一分布,如果不在同一分布会导致最终测试的结果不理想,甚至导致前期的工作白白浪费。
设立开发集以及评估指标,可以定义你要瞄准的目标,通过在同一分布中设立开发集和测试集,就可以瞄准最终团队所期望的目标。而设立训练集的方式会影响你逼近那个目标有多快。
随着时间的推移,当您继续训练算法时,可能模型越来越大,数据越来越多,但是性能无法超过某个理论上限,这就是所谓的贝叶斯最优错误率(Bayes optimal error)。所以贝叶斯最优错误率一般认为是理论上可能达到的最优错误率,就是说没有任何办法设计出一个x到y的函数,让它能够超过一定的准确度。
减少可避免偏差方法
如果你想用尽一切办法减少可避免偏差,我建议试试这样的策略:比如使用规模更大的模型,0这样算法在训练集上的表现会更好,或者训练更久。使用更好的优化算法,比如说加入momentum或者RMSprop,或者使用更好的算法,比如Adam。你还可以试试寻找更好的新神经网络架构,或者说更好的超参数。这些手段包罗万有,你可以改变激活函数,改变层数或者隐藏单位数,虽然你这么做可能会让模型规模变大。或者试用其他模型,其他架构,如循环神经网络和卷积神经网络。
减少方差方法
另外当你发现方差是个问题时,你可以试用很多技巧,包括以下这些:你可以收集更多数据,因为收集更多数据去训练可以帮你更好地推广到系统看不到的开发集数据。你可以尝试正则化,包括L2正则化,dropout正则化或者我们在之前课程中提到的数据增强。同时你也可以试用不同的神经网络架构,超参数搜索,看看能不能帮助你,找到一个更适合你的问题的神经网络架构。
第二周
机器学习策略(2)
错误分析
进行错误分析,你应该找一组错误样本,可能在你的开发集里或者测试集里,观察错误标记的样本,看看假阳性(false positives)和假阴性(false negatives),统计属于不同错误类型的错误数量。在这个过程中,你可能会得到启发,归纳出新的错误类型。
深度学习算法对随机误差很健壮,但对系统性的错误就没那么健壮了。
对于第一个系统,建议搭建快速而粗糙的实现,然后用它做偏差/方差分析,用它做错误分析,然后用分析结果确定下一步优先要做的方向。
把数据分成训练、开发和测试集,在长期能给你带来更好的系统性能。
处理数据不匹配问题
做错误分析,或者看看训练集,或者看看开发集,试图找出,试图了解这两个数据分布到底有什么不同,然后看看是否有办法收集更多看起来像开发集的数据作训练。(收集更多数据,可以采用人工数据合成的方法来进行。 但当你使用人工数据合成时,一定要谨慎,要记住你有可能从所有可能性的空间只选了很小一部分去模拟数据。)
技术上,为了避免对测试集过拟合,要做错误分析,应该人工去看开发集而不是测试集。
迁移学习
如果你想从任务A学习并迁移一些知识到任务B,那么当任务A和任务B都有同样的输入x时,迁移学习是有意义的。 当任务A的数据比任务B多得多时,迁移学习意义更大。
多任务学习
多任务学习能让你训练一个神经网络来执行许多任务,这可以给你更高的性能,比单独完成各个任务更高的性能。
端到端学习
端到端深度学习做的是,你训练一个巨大的神经网络,输入就是一段音频,输出直接是听写文本。
当你的数据集较小的时候,传统流水线方法其实效果也不错,通常做得更好。你需要大数据集才能让端到端方法真正发出耀眼光芒。
优点:
首先端到端学习真的只是让数据说话。
所需手工设计的组件更少, 不需要花太多时间去手工设计功能,手工设计这些中间表示方式。
缺点:
可能需要大量的数据。
排除了可能有用的手工设计组件, 精心设计的人工组件可能非常有用,但它们也有可能真的伤害到你的算法表现。
参考资料:
Deep Learning.ai学习笔记_第三门课_结构化机器学习项目的更多相关文章
- Deep Learning.ai学习笔记_第一门课_神经网络和深度学习
目录 前言 第一周(深度学习引言) 第二周(神经网络的编程基础) 第三周(浅层神经网络) 第四周(深层神经网络) 前言 目标: 掌握神经网络的基本概念, 学习如何建立神经网络(包含一个深度神经网络), ...
- Deep Learning.ai学习笔记_第五门课_序列模型
目录 第一周 循环序列模型 第二周 自然语言处理与词嵌入 第三周 序列模型和注意力机制 第一周 循环序列模型 在进行语音识别时,给定一个输入音频片段X,并要求输出对应的文字记录Y,这个例子中输入和输出 ...
- Deep Learning.ai学习笔记_第四门课_卷积神经网络
目录 第一周 卷积神经网络基础 第二周 深度卷积网络:实例探究 第三周 目标检测 第四周 特殊应用:人脸识别和神经风格转换 第一周 卷积神经网络基础 垂直边缘检测器,通过卷积计算,可以把多维矩阵进行降 ...
- Deep Learning.ai学习笔记_第二门课_改善深层神经网络:超参数调试、正则化以及优化
目录 第一周(深度学习的实践层面) 第二周(优化算法) 第三周(超参数调试.Batch正则化和程序框架) 目标: 如何有效运作神经网络,内容涉及超参数调优,如何构建数据,以及如何确保优化算法快速运行, ...
- DeepLearning.ai学习笔记(三)结构化机器学习项目--week2机器学习策略(2)
一.进行误差分析 很多时候我们发现训练出来的模型有误差后,就会一股脑的想着法子去减少误差.想法固然好,但是有点headlong~ 这节视频中吴大大介绍了一个比较科学的方法,具体的看下面的例子 还是以猫 ...
- 【Deep Learning Nanodegree Foundation笔记】第 10 课:Sentiment Analysis with Andrew Trask
In this lesson, Andrew Trask, the author of Grokking Deep Learning, will walk you through using neur ...
- 【Deep Learning Nanodegree Foundation笔记】第 1 课:INTRODUCTION Welcome
Welcome to the Deep Learning Nanodegree Foundations Program! In this lesson, you'll meet your instru ...
- 吴恩达《深度学习》-课后测验-第三门课 结构化机器学习项目(Structuring Machine Learning Projects)-Week1 Bird recognition in the city of Peacetopia (case study)( 和平之城中的鸟类识别(案例研究))
Week1 Bird recognition in the city of Peacetopia (case study)( 和平之城中的鸟类识别(案例研究)) 1.Problem Statement ...
- Deeplearning.ai课程笔记-结构化机器学习项目
目录 一. 正交化 二. 指标 1. 单一数字评估指标 2. 优化指标.满足指标 三. 训练集.验证集.测试集 1. 数据集划分 2. 验证集.测试集分布 3. 验证集.测试集大小 四. 比较人类表现 ...
随机推荐
- linux中通过lsof恢复删除的文件,前题是fd被占用。
http://www.serverwatch.com/tutorials/article.php/3822816/Recovering-Deleted-Files-With-lsof.htm One ...
- weka的基本使用
目录: 1. 简介 2.界面初识 3.数据格式 4.数据准备 5.关联规则 6.分类与回归 7.聚类分析 8.Weka相关资料 9.Weka二次开发 10.Weka源代码导入 1. 简介 WEKA的全 ...
- ESP8266进阶篇
ESP8266进阶篇 20170225(应需要,继续使用此模块!!!) 说一下如何通过内网和外网来控制我的ESP8266的数据模块 1.内网控制:(要求手机直接连接在ESP8266的WIFI上面,使用 ...
- scrapy Formrequest用法(豆瓣登录案例)
# -*- coding: utf-8 -*-import scrapyfrom scrapy.http import Request,FormRequest class DbSpider(scrap ...
- Kafka概述及安装部署
一.Kafka概述 1.Kafka是一个分布式流媒体平台,它有三个关键功能: (1)发布和订阅记录流,类似于消息队列或企业消息传递系统: (2)以容错的持久方式存储记录流: (3)记录发送时处理流. ...
- linux文件打包并发送到其他服务器
scp /data/backup/mongodump/mongodb.$DATE.tar root@192.168.1.70:/home/iscsi/mongodb/
- TF之RNN:实现利用scope.reuse_variables()告诉TF想重复利用RNN的参数的案例—Jason niu
import tensorflow as tf # 22 scope (name_scope/variable_scope) from __future__ import print_function ...
- Go版GTK:环境搭建(windows)
Go版GTK:环境搭建(windows) https://blog.csdn.net/tennysonsky/article/details/79221507 所属专栏: Go语言开发实战 1 ...
- PostgreSQL 的命令行工具 psql 的常用命令
1. 连接服务器: psql -h 192.168.1.88 -U username -d databasename 2. 切换数据库: \c dbname 3. 列出所有数据库: \l 4. 列出所 ...
- javascript 词法结构小结
作为一名前端程序员,自然学习了一些框架,但是学的越多越发现自己基础的不足,于是想系统的学习一下js基础,然后把它记录下来. 如其他编程语言一样,词法结构是一门语言的基础,它规定了诸如如何给变量起名字. ...