深度学习模型-自动编码器(AE),就是一个神经网络的映射函数,f(x)——>y,把输入的一个原始信号,如图像、声音转换为特征。

大纲:

自动编码器的基本思想

网络结构

损失函数与训练算法

实际使用

去燥自动编码器

稀疏编码

收缩自动编码器

多层编码器

本集总结

自动编码器的基本思想:

人工神经网络实现的是一个向量X映射为另一个向量Y(Rn——>Rm,m<<n),通过多层复合函数来实现,Y一般设置为样本标签向量label。AE把Y设置为从原始数据X提取出的特征向量,如X是一个高维的图像或声音。而Y是自动训练出来的,不需要人工指定,因此需考虑怎么设置训练目标函数。

直接用一个单层或者多层神经网络对输入数据进行映射,得到输出向量,作为从输入数据提取出的特征。核心问题:怎么设置训练目标?解决思想:编码器+解码器框架。

网络结构:

编码器-将输入数据映射为特征向量,解码器-将特征向量映射回输入向量重构。

类似于PCA,不过PCA直接计算目标函数L,不用训练。

损失函数与训练算法:

损失函数定义为重构误差,类似PCA的做法。损失函数(L个样本):,h是编码器的映射函数,g是解码器的映射函数。xi编码之后再解码和原始数据xi尽可能的接近。训练好之后只需要编码器,即h(Xi)——>Yi

训练算法和普通的神经网络相同,用BP算法训练+随机梯度下降法SGD、GD。

实际使用:

实际使用时,只需要编码器网络,解码器只用于训练阶段。输入一个数据向量,即可得到特征向量。也可以用多个隐含层。

去噪自动编码器:

Denoising Autoencoder,简称DAE。为了增强模型的鲁棒性,对训练样本X做一个随机扰动如(加噪声,X中随机挑几维数据设置为0,其他维数据不变),得到X'向量,再用X'去训练,训练出的模型更具有鲁棒性、泛化性能更好,因为模型能够抵抗这些噪声。

这样,输入数据变为X',重构值为X,即输入输出为(X',X),而标准自动编码器输入输出为(X,X)。DAE把从有污染的数据中把原始数据重构出来,则编码器那一块从有污染的数据中把没有污染的数据代表的向量的有效特征向量Y提出来。

在训练样本中加入随机噪声,重构的目标是不带噪声的样本数据。用自动编码器学习得到的模型重构出来的数据可以去除这些噪声,获得没有被噪声污染过的数据。

对于每个样本向量X随机选择其中的一部分分量,将它们值置为0,其他分量保持不变,得到的带噪声向量为

稀疏自动编码器:

加入稀疏性惩罚项,让编码器的输入结果(即编码器输出的向量)稀疏(很多数据为0)。

编码器网络隐含层的第i个神经元的平均激活度为对所有训练样本的激活函数值的均值,记为pi^。

使用相对熵构造惩罚项:,其中n为隐含层神经元个数,p为人工指定的活跃度(一个接近于0的数)。

加上惩罚项后的目标函数变为:,其中前一项为AE的误差函数,后一项为编码器的稀疏性惩罚项。

收缩自动编码器:

Contractive Auto-Encoders,简称CAE,也是对自动编码器的一种改进,同样也是加上一个惩罚项。

训练时在损失函数中加上正则化项,使得编码器函数的导数尽可能小,

正则化项是编码器函数导数二范数平方,,这里hj是隐含层第j个神经元编码器函数,xi是输入向量的第i个分量,偏导数小则对输入值不敏感,输入X加上一个小的扰动项之后,产生的输出值变化也非常小,也更鲁邦一些。

多层自动编码器:

层叠自动编码器由多个自动编码器串联组成(因为很多实际应用中,一层特征抽象提取是不行的,如图像、声音),能够逐层提取输入数据的特征,在此过程中逐层降低输入数据的维度,将高维的输入数据转化为低维的特征。

编码器可以看成一个降维,因为映射之后向量的维数比映射之前要低,和PCA类似,但是和PCA有一个本质的区别是PCA是线性的,自动编码器是非线性的一个编码,因此它的表达能力会更强一些。AE是在人工神经网络用于深度学习早期的时候,2006Hition发于science上的那篇文章,用玻尔兹曼机训练一个多层的AE,实际应用中现在很少使用了,只需记住这种编码器解码器框架能把一个特征性向量X的特征向量Y给提出来的思想即可。图像卷积的时候会用到这个原理(前面一半做编码,后边一半做解码),还有RNN做机器翻译的时候的seqtoseq,也是这个原理。

训练也是逐层进行的。给定输入向量,采用无监督方式方式训练第一层自动编码器。把第一个自动编码器的输出作为第二个自动编码器的输入,采用同样的方法训练第二个自动编码器。

重复第二步直到所有自动编码器训练完成。把最后一个自动编码器的输出作为最终的输出。

在每一层,都会得到输入数据的不同抽象特征,随着层数的增加,这个特征越来越抽象。

本集总结:

1.AE基本想法:神经网络的映射函数来提取特征向量X的特征向量Y,f(X)——>Y

2.训练的目标函数loss、网络结构Encoder和Decoder结构

3.AE的实际使用

4.AE的几种改进型,DAE、稀疏自动编码器、CAE

5.AE的多层结构

