《Structuring Machine Learning Projects》课堂笔记
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
[2] 深度学习 500 问
《Structuring Machine Learning Projects》课堂笔记的更多相关文章
- 《Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization》课堂笔记
Lesson 2 Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization 这篇文章其 ...
- 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 ...
- [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 ...
- 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 ...
- 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 ...
- 课程二(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 ...
- 课程二(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 ...
- 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 ...
- 课程二(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 ...
- 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 ...
随机推荐
- zencart简易页面ezpage后台编辑位置
zencart简易页面ezpage后台编辑位置: 后台-Tools(工具)-EZ-Pages(简易页面管理) 若编辑之后无法保存,说明includes\languages\语言包\html_inclu ...
- 清除LabVIEW中波形图表或波形图中的历史数据
清除LabVIEW中波形图表或波形图中的历史数据 方法一: 前面板中右键单击波形图表或波形图,选择数据操作>>清除图表或数据操作>>清除图形 方法二:(编程方法) 用于清除图表 ...
- 精选30道Java多线程面试题
1.线程和进程的区别 进程是应用程序的执行实例.比如说,当你双击的Microsoft Word的图标,你就开始运行的Word的进程.线程是执行进程中的路径.另外,一个过程可以包含多个线程.启动Word ...
- 神奇的系统bug
这是报错的日志 Status bar could not find cached time string image. Rendering in-process
- BBS-添加文章及文章中图片
目录 BBS项目中的添加文章 BBS项目中的添加文章中的图片 BBS项目中的添加文章 1.添加文章的时候,我们需要特别注意的是这个地方需要利用到到BeautifulSoup这个模块,因为我们在inpu ...
- Hadoop-No.15之Flume基于事件的数据收集和处理
Flume是一种分布式的可靠开源系统,用于流数据的高效收集,聚集和移动.Flume通常用于移动日志数据.但是也能移动大量事件数据.如社交媒体订阅,消息队列事件或者网络流量数据. Flume架构 Flu ...
- lnmp环境搭建(Ubuntu)
dpkg -l | grep gcc ubuntu系统查看已安装的包 dpkg -S nginx 查看安装的nginx apt-get update 首先更新 ...
- 字节转b kb mb gb 等
/// <summary> /// 计算文件大小函数(保留两位小数),Size为字节大小 /// </summary> /// <param name="siz ...
- angular打包(一): electron
路由问题: 打包成electron前,需要修改 index.html <base href="/"> 成 <base href="./"> ...
- Java当中的集合框架Map
简书作者:达叔小生 Java当中的集合框架Map 01 Map提供了三个集合视图: 键集 值集 键-值 映射集 public String getWeek(int num){ if(num<0 ...