笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)

笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)

  • AlexNet (视频24)
    • 主要改进:
    • AlexNet架构
    • AlexNet复杂度
    • d2l代码
    • btw
  • VGG
    • 主要改进:VGG块
    • 从lenet到VGG
  • 网络中的网络NiN
    • 主要改进:NiN块
    • 架构
    • 代码
  • 含并行连接的网络GoogLeNet(视频27)
    • 回顾
    • 主要改进:Inception块
    • GoogLeNet
  • 批量归一化(视频28)
    • 批量规范层的从零实现
    • 批量规范层的框架实现
    • 课程QA搬运
  • ResNet
    • 残差块(Residual Block)
    • ResNet块
    • Residual到底是怎么处理梯度消失,训练到1000层的?
  • Kaggle竞赛

AlexNet (视频24)

随着数据量增大,可以用更深的网络去挖掘数据里更加复杂的信息。
AlexNet赢得了ImageNet数据集比赛的优胜。而其实AlexNet可以理解为一个更加复杂更大的LeNet。

主要改进:

  • 丢弃法
  • ReLu
  • MaxPooling

计算机视觉方法论的改变(CV主要关心如何进行特征提取)
不再那么关注人工特征提取,而是端到端地学习
笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第1张图片

AlexNet架构

第一个卷积层
笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第2张图片
第二个卷积层以及第3、4、5个卷积层(比LeNet多了3个卷积层)

两个隐藏层+一个输出层
AlexNet的两个隐藏层显然大很多
笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第3张图片

更多细节(这些细节有助于更好地训练网络)

  • 激活函数由Sigmoid变为ReLU
  • 两个Dense(4096)之后加入了丢弃层
  • 数据增强(卷积对于位置(光亮)敏感,所以在输入数据中输入更多的变种)

笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第4张图片

AlexNet复杂度

笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第5张图片

AlexNet可学习参数的个数上多了10倍左右

d2l代码

d2l用的数据集是灰度图像数据集Fashion-MNIST,所以代码中的

  • 通道量是1而非3;
  • resize = 224来模拟ImageNet数据集对图片像素大小;

李沐老师的:
笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第6张图片
训练速度比lenet慢了。4190.6 examples/sec on cuda

btw

  • 从代码上看alexnet和lenet没什么区别,但就是这些,跨度了20年。
  • 绝大部分的cnn论文想要证明自己的模型效果好,还是会使用ImageNet数据集。

VGG

前面AlexNet的最大问题是,他虽然是胖版的LeNet,但是很不规则,比如当我们想要进一步加深加大网络结构,不知道具体应该如何设计。所以需要整个框架要有更好的设计思路,这就是VGG在干的事情。

主要改进:VGG块

核心思想:使用可重复的块来配置深度神经网络
用大量3*3的卷积层形成一个块,然后多个块堆叠产生最后的网络。笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第7张图片
使用VGG块的数量不同,得到VGG-11(包含8个卷积层,3个全连接层)VGG-16、VGG-19…

笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第8张图片

圆点的大小越大,占用的内存越多

从lenet到VGG

笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第9张图片

网络中的网络NiN

(现在用的不多,但是有提出很多重要的概念)
前面的网络,在最后都使用了很大的全连接层,a)会占用很大的空间,b)占用很大的计算带宽,c)还容易带来过拟合(这一层就把所有参数给学习掉了)。

主要改进:NiN块

笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第10张图片
这两个1x1的卷积层,其实是相当于全连接层。唯一的作用就是对通道进行了一下融合。

架构

笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第11张图片
笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第12张图片

代码

在这里还看不太出来1x1卷积有什么好处。但是在googlenet上体现的更明显。

含并行连接的网络GoogLeNet(视频27)

笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第13张图片

回顾

主要改进:Inception块

Input和Output高宽不变,通道数叠加
蓝色的块才是真的用来提取特征信息的

inception块不仅增加了多样性(大量不同设置的卷积层),而且参数变少了

GoogLeNet

批量归一化(视频28)

之前存在的问题:顶部变化快,底部变化慢。但是底部变了,顶部也要变,从而导致收敛变慢。
回顾:均值和方差在每一层都会变化
批量归一化的思想:固定小批量的均值和方差,然后再做额外的调整

批量规范层的从零实现

笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第14张图片

批量规范层的框架实现

为了更好理解如何[应用BatchNorm],下面我们将其应用(于LeNet模型)( :numref:sec_lenet)。 回想一下,批量规范化是在卷积层或全连接层之后、相应的激活函数之前应用的。

笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第15张图片

课程QA搬运

理解“作用在通道上”
问题讨论
1、 批量归一化和之前讲到Xavier时到Normalization有什么区别呢?
之前的normalization可以说是在网络初始的地方对网络的宽度等进行限制,但是不会影响深层的网络。而批量归一化就是能够通过在中间层网络的前面/后面添加一个批量归一化层,来让整个网络都保持更强的稳定性,从而加快收敛的速度。

2、批量归一化和权重衰弱
批量归一化不会影响前一层的权重。

3、 BN为什能让收敛时间变短?
实际上BN会使得每层的梯度变大一点,并且差值不大,这样可以选择更大的学习率,从而权重的更新变快,收敛时间就会变短。

4、 在这里插入图片描述
都挺重要,都不能忽略。做实验室肯定都会去看一看,但是遍历比较对于一般人来说成本太高,没有严格衡量的必要。开放框架的时候什么的肯定是需要严格对比,而且是需要投入大量的时间和算力去进行的。
epoch、batch size和 learning rate三者相关
根据内存调整batch size
然后调lr
最后epoch(一开始可以设大点,然后如果发现收敛了可以停掉,下次就知道epoch大概要设置为多少轮了)

ResNet

如果说卷积神经网络里只能学一个,就学他。
思想来源:
核心思想:让你在加深层的时候模型永远不会变差

残差块(Residual Block)

ResNet块

Residual到底是怎么处理梯度消失,训练到1000层的?

笔记|李沐-动手学习机器学习|现代卷积神经网络(视频24-30)_第16张图片

Kaggle竞赛

这个题目,下周安排一下
https://www.kaggle.com/c/classify-leaves

你可能感兴趣的:(机器学习,cnn,学习)