说明

该文为笔者在微信公众号:吴恩达deeplearningai 所推送《机器学习训练秘籍》系列文章的学习笔记,公众号二维码如下,1到15课课程链接点这里

该系列文章主要是吴恩达先生在机器学习方面的经验分享和基础教程,每一章十分短小,旨在让我们能在碎片化的时间中一点点熟悉机器学习的相关知识。

想看该系列文章英文版最新章节的同学请点击这里进行邮件订阅

第1至15章

1、2、3、决策方案很重要

-方案示例:
1、获取更多的数据,即收集更多猫的图片

2、收集更加多样化的训练数据集,比如处于不常见位置的猫的图片,颜色奇异的猫的图片,以及使用不同相机参数拍摄的猫的图片

3、通过增加梯度下降(gradient descent)的迭代次数,使算法训练得久一些

4、尝试一个拥有更多层(layer)/更多隐藏元(hidden units)/更多参数(parameters)的,规模更大的神经网络

5、尝试加入正则化(例如 L2 正则化)

6、改变神经网络的架构(激活函数,隐藏元数量等等)

...

选择以上合理的决策方案很重要.

4、机器学习现在发展迅速的原因

-有两个主要因素推动着近期的发展:
1、数据可用性(data availability):采集数据的设备越来越多,数据量越来越大
2、计算规模(computational scale):在近些年前,我们才开始能够使用现有的海量数据集来训练规模足够大的神经网络。

-旧的学习算法似乎并不知道要如何来处理如今这个规模量级的数据。

-在小数据集条件下,传统算法是否会表现得更好,取决于人们如何进行特征工程。

-神经网络提高性能方式:

(i) 训练大型的神经网络

(ii) 拥有海量的数据

5、并发集和测试集

-数据集一般包含正样本和负样本

-机器学习中的普遍做法是使用 70% / 30% 的比例来随机划分出训练集和测试集

-图片质量会比较影响训练和识别结果。

-训练集(training set)用于运行你的学习算法。

-开发集(development set)用于调整参数,选择特征,以及对学习算法作出其它决定。有时也称为留出交叉验证集(hold-out cross validation set)。

-测试集(test set)用于评估算法的性能,但不会据此决定使用什么学习算法或参数。

-开发集和测试集的使命就是引导你的团队对机器学习系统做出最重要的改变。(合理地设置开发集和测试集,使之近似模拟可能的实际数据情况,并处理得到一个好的结果。)

6、开发集和测试集应该服从同一分布

7、开发集和测试集应有多大

-当数据量特别特别大的时候,开发集和测试集的规模并不是越大越好。

8、使用单值评估指标进行优化

-查准率(Precision,又译作精度):预测结果为某类的样本中,实际为该类的比例。

-查全率(Recall,又译作召回率):某类的样本中,被正确识别为该类的比例。
-F1 Score为上述的平均值,使用加权平均求出单值指标更方便

9、优化指标和满意度指标

-准确率(accuracy)、运行时间(running time)、假正例率(false positive rate)和假反例率(false negative rate)等

10、通过开发集和度量指标加速迭代

-在建立一个机器学习系统时,我往往会这样:
1、尝试一些关于系统构建的想法(idea)。
2、使用代码(code)实现想法。
3、根据实验(experiment)结果判断想法是否行得通。(第一个想到的点子一般都行不通!)在此基础上学习总结,从而产生新的想法,并保持这一迭代过程。

-拥有开发集和度量指标,可以使你更快地检测出哪些想法给系统带来了小(或大)的提升 ,从而快速确定要继续研究或者是要放弃的方向。

11、12、何时修改开发集、测试集和度量指标

-开发集和测试集必须分布相同,否则有可能过拟合

-对假正例进行严重惩罚

-要对系统周期性得进行评估

-(i) 如果你在开发集上过拟合,则获取更多的开发集数据。
-(ii) 如果开发集和测试集的数据分布和实际关注的数据分布不同,则获取新的开发集和测试集。
-(iii) 如果评估指标不能够对最重要的任务目标进行度量,则需要修改评估指标。

13、快速构建并迭代你的第一个系统

-先快速构建一个最基础的系统,后面慢慢改,一般第一个都是有问题

14、15、误差分析:根据开发集样本评估多个想法

-误差分析(Error Analysis) 指的是检查算法误分类的开发集样本的过程,以便你找到造成这些误差的原因。

-对出错的开发集样本进行一定量的收集分析

-出错的这些样本中,观察其中某一类的比例(如果识别猫的系统,将狗误认为猫,而狗在这些误分类的样本中的比例),如果比例较小(eg.5%)有可能就为该项目的上限,不用在意,因为即使针对狗进行特定的改进,可能也只是会对总识别率提升一点点;如果比例较大,进行改进后就可以显著增加识别率

-误差分析并不会产生一个明确的数学公式来告诉你什么任务的优先级最高。你还需要考虑在不同类别上的预期进展以及解决每个类别所需的工作量。

-作者十分强调优先级问题,看来是看过太多的人做无用功了,他在视频中就经常提到:去一家公司参观,团队花6个月来排查解决的一个问题,他一眼就看出是哪个参数的问题。

---恢复内容结束---

