[文献阅读] Reducing the Dimensionality of Data with Neural Networks
文章目录
- 摘要
- Abstract:
- RBM
- 自编码器
- 深层自编码器
- 初始化
- 展开
- 微调
- 实验
- 总结
摘要
Reducing the Dimensionality of Data with Neural Networks Reducing the Dimensionality of Data with Neural Networks | Science 使用神经网络降低数据的维度
由Hinton在2006年于Science上发表。
当时的深度学习由于BP算法被指出存在梯度消失问题(当时还没有优化器的情况下),同时这也导致网络的初始化值对网络的训练结果影响很大。
为了解决这两个问题,本文提出一个新的降维算法:由一个非线性的、自适应的多层的编码器(encoder)来将高维的数据转化为低维的编码,和一个相似的解码器(decoder)来将低维编码恢复成原始高维数据,整个系统构成一个自编码器。一开始自编码器基于RBM的预训练来进行初始化,然后将权重转移到一个新的神经网络中用BP进行训练微调。
经过预训练初始化,再训练微调过后的自编码器,就能很好的还原数据原来的信息。而编码器部分,则能够有效的提取数据的特征,这种降维特征提取在分类、可视化、通信、高维数据的存储等方面都非常有促进作用,成为诸多任务的基础算法。
Abstract:
This week I read Reducing the Dimensionality of Data with Neural Networks. It introduce the concept of autoencoders. It discusses the use of Restricted Boltzmann Machines for pretraining and the subsequent fine-tuning of deep autoencoders to address gradient vanishing and initialization challenges.
RBM
*RBM*(Restricted Boltzmann machine)也是论文作者Hinton提出的,是一种生成式随机神经网络(generative stochastic neural network)。该网络由一些可见单元(visible unit,对应可见变量,亦即数据样本)和一些隐藏单元(hidden unit,对应隐藏变量)构成,可见变量和隐藏变量都是二元变量,亦即其状态取{0,1}。
整个网络是一个二部图,只有可见单元和隐藏单元之间才会存在边,可见单元之间以及隐藏单元之间都不会有边连接。
不过现在已经不在研究RBM了,更简单一点,可以将RBM理解为 输入输出均为2值的单层神经网络,即用明确的 0/1 来表示特征有无。
自编码器
最原始的自编码器可以看作只有三层的神经网络。
该网络包含两个主要部分:编码器(Encoder)和解码器(Decoder)。该网络的目标是学习一个恒等函数令 XR≈X 。通常损失函数被设置为与输入数据做均方根误差,要求输出层最大能力重建输入信息。
由于学习的是恒等函数,所以该网络是无监督的——只需要有输入样本,样本标签与样本一致即可。
深层自编码器
本文要提出的深层自动编码器,就是多层的自编码器。但在当时这样的深层网络难以训练。
由于网络更深了,所以梯度消失等问题也会很明显。本文为了解决这个问题,提出了一个逐层的、基于RBM的预训练来进行初始化,这样可以让网络在用BP算法训练前就有一个比较好的起步。
预训练包括学习一叠限制性玻尔兹曼机(RBM),每层只有一层特征检测器。学习到的一个RBM的特征激活作为’‘数据’’,用于训练堆栈中的下一个RBM。在预训练之后,RBMs被 "解压"以创建一个深度自动编码器,然后利用误差导数的反向传播进行微调。
在具有多个隐藏层的非线性自动编码器中,优化权重是很困难的。在初始权重大的情况下,自动编码器通常会找到很差的局部最小值;在初始权重小的情况下,早期层的梯度很小,因此训练具有多个隐藏层的自动编码器是不可行的。如果初始权重接近一个好的解,梯度下降法就能很好地工作,但寻找这样的初始权重需要一种非常不同类型的算法,一次学习一层特征。我们介绍了这种针对二进制数据的 "预训练 "程序,将其推广到实值数据,并表明它对各种数据集都有良好的效果
初始化
RBM通过学习两层之间的特征,这个过程不需要BP,通过4层RBM,获得了一个初始化的编码器权重。
以二值图像为例,给出的有效初始化autoencoder的方法是:
- 将autoencoder中每层的权重W_i视作一个RBM的权重,初始化用较小的随机初始化。
- 对第一层的RBM进行训练,直至收敛。
- 用同样的训练样本给第一层的RBM进行预测,得出激活值(隐藏层的值/编码)。将该激活值作为第二层的RBM的训练样本,进行训练。
- 重复类似第三步的工作,训练所有的权重(RBM)。
展开
初始化后,将编码器的权重连接起来,转移到一个深度神经网络里就得到初始化的编码器了。对于解码器,要将编码器的权重转置,再转移。为什么转置就能当做解码器,因为RBM本身就兼具编解码能力(通过重构训练解码能力),因此初始化出来的权重也同样兼具编解码能力。
可以看到初始化的自编码器已经能够进行一定程度的重建了,
微调
然后就可以对初始化自编码器使用BP反向传播进行微调了,损失函数用像素级对数(交叉熵)损失函数
其中 p i p_i pi为像素i的强度, p ^ i \hat p_i p^i为其重构强度。
实验
自编码器模型:编码器各层的shape为:(28 \times 28)=784 - 1000 - 500 - 250 - 30。最后一层30维的特征层是用线性激活,其余均是Logistic激活(\sigma函数)。
训练集和测试集:MNIST 60,000个训练数据以及10,000个测试数据。
结果:做了两个测试,第一个是手写数字压缩到30维特征;第二个是压缩到2维特征。
- 第一行为第一行为随机手写数字样本;第二行为降维至30个特征的autoencoder;第三、四行分别为30个主成分的logistic PCA和标准PCA;均方误差分别为3.00, 8.01, 13.87。
自动编码器由一个大小为(28 X 28)-400-200-100-50-25-6层的编码器和一个对称的解码器组成。码层中的6个单元是线性的,其他单元都是逻辑的。该网络在20000张图像上进行了训练,并在10000张新图像上进行了测试。自动编码器发现了如何将每张784像素的图像转换成六个实数,允许几乎完美的重建(如图2A)。PCA给出的重建效果要差得多。在没有预训练的情况下,很深的自动编码器总是重建训练数据的平均值,即使在长时间的微调后也是如此。较浅的自动编码器在数据和代码之间只有一个隐藏层,可以在没有预训练的情况下进行学习,但预训练大大减少了它们的总训练时间。当参数数量相同时,深层自动编码器在测试数据上产生的重构误差比浅层自动编码器低,但随着参数数量的增加,这种优势就会消失。
(A)取全部60000张训练图像的前两个主成分,生成的每类500个数字的二维编码;(B) 由784- 1000-500-250-2自动编码器发现的二维编码。
总结
Hinton提出的深度自编码器DAE开创了深度编码器的先河,其中蕴含的预训练的思想本来是通过初始化解决神经网络梯度消失和难以训练的问题。
虽然现代的神经网络配合优化器已经弥补了这个问题,而且传统的RBM也逐渐不被关注,但现在预训练依然被用在很多方面,来提升训练效率和质量,比如使用预训练的编码器,再配合半监督的微调,就可以使用很低的成本和资源达到很高的水平。
相关文章:
[文献阅读] Reducing the Dimensionality of Data with Neural Networks
文章目录 摘要Abstract:RBM自编码器深层自编码器初始化展开微调 实验总结 摘要 Reducing the Dimensionality of Data with Neural Networks Reducing the Dimensionality of Data with Neural Networks | Science 使用神经网络降低数据的维度 由Hinton在2006年于Science上发…...
Sublime Text4 4189 安装激活【 2025年1月3日 亲测可用】
-----------------测试时间2025年1月3日------------------- 下载地址 官方网址:https://www.sublimetext.com 更新日志:https://www.sublimetext.com/download V4189 64位:https://www.sublimetext.com/download_thanks?targetwin-x64 ....…...
自相关性的数值越接近于1说明什么
自相关性数值越接近于 1,通常表明以下几点: 1. 强正相关 - 自相关系数接近于 1 表示当前值与其滞后值之间存在强正相关关系。这意味着,当当前值较高时,之前的值也倾向于较高,反之亦然。 2. 时间序列的持久性 - 如果…...
【ArcGIS Pro微课1000例】0064:栅格目录、栅格数据集、镶嵌数据集
一、栅格目录与栅格数据集 1. 定义 栅格目录:是一个用于管理和组织栅格数据集的结构,通常包含多个栅格数据集的元数据和索引信息。它相当于一个文件夹,里面可以存放多个栅格文件。可以将工作空间转栅格目录。 栅格数据集:是指单个的栅格数据文件,包含了具体的空间数据,…...
单片机-静动态数码管实验
P0控制数码管 ,P0低电平 P1,P2,P3高电平 1、静态数码管 需求:数码管显示0,即让p0端口输出数字0的段码0x3f(共阴) #include "reg52.h" typedef unsigned int u16; typedef unsigned char u8; //数码管显示数字的数组 共阴极 …...
学术写作中的各种流程图如何利用Kimi进行辅助构建?
目录 1.学术论文中的流程图 2.一些小实践 3.论文中严谨的实践流程 近期小编在思考使用AI工具制作流程图和思维导图,结果发现Kimi现在支持流程图了,Kimi在学术写作中的应用变得更加广泛和深入。随着AIGC技术的不断进步,Kimi的功能将更加强大…...
halcon中图像处理及图像滤波
图像滤波简介 图像滤波的方法主要分为两大类:空间域方法和频域方法。 空间域方法是以对图像的像素直接进行处理为基础,包括均值滤波、中值滤波、高斯滤波等;频域方法则是以修改图像在傅里叶变换空间的值为基础的,包括高通滤波、低通滤波、同态滤波等。 1.空间域图像滤波 图…...
【pyqt】(三)designer
designer ui设计 在学习后续的代码之前,我们可以先学习一下designer这款工具,在安装软件的时候我们有提到过,其具体位置在虚拟环境根目录下的\Lib\site-packages\PySide6文件夹中。对于新手而言,使用这种可视化的工具可以帮助我们…...
微服务之服务治理——Eureka
CAP原则: Consistency(一致性):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本) Availability(可用性):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求…...
JS 中 json数据 与 base64、ArrayBuffer之间转换
JS 中 json数据 与 base64、ArrayBuffer之间转换 json 字符串进行 base64 编码 function jsonToBase64(json) {return Buffer.from(json).toString(base64); }base64 字符串转为 json 字符串 function base64ToJson(base64) {try {const binaryString atob(base64);const js…...
C#实现画图,及实现图像运动,C#中GDI+图形图像技术(Graphics类、Pen类、Brush类)C#之快速入门GDI+绘图 C#实现快速画图功能
下载源码 <-------- 在C#的世界里,GDI如同一位多才多艺的艺术家,以其强大的绘图能力,让开发者能够轻松地在应用程序中挥洒创意,绘制出丰富多彩的图形世界。GDI不仅支持基本的几何图形绘制,还能处理复杂的图像处理任…...
32单片机从入门到精通之开发环境——调试工具(七)
在人生的道路上,困难和挫折时常会出现。但是我们不能因此放弃,而是要坚持努力,克服困难,实现自己的梦想。成功不是一蹴而就的,它需要付出大量的努力和坚持不懈的精神。每一次的失败都是一次宝贵的经验,它能…...
多光谱图像的处理和分析方法有哪些?
一、预处理方法 1、辐射校正: 目的:消除或减少传感器本身、大气条件以及太阳光照等因素对多光谱图像辐射亮度值的影响,使得图像的辐射值能够真实反映地物的反射或发射特性。 方法:包括传感器校正和大气校正。传感器校正主要是根…...
电脑主机后置音频插孔无声?还得Realtek高清晰音频管理器调教
0 缘起 一台联想电脑,使用Windows 10 专业版32位,电脑主机后置音频插孔一直没有声音,所以音箱是接在机箱前面版的前置音频插孔上的。 一天不小心捱到了音箱的音频线,音频线头断在音频插孔里面了,前置音频插孔因此用不…...
2412C++,自动注册
原文 注册器实现 示例代码 #pragma once #include <type_traits> #include <iostream> template<typename _Type> struct odr{inline static auto use []{ //[1]std::cout << __PRETTY_FUNCTION__ << std::endl;//在这里利用宏,注册(类名,T)…...
C#对线程同步的应用
什么是线程同步?线程同步的应用场景有哪些?在C#中有哪些线程同步方式?下面对这些问题做一个总结,让大家在面试的时候遇到这些问题能够游刃有余。 线程同步是指在多线程环境下,多个线程同时访问共享资源时,确…...
需求上线,为什么要刷缓存?
在需求上线的过程中,刷缓存主要有以下几个重要原因: 一、保证数据的准确性 旧数据残留问题 缓存是为了加快数据访问速度而存储的数据副本。在需求更新后,之前缓存中的数据可能已经不符合新的业务逻辑。例如,一个电商网站修改了商…...
Docker学习相关笔记,持续更新
如何推送到Docker Hub仓库 在Docker Hub新建一个仓库,我的用户名是 leilifengxingmw,我建的仓库名是 hello_world。 在本地的仓库构建镜像,注意要加上用户名 docker build -t leilifengxingmw/hello_world:v1 .构建好以后,本地会…...
手持PDA终端,提升零售门店管理效率
随着科技的不断进步和零售行业的持续发展,手持PDA终端的应用将会越来越广泛。它将不断融合更多先进的技术和功能,为零售门店管理带来更加便捷、高效、智能的解决方案。 手持PDA终端是集成了数据处理、条码扫描、无线通信等多种功能于一体的便携式设备…...
Spring实现Logback日志模板设置动态参数
版权说明: 本文由博主keep丶原创,转载请保留此块内容在文首。 原文地址: https://blog.csdn.net/qq_38688267/article/details/144842327 文章目录 背景设计日志格式实现配置动态取值logback-spring.xml 相关博客 背景 多个单体服务间存在少量…...
AI Infra
文章目录 关于 InfraAI Infra的核心思想 组成部分硬件软件网络云服务监控与优化安全与合规 关键里程碑未来展望 关于 Infra 在大模型中,“infra” 是 “infrastructure” 的缩写,指的是支持大模型训练和部署的技术基础设施。以下是其主要组成部分&#…...
【每日学点鸿蒙知识】RelativeContainer组件、List回弹、Flutter方法调用、Profiler工具等
1、RelativeContainer组件auto对齐规则? 当height设置为auto,这时候为什么子组件设置 top:{anchor: "__container__",align: VerticalAlign.Top}后auto就不生效了呢,anchor锚点不是默认top对齐的吗? 这是为了避免二次…...
springboot集成qq邮箱服务
springboot集成qq邮箱服务 1.获取QQ邮箱授权码 1.1 登录QQ邮箱 1.2 开启SMTP服务 找到下图中的SMTP服务区域,如果当前账号未开启的话自己手动开启。 1.3 获取授权码 进入上图中的【管理服务】后:在【安全设置中生成授权码】,也可以直接点击【继续生成…...
【重庆】《政务数字化应用费用测算规范》(T/CDCIDA 001—2023)-省市费用标准解读系列36
《政务数字化应用费用测算规范(报批稿)》于2023年11月18日实施,本文件按照GB/T 1.1-2020给出的规则起草,主要适用于重庆政务数字化应用项目的费用测算。我司基于专业第三方信息化项目造价机构角度,从标准创新点、定制软…...
linux-centos8-安装make
参考: CentOS 8中 更新或下载时报错:为仓库 ‘appstream‘ 下载元数据失败 : Cannot prepare internal mirrorlist_errors during downloading metadata for repository -CSDN博客 https://blog.csdn.net/lxcw_sir/article/details/140185068 Linux报错…...
springboot3 ThreadPoolTaskExecutor 和 Executors 线程池优化
在 Spring Boot 3 中,可以通过 ThreadPoolTaskExecutor 和 Executors 等方式创建和管理线程池。以下是基于 Spring Boot 的线程池创建工具的详细说明与实现: 一、使用 ThreadPoolTaskExecutor 创建线程池 Spring 提供了 ThreadPoolTaskExecutor,用于管理线程池。它支持灵活…...
Elasticsearch:当混合搜索真正发挥作用时
作者:来自 Elastic Gustavo Llermaly 展示混合搜索何时优于单独的词汇或语义搜索。 在本文中,我们将通过示例探讨混合搜索,并展示它与单独使用词汇或语义搜索技术相比的真正优势。 什么是混合搜索? 混合搜索是一种结合了不同搜索…...
NeurIPS 2024 | 像素级LLM实现图像视频理解、生成、分割和编辑大统一(昆仑万维等)
Accepted by NeurIPS 2024 文章链接:https://arxiv.org/pdf/2412.19806 项目链接:https://vitron-llm.github.io/ Github链接:https://github.com/SkyworkAI/Vitron 亮点直击 首次提出了一种通用的视觉多模态大语言模型(MLLM&…...
基于 GPUTasker 的 GPU 使用情况钉钉推送机器人实现
引言 https://github.com/cnstark/gputasker 随着 AI 模型的广泛应用,GPU 成为团队中最重要的资源之一。然而,如何实时监控 GPU 的使用情况并及时通知团队是一个值得关注的问题。为了更好地管理显卡资源,本文基于 GPUTasker,实现了…...
Linux-Ubuntu之RTC实时时钟显示
Linux-Ubuntu之RTC实时时钟显示 一,原理二,代码实现三,小结1.为什么这个显示不出来? 一,原理 这个RTC的和计数器差不多,往对应寄存器中放入初始化的时间,然后在时钟的作用下,进行累…...
rouyi(前后端分离版本)配置
从gitee上下载,复制下载地址,到 点击Clone,下载完成, 先运行后端,在运行前端 运行后端: 1.配置数据库,在Navicat软件中,连接->mysql->名字自己起(rouyi-vue-blog),用户名roo…...
【2025优质学术推荐】征稿控制科学、仪器、智能系统、通信、计算机、电子信息、人工智能、大数据、机器学习、软件工程、网络安全方向
【2025优质学术推荐】征稿控制科学、仪器、智能系统、通信、计算机、电子信息、人工智能、大数据、机器学习、软件工程、网络安全方向 【2025优质学术推荐】征稿控制科学、仪器、智能系统、通信、计算机、电子信息、人工智能、大数据、机器学习、软件工程、网络安全方向 文章目…...
C# 设计模式(结构型模式):适配器模式
C# 设计模式(结构型模式):适配器模式 在软件开发中,我们经常会遇到需要将不同接口的组件结合在一起的情况。此时,适配器模式(Adapter Pattern)就派上了用场。它属于结构型设计模式,…...
贪心算法概述
贪心算法总是作出当前看来最好的选择,是局部最优 可以使用贪心算法的问题一般具有两个重要的性质 贪心选择性质最优子结构性质 贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择来达到 其与动态规划的问题区别在于,动态规划算法通…...
自从学会Git,感觉打开了一扇新大门
“同事让我用 Git 提交代码,我居然直接把项目文件压缩发过去了……”相信很多初学者都经历过类似的窘境。而当你真正掌握 Git 时,才会发现它就像一本魔法书,轻松解决代码管理的种种难题。 为什么 Git 能成为程序员的标配工具?它究…...
jrc水体分类对水体二值掩码修正
使用deepwatermap生成的水体二值掩码中有部分区域由于被云挡住无法识别,造成水体不连续是使用jrc离线数据进行修正,jrc数据下载连接如下:https://global-surface-water.appspot.com/download 选择指定区域的数据集合下载如图: 使…...
Scala Collection(集合)
Scala的集合框架非常丰富和灵活,主要包括三大类:序列(Seq)、集(Set)和映射(Map)。这些集合类都扩展自Iterable特质,并且Scala为几乎所有集合类提供了可变和不可变的版本。…...
121.【C语言】数据结构之快速排序(未优化的Hoare排序存在的问题)以及时间复杂度的分析
目录 1.未优化的Hoare排序存在的问题 测试代码 "量身定制"的测试代码1 运行结果 "量身定制"的测试代码2 运行结果 "量身定制"的测试代码3 运行结果 分析代码1、2和3栈溢出的原因 排有序数组的分析 分析测试代码1:给一个升序数组,要求排…...
js 文档注释
在 JavaScript 中,文档注释(也叫 JSDoc 注释)是一种用于为代码提供结构化说明的注释方式。JSDoc 注释通常用于生成 API 文档、提高代码可读性,并为 IDE 提供智能提示。下面是如何在 JavaScript 中编写文档注释的基本指南。 基本语…...
chatgpt model spec 2024
概述 这是模型规范的初稿,该文档规定了我们在OpenAI API和ChatGPT中的模型的期望行为。它包括一组核心目标,以及关于如何处理冲突目标或指令的指导。 我们打算将模型规范作为研究人员和数据标注者创建数据的指南,这是一种称为从人类反馈中进…...
路由技术在网络中的作用及特点
作用:路径选择:在复杂的网络拓扑结构中,路由技术能够根据网络的当前状态和目标地址,为数据报文选择一条最佳的传输路径,确保数据能够快速、准确地到达目的地。例如,在互联网中,当用户访问一个网…...
No.1十六届蓝桥杯备战|第一个C++程序|cin和cout|命名空间
第一个C程序 基础程序 使用DevC5.4.0 写一个C程序 在屏幕上打印hello world #include <iostream> using namespace std;int main() {cout << "hello world" << endl;return 0; } 运行这个C程序 F9->编译 F10->运行 F11->编译运行 mai…...
vim 按下esc后取消高亮
配置 ideavimrc文件 " 按下 Esc 键时自动取消高亮 " 在普通模式下按下 Esc 键取消高亮 nnoremap <Esc> :nohlsearch<CR> " 在插入模式下按下 Esc 键取消高亮 inoremap <Esc> <Esc>:nohlsearch<CR>" 额外:当退出…...
JS-判断字段值是否为空
1.js方法 /*** Description: 判断给定值是否为空* param {any} value 需要检查的值* return {boolean} 如果值为空,返回 true;否则返回 false */ export function isEmpty(value) {// 检查是否为 null 或 undefinedif (value null || value undefined…...
STM32-笔记22-sg90舵机
一、接线 二、实验实现 动手让 SG90 每秒转动一下,0 -> 20 -> 40 -> 100 -> 180 如此循环。 舵机接A6 复制18-呼吸灯,重命名24-sg90舵机 把PWM重命名sg90 打开项目文件 在魔术棒和品上把PWM都去掉,加载sg90文件夹 加载之后…...
智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之10 方案再探之1:特定于领域的模板 之1 随想交流
前面的项目再次不能继续。不得已再一次重新建了这个项目,并以当前修改版本的项目文件为附件开始了今天的沟通。所以 标明是“方案再探” 在新建这个项目的同时,就将项目文件作为附件添加进去,然后开始。 文件链接:智能工厂的设计…...
国内Ubuntu环境Docker部署Stable Diffusion入坑记录
国内Ubuntu环境Docker部署Stable Diffusion入坑记录 本文旨在记录使用dockerpython进行部署 stable-diffusion-webui 项目时遇到的一些问题,以及解决方案,原项目地址: https://github.com/AUTOMATIC1111/stable-diffusion-webui 问题一览: …...
速盾:服务器CDN加速解析的好处有哪些呢?
随着互联网应用的普及,越来越多的企业开始关注如何提升网站的访问速度和用户体验。为了实现这一目标,许多企业选择使用CDN(内容分发网络)来加速网站的内容分发。CDN通过在全球范围内分布多个节点,将内容缓存到离用户最…...
【sql】CAST(GROUP_CONCAT())实现一对多对象json输出
数据库:mysql 5.7版本以上 问题:一对多数据,实现输出一条数据,并将多条数据转换成json对象输出,可以实现一对多个字段。 项目中关系较为复杂,以下简化数据关系如下: t1是数据表,t…...
[创业之路-221]:企业的责任中心:收入中心、利润中心、成本中心、费用中心、投资中心
目录 一、大部分企业责任中心定义 投资中心:战略决策部 利润中心:事业部 收入中心:进账 成本中心:成本 费用中心:消耗 二、华为对责任中心定义 投资中心 利润中心(事业部:BU࿰…...