第四章 经典网络
LeNet-5:用于识别手写数字和机器印刷字符的卷积神经网络
- 使用卷积提取空间特征,使用映射的空间均值进行下采样
- 使用 $tanh$ 或 $sigmoid$ 进行非线性映射(LeNet-5最重要的特性)
- MLP 作为最终的分类器;层间的稀疏连接矩阵以避免巨大的计算开销
AlexNet:首个应用于图像分类的深层卷积神经网络
- 在2012年 ILSVRC 图像分类竞赛中以 15.3% 的top-5测试错误率获胜
- 所有卷积层都使用ReLU作为非线性映射函数,使模型收敛速度更快
- 在多个GPU上进行模型的训练,提高了模型的训练速度和数据的使用规模
- 使用LRN对局部特征进行归一化,结果作为 ReLU 的输入能有效降低错误率
- 重叠最大池化(overlapping max pooling)技巧、dropout 避免过拟合
ZFNet:在AlexNet基础上提出的大型卷积网络
- 在2013年 ILSVRC 图像分类竞赛中以 11.19% 的top-5测试错误率获胜
- 通过反卷积(Deconvolution)的方式可视化各层的输出特征图
- 可视化技术广泛应用于模型诊断、敏感性分析、参数与特征图分析
Network In Network (NIN) :多个1X1卷积层替代全连接层
- 在 CIFAR-10 和 CIFAR-100 图像分类任务中达到当时的最好水平
- NIN 包含三层的多层感知卷积层(MLPConv Layer),每一层多层感知卷积层内部由若干层的局部全连接层和非线性激活函数组成,缓解了卷积核数增加导致的参数量暴涨问题
- 通过引入非线性的映射来提高模型对特征的抽象能力
- 使用全局平均池化来代替最后一个全连接层,有效地减少参数量并增强鲁棒性
VGGNet:首批把图像分类的错误率降低到10%以内模型
- 以7.32%的错误率赢得了2014年 ILSVRC 分类任务的亚军(冠军由GoogLeNet以6.65%的错误率夺得)和25.32%的错误率夺得定位任务(Localization)冠军(GoogLeNet错误率为26.44%)
- 整个网络都使用了同样大小的卷积核尺寸$3\times3$和最大池化尺寸$2\times2$
- 两个$3\times3$的卷积串联相当于1个$5\times5$的卷积,参数量更少且特征学习能力更强
- 加快收敛的技巧:先训练浅层的简单网络,再复用网络权重来初始化复杂网络
- 使用多尺度的变换对原始数据做数据增强,使得模型不易过拟合
GoogLeNet:受 NIN 启发提出了经典的 Inception 结构
- 2014年 ILSVRC 图像分类任务上的冠军,相比往年准确率提升明显
- 用不同大小的卷积核意味着不同大小的感受野
- 卷积核大小采用1、3和5:方便后续对齐,进行不同尺度特征的融合
- 随着层数的增加,3x3和5x5卷积(采用1x1卷积核来进行降维)的比例也要增加
本章内容与7.《动手学深度学习》现代卷积神经网络重叠度较高,可互为补充
第五章 卷积神经网络 CNN
可分离卷积(Seperable Convolution)
- 标准的卷积操作是同时对原始图像$H\times W\times C$三个方向的卷积运算,假设有$K$个相同尺寸的卷积核,这样的卷积操作需要用到的参数为$H\times W\times C\times K$个;
- 若将长宽与深度方向的卷积操作分离出变为$H\times W$与$C$的两步卷积操作,则同样的卷积核个数$K$,只需要$(H\times W + C)\times K$个参数,便可得到同样的输出尺度。
- 常用在模型压缩或轻量的卷积神经网络中,比如 MobileNet、Xception 等
重叠池化(Overlapping Pooling)
- 与一般池化操作相同,但是池化范围$P_{size}$与滑窗步长$stride$关系为$P_{size}>stride$
- 同一区域内的像素特征可以参与多次滑窗提取,特征表达能力更强,但计算量更大
减少卷积层参数量的常见方法:
- 使用堆叠小卷积核代替大卷积核:VGG 网络中2个$3\times 3$卷积可以代替1个$5\times 5$卷积
- 使用分离卷积:将原本$K\times K\times C$的卷积操作分离为$K\times K\times 1$和$1\times1\times C$的两部分操作
- 添加$1\times 1$的卷积操作:与分离卷积类似,但是通道数可变,在$K\times K\times C_1$卷积前添加$1\times1\times C_2$的卷积核(满足$C_2 <C_1$)
- 在卷积层前使用池化操作:池化可以降低卷积层的输入特征维度
第六章 循环神经网络 RNN
Echo State Networks(ESNs):
- 使用大规模随机连接的循环网络取代经典神经网络中的中间层,从而简化网络训练
Clockwork RNNs(CW-RNNs):
- RNNs的改良版本,将隐藏层分为几个块(组,Group/Module),每一组按照自己规定的时钟频率对输入进行处理,以解决长时依赖问题
- 将时钟时间进行离散化,不同的隐藏层组将在不同时刻进行工作
- 只允许周期大的神经元连接到周期小的(组与组之间的连接以及信息传递是有向的);周期大的速度慢,周期小的速度快,因此是速度慢的神经元连速度快的神经元
- CW-RNNs减少了参数数量,并且提高了网络性能,加速网络训练
第七章 生成对抗网络 GAN
GAN的目标函数定义如下: $$\mathop {\min }\limits_G \mathop {\max }\limits_D V(D,G) = {\rm E}_{x\sim{p_{data}(x)}}[\log D(x)] + {\rm E}_{z\sim{p_z}(z)}[\log (1 - D(G(z)))]$$
- 判别器的优化通过$\mathop {\max}\limits_D V(D,G)$实现,$V(D,G)$为判别器的目标函数(交叉熵损失)
- 第一项${\rm E}{x\sim{p{data}(x)}}[\log D(x)]$表示:对于从真实数据分布中采用的样本,其被判别器判定为真实样本概率的数学期望。该项越大说明判别器识别真实样本的能力越强
- 第二项${\rm E}_{z\sim{p_z}(z)}[\log (1 - D(G(z)))]$表示:对于从噪声$P_z(z)$分布中采样经生成器处理得到的图片,判别器预测其概率的负对数的期望。该项越大说明判别器”虚假/生成“样本的能力越强
- 生成器的优化通过$\mathop {\min }\limits_G({\mathop {\max }\limits_D V(D,G)})$来实现。注意,生成器的目标不是最小化判别器的目标函数,而是最小化判别器目标函数的最大值(真实数据分布与生成数据分布的 JS 散度)
- 由于生成器和判别器的目的相反,因此训练过程中 Loss 不会呈现下降收敛的趋势;一般通过肉眼观察生成图片的质量来判断模型效果,或者使用改良的损失函数,比如 WGAN
WGAN 的相关拓展:
- 使用 Wasserstein 距离取代 JS 散度,解决 GAN 网络训练过程难以判断收敛性的问题
- Wasserstein 距离,又称为推土机距离(Earth Mover’s distance,EMD),其度量了将一个分布转化为另一个分布的最小成本(也实现了两个分布的差异度量)
- Wasserstein 距离相比 KL 散度、JS 散度的优越性在于,即便两个分布没有重叠,Wasserstein距离仍然能够反映它们的远近;并且 Wasserstein 距离是平滑的,能提供有意义的梯度
- WGAN 的 loss 定义如下: $\min_G \max_{\Vert D\Vert_{L}\leq 1} \mathbb{E}{x\sim p(x)}\left[D(x)\right] - \mathbb{E}{z\sim q(z)}\left[D(G(z))\right]$
- 对比原始的 loss 差异:判别器最后一层去掉sigmoid,生成器和判别器的loss不取log
- WGAN 还包括一个裁剪操作,使用$L$约束判别器的参数值上限(限制判别器的能力)
Mode Collapsing 问题:生成样本缺乏多样性,存在大量重复
Mode Collapsing 问题的解决:
- 改进目标函数:UnrolledGAN 的方法是判别器 k 次迭代 loss 后不更新自己的参数,而是更新生成器,使得生成器考虑到了后面 k 次判别器的变化情况,然后再迭代 1 次判别器;DRAGAN 则引入博弈论中的无后悔算法来改造 loss;EBGAN则是在loss中加入了VAE的重构误差
- 改进网络结构:MAD-GAN采用多个生成器来保障样本生成的多样性
- Mini-batch Discrimination:在判别器的中间层建立一个mini-batch layer用于计算基于L1距离的样本统计量,使得判别器甄别出缺乏多样性的样本,进而实现生成器的改善
GAN 的生成能力的客观评价指标:
- Inception Score:一个训练良好的GAN,$p_M(y|x)$趋近于脉冲分布,$p_M(y)$趋近于均匀分布,所以二者的 KL 散度就会很大(无法检测过拟合,适合与 ImageNet 相似的数据): $$IS(P_g)=e^{E_{x\sim P_g}[KL(p_M(y|x)\Vert{p_M(y)})]}$$
- Mode Score:在 Inception Score 的基础上,增加了关于生成样本和真实样本预测的概率分布相似性度量(和 Inception Score 一样,无法检测过拟合): $$MS(P_g)=e^{E_{x\sim P_g}[KL(p_M(y|x)\Vert{p_M(y)})-KL(p_M(y)\Vert p_M(y^*))]}$$
- Kernel MMD(Maximum Mean Discrepancy):使用核函数$k$将样本映射到再生希尔伯特空间(Reproducing Kernel Hilbert Space, RKHS)再计算距离(计算高效,推荐): $$MMD^2(P_r,P_g)=E_{x_r\sim{P_r},x_g\sim{P_g}}[\lVert\Sigma_{i=1}^{n1}k(x_r)-\Sigma_{i=1}^{n2}k(x_g)\rVert]$$
- Wasserstein distance:最优传输问题中的推土机距离(计算复杂度高) $$WD(P_r,P_g)=min_{\omega\in\mathbb{R}^{m\times n}}\Sigma_{i=1}^n\Sigma_{i=1}^m\omega_{ij}d(x_i^r,x_j^g)$$
- Fréchet Inception Distance (FID):计算真实样本,生成样本在特征空间之间的距离。首先利用Inception网络提取特征,然后针对特征空间构建高斯模型,最后根据高斯模型的均值$\mu$和协方差$C$来进行距离的计算(只考虑二阶矩,鲁棒性好,计算高效) $$FID(\mathbb P_r,\mathbb P_g)=\lVert\mu_r-\mu_g\rVert+Tr(C_r+C_g-2(C_rC_g)^{1/2})$$
- 留一法结合1-NN 分类器:计算对于真实样本和生成样本的分类精度;精度越接近50%,说明生成样本的真实性和多样性越好(理想的度量指标,还可以检测过拟合)
GAN 训练崩溃问题:训练过程中,生成器和判别器存在一方压倒另一方的情况
如何尽量避免GAN的训练崩溃问题(20年以前的文章,内容存在时效性问题)