关于AE2-Nets: Autoencoder in Autoencoder Network 的一点理解

关于AE2-Nets: Autoencoder in Autoencoder Network 的一点理解

  • 初衷:普通学生,想着平时看了论文之后可以在博客上记一些笔记,并不是技术分享,所以写的可能不一定对,所以有写得不好的,还请各位大牛指正。谢谢!
    • 一句话概括:本文其实就是把来自异构视图的内在信息编码为一个全面的表示,并且自动的平衡不同视图的互补性和一致性
    • 背景
    • AE2-Nets介绍
    • 拓展

初衷:普通学生,想着平时看了论文之后可以在博客上记一些笔记,并不是技术分享,所以写的可能不一定对,所以有写得不好的,还请各位大牛指正。谢谢!

论文的作者是Changqing Zhang∗, Yeqing Liu∗, Huazhu Fu College of Intelligence and Computing, Tianjin University, Tianjin, China
Inception Institute of Artificial Intelligence, Abu Dhabi, UAE

一句话概括:本文其实就是把来自异构视图的内在信息编码为一个全面的表示,并且自动的平衡不同视图的互补性和一致性

背景

当前 Canonical Correlation Analysis关系分析(CCA),它搜索两个投影以将两个视图映射到低维公共子空间,将两个视图之间的线性相关性最大化。然后,学习的表示可以用于后续任务(例如,分类或聚类)。为了解决超出线性情况的更复杂的相关性,核化CCA(KCCA)引入了核技术。此外,深度典型相关分析(DCCA)提出利用深度神经网络学习高度非线性映射以搜索可以最大化两个视图之间的相关性的公共空间。
尽管在多视图学习方面已经取得了有效性,但现有算法还存在几个主要问题。首先,先前的算法通常在不同视图之间存在足够的相关性的基本假设下将不同的视图投影到公共空间上。然而,在实践中,相关性(一致性)和独立性(互补性)是共存的,并且自动平衡它们是具有挑战性的。因此,现有算法要么最大化相关性以保持一致性,要么最大化互补性的独立性[5]。其次,现有算法通常将每个视图投影到一个低维空间,然后将它们全部组合起来用于后续任务,而不是学习常见的低维表示,这使得它在表示学习中采用两步方式。
所以本文就诞生了

AE2-Nets介绍

由内部AE网络编码重建原始视图的输入,然后由外部AE网络对内部AE网络的输出进行重构编码表示。
每个单一视图。本文的主要贡献概括如下:
•我们提出了一种新颖的无监督多视图表示学习框架 - 自动编码器网络中的自动编码器(AE2-Nets),用于异构数据,可以灵活地将多个异构视图集成到一个完整的表示中。
•新型嵌套自动编码器网络可以联合形成视图特定表示学习和多视图表示学习 - 内部自动编码器网络有效地从每个单个视图中提取信息,而外部自动编码器网络模拟降级过程进行编码从每个单一视图的内在信息到共同的完整表示。

关于AE2-Nets: Autoencoder in Autoencoder Network 的一点理解_第1张图片
这个图就是这个算法的核心表示,其实作者就是主要利用了Autoencoder的思想,图上的(a)就是代表输入,其实通俗点将在本文中就是一个物体的多视图表示。就比如你从不同方向看一个东西,你看到的景象都是不同的。然后把这些图片进行预处理后就进入了(b),于是就开始了encodr的decoder,下面开始介绍一下encoder和decoder
在这里插入图片描述
关于AE2-Nets: Autoencoder in Autoencoder Network 的一点理解_第2张图片
关于AE2-Nets: Autoencoder in Autoencoder Network 的一点理解_第3张图片
关于AE2-Nets: Autoencoder in Autoencoder Network 的一点理解_第4张图片
因为公式较多,我就直接贴图片了,其实(1式)就是主要公式(式子中的v就是第v个视图,i就是第i个样本,m就是第m层),也就是autoencoder公式,一共M+1层,中间就有M层的连接,前M/2层是encoder过程,就是把图片降维为一个低维的表示,然后后面的M/2层就是decoder过程,就是把已经降维的表示再升维为原来的维度。然后loss function就是(3),然后就通过损失函数优化这个网络就可以。然后再继续讲那个上面的彩图。
***然后***上面那个彩图就到了(C)过程,其实C的降维就是获取了autoencoder的第M/2层,因为这一层就是中间的维度较低的那一层,用这一层表示肯定更简单一点,因为维度较低,然后用一个隐藏层H来表示这个M/2层,先贴一点原文:
关于AE2-Nets: Autoencoder in Autoencoder Network 的一点理解_第5张图片
这里为什么说H是隐藏层呢?(而不是把那个M/2层通过深度网络表示为H,如果这样的话H就是最终输出层了),作者是想的先随意给H层赋值,然后让G(0,v)=H,就是让迭代的G的初始值等于H,然后再通过loss function来优化这个H,最终找到一个适合的H以及一个合适的网络。然后就OK了。具体的求导过程你们可以去网上搜一下这个篇论文,写的挺好的。

关于AE2-Nets: Autoencoder in Autoencoder Network 的一点理解_第6张图片
这个就是代码的具体执行过程,
(1)先做autoencoder,记住做autoencoder时候优化的是autoencoder网络但是同时要计算encoder产生的中间层和gi(L,v)的loss,把autoencoder的loss和中间层和gi(L,v)产生的loss加起来优化autoencoder网络,因为H是随机生成的,刚开始当然效果很差。也就下下面那个式子关于AE2-Nets: Autoencoder in Autoencoder Network 的一点理解_第7张图片
(2)根据训练好的autoencoder网络,然后再优化H到中间层的网络,图还是上面那个图,只不过这次只是优化H到中间层的网络。
(3)现在已知H到中间层的网络,然后反过来找一个最佳输入(因为H是随机的,虽然网络是通过H训练的,但是H并不一定是最佳输入,找到后更新H)
(4)循环执行前面的

拓展

可以把这个方法运用到cca,首先可以包含mcca的功能,然后也有dcca的功能,他可以把做数据先进行encoder在进行decoder,找到中间层,然后再,,,就类似于上面知识了。

你可能感兴趣的:(图像识别,多视图融合,autoencoder,cca,深度学习)