机器学习基础整理 (第八章) - 神经网络其他应用

自动编码器 (Autoencoders)

从概念上讲,自动编码器是一个前馈网络 (feedforward network),经过训练可以将其输入 复制到 其输出 (尽管不完美)
结构包含了隐藏层 h h h,描述 表示输入 的编码。
在这里插入图片描述
自动编码器 一般结构: 输入 x x x 通过 内部表示 或 编码 (internal representation or code) h h h 映射到 输出 r r r (重构)。

自动编码器拥有两部分: 能产生 输入的 表示编码 (representative code) 的编码函数 (encoder function) h = f ( x ) h=f(x) h=f(x); 从 编码 生产出的重构的 解码器函数 (decoder function) r = g ( h ) r = g(h) r=g(h)

自动编码器 到 随机映射 (stochastic mappings) 的泛化: p e n c o d e r ( h ∣ x ) p_{encoder}(h | x) pencoder(hx) 以及 p d e c o d e r ( x ∣ h ) p_{decoder}(x | h) pdecoder(xh)

典型的训练策略类似于 前馈网络 使用的策略 —— 小批量梯度下降 (minibatch gradient descent)

堆叠自编码器 (Stacked Autoencoder)

在这里插入图片描述
用于 MNIST 数据集的 堆叠自动编码器 (stacked autoencoder) 示例: 784 ( 28 × 28 28 × 28 28×28) 个输入神经元; 300 个隐藏神经元 (hidden neurons) ; 150 个中央隐藏神经元 (central hidden neurons) ; 顶部是之前描述的镜像。

实用的自编码器是一个栈。
堆叠自编码器 的架构通常 关于 中央隐藏层 (编码层) 对称。

欠完备/过完备自编码器 (Undercomplete/ Overcomplete autoencoders)

h h h 限制为比 x x x 更小的维度会导致 欠完备自动编码器。 h h h 捕获输入的最显着特征 (most salient features)。
学习需要最小化损失函数:
L ( x , g ( f ( x ) ) ) L(x, g(f(x))) L(x,g(f(x)))
g ( f ( x ) ) g(f(x)) g(f(x)) x x x 不相似, L L L 进行惩罚。

如果 编码 的维度大于输入的参数,我们就有 过完备自动编码器。

通过使用正则化,我们可以训练任何自动编码器架构,而不会出现 容量过剩 (over-capacity) 或 学习简单代表 (learning a trivial identity) 的风险。

正则化可以将属性分配给损失函数:

  • 数据表示的稀疏性。
  • 小的数据表示的导数。
  • 对噪声有健壮性。
  • 对缺失数据有健壮性。

自动编码器和主成分分析

使用 线性解码器 g ( h ) g(h) g(h) 和 均方误差损失 (mean squared error loss),欠完备自动编码器 学习 与 PCA 相同的子空间。

使用 非线性编码器 和 解码器 (分别为 f ( x ) f(x) f(x) g ( h ) g(h) g(h)),自动编码器可以学习更强大的 PCA 泛化。

稀疏自动编码器 (Sparse Autoencoders)

稀疏自动编码器 具有 用于在 编码层 h h h 上 以 重构误差 (reconstruction error) 和 稀疏惩罚形式 (sparsity penalty) 进行训练的成本函数:
L ( x , g ( f ( x ) ) ) + Ω ( h ) L(x, g(f(x))) + \Omega(h) L(x,g(f(x)))+Ω(h)
其中 h h h 是 编码器输出,如之前解释的, h = f ( x ) h = f(x) h=f(x)

稀疏自编码器 可用于 学习可以输入 其他任务的特征,例如 分类 (半监督分类)。

稀疏自编码器 可以解释为 近似 最大似然 (maximum likelihood) 训练的 生成模型,该模型具有潜在变量 ( h h h)

在这方面,其最大化:
l o g p m o d e l ( h , x ) = l o g p m o d e l ( h ) + l o g p m o d e l ( x ∣ h ) log_{p_{model}} (h, x) = log_{p_{model}}(h) + log_{p_{model}}(x|h) logpmodel(h,x)=logpmodel(h)+logpmodel(xh)
l o g p m o d e l ( h ) log_{p_{model}}(h) logpmodel(h) 可以是稀疏诱导 (sparsity-inducing)

除噪自编码器 (Denosing Autoencoders)

除噪 旨在 减少信号中的噪声。

除噪自编码器 最小化:
L ( x , g ( f ( x ‾ ) ) ) L(x, g(f(\overline{x}))) L(x,g(f(x)))
其中 x ‾ \overline{x} x 是被 某种噪声 破坏的 x x x 的副本。

训练流程 使 f f f g g g 隐式学习 p d a t a ( x ) p_{data}(x) pdata(x) 的结构。

另一种正则化的形式 λ ∑ i ∣ ∣ ∇ x h i ∣ ∣ 2 \lambda \sum_i ||\nabla_x h_i||^2 λixhi2 使得 学习 一个在 x x x 稍有微小变化时 的函数。
L ( x , f ( g ( x ) ) ) + λ ∑ i ∣ ∣ ∇ x h i ∣ ∣ 2 L(x, f(g(x))) + \lambda \sum_i ||\nabla_x h_i||^2 L(x,f(g(x)))+λixhi2

在这里插入图片描述
上图表示 堆叠卷积降噪自编码器 (stacked convolutional denoising autoencoder)。

