阅读大概需要5分钟

跟随小博主,每天进步一丢丢

往期回顾

【深度学习】你该会的精选面试题(一)

【深度学习】你该会的精选面试题(二)

【深度学习】你不了解的细节问题(三)

一大批历史精彩文章啦

10s看完单词再看文章吧!

manufacturer n. 制造商;厂商

crumple vt. 弄皱;使一蹶不振

vi. 起皱;一蹶不振

n. 皱纹;褶皱

hear of 听说;听说过

bump n. 肿块;隆起物;撞击

vi. 碰撞,撞击;颠簸而行

vt. 碰,撞;颠簸

adv. 突然地,猛烈地

n. (Bump)人名

discriminate vt. 歧视;区别;辨别

vi. 区别;辨别

总共四问

第一问

初始化如何影响训练?

解析

方法:我们生成两个 12 维高斯混合。高斯具有相同的协方差矩阵,但在每个维度都有一个由 1 隔开的均值。该数据集由 500 个高斯组成,其中 400 个用于训练,100 个用于测试。我们在这个神经网络中初始化权重值,看哪一个具有最好的训练性能。

假设:我们期望 Xavier 损失具有最好的性能(它是 tensorflow 中使用的默认值),而其他方法性能不佳(尤其是不断的初始化)。

运行实验所需的时间: 34.137 s

结论:Xavier 和高斯(具有较低的方差)初始化会得到很好的训练。有趣的是,常数 0 的初始化最终导致训练,而其他初始化并不会。

讨论:Xavire 初始化提供了最好的性能,这并不奇怪。标准偏差小的高斯也适用(但不像 Xavire 那样好)。如果方差变得太大,那么训练速度就会变得较慢,这可能是因为神经网络的大部分输出都发生了爆炸。

第二问

不同层的权重是否以不同的速度收敛?

解析

我们的第一个问题是,不同层的权重是否以不同的速度收敛。

方法: 我们生成两个 12 维高斯混合。高斯具有相同的协方差矩阵,但每个维度上都有一个由 1 隔开的均值。该数据集由 500 个高斯组成,其中 400 个用于训练,100 个用于测试。我们在这个数据集上训练一个带有 3 个隐藏层(将导致 4 层权重,包括从输入到)第一层的权重)的神经网络,我们在训练过程中绘制每层 50 个权重值。我们通过绘制两个轮数之间的权重的差分来衡量收敛性。

假设: 我们期望后一层的权重会更快地收敛,因为它们在整个网络中进行反向传播时,后期阶段的变化会被放大。

运行实验所需的时间: 3.924 s

结论: 我们发现后一层的权重比前一层收敛得更快。

讨论: 看上去第三层的权重是几乎单调地收敛到它们的最终值,而且这一过程非常快。至于前几层权重的收敛模式,比较复杂,似乎需要更长的时间才能解决。

第三问

正则化如何影响权重?

解析

方法:我们生成两个 12 维高斯混合。高斯具有相同的协方差矩阵,但在每个维度上都有一个由 1 隔开的均值。该数据集由 500 个高斯组成,其中 400 个用于训练,100 个用于测试。我们在这个数据集上训练一个具有 2 个隐藏层的神经网络,并在整个训练过程中绘制 50 个权重值。

然后我们在损失函数中包含 L1 或 L2 正则项之后重复这一过程。我们研究这样是否会影响权重的收敛。我们还绘制了正确率的图像,并确定它在正则化的情况下是否发生了显著的变化。

假设:我们预计在正则化的情况下,权重的大小会降低。在 L1 正则化的情况下,我们可能会得到稀疏的权重。如果正则化强度很高,我们就会预计正确率下降,但是正确率实际上可能会随轻度正则化而上升。

运行实验所需的时间: 17.761 s

结论:我们注意到正则化确实降低了权重的大小,在强 L1 正则化的情况下导致了稀疏性。对正确率带来什么样的影响尚未清楚。

讨论:从我们所选的 50 个权重的样本可以清晰地看出,正则化对训练过程中习得的权重有着显著的影响。我们在 L1 正则化的情况下能够获得一定程度的稀疏性,虽然看起来有较大的正则化强度,这就导致正确率的折衷。而 L2 正则化不会导致稀疏性,它只有更小幅度的权重。同时,对正确率似乎没有什么有害的影响。

第四问

什么是fine-tuning?

解析