笔记:《机器学习训练秘籍》——吴恩达deeplearningai微信公众号推送文章的更多相关文章

  1. 机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 http://www.ai-start.com/

    机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 GNU Octave    开源  MatLab http://www.ai-start.com/ https://zhuanlan.zhihu ...

  2. 吴恩达《机器学习》课程笔记——第六章:Matlab/Octave教程

    上一篇  ※※※※※※※※  [回到目录]  ※※※※※※※※  下一篇 这一章的内容比较简单,主要是MATLAB的一些基础教程,如果之前没有学过matlab建议直接找一本相关书籍,边做边学,matl ...

  3. 吴恩达(Andrew Ng)——机器学习笔记1

    之前经学长推荐,开始在B站上看Andrew Ng的机器学习课程.其实已经看了1/3了吧,今天把学习笔记补上吧. 吴恩达老师的Machine learning课程共有113节(B站上的版本https:/ ...

  4. ML:吴恩达 机器学习 课程笔记(Week1~2)

    吴恩达(Andrew Ng)机器学习课程:课程主页 由于博客编辑器有些不顺手,所有的课程笔记将全部以手写照片形式上传.有机会将在之后上传课程中各个ML算法实现的Octave版本. Linear Reg ...

  5. 第19月第8天 斯坦福大学公开课机器学习 (吴恩达 Andrew Ng)

    1.斯坦福大学公开课机器学习 (吴恩达 Andrew Ng) http://open.163.com/special/opencourse/machinelearning.html 笔记 http:/ ...

  6. 【Deeplearning.ai 】吴恩达深度学习笔记及课后作业目录

    吴恩达深度学习课程的课堂笔记以及课后作业 代码下载:https://github.com/douzujun/Deep-Learning-Coursera 吴恩达推荐笔记:https://mp.weix ...

  7. 我在 B 站学机器学习(Machine Learning)- 吴恩达(Andrew Ng)【中英双语】

    我在 B 站学机器学习(Machine Learning)- 吴恩达(Andrew Ng)[中英双语] 视频地址:https://www.bilibili.com/video/av9912938/ t ...

  8. Coursera课程《Machine Learning》吴恩达课堂笔记

    强烈安利吴恩达老师的<Machine Learning>课程,讲得非常好懂,基本上算是无基础就可以学习的课程. 课程地址 强烈建议在线学习,而不是把视频下载下来看.视频中间可能会有一些问题 ...

  9. 吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)

    前言 目录: RNN提出的背景 - 一个问题 - 为什么不用标准神经网络 - RNN模型怎么解决这个问题 - RNN模型适用的数据特征 - RNN几种类型 RNN模型结构 - RNN block - ...

随机推荐

  1. 8年前,令我窒息的Java socket体验学习

    本来已经放弃编程了,那时我发誓再也不去IT培训班了,如果找不到工作,我就去工地上打工.可心有不甘,老是惦记着,我不想天天面对生产线,做一个丧失思考能力的操作工,可后来呀,还是走上了程序员之路...这么 ...

  2. ssh无密码登陆远程机,pssh轻批量工具

    #B(client)--------A(g_server)#A:   ssh-keygen -t rsa (g_server)#B:    scp -P 58422 root@g_server_ip: ...

  3. 【node.js】函数、路由

    Node.js中函数的使用与Javascript类似,一个函数可以作为另一个函数的参数.我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数. function say(word) { ...

  4. 【转】python中的对象拷贝

    转自:https://www.cnblogs.com/bhlsheji/p/5352330.html python中.进行函数參数传递或者返回值时,假设是一般的变量,会拷贝传递.假设是列表或字典则是引 ...

  5. JFinal 部署在 Tomcat 下推荐方法(转载)

    经常有人在群里问 tomcat 下项目部署的问题,现写个简单的博文,希望能帮助到有需要的人. 首先明确一下 JFinal 项目是标准的 java web 项目,其部署方式与普通 java web 项目 ...

  6. MySQL(五)SELECT语句执行顺序

    上一篇讲述了Oracle的SELECT语法的执行顺序,这篇讲述MySQL的SELECT语法的执行顺序.MySQL的SELECT语法的执行顺序和Oracle的基本相同,只是增加了MySQL独有的LIMI ...

  7. win10下安装Jenkins

    Jenkins是一个基于java的持续集成工具,开源项目.用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.随着近几年docker技术的成熟和应用,很多公司开始大量尝试 ...

  8. block本质探寻八之循环引用

    说明:阅读本文,请参照之前的block文章加以理解: 一.循环引用的本质 //代码——ARC环境 void test1() { Person *per = [[Person alloc] init]; ...

  9. python新手第一天学习笔记-python循环控制和第一个python小游戏

    Python的三种逻辑控制 1.python语法. python 是以缩进作为基本判断的.同一代码缩进需要保持一致.否则会报错 1.if 的三种循环 _age = 53 # 注意,input接受的都是 ...

  10. IOLI crackme分析——从应用中学习使用radare2

    Crackme0x00 - writeup 我现在开始看radare2book了,现在刚看1/3,有些无聊,因为之前也看过一些radare2的实例讲解,所以现在先试着做一下里面的crackme练习. ...