在这里插入图片描述
上图表示 堆叠卷积去噪自编码器 和 中值滤波器 (median filter) 输出的比较,其加入了高斯噪声: μ = 0 , σ = 1 μ = 0, σ = 1 μ=0,σ=1

更多编码器 - 成本函数

收缩自编码器 (Contractive autoencoder)

在代码 h = f ( x ) h = f(x) h=f(x) 上引入正则化,以鼓励 f f f 的导数尽可能小:
在这里插入图片描述
当输入噪声小且高斯时,收缩自编码器 和 去噪自编码器 相关:

  • 去噪自编码器 使 重构函数 抵抗输入的 小但有限 的 震荡 (perturbations)。
  • 收缩自编码器 使 特征提取函数 抵抗输入的 小但无穷 的震荡。

生成对抗网络 (Generative Adversarial Network - GAN)

GAN 要解决的核心问题是 密度估计 (density estimation),GAN 隐式地 捕获 数据背后的分布 (underlying data distribution)。

GAN 可以被用在 非监督 或 监督 学习场景上。

其特点是 竞争式地 训练两个网络:

  • 有一个 名为 生成器 (generator G G G) 的网络,它试图从给定数据中学习的分布中生成样本,即 模仿,伪造或合成数据。
  • 第二个网络是 判别器 (discriminator D D D),它能够区分合成样本 (synthetic samples) 和真实样本。

这个解决方案的目标是为了生成 与 真实信号 没有区别的 合成信号。

在这里插入图片描述
上图表示,训练 GAN 时学习了两个模型,一个是 生成器 ( G G G) 另一个是 判别器 ( D D D)。这是使用神经网络实现的模型,但也可以使用任何可微分系统 (differentiable system)。

如上图,生成器不会接触到真实样本。

生成器网络 G G G 将 一些 表示空间 (representation space/ latent space) 映射到 数据样本空间:
g : g ( z ) → R ∣ x ∣ g: g(z) \to R^{|x|} g:g(z)Rx
其中 z ∈ R ∣ x ∣ z \in R^{|x|} zRx 是数据样本,而 ∣ . ∣ |.| . 表示数据维度。

判别器网络 D D D 将 数据样本 映射到 样本来自 真实数据分布而非生成器分布 的概率:
D : D ( x ) → ( 0 , 1 ) D: D(x) \to (0, 1) D:D(x)(0,1)
p d a t a ( x ) p_{data}(x) pdata(x) 代表了 数据样本的概率密度函数 (在 R ∣ x ∣ R^{|x|} Rx中),而 p g ( x ) p_g(x) pg(x) 代表了生成器产生的样本分布。

在训练过程,我们将 目标函数 设置为 对于生成器 J G ( Θ G ; Θ D ) J_G(\Theta_G;\Theta_D) JG(ΘG;ΘD),对于判别器 J D ( Θ D ; Θ G ) J_D(\Theta_D;\Theta_G) JD(ΘD;ΘG)

注意到 J G J_G JG 以及 J D J_D JD 在网络参数上是相互依赖的 (co-dependent), Θ G \Theta_G ΘG 以及 Θ D \Theta_D ΘD 作为网络被迭代训练。

在这里插入图片描述
上图表示 在 GAN 的训练过程中,生成器 被鼓励生成 能 匹配真实数据分布 p d a t a ( x ) p_{data}(x) pdata(x) 的 样本分布 p g ( x ) p_g(x) pg(x)

GAN 训练

我们寻找判别器的参数,使其最大限度地提高分类精度,并找到一个最大限度能 混淆判别器 (confuses the discriminator) 的 生成器 的参数。

使用 价值函数 (value function) 评估训练成本,解以下的极小极大问题 (mini-max problem):
m a x D m i n g V ( g , D ) max_Dmin_gV(g, D) maxDmingV(g,D)
其中 V ( g , D ) = E p d a t a ( x ) l o g D ( x ) + E p g ( x ) l o g ( 1 − D ( x ) ) V(g, D) = E_{p_{data(x)}}logD(x) + E_{p_{g(x)}}log(1 - D(x)) V(g,D)=Epdata(x)logD(x)+Epg(x)log(1D(x))

当一个模型的参数是固定的,另一个模型的参数可以被更新。

最优的判别器是唯一的:
D ∗ ( x ) = p d a t a ( x ) p d a t a ( x ) + p g ( x ) D^*(x) = \frac{p_{data(x)}}{p_{data(x)}+p_{g(x)}} D(x)=pdata(x)+pg(x)pdata(x)

当以下条件满足,生成器是最优的:
p g ( x ) = p d a t a ( x ) p_{g(x)} = p_{data(x)} pg(x)=pdata(x)

在这里插入图片描述
上图表示 GAN 训练的循环,新的数据样本 x 0 x_0 x0 可以通过 将随机样本 z z z 通过生成器网络来抽取。在更新生成器之前,判别器的梯度可能会更新 k k k 次。

其他 GAN 架构

初始 GAN 架构 使用全连接神经网络。其特点是难以训练,存在稳定性问题,其只在数据集的子集上成功。

深度卷积 GAN 提供了更高的稳定性。

条件GAN (Conditional GAN),生成器和判别器网络都是 类条件的 (class-conditional)。其可以为 多模态数据生成 (multimodal data generation) 提供更好的表示。
在这里插入图片描述
InfoGAN 将 噪声源 分解为 不可压缩源 (incompressible source) 和 潜在编码 (latent code),其尝试通过最大化 潜在编码 和 生成器输出 之间的互信息 (mutual information) 来发现 潜在的变异因素 (latent factors of variation)。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值