自编码器(二)

        自编码器到底好在哪里?当我们把一个高维度的图片,变成一个低维度的向量的时候,到 底带来什么样的帮助呢?我们来设想一下,自编码器这件事情它要做的,是把一张图片压缩 又还原回来,但是还原这件事情为什么能成功呢?如图1.1所示,假设本来图片是3×3的 维度,此时我们要用9个数值来描述一张3×3的图片,假设编码器输出的这个向量是二维 的,我们怎么才可能从二维的向量去还原3×3的图片,即还原这9个数值呢?怎么有办法把 9 个数值变成2个数值,又还原成3,又还原回9个数值呢?

图1.1 自编码器的原理

        能够做到这件事情是因为,对于图像来说,并不是所有3×3的矩阵都是图片,图片的变 化其实是有限的,你随便采样一个随机的噪声,随便采样一个矩阵出来,它通常都不是你会 看到的图片。举例来说,假设图片是3×3的,那它的变化,虽然表面上应该要有3×3个数 值,才能够描述3×3的图片,但是也许它的变化实际上是有限的。也许我们把图片收集起来 发现,它实际上只有如图1.1所示的白色和橙色方块两种类型。一般在训练的时候就会看到 这种状况,就是因为图片的变化还是有限的。因此我们在做编码器的时候,有时只用两个维度 就可以描述一张图片,虽然图片是3×3,应该用9个数值才能够储存,但是实际上它的变化 也许只有两种类型,那你就可以说看到这种类型,我就左边这个维度是1,右边是0,看到这 种类型就左边这个维度是0,右边这个维度是1。

        而编码器做的事情就是化繁为简,有时本来比较复杂的东西,它实际上只是表面上看起 来复杂,而本身的变化是有限的。我们只需要找出其中有限的变化,就可以将它本来比较复杂 的东西用更简单的方法来表示。如果我们可以把复杂的图片,用比较简单的方法来表示它,那 我们就只需要比较少的训练数据,在下游的任务里面,我们可能就只需要比较少的训练数据, 就可以让机器学到,这就是自编码器的概念。

        自编码器从来就不是一个新的概念,它具有悠长的历史。举例来说,深度学习之父Hinton 早在2006 年的Science 论文里面就有提到自编码器这个概念,只是那个时候用的网络跟今天 我们用的有很多不一样的地方。那个时候自编码器的结构还不太成熟,当时人们还并不认为 深度的神经网络是能够训练起来的,换句话说就是把网络叠很多层,然后每一层一起训练的 方法是不太可能成功的,因此人们普遍认为每一层应该分开训练,所以Hinton用的是一个叫 做受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)的技术。

        这里我们特别把Hinton 教授 2006 年的文章里面的图拿出来给大家展示一下过去人们是 怎么看待深度学习这个问题的。那个时候要训练一个很深的网络不太可能,每一层分开要训 练,虽然这个在现在看来很深也没有很深,只是三层,但是在2006年这个已经是很深的了。 那这个三层要分开来训练才可以,那这边说分开来训练这件事情叫做预训练。但它跟自监督 学习中的预训练又不太一样,假设自编码器是预训练,那么这里的预训练就相当于是预训练 中的预训练,这里预训练倾向于训练流程的概念,自编码器的预训练倾向于算法流程的概念。 这里预训练是要先训练自编码器,每一层用RBM的技术分开来训练。先把每一层都训练好, 再全部接起来做微调这件事情,这边的微调也并不是BERT模型的微调,它是微调那个预训 练的模型。这个RBM技术我们会发现今天很少有人在提到它了,它其实不是一个深度学习 的技术,它有点复杂,我们也没有打算要深入细讲,至于为什么现在都很少人用它,就是因为它没有什么用。但是在2006年,还是有必要用到这个技术的。其实Hinton后来在2012年的 时候,有一篇论文呢偷偷在结尾下一个结论说其实RBM技术也没有什么必要,所以后来就 没有什么人再用这个技术了。而且那时候还有一个神奇的信念,即编码器和解码器,它们的结 构必须是对称,所以编码器的第一层,跟解码器的最后一层,它们必须对应,不过现在已经没 有或者说比较少这样的限制。总之,自编码器从来就不是一个新的概念。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/480998.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot旅游管理系统的设计与实现

