对抗性自动编码器系列--有监督对抗自动编码器SAAE的原理及实现-随机数生成想要的数字

前言

先来看看实验:

我们使用 MNIST 手写数字,测试通过自动编码器和对抗性自动编码器学习重建恢复效果。

  • 原始图像:
  • 自动编码器重建效果
  • 对抗性自动编码器重建效果
  • 有监督对抗性自动编码器重建效果

虽然这里看到,自动编码器和对抗性自动编码器重建出来的能力差不多,有监督对抗性自动编码器基本上重建出来的图像和输入基本对的上。他们的差别有何不同呢,通过之后几章的学习,大家会有体会。

我们学习自动编码器有什么用?
重建图像本身自然是没有任何意义的,但是能把图像重建出来,说明模型学到了输入图像集的分布和特征。

  • 提取图像特征,特征我们可以拿来做影像组学。
  • 异常检测,图像的分布可以拿来做异常检测。
  • 图像去噪,其中可以使用有噪声的图像生成清晰的无噪声图像。
  • 语义散列可以使用降维来加快信息检索速度。
  • 最近,以对抗方式训练的自动编码器可以用作生成模型(我们稍后会深入探讨)。

具体地, 我们将从以下几部分来介绍:

  1. 自动编码器重建 MNIST 手写数字
  2. 对抗性自动编码器重建 MNIST 手写数字
  3. 监督自动编码器重建 MNIST 手写数字
  4. 使用自动编码器对 MNIST 进行分类

这是本系列第三个类容:监督对抗性自动编码器

如果你已经阅读了前两部分,你会觉得实施这一部分很简单

监督对抗性自动编码器 SAAE 风格和内容的分离

第 1 部分和第 2 部分主要关注 AE 和 AAE 的入门。我们从一个简单的 AE(原版)开始,对其架构和训练算法进行了一些更改,最终得到了 AAE。这部分通过改变 AAE 的架构以及对其训练方式的微小变化来延续这一趋势。

我们每个人都有自己独特的写作风格,无论是写信还是签名。我们书写某些字符的方式、我们经常用来造句的词,甚至一个人在纸上施加的压力都是定义独特笔迹的特征。

随着所有这些事情的发生,伪造笔迹会变得非常困难和昂贵。让我们尝试从 MNIST 数据集中学习写作风格,并使用它来输出具有相同风格的图像。我们将只关注写作风格,而不关注句子的构架方式或作者经历的思维过程。

要清楚地了解什么是 风格和内容,请查看下图:

每行文本都有相同的内容“Autoencoder”,但风格不同。我们现在的任务是从图像中分离风格和内容。

Autoencoder 和 Adversarial Autoencoder 都是以无监督的方式训练的(训练期间没有使用任何标签)。使用图像的标签信息允许 AAE 专注于学习提取图像中的样式,而无需考虑其内容。利用图像标签使其成为监督模型。

我们实现这一目标所需的架构与我们在第 2 部分中看到的非常相似

在这里,我们不是直接使用 z 作为 Decoder 输入图像,而是把图像标签(y, one-hot形式)和 z 一起作为输入给 Decoder。因此,Decoder 输入有两部分:

  1. The latent code z from the encoder
  2. One-hot representation of the image label(y)

除了 Decoder 的输入改成了 y+z (y是one-hot形式,有 10 个数字,就是 10 个神经元,z 假设是 2 个神经元,因此,输入就是 12 个神经元), 其余(训练,损失函数)都同第二部分一样。

通过把标签作为 Decoder 的输入,就可以强迫 Decoder 生成我们想要的数字。

到底能不能像我们想的这样呢?

SAAE 训练结果





AE AAE SAAE 实验对比结果

恢复效果对比

这个对比实验在 前言 就给到大家了。这里,我们在仔细分析一下。

实验过程:我们从测试集随机选取了一个 batch x,通过 Encoder 和 Decoder 得到最后的重建图像 x_hat. 然后我们比较 AE AAE SAAE的恢复效果。

x > encoder > decoder > x_hat

实验结果

原始图像

每个图像上方的label就是数字对应的标签。

AE 结果

AAE 结果

SAAE 结果

对恢复性能的分析:AE 和 AAE 恢复性能差不多,都会有重建错误的图像,AAE 相对好些。但是二者恢复出来的图像都比 SAAE 模糊。而且,SAAE 基本上不会有重建错误的图像。

从随机数重建图像的效果

实验过程: 我们从高斯分布中随机取一个 batch z, 直接给 Decoder 重建出来。

z_guass = torch.randn(128, 2)

z > decoder > x_hat

实验结果

AE 结果

AAE 结果

SAAE 结果

这里的SAAE 是有标签的,因为它的Decoder接收的是 标签和Z。

随机数重建效果的分析:给定一个随机数,AE 和 AAE 可能会重建出任何数字,但是给定一个随机数和一个标签,SAAE 能重建出我们想要的数字。比如,随机数加数字 7 的标签,SAAE 就能重建出 7. 从图像上来看,SAAE 基本都能重建正确。说明有监督的训练确实要强于 AE 和 AAE。


关于第四部分,使用自动编码器对 MNIST 进行分类,就不再讨论了,如果感兴趣,请自学。这一系列到这里就结束了。实践中遇到问题欢迎咨询哦

这部分实验代码

文章持续更新,可以关注微信公众号【医学图像人工智能实战营】获取最新动态,一个关注于医学图像处理领域前沿科技的公众号。坚持已实践为主,手把手带你做项目,打比赛,写论文。凡原创文章皆提供理论讲解,实验代码,实验数据。只有实践才能成长的更快,关注我们,一起学习进步~

我是Tina, 我们下篇博客见~

白天工作晚上写文,呕心沥血

觉得写的不错的话最后,求点赞,评论,收藏。或者一键三连
在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tina姐

我就看看有没有会打赏我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值