在实践中,由于数据集不够大,很少有人从头开始训练网络。常见的做法是使用预训练的网络(例如在ImageNet上训练的分类1000类的网络)来重新fine-tuning(也叫微调),或者当做特征提取器。

以下是常见的两类迁移学习场景:

1 卷积网络当做特征提取器。使用在ImageNet上预训练的网络,去掉最后的全连接层,剩余部分当做特征提取器(例如AlexNet在最后分类器前,是4096维的特征向量)。这样提取的特征叫做CNN codes。得到这样的特征后,可以使用线性分类器(Liner SVM、Softmax等)来分类图像。

2 Fine-tuning卷积网络。替换掉网络的输入层(数据),使用新的数据继续训练。Fine-tune时可以选择fine-tune全部层或部分层。通常,前面的层提取的是图像的通用特征(generic features)(例如边缘检测,色彩检测),这些特征对许多任务都有用。后面的层提取的是与特定类别有关的特征,因此fine-tune时常常只需要Fine-tuning后面的层。

预训练模型

在ImageNet上训练一个网络,即使使用多GPU也要花费很长时间。因此人们通常共享他们预训练好的网络,这样有利于其他人再去使用。例如,Caffe有预训练好的网络地址Model Zoo。

何时以及如何Fine-tune

决定如何使用迁移学习的因素有很多,这是最重要的只有两个:新数据集的大小、以及新数据和原数据集的相似程度。有一点一定记住:网络前几层学到的是通用特征,后面几层学到的是与类别相关的特征。这里有使用的四个场景:

1、新数据集比较小且和原数据集相似。因为新数据集比较小,如果fine-tune可能会过拟合;又因为新旧数据集类似,我们期望他们高层特征类似,可以使用预训练网络当做特征提取器,用提取的特征训练线性分类器。

2、新数据集大且和原数据集相似。因为新数据集足够大,可以fine-tune整个网络。

3、新数据集小且和原数据集不相似。新数据集小,最好不要fine-tune,和原数据集不类似,最好也不使用高层特征。这时可是使用前面层的特征来训练SVM分类器。

4、新数据集大且和原数据集不相似。因为新数据集足够大,可以重新训练。但是实践中fine-tune预训练模型还是有益的。新数据集足够大,可以fine-tine整个网络。

实践建议

预训练模型的限制。使用预训练模型,受限于其网络架构。例如,你不能随意从预训练模型取出卷积层。但是因为参数共享,可以输入任意大小图像;卷积层和池化层对输入数据大小没有要求(只要步长stride fit),其输出大小和属于大小相关;全连接层对输入大小没有要求,输出大小固定。

学习率。与重新训练相比,fine-tune要使用更小的学习率。因为训练好的网络模型权重已经平滑,我们不希望太快扭曲(distort)它们(尤其是当随机初始化线性分类器来分类预训练模型提取的特征时)。

作者 七月在线

知乎

链接 https://zhuanlan.zhihu.com/p/39533743

推荐阅读:

一大批历史精彩文章啦

【收藏版】长文详解基于并行计算的条件随机场

【珍藏版】长文详解python正则表达式

这些神经网络调参细节,你都了解了吗

谈谈我在自然语言处理入门的一些个人拙见

大数定律和中心极限定理的区别和联系

深度学习之卷积神经网络CNN理论与实践详解

深度学习之RNN、LSTM及正向反向传播原理

TreeLSTM Sentiment Classification

基于attention的seq2seq机器翻译实践详解

【干货】基于注意力机制的seq2seq网络


欢迎关注深度学习自然语言处理公众号,我会每天更新自己在机器学习深度学习NLPlinuxpython以及各种数学知识学习的一点一滴!再小的人也有自己的品牌!期待和你一起进步!

长按识别二维码

点个赞呗

