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. C#在Oralce环境执行查询时报"Arithmetic operation resulted in an overflow"

    问题描述:C#代码在Oralce环境执行分组求和的Sql时报错,提示“Arithmetic operation resulted in an overflow”,即算术运算导致溢出 (1).执行Sql ...

  2. C++第四次作业--继承与派生

    C++ 继承 面向对象程序设计中最重要的一个概念是继承.继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易.这样做,也达到了重用代码功能和提高执行效率的效果. 当创建一个类时 ...

  3. 3.Minst数据集分类

    import numpy as np from keras.datasets import mnist from keras.utils import np_utils from keras.mode ...

  4. java 多线程,线程安全等定义

    线程安全, synchronized的使用,保证方法或代码块操作的原子性.可见性和有序性 参考这篇文章: 7张图带你轻松理解Java 线程安全 public class ThreadDemo { pr ...

  5. Summer training #2

    A:不管有没有负数 一顿操作之后肯定只有正数 又因为A=A-B 所以最大值是一直在减小的 所以一定有结果 B:..一开始以为求min操作数 WA了2发 直接求所有数的GCD如果所有数的GCD都不是1的 ...

  6. OI视角浅谈布隆过滤器

    简要谈及布隆过滤器 Preface 不负责的出题人扔了一道5e5,2M卡内存的题,标算布隆过滤器,然而std自己用std::set 70M碾过去了. 没学OI时候草草看过这个,不过忘得差不多了. 今天 ...

  7. es6 模块编译 *** is not function

    今天学习vuejs,里面用到了es6的写法,遇到了一个很怪的问题,不知道有人遇到么. 安装的模块引用:import Vue from 'vue';(注意,Vue处没有{},如果加上这个就报错Uncau ...

  8. laravel中遇到的坑

    已经遇到的坑和未来可能遇到的坑都将在这里写出来: 在资源控制器中创建新的方法后(如果资源控制器中的7个方法无法满足你的需求时,你就会创建新的方法),接下来就是创建路由,这个时候注意了,你必须要把路由放 ...

  9. 在Ubuntu 18.04系统中蓝牙鼠标连接失败问题的解决

    2018-08-22 16:00:35作者:谖瓞稿源:linux站 如果你在Ubuntu 18.04操作系统中有蓝牙鼠标连接失败问题,那就参考下面的解决方法处理. 解决方法 首先在系统终端下输入: b ...

  10. 2019牛客暑期多校训练营(第一场)I dp+线段树

    题意 给出n个点,每个点有a,b两个属性,让你从左下角到右上角划一条线,线的左边每个点的贡献是\(a_i\),线的右边每个点的贡献是\(b_i\),使得两部分的总和最大. 分析 找一条折线将点分割开, ...