机器学习笔记Ⅵ-GAN理论2
参考:https://www.bilibili.com/video/BV1Wv411h7kN?p=42&spm_id_from=pageDriver
生成器效能评估与条件生成
在上一篇笔记中,我们学习了使用wasserstein distance改进divergance计算方法,但直到这一步,gan网络的训练仍会出现困难,因为gan网络包含两个即相互独立又相互促进的生成器和鉴别器,只有每次生成器和鉴别器都有进步,正向的促进循环才能继续下去。
gan训练技巧参考:
除GAN以外的其他机器学习模型:VAE,FLOW,这两种模型效果不如GAN
其他方法:supervised learning:假设要使用generator生成二次元图片,我们首先给样本一堆满足某一分布的随机生成的向量,每一个向量对应一个真实图片,并把随机向量当作输入,图片当作输出,来训练网络。可参考下图论文:
生成器评估方法
quality评估:对于影像生成器,可以将产生的结果放到一个影像分类器里,如果输出的结果分布越集中(分类器对图片的结果很确定),说明生成效果越好。
但如果仅评价quality,会出现 ...
机器学习笔记Ⅴ-GAN理论1
Generator
generator生成器用于生成的任务,除了输入各维特征外,我们还需要一个简单的分布样本作为输入,generator中的网络作用是从一个简单的输入和各维特征学习到一个复杂的分布。
generator任务类型
generator适合于一些需要创造性的任务,如对话机器人,图片生成
使用 StyleGAN生成的二次元头像
Generative Adversarial Network(GAN)生成对抗网络 概述
gan zoo:https://github.com/hindupuravinash/the-gan-zoo 收录超过几百种gan网络
normal generator生成器
用于从一个简单的学习一个复杂的分布
discriminator 鉴别器
用于鉴别输出的分布是否符合任务要求
可以采用不同的架构,如cnn
生成器和鉴别器之间即相互对抗又相互合作的关系,二者关系可以用下面这张图表示:
GAN算法步骤
初始化生成器和鉴别器
对于每次训练:
固定生成器 ,仅训练鉴别器,鉴别器学习将真实值与generator生成值做区分,例如将真实值的输出设为1,生成器 ...
机器学习笔记Ⅲ-自动调整学习率、Adam算法
参考 :https://www.bilibili.com/video/BV1Wv411h7kN?p=13
自动调整学习率 learning rate η\etaη
在机器学习中,学习率是一个重要的超参数,决定了是否能准确找到最优点,下面以两种情况为例进行说明
(1)学习率比较大,参数在A点和B点之间来回跳跃,无法找到loss最低点
(2)误差曲面为一个凸面,特点是上下曲率很高,左右曲率很低。橙色叉叉处为最低点,初始点选在黑点处,如果学习率很高,参数就会在谷底两边跳跃,无法找到最低点,但如果学习率很低,参数在左右方向上移动的速度会非常慢,同样无法得到最低的loss。
因此仅设定一个固定的学习率η\etaη自动调整学习率可能会无法高效的找到最小值,需要根据error surface的情况自动调整学习率
(1)均方根
将当前以及之前所有导数的加权平均值当作调整项来调整当前学习率,参数更新公式:
θit+1=θit−ησitgit\theta_i^{t+1}=\theta_i^{t}-\frac{\eta}{\sigma_i^t}g_i^t
θit+1=θit−σitηgi ...
机器学习笔记Ⅳ-批次标准化
批次标准化 batch normalization
在机器学习训练过程中,当不同维度的输入值数量级差别很大时,有可能导致不同方向上的坡度差距很大。标准化所做的事情是,让所有维度的输入归一化,使每个维度的数据均值为0,方差为1.
归一化方法:
①对于每个维度i,计算均值mi,方差σi\sigma_iσi
②计算归一化后的输入:a~ir=xir−miσi\widetilde{a}_i^r=\frac{x_i^r-m_i}{\sigma_i}air=σixir−mi
对于深度学习,每通过一个layer产生的变量都需要进行一次标准化,计算量很大,因此标准化仅在每个batch进行,称作批量标准化。
批量标准化不仅仅是将
moving average
测试时,可能会出现数据集大小没有达到batch size 的情况,数据可能是一个一个输入的,测试时常采用moving average的方式进行计算,计算公式:
μ‾=pμ‾+(1−p)μt\overline{\mu}=p\overline{\mu}+(1-p)\mu^t
μ=pμ+(1−p)μt
机器学习笔记Ⅰ
机器学习笔记(二)
参考:https://www.bilibili.com/video/BV1Wv411h7kN?p=10
模型训练方法:
loss on training data
首先检查training data的los值是否达标,如果training data的loss过大,可能是两个原因导致
(一)model bias问题, 模型过于简单,没有足够的弹性
当设置的模型过于简单,可能会出现模型所有可能的结果都无法比较好的拟合输入输出关系
解决办法:
增加输入的特征
增加神经元数和层数,使模型复杂度更高
(二)optimization (优化方式)不好
gradient desent的优化方法可能会得到局部最优解,没有达到全局最优解
解决办法:TO LEARN
判断方法: 对比简单的model和一个层数更大更复杂的model的loss值,如果复杂的model在训练集上的效果不如简单的model,说明是optimization不够好
loss on teating data
当训练集上的loss达标后再看测试集上的loss是否足够小,如果loss过大,原因可能是
(一 ...
机器学习笔记Ⅱ
参考:https://www.bilibili.com/video/BV1Wv411h7kN?p=12
类神经网络训练不起来怎么办
局部最小值与鞍点
从上一篇笔记中我们知道,当训练时训练集上的loss达不到预期,可能时最优化方式出现问题,最优化失败的原因为优化停止在了critical point(驻点),包括local minima(局部最小值)、local maxima(局部最大值)和saddle point(鞍点)
判断critical point类型的方法:
将损失函数在最优化停止的点θ′\theta'θ′进行泰勒展开,取前三项-第一项为处的损失函数,第二项包含loss在θ′\theta'θ′处导数,第三项包含Hassian矩阵。
当出现critical point的情况时,第二项为0,为了判断具体是哪种驻点,需要看第三项的Hession矩阵
对于局部最小值点,令v=θ−θ′v=\theta-\theta'v=θ−θ′,对于局部最小值,L(θ)>L(θ′)L(\theta)>L(\theta')L(θ)>L(θ′ ...