PGGAN笔记(未完待续)
PGGAN笔记
1. Progressive Growing of GANs
image原始GAN存在的问题:
- 当需要生成的图像分辨率非常高时,判别器D很容易就可以识别出G生成的“假图像”,G难以训练
为解决这个问题,文章提出了渐进增长的训练方式
image这里的4x4指对相应大小的图片进行操作,输入的latent为512维超球面上的点。生成器先生成大小为4x4的图像,其中Reals是指经过处理的同为4x4的人脸图像,判别器的结构与生成器对称,当输入800k张真实图片后停止训练并保存参数。然后加入下一层,为了防止新加入的层对原网络产生巨大影响,作者提出一种平滑的加入新层的方法
image图中2x是指用最近邻卷积上采样将图片的长宽翻倍,而0.5x表示用平均池化的方法将图像长宽缩小一倍。α表示新加入层的权重,当α=0时,相当于未加入这一层,当α=1时,就变成了一般的网络结构。α在训练过程中逐渐由小增大直至到1。同第一层当输入800k张真实图片后停止训练并保存参数。因为此时生成网络最后的输出通道数不一定为3,所以需要toRGB将其转换为RGB三通道,具体操作时用1x1的卷积核进行卷积操作,fromRGB恰好相反。
image作者给出了celebA-HQ的具体网络结构。其中生成器中Conv4x4是kernel_size=4,stride=1,padding=3的卷积操作,Conv3x3是kernel_size=3,stride=1,padding=1的卷积操作,在最后加入一个1x1的卷积操作将其转换为RGB图像。判别器与生成器相对称。
2.小批量标准差增加生成样本多样性
-
为什么需要batchsize
-
当数据集很小时,完全可以使用整个数据集作为一个batch,即full Batch learning,这样做有两个好处
-
由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。
-
由于不同权重的梯度值差别巨大,因此选取一个全局的学习率很困难。 Full Batch Learning 可以使用 Rprop只基于梯度符号并且针对性单独更新各权值
-
-
当数据集很大时,full Batch learing会存在两个问题
-
一次性将所有数据读入内存不太现实
-
以 Rprop 的方式迭代,会由于各个 Batch 之间的采样差异性,各次梯度修正值相互抵消,无法修正。这才有了后来 RMSProp 的妥协方案
-
-
-
batchsize的极端是等于1,即在线学习,又称随机梯度下降,有点是速度快,缺点是准确度下降,达到的并不一定是全局最优
-
minibatch是介于BGD和SGD之间的一种优化算法,与BGD相比速度更快但精度更低。minibatch使得D需要判别的信息不仅来自于单张图像同时还会有minibatch内的信息,这使得G生成的图像更具有多样性。
-
作者提出了一种简化版本的minibatch,没有引进新的需更新的参数也没有引入新的超参数,他计算每个空间位置每个特征的标准差,然后对所有特征和空间位置的评估平均化到一个单一的值。并将这个这个值连接到所有空间位置和minibatch上。
3.Normalization
3.1调节学习速率
改变了传统的很谨慎的初始化权重的方法,用正态分布来进行初始化,然后在运行过程中进行缩放,更具体的说,作者用wi ^^^= wi/c来更新权重,其中wi是权重,c是来自于