《卷积神经网络》总结
前几周,我们学完了《深度学习专项》第四门课《卷积神经网络》。这门课的知识点太多了,想详细地整理出来并不容易。我打算较为宏观地概括一下这门课的主要内容。
《卷积神经网络》先从细节入手,介绍了卷积神经网络(CNN)的基础构件与运算方式。之后,这门课展示了一些图像分类中的经典网络,通过示例介绍了构筑CNN的一般方法。最后,这门课拓展介绍了CNN在目标检测、图像分割、人类识别、风格迁移等具体任务中的应用。在学习时,我们应该着重关注前两部分的内容,应用部分以了解为主。
卷积层
- 相比全连接层的优势:参数量变少、平移不变性
- 卷积的运算方法(灰度图、多通道图)
- 卷积的参数(填充、步幅)
- 卷积层的运算方法(如何加上bias并送入激活函数)
CNN
- 三大构件:卷积层、池化层、全连接层
- 构建方式:卷积接池化,最后全连接
- 图像尺寸变小,通道数变大
经典网络(LeNet, AlexNet, VGG)
- 卷积接池化,最后全连接;图像尺寸变小,通道数变大
- 平均池化进化成最大池化
- tanh进化到ReLU
- 逐渐使用更简单的3x3卷积,2x2池化
ResNet
- 待解决的问题:网络深度增加而性能退化
- 解决问题的方法:学习一个靠近全等映射的残差
- 2层残差块的结构、计算公式
- 常用的ResNet的结构(ResNet-18, ResNet-50)
一般的网络只要学习其有关知识就行了。而ResNet不同,它已经被使用得太广泛了,必须要认真学习一下它的结构。
Inception
- 1x1卷积的用法
- 如果利用1x1卷积降低运算量(bottleneck)
- Inception模块
MobileNet
- 逐深度可分卷积
- MobileNetv2降低运算量的bottleneck结构
CNN实现使用技巧
- 使用开源代码
- 利用迁移学习(获取预训练模型,在数据集上微调)
- 数据增强
- 打比赛时,用多个模型的平均输出提高精度
目标检测
- 任务定义:从目标定位到目标检测
- 从滑动窗口算法到基于卷积的滑动窗口算法
- YOLO
- NMS
- 区域提案(region proposal)
语义分割
- 任务定义
- 反卷积
- U-Net架构
人脸识别
- 任务定义:人脸验证与人脸识别
- 单样本学习
- 孪生网络
- 三元组误差
神经网络风格迁移
- CNN的“可视化”
- 任务定义
- 内容误差与风格误差
入门基于深度学习的计算机视觉相关研究,一定要把图像分类的经典网络学扎实。这些网络是其他任务的基石,英文用backbone来称呼它们。学会了通用的知识后,再去学习某任务特有的知识。
《序列模型》预览
深度学习的第五门课——也是最后一门课——的标题是《序列模型》。更确切地来说,这门课主要围绕人工智能中另一大领域——自然语言处理(NLP),介绍如何用RNN, Transformer等模型处理以序列形式输入输出的数据。
这门课的主要内容有:
RNN
- 序列任务的输入输出形式
- RNN的计算方式
- GRU
- LSTM
- 双向RNN
- 深层RNN
词嵌入
- 问题定义
- Word2Vec
- 负采样
- GloVe
RNN的应用
- 语言模型
- 机器翻译
- Beam Search
- Bleu Score
注意力
- 注意力模型
- 自注意力
- Transformer
不同于CNN,序列模型能够用另一种方式对问题建模,尤其擅长于处理和序列数据相关的问题。如果你的研究方向是CV,也不要错过这一门课的学习。很多序列模型都在CV中得到了应用。比如光流模型RAFT就使用到了GRU,很多主流CV backbone都使用到了transformer。
未来的几周我也会继续分享这方面的笔记。不过,我的研究方向不是NLP,代码项目会稍微潦草一些。我打算只用PyTorch复现课堂上讲过的一些简单项目。