【深度学习】你不了解的细节问题(四)相关推荐

  1. 深度学习(26)随机梯度下降四: 损失函数的梯度

    深度学习(26)随机梯度下降四: 损失函数的梯度 1. Mean Squared Error(MSE) 2. Cross Entropy Loss CrossEntropy 3. Softmax (1 ...

  2. 深度学习(8)TensorFlow基础操作四: 维度变换

    深度学习(8)TensorFlow基础操作四: 维度变换 1. View 2. 示例 3. Reshape操作可能会导致潜在的bug 4. tf.transpose 5. Squeeze VS Exp ...

  3. 深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》

    深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1< You Only Look Once: Unified, Real-Time Object Detection> Abstra ...

  4. 深度学习论文阅读目标检测篇(四)中文版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》

    深度学习论文阅读目标检测篇(四)中文版:YOLOv1<YouOnlyLookOnce:Unified,Real-TimeObjectDetection> 摘要 1.引言 2. 统一的检测 ...

  5. 深度学习 第3章线性分类 实验四 pytorch实现 Logistic回归 上篇

    目录: 第3章 线性分类 3.1 基于Logistic回归的二分类任务 3.1.1 数据集构建 3.1.2 模型构建 1. Logistic函数 2. Logistic回归算子 3.1.3 损失函数 ...

  6. 深度学习 第3章线性分类 实验四 pytorch实现 Softmax回归 鸢尾花分类任务 下篇

    目录: 第3章 线性分类 3.3 实践:基于Softmax回归完成鸢尾花分类任务 3.3.1 数据处理 3.3.1.1 数据集介绍 3.3.1.2 数据清洗 1. 缺失值分析 2. 异常值处理 3.3 ...

  7. 【深度学习 图像分类】图像分类任务细节

    无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程.人工智能教程 实现一个完整的图像 ...

  8. 深度学习实战案例:基于LSTM的四种方法进行电影评论情感分类预测(附完整代码)

    序列分类是一个预测建模问题,你有一些输入序列,任务是预测序列的类别. 这个问题很困难,因为序列的长度可能不同,包含非常大的输入符号词汇表,并且可能需要模型学习输入序列中符号之间的长期上下文或依赖关系. ...

  9. 深度学习算法工程师面试知识点总结(四)

    这是算法工程师面试知识点总结的第四篇,有兴趣的朋友可以看看前三篇的内容: 深度学习算法工程师面试知识点总结(一) 深度学习算法工程师面试知识点总结(二) 深度学习算法工程师面试知识点总结(三) 基于t ...

  10. 【蜂口 | AI人工智能】性别脸型分类——龙鹏 深度学习与人脸图像应用连载(四)

    本系列文章皆首发于蜂口知道公众号~内容来源:蜂口小程序,欢迎关注了解 大家好,我是龙鹏.这次继续给大家带来人脸图像相关的分享. 这次我们的分享是人脸的性别和脸型分类问题, 我们主要会从两个方面给大家进 ...

最新文章

  1. 机器学习(实战)泰坦尼克号(游客存活率预估)
  2. 〖Linux〗使用Qt5.2.0开发Android的NDK应用程序
  3. 64 安装_解决“不能安装 64 位Office,因已安装 32 位 Office 产品”问题
  4. 百度地图——判断一个点是否在一个区域内?
  5. C++内存泄露检测原理
  6. 【Python】双十一,就用turtle画个单身狗送给自己
  7. 超图软件试用许可操作步骤_软件中的操作步骤
  8. Windows Server 2012 R2 或 2016 无法安装 .Net 3.5.1
  9. java中after什么意思_Java中的即时isAfter()方法
  10. python编程(paddle ocr)
  11. Intel XDK问题
  12. 二、服务器优化(3)服务器端优化措施
  13. Java通过选择城市来计算运费(基础程序)
  14. 自控力 笔记10 结语 完结篇
  15. css中“~”(波浪号)、“,”(逗号)、 “ + ”(加号)和 “ ”(大于号)是什么意思?
  16. termux python_【小白教程】Termux实现安卓手机Python编程
  17. 常用纸张及特性,印刷常用规格尺寸
  18. matlab画直线段,如果要在MATLAB中绘制上题中的直线段,要求 ,则对应的MATLAB语句为____________...
  19. 永倍达商城:以新技术、新业态、新模式电商服务社会
  20. 程序员可选择的个博客论坛网站

热门文章

  1. 利用Xcode建立PhoneGap应用程序环境
  2. 软件架构——设计原则
  3. C#实现--单链表(链式)
  4. X86逆向教程12:内存补丁的制作
  5. Ubuntu命令整理
  6. Launch MySQL on my PC
  7. 【Android Studio安装部署系列】三十一、从Android studio3.0.0升级到Android studio3.0.1
  8. win 7 64 安装 tensorflow
  9. Nginx-配置https虚拟服务(访问http时自动跳转https)
  10. (转)Linux查看CPU,硬盘,内存的大小