springboot旅游管理系统的设计与实现 如需源码pc端👉👉👉资源 手机端👉👉👉资源 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于…

SQL进阶——子查询与视图

在SQL中,子查询和视图是两种强大的技术,用于处理复杂的查询、提高代码的重用性以及优化查询性能。子查询允许开发者在查询中嵌套其他查询,而视图则是对复杂查询的封装,可以简化开发工作并提高代码的可维护性。 本章将深入探讨如何…

【组成原理】计算机硬件设计——ALU

2bit 复用器 A B C D 为该元件的4个输入口,假设 输入口都是 4位,故 数据输入范围 是 0~ 16. Sel是2位选择开关,可以标识 0,1,2,3,这样可以实现控制4个输入的选择。 元件外观: 二、…

基于MFC实现的银行模拟系统

基于MFC实现的银行模拟系统 1.软硬件运行环境 1.1 项目研究背景与意义 为了能给学生熟悉银行业务系统提供真实的操作环境, 使学生在掌握理论知识的同时熟悉银行业务的实际操作过程,改变其知识结构,培养商业银行真正需要的实用人才,增强学生…

【LeetCode每日一题】——189.轮转数组

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【题目进阶】八【解题思路】九【时空频度】十【代码实现】十一【提交结果】 一【题目类别】 数组 二【题目难度】 中等 三【题目编号】 189.轮转数组 四【题目描述】 …

滑动窗口篇——如行云流水般的高效解法与智能之道(3)