SIGAI深度学习第五集 自动编码器的更多相关文章

  1. SIGAI深度学习第六集 受限玻尔兹曼机

    讲授玻尔兹曼分布.玻尔兹曼机的网络结构.实际应用.训练算法.深度玻尔兹曼机等.受限玻尔兹曼机(RBM)是一种概率型的神经网络.和其他神经网络的区别:神经网络的输出是确定的,而RBM的神经元的输出值是不 ...

  2. SIGAI深度学习第四集 深度学习简介

    讲授机器学习面临的挑战.人工特征的局限性.为什么选择神经网络.深度学习的诞生和发展.典型的网络结构.深度学习在机器视觉.语音识别.自然语言处理.推荐系统中的应用 大纲: 机器学习面临的挑战 特征工程的 ...

  3. SIGAI深度学习第八集 卷积神经网络2

    讲授Lenet.Alexnet.VGGNet.GoogLeNet等经典的卷积神经网络.Inception模块.小尺度卷积核.1x1卷积核.使用反卷积实现卷积层可视化等. 大纲: LeNet网络 Ale ...

  4. SIGAI深度学习第七集 卷积神经网络1

    讲授卷积神经网络核心思想.卷积层.池化层.全连接层.网络的训练.反向传播算法.随机梯度下降法.AdaGrad算法.RMSProp算法.AdaDelta算法.Adam算法.迁移学习和fine tune等 ...

  5. SIGAI深度学习第三集 人工神经网络2

    讲授神经网络的理论解释.实现细节包括输入与输出值的设定.网络规模.激活函数.损失函数.初始化.正则化.学习率的设定.实际应用等 大纲: 实验环节: 理论层面的解释:两个方面,1.数学角度,映射函数h( ...

  6. SIGAI深度学习第一集 机器学习与数学基础知识

    SIGAI深度学习课程: 本课程全面.系统.深入的讲解深度学习技术.包括深度学习算法的起源与发展历史,自动编码器,受限玻尔兹曼机,卷积神经网络,循环神经网络,生成对抗网络,深度强化学习,以及各种算法的 ...

  7. SIGAI深度学习第二集 人工神经网络1

    讲授神经网络的思想起源.神经元原理.神经网络的结构和本质.正向传播算法.链式求导及反向传播算法.神经网络怎么用于实际问题等 课程大纲: 神经网络的思想起源 神经元的原理 神经网络结构 正向传播算法 怎 ...

  8. 深度学习(五)基于tensorflow实现简单卷积神经网络Lenet5

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8954892.html 参考博客:https://blog.csdn.net/u01287127 ...

  9. 深度学习——无监督,自动编码器——尽管自动编码器与 PCA 很相似,but自动编码器既能表征线性变换,也能表征非线性变换;而 PCA 只能执行线性变换

    自动编码器是一种有三层的神经网络:输入层.隐藏层(编码层)和解码层.该网络的目的是重构其输入,使其隐藏层学习到该输入的良好表征. 自动编码器神经网络是一种无监督机器学习算法,其应用了反向传播,可将目标 ...

随机推荐

  1. php实现微信小程序登录

    以上是官方的流程介绍,已经说的很详细了,现在简单介绍一下流程 前端通过wx.login生成code传递给后端,后端通过提交Appid + appSecret + code 到微信方服务器 获取 ses ...

  2. PHP替换HTML文件中所有a标签的HREF属性,其他不变

    转载出处:http://www.luanxin.top/index.php/archives/21/ 仿站的时候扒下来的代码a链接总是指向别的地方,要一个一个改的话都要累死了,展示的时候随便点一下就乱 ...

  3. PAT(B) 1005 继续(3n+1)猜想(Java)

    题目链接:1005 继续(3n+1)猜想 分析  找出所有的被"覆盖"的数,然后再将输入的数中不在被"覆盖"的数中的数添加到"关健数"中.输 ...

  4. python之SQLite笔记

    sqlite3 打开文件并创建游标 conn = sqlite3.connect('adressbook.db')c = conn.cursor() 连接对象:sqlite3.connect('数据文 ...

  5. SysTick 定时实验(非中断)

    实验目的:利用 SysTick 产生 1s 的时基,LED 以 1s 的频率闪烁. 编程要点 1.设置重装载寄存器的值 2.清除当前数值寄存器的值 3.配置控制与状态寄存器 过程 我们创建了两个文件: ...

  6. shell习题第23题:检测网卡流量

    [题目要求] 写一个脚本,检测网卡流量并记录到日志,需要按照如下格式并一分钟统计一次(只需统计外网网卡,网卡名称eth0) 2019-06-07 1:11 eth0 input: 1000bps et ...

  7. 涛哥:Qt安卓-5.12环境搭建

    简介 Qt for android 环境搭建,以Windows平台 Qt5.12为基准. 因为有不少人问相关问题,所以写篇文章汇总一下. 安装Qt 需要先安装Android版的Qt. 一般在Qt的安装 ...

  8. 利用jwt生成token,用于http请求身份验证

    前段时间在做移动端接口过程中,考虑到安全性,所有移动端发送请求(除了登录请求)过程中进行token有效验证. 1.利用jwt生成token a.导入jwt相关包 <!-- jwt --> ...

  9. 数据库及MySQL基础(1)

    1.数据库概述 关系型数据库:面对关系,Java面向对象. ·常见数据库 Oracle(神喻):甲骨文 DB2:IBM SQL Server:微软 Sybase:赛尔斯 MySQL:甲骨文,最早是开源 ...

  10. 手机如何修改host文件

    常常在想本地开发的时候使用pc端测试移动端,由于有安全域名限制,因此在本地修改了机器的host.将域名映射到本地局域网.这个做法是很正常的也很常见.但是现在新的需求是我需要在手机上也能够正常测试啊!怎 ...