11月14日 第六周作业说明
- 提交截止时间:11月20日19:59:59
- 本次作业提交到腾讯文档中的个人的文件夹中。(在腾讯文档中还可做个人学习笔记)
- 作业的文件命名格式:学号-姓名-第六周作业
任务一、回答以下问题。
- 分别用广度优先、深度优先、迭代加深搜索按顺序写出访问和扩展的节点。
广度优先:
访问: A B C D E F G H I J
扩展: A B C E F
深度优先:
- 访问A B D C E G H F I J
- 扩展 A B C E F
迭代加深搜索:
- D=1: 访问:A 扩展
- D=2: 访问A B C 扩展A
- D=3: 访问A B C D E F 扩展A B C
- D=4: 访问A B C D E F G H I J 扩展A B C E F
- 用迭代加深算法按顺序写其访问和扩展的节点,目标节点为 13。
- D=1: 访问1
- D=2: 访问1 2 3 4 扩展 1
- D=3: 访问1 2 5 6 3 7 4 8 9 扩展 1 2 3 4
- D=4: 访问1 2 5 6 10 11 3 7 12 13 扩展 1 2 6 3 7
- 对于树搜索,如果分支因子 b = 3, 使用广度优先搜索, 最大深度 d = 3, 共有多少节点被访问?有多少节点被扩展?
共有40个节点被访问,13个节点被扩展
- 对于树搜索,如果分支因子 b = 4, 使用迭代加深搜索, 最大深度 d = 3, 共有多少节点被访问?有多少节点被扩展?
共有112个节点被访问,27个节点被扩展
以下5~10题为选做题(加分题,CNN)。
- 单选题。以下关于卷积神经网络结构的说法,不正确的是?(c)
- 由于卷积操作后的图片尺寸会相应减小,加入padding的操作可以控制输出尺寸,避免边缘信息被舍弃的问题。
- 卷积神经网络中的卷积层神经元之间通过局部相关性稀疏连接。
- 池化(pooling)操作对Feature Map进行了降采样,将会丢弃部分信息,影响模型效果。
- 经过卷积操作得到的Feature Map往往需要经过非线性变换,以增强模型的表示能力。
- 单选题。关于卷积神经网络中卷积层和池化层的一般的使用关系描述正确的是?(c)
- 只使用连续的卷积层或池化层中的一种提取信息。
- 每层随机使用卷积层和池化层中的一种提取信息。
- 交替使用卷积层和池化层提取信息。
- 先连续使用卷积层之后连续使用池化层提取信息。
- 单选题。以下关于卷积神经网络的说法,不正确的是?(d)
- 感受野的概念源于视网膜中的神经元只响应视野的受限区域中的光刺激。
- 卷积神经网络考虑了图片的空间信息,并且针对图片的平移不变性有很好的支持。
- 卷积神经网络中共享权重的含义是同一个滤波器(filter)将会在一片感受野中进行扫描复用。
- 卷积神经网络与全连接神经网络在连结结构上截然不同,无法进行对比和转化。
- 单选题。关于卷积神经网络中池化层的描述正确的是?(d)
- 池化层只有最大池化和平均池化两种。
- 池化层的输出形状和输入形状是一样的。
- 单纯使用池化层也可以训练出一个很好的模型。
- 池化层的一个主要目的是为了减少计算。
- 简答题。在卷积神经网络中,卷积常用来提取图像的特征。不同层次的卷积操作提取到的特征类型有什么不同?
浅层学到是一层简单的颜色、边缘等特征;中层能学到一些复杂的纹理特征;而深层曾能学到一些复杂的、具有区别性、辨别性的关键特征
- 简介卷积神经网络中卷积层的基本参数(如:Kernel Size、Stride、Padding、In Channels、Out Channels)。
Kernel Size 指卷积核的大小,如3*3
Stride 指卷积核每次移动的大小,如1
Padding指输入大小和卷积核大小不匹配时进行像素填充
In Channels 指每层输入的通道(第三维)大小
out Channels 指每层输出的通道(第三维)大小
任务二、代码实战。
- 写出图的宽度优先搜索程序(伪代码)。(可参见课件50页)
// 宽度优先搜索算法
void BFS(VLink G[], int v) {
int w;
VISIT(v); // 访问 v 并入队
visited[v] = 1;
ADDQ(Q, v);
// 对队列 Q 的各元素
while (!EMPTYQ(Q)) {
v = DELQ(Q);
w = FIRSTADJ(G, v);
do {
// 进行访问和入队
if (visited[w] == 0) {
VISIT(w);
ADDQ(Q, w);
visited[w] = 1;
}
} while ((w = NEXTADJ(G, v)) != -1);
}
}
- 选做:基于ResNet18实现CIFAR-10图片分类。
要求:提交代码,提交运行结果的截屏。
https://git.cybergeek.net.cn:444/zhao/resnet18-on-cifa10
运行结果:pytorch
keras
任务三、阅读经典论文,并做文献综述。
每周一篇经典论文。
建议阅读:论文 《Deep Residual Learning for Image Recognition》
- (ResNet是何凯明团队的作品,论文《Deep Residual Learning for Image Recognition》是 2016 CVPR最佳论文。ResNet的Res是 Residual 的缩写,用意在于基于残差学习让神经网络能够越来越深,准确率越来越高。
- 更深的神经网络往往更难被训练,作者提出了一个residual learning框架,以方便对更深的网络进行训练。作者提供了非常全面的实验数据,表明残差网络更容易被优化,并可以在很大的深度下获得比较高的精度。在ImageNet的数据集上,作者评估了一个深度为152层的的残差网络,比VGG深8倍,但仍具有比VGG更低的复杂度。这些残差网络整体上在ImageNet测试集上达到了3.57%的错误率,该结果获得了ILSVRC2015分类任务第一名。作者还用CIFAR-10数据集分析了100层和1000层的网络。深度表示对于许多视觉识别任务而言至关重要,由于极深的网络,在COCO的目标检测数据集上获得了28%的相对提升。作者在深度残差网络的基础上做了提交版本参加ILSVRC和COCO2015比赛,获得了ImageNet目标检测,ImageNet目标定位,COCO目标检测和COCO图像分割的第一名。)
- 以下视角值得关注:
- ResNet要解决的是什么问题
ResNet目的是为了解决之前的CNN随着网络加深不仅更难以训练,而且训练集误差更大的问题。之前的网络每层都是再学习一个映射,这样添加新的层后因为链式求导法则导致梯度更小,更难已学习,而作者通过引入残差解决了这个问题。
- Residual Block的设计
一个残差块由两条路径组成:F(x)和x,最后两者相加
- ResNet 网络结构
Resnet 和plain network以及VGG19对比,可以看出ResNet主要多了残差连接
- error surface对比
可以看到多了shortcut旁路的error surface 更加平滑
- Residual Block的分析与改进
Resnet v2对Resnet block做了改进:Resnet v2中它将BN/ReLu这些activation操作挪到了Conv之前