前言: 上篇我们介绍了滑动窗口的进阶练习,本篇难度继续升级,同样结合具体题目,帮助大家进一步掌握和运用滑动窗口。 一. 找到字符串中所有字母异位词 题目链接:438. 找到字符串中所有字母异位词 - 力扣(L…

uniapp首页样式,实现菜单导航结构

实现菜单导航结构 1.导入字体图标库需要的文件 2.修改引用路径iconfont.css 3.导入到App.vue中 <style>import url(./static/font/iconfont.css); </style>导航区域代码 VUE代码 <template><view class"home"><!-- 导航区域 --><…

Rust SQLx CLI 同步迁移数据库

上文我们介绍了SQLx及SQLite&#xff0c;并介绍了如何使用代码同步迁移数据库。本文介绍Sqlx cli 命令行工具&#xff0c;介绍如何安装、使用&#xff0c;利用其提供的命令实现数据表同步迁移。Java生态中有flyway, sqlx cli 功能类似&#xff0c;利用命令行工具可以和其他语言…

【天地图】HTML页面实现车辆轨迹、起始点标记和轨迹打点的完整功能

目录 一、功能演示 二、完整代码 三、参考文档 一、功能演示 运行以后完整的效果如下&#xff1a; 点击开始&#xff0c;小车会沿着轨迹进行移动&#xff0c;点击轨迹点会显示经纬度和时间&#xff1a; 二、完整代码 废话不多说&#xff0c;直接给完整代码&#xff0c;替换…

鸿蒙学习自由流转与分布式运行环境-价值与架构定义(1)

文章目录 价值与架构定义1、价值2、架构定义 随着个人设备数量越来越多&#xff0c;跨多个设备间的交互将成为常态。基于传统 OS 开发跨设备交互的应用程序时&#xff0c;需要解决设备发现、设备认证、设备连接、数据同步等技术难题&#xff0c;不但开发成本高&#xff0c;还存…

如何启动 Docker 服务:全面指南

如何启动 Docker 服务:全面指南 一、Linux 系统(以 Ubuntu 为例)二、Windows 系统(以 Docker Desktop 为例)三、macOS 系统(以 Docker Desktop for Mac 为例)四、故障排查五、总结Docker,作为一种轻量级的虚拟化技术,已经成为开发者和运维人员不可或缺的工具。它允许用…

Mac启动服务慢问题解决,InetAddress.getLocalHost().getHostAddress()慢问题。

项目启动5分钟&#xff0c;很明显有问题。像网上其他的提高jvm参数就不说了&#xff0c;应该不是这个问题&#xff0c;也就快一点。 首先找到自己的电脑名称&#xff08;用命令行也行&#xff0c;只要能找到自己电脑名称就行&#xff0c;这里直接在共享里看&#xff09;。 复制…

实时美颜直播APP开发指南:美颜sdk与美颜api的应用实践

本篇文章&#xff0c;小编将探讨如何在直播APP中实现实时美颜功能&#xff0c;重点介绍美颜sdk与api的应用实践。 一、什么是实时美颜技术&#xff1f; 实时美颜技术&#xff0c;通常通过图像处理算法&#xff0c;基于主播或用户的实时视频流&#xff0c;进行面部特征的优化。…

【纯原生js】原生实现h5落地页面中的单选组件按钮及功能

h5端的按钮系统自带的一般都很丑&#xff0c;需要我们进行二次美化&#xff0c;比如单选按钮复选框之类的&#xff0c;那怎么对其进行html和css的改造&#xff1f; 实现效果 实现代码 <section id"tags"><h2>给景区添加标题</h2><label><…

win10系统安装docker-desktop

1、开启Hyper-v ———————————————— Hyper-V 是微软提供的一种虚拟化技术&#xff0c;它允许你在同一台物理计算机上运行多个独立的操作系统实例。这种技术主要用于开发、测试、以及服务器虚拟化等领域。 —————————————————————— &#…

阿里云人工智能平台(PAI)免费使用教程

文章目录 注册新建实例交互式建模(DSW)注册 注册阿里云账号进行支付宝验证 新建实例 选择资源信息和环境信息,填写实例名称 资源类型需要选择公共资源,才能使用资源包进行抵扣。目前每月送250计算时。1 * NVIDIA A10 8 vCPU 30 GiB 1 * 24 GiB1 * NVIDIA V100 8 vCPU 32 Gi…

TongRDS分布式内存数据缓存中间件

命令 优势 支持高达10亿级的数据缓冲&#xff0c;内存优化管理&#xff0c;避免GC性能劣化。 高并发系统设计&#xff0c;可充分利用多CPU资源实现并行处理。 数据采用key-value多索引方式存储&#xff0c;字段类型和长度可配置。 支持多台服务并行运行&#xff0c;服务之间可互…

即时通讯| IM+RTC在AI技术加持下的社交体验

即时通讯作为互联网的重要应用之一&#xff0c;见证了中国互联网30年发展的辉煌历程。 它从最初的文字交流&#xff0c;发展到如今的语音、视频通话&#xff0c;甚至是虚拟现实社交&#xff0c;已经渗透到生活的社交、娱乐、商务等方方面面&#xff0c;成为现代社会不可或缺的一…

Redis(5):哨兵

一、作用和架构 1. 作用 在介绍哨兵之前&#xff0c;首先从宏观角度回顾一下Redis实现高可用相关的技术。它们包括&#xff1a;持久化、复制、哨兵和集群&#xff0c;其主要作用和解决的问题是&#xff1a; 1&#xff09;持久化&#xff1a;持久化是最简单的高可用方法(有时甚…

Linux -初识 与基础指令1

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【Linux】 欢迎点赞&#x1f44d;收藏⭐关注❤️ 文章目录 &#x1f4da; 前言&#x1f5a5;️ 初识&#x1f510; 登录 root用户&#x1f465; 两种用户➕ 添加用户&#x1f9d1;‍&#x1f4bb; 登录 普通用户⚙️ 常见…