Lesson 3 Structuring Machine Learning Projects

这篇文章其实是 Coursera 上吴恩达老师的深度学习专业课程的第三门课程的课程笔记。

参考了其他人的笔记继续归纳的。

迁移学习 (Transfer learning)

深度学习中,最强大的理念之一就是,有的时候神经网络可以从一个任务中习得知识,并将这些知识应用到另一个独立的任务中。

假如说我们已经训练好一个图像识别神经网络,如猫狗识别器之类的,然后我们让它适应或者说迁移到放射科诊断,类似 X 射线扫描图这种任务。需要做的是,把神经网络最后的输出层删掉以及进入到最后一层的权重删掉,然后为最后一层重新赋予随机权重,让它在放射诊断数据上训练。

经验规则是,如果有一个小数据集,就只训练输出层前的最后一层或两层;但是如果有很多数据,那么也许可以重新训练网络中的所有参数。如果重新训练所有参数的话,在图像识别数据上的初期训练阶段,被称为预训练 (pre-training);而在放射诊断数据上训练的过程,被称为微调 (fine tuning)

为什么迁移学习会有效果呢?有很多低层次特征,比如说边缘检测、曲线检测、阳性对象检测 (positive objects),从非常大的图形识别数据库中习得这些能力可能有助于我们的学习算法在放射诊断中做得更好。算法学到了很多结构信息,图像形状信息,其中一些知识可能会很有用。

多任务学习 (Multi-task learning)

在迁移学习中,步骤是串行的,从任务 A 里学习只是然后迁移到任务 B。在多任务学习中,任务是同时开始学习的,试图让单个神经网络同时做几件事情,然后希望每个任务都能帮到其他所有任务。

以下面这个例子来说明。

假设我们在研发无人驾驶车辆,那么需要同时检测不同的物体,比如行人、车辆、停车标志以及交通灯等。

上图中输入的图像是 \(x^{(i)}\),对应的标签 \(y^{(i)}\) 不再是一个数值,而是一个向量。假设,现在我们就检测 4 个类别,那么 \(y^{(i)}\) 就是一个 \(4\times1\) 的向量。那么现在我们训练一个神经网络,输入 \(x\),输出是一个四维向量 \(\hat{y}\)。

对于这个神经网络的代价函数如下
\[
J(W^{[1]},b^{[1]},\dots)=\frac{1}{m}\sum^m_{i=1}\sum^4_{j=1}L(\hat{y}_j^{(i)},y_j^{(i)})
\]
其中 \(\sum^4_{j=1}L(\hat{y}_j^{(i)},y_j^{(i)})\) 是单个样本的损失函数,也就是对四个分量的求和。
\[
L(\hat y_{j}^{(i)},y_{j}^{(i)}) = - y_{j}^{(i)}\log\hat y_{j}^{(i)} - (1 - y_{j}^{(i)})log(1 - \hat y_{j}^{(i)})
\]
如果训练的一组任务可以共用低层次特征时,多任务学习可以提供一种有效的方式。

References

[1] Coursera深度学习教程中文笔记

[2] 深度学习 500 问

《Structuring Machine Learning Projects》课堂笔记的更多相关文章

  1. 《Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization》课堂笔记

    Lesson 2 Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization 这篇文章其 ...

  2. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Assignment(Initialization)

    声明:所有内容来自coursera,作为个人学习笔记记录在这里. Initialization Welcome to the first assignment of "Improving D ...

  3. [C4] Andrew Ng - Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization

    About this Course This course will teach you the "magic" of getting deep learning to work ...

  4. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week2, Assignment(Optimization Methods)

    声明:所有内容来自coursera,作为个人学习笔记记录在这里. 请不要ctrl+c/ctrl+v作业. Optimization Methods Until now, you've always u ...

  5. Coursera, Deep Learning 2, Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Course

    Train/Dev/Test set Bias/Variance Regularization  有下面一些regularization的方法. L2 regularation drop out da ...

  6. 课程二(Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization),第三周(Hyperparameter tuning, Batch Normalization and Programming Frameworks) —— 2.Programming assignments

    Tensorflow Welcome to the Tensorflow Tutorial! In this notebook you will learn all the basics of Ten ...

  7. 课程二(Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization),第二周(Optimization algorithms) —— 2.Programming assignments:Optimization

    Optimization Welcome to the optimization's programming assignment of the hyper-parameters tuning spe ...

  8. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Assignment(Gradient Checking)

    声明:所有内容来自coursera,作为个人学习笔记记录在这里. Gradient Checking Welcome to the final assignment for this week! In ...

  9. 课程二(Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization),第一周(Practical aspects of Deep Learning) —— 4.Programming assignments:Gradient Checking

    Gradient Checking Welcome to this week's third programming assignment! You will be implementing grad ...

  10. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week3, Hyperparameter tuning, Batch Normalization and Programming Frameworks

    Tuning process 下图中的需要tune的parameter的先后顺序, 红色>黄色>紫色,其他基本不会tune. 先讲到怎么选hyperparameter, 需要随机选取(sa ...

随机推荐

  1. 5.NIO_ Selector选择器

    1.阻塞与非阻塞 传统的 IO 流都是阻塞式的.也就是说,当一个线程调用 read() 或 write() 时,该线程被阻塞,直到有一些数据被读取或写入, 该线程在此期间不能执行其他任务因此,在完成网 ...

  2. Python 编解码

    字符串编码常用类型:utf-8,gb2312,cp936,gbk等. python中,我们使用decode()和encode()来进行解码和编码 在python中,使用unicode类型作为编码的基础 ...

  3. moment.js 使用方法记录

    操作 设值/赋值 1. 具体方法. 1)毫秒(millisecond) moment().millisecond(Number); moment().millisecond(); // Number ...

  4. 一文透彻掌握 Python 编码问题

    一.当我说字符时,我在说什么? 当我们提起字符串时,每个程序员都能理解到,我们说的是一个字符序列.但是,当我们说字符时,很多人就困惑了. 写在纸上的字符很容易辨识,但是为了将不同的字符在计算机中标识出 ...

  5. java8学习之Lambda表达式继续探讨&Function接口详解

    对于上次[http://www.cnblogs.com/webor2006/p/8186039.html]已经初步引入的Java8中Stream流的概念,其中使用了map的操作,它需要接受一个Func ...

  6. windows10家庭版远程桌面连接报错:CredSSP加密oracle修正

    转 原地址:https://www.cnblogs.com/lindajia/p/9021082.html Windows10远程桌面连接 报错信息 : 网上找到方法 但是奈何是 "Win1 ...

  7. VUE-练习

    作业一:有红黄蓝三个按钮,以及一个200*200矩形box,点击不同按钮,box的颜色会被切换为指定的颜色 <!DOCTYPE html> <html lang="en&q ...

  8. MariaDB(MySql)使用储存过程和随机函数插入10万条数据

    ))default charset =utf8; #定义一个随机切割字符串的函数 delimiter // create function randStr() ) begin ) default 'A ...

  9. php类相关知识---__unset和__isset

    __unset 删除非公有属性,在外部调用unset时发生,  __isset用来检测对象属性是否设置值 <?php class coach { protected $chairfit = &q ...

  10. shell的正则表达式

    正则表达式处理文件的内容,shell处理文件本身 grep *匹配0到n个 .(点儿)能匹配任意字符----8.8.8.8用于测试外网是否通畅 egrep