Stacked Auto Encoder(栈式自动编码)

离上一次更新没过几天,但却经历了好多事情,2020真的太不寻常了…永远不知道明天和意外哪个会先来!珍惜当下~天佑中华!
今天接着记叙项目中需要用到的模型。


Stacked Auto Encoder

Stacked Auto Encoder称为栈式自动编码,顾名思义,它是对自编码网络的一种使用方法,是一个由多层训练好的自编码器组成的神经网络。先引入关于 自动编码即(AE)的相关知识

Auto Encoder

AE(Auto Encoder)是一种无监督的含有一个隐含层神经网络,其中输出层被设置为等于输入层,AE的目的是尽可能的准确地重建原始输入。
整个模型的结构如下图所示:
AE由编码器和解码器组成。

先简单说一下思想:

一般的MLP(多层感知机)是一个有监督学习的过程,除了给定输入数据X之外,还要给定label Y,然后把X feed 到神经网络,并最小化神经网络的输出与label Y之间的差值,通过这种方法来训练神经网络的参数。

AE的区别是这是个非监督学习的过程,也就是说不需要label Y, 自编码是这样干的,它令每个样本的标签为y=x,也就是每个样本的数据x的标签也是x。自编码就相当于自己生成标签,而且标签是样本数据本身。训练时的优化目标是让输出值跟输入值尽可能接近,最好完全一样。

我们可以这样理解:输入数据代表了一些信息,起初以一定维度的数据来表示,然后经过中间隐藏层编码后,维度被压缩(降低)了,但是最后还是还原成了一个与原始信息非常接近的数据。
举个例子,这个过程,就好像把文件先压缩,再解压缩,或者把文件加密再解密,数据的中间的形式(维度)发生了变化,但数据的信息量不变。 这就是核心思想,类似PCA。

所以根据以上思想,只要训练一个简单的,单隐藏层的神经网络,就可以用无监督的方式实现数据降维。这就是最基本的AE。

接下来根据上面图片看一下过程:

1.假设AE的输入为:
其中dx是输入的维数。

2.编码器通过映射函数f将x从输入层投影到隐含层
其中d(h)是隐含层变量向量的维度。其中f(x)函数表示为
其中w是dh×dx权重矩阵,b∈Rdx是偏差向量。解码器的激活函数sf可以是sigmoid函数、tanh函数或者rectified

3.在编码器中,通过映射函数f将隐含层表示的h映射到输出层的x∈Rdx,其中f函数如下:

其中w是dx×dh权重矩阵,b∈Rdx是输出层的偏差向量。同样sf的激活函数可以是sigmoid函数、tanh函数或者rectified linear unit function(ReLu函数)。

4.AE用于通过对网络施加限制(例如限制隐含层单元的数量)来重新构建输出x尽可能的与输入x相似。训练的输入数据表示为

其中N是训练样本总数。

每一个训练样本xi都被投影到隐含表示hi,然后被映射到重构数据xi。为了获得模型参数,通过计算均方重构误差最小化来重构损失函数

5.AE的参数可以通过梯度下降算法来更新。
训练完成后,AE的权重和偏差被保存下来。

这部分具体可参考:[论文学习]1——Stacked AutoEncoder(SAE)堆栈自编码器

回到SAE,SAE是具有分层结构的神经网络,由多个AE层逐层连接组成

“栈化”过程的基本实现思想如下:训练好上述的AE结构后,舍去解码过程,此时我们可以理解为code具有一定的降维、提取特征的能力。将此时的code作为输入,输入到新的AE结构中进行训练,如下图所示

在这个过程中,特别注意一下,我们把前面的整体输出(h1-h4)当成这第二层的输入了,那么构建第二个autoencoder时,添加的临时输出层就不再是原始的(x1-x6)了,而是第一部分的输出,即(h1-h4)。这一点是避免训练方式的误解的关键所在。

如此重复,使每次的“栈化”过程都能够学习到近似最优,最后得到code,可以认为,这个code更能够提取出有效的特征,因为它是多种效果的“叠加”,相应的,如果是进行分类操作,直接将code接入到分类器中,就可以得到分类结果,下图所示的是将code接入到softmax中:

故,上述整个过程可以如下所示(途中省略了每次训练的解码过程):

详例(包含两个隐含层的栈式自编码网络)及实战代码参考:
自编码实例5:栈式自编码

总的来说堆栈自编码器的思路是:我们已经得到特征表达h,将h作为原始信息,训练一个新的自编码器,得到新的特征表达。Stacked 就是逐层堆叠的意思,当把多个自编码器 Stack 起来之后,这个系统看起来就像这样:

需要注意的是,整个网络的训练不是一蹴而就的,而是逐层进行的
比如说我们训练一个n -> m -> k 结构的网络,实际上我们是先训练网络 n -> m -> n ,得到 n -> m 的变换,然后再训练 m -> k -> m 网络,得到 m -> k 的变换。最终堆叠成 SAE ,即为 n -> m -> k 的结果,整个过程就像一层层往上面盖房子,这就是 逐层非监督预训练。

为什么逐层预训练的SAE有不错的效果?
一个直观的解释是,预训练好的网络在一定程度上拟合了训练数据的结构,这使得整个网络的初始值是在一个合适的状态,便于有监督阶段加快迭代收敛。

友情链接栈式自编码器的微调过程
【模型详解】AutoEncoder详解(七)——栈式自编码:Stacked AutoEncoder


家里蹲第二天…希望疫情快过去吧!想重启2020啊!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容