0%

吴恩达《深度学习专项》第四阶段总结与第五阶段预览

《卷积神经网络》总结

前几周,我们学完了《深度学习专项》第四门课《卷积神经网络》。这门课的知识点太多了,想详细地整理出来并不容易。我打算较为宏观地概括一下这门课的主要内容。

《卷积神经网络》先从细节入手,介绍了卷积神经网络(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复现课堂上讲过的一些简单项目。