NLP(5)--自编码器

2023-09-15 20:09:21

目录

一、自编码器

1、自编码器概述

2、降噪自编码器

二、特征分离

三、自编码器的其他应用

1、文本生成

2、图像压缩 

3、异常检测

四、VAE

1、极大似然估计

2、GSM

3、GMM

4、VAE的引出

5、VAE


一、自编码器

1、自编码器概述

        自编码器(Auto-Encoder)作为无监督学习的一种算法,自编码器中包含Encoder和Decoder紧紧相连的两个部分。首先将自编码器的输入的高维向量通过编码转变为低维度的隐变量,这一部分是编码器网络,然后将编码过的隐变量解码为高维度的输出向量,这一部分为解码器网络。

        自编码器中没有标签信息,也不需要外界提供标签信息,而是通过最小化重构误差来学习数据的特征表示,Encoder的输出隐变量可以用来用于数据压缩、降维、特征提取的任务,也可以用于作为有监督学习任务的输入特征。

        通俗的讲,输入向量经过Encoder变为难以理解的低位向量(特征)再经过Decoder转变为高维向量,自编码器输出的高维向量与输入的高维向量相比较,如果相似度越高,则证明模型效果更好。

        另外Encoder和Decoder如果蕴含着深层次的神经网络结构,那么该编码器就是深度自编码器,可以用来提取更加深层次的非线性特征值。

        下图是一个2006年的自编码器雏形,很好笑的points,一个是当时的深层网络要一层一层的去train,另一个是Encoder和Decoder都必须对称使用,在现在来看这些早就被突破了。

2、降噪自编码器

        降噪自编码器(Denoising Auto-Encoder,DAE)通过对输入数据添加噪声,模型需强制根据带有噪声的输入向量找到数据中隐藏的真实信息(特征),这样防止模型对于输入数据过分依赖,避免了自编码器过去常常出现的过拟合现象。

        相较于一般自编码器,降噪自编码器可以提高数据的抗干扰性,使得模型更具有鲁棒性,不依赖于数据本身,而注重数据特征,并且改善梯度消失的问题。

        下图为降噪自编码器的图示,x为原始向量,\tilde{x}是添加噪声的向量(输入向量),y为隐藏层(Encoder输出向量),z为降噪自编码器输出向量,计算x与z的相似度,越相似说明效果越好。

二、特征分离

        特征分离(Feature Distangle)有点类似于特征可解释化,旨在将隐变量的不同维度提取出来,让其可解释化。在深度学习中,通过设计一定的模型或算法,将输入数据中的不同特征分离解耦出来,从而在模型训练和应用中利用这些特征,提高泛化能力。

        特征分离在图像分类中对于图像的颜色、纹理、形状的特征提取和音频迁移中对于声音音色、文本的提取有极大的价值。

        下面的图就是通过特征分离形成的语音风格迁移。

三、自编码器的其他应用

1、文本生成

        自编码器也可以用在文本生成模型,可以生成与输入文本相似的新文本,也可以用来生成各种烈性的文本。模型的隐藏层其实类似于对文章做了一个summary,Decoder再通过summary来生成一个相似的新文本,做到了无监督学习。

        但这样的做法,有可能出现输入文本和自编码器输出文本可以不依靠文本特征,而是通过某些特定的数据,进行“对暗号”,有一点过拟合的感觉,所以,可以通过引入Discriminator来对summary进行评断。下图就是这样的解释。

2、图像压缩 

        利用自编码器进行图像压缩可以实现,可能由于高维转低维再转高维、模型容量限制、误差重构、数据分布缺乏多样性,导致出现失真的效果,如下图。

        为了避免图像压缩中出现的失真效果,可以利用变分自编码器(VAE),生成对抗网络(GNN)来提供更好的图像生成和重构能力,或者利用更复杂的压缩算法技术来进行压缩。

3、异常检测

        异常检测是一个很大的领域,可以识别出数据集中的异常事件和异常对象,但是可以使用自编码器做出一些应用,比如图像异常检测。

        通过训练真人图像数据集的自编码器模型,测试中输入二次元图像与输出图像做相似度匹配,若相似度低则为异常值,做到了图像异常检测。

四、VAE

1、极大似然估计

        极大似然估计是参数估计的一种方式,通过抽样一部分来估计整体的参数情况(比如方差、平均数)

        极大似然估计的算法步骤如下:(来自百度)

        PS:其他的建议看概率论详解

2、GSM

        GSM(单高斯混合模型) ,其实就是正态分布模型。

        一维概率密度分布如下:

        二维概率密度分布在图中表示集中于一个椭圆形,三维概率密度分布集中于一个椭球型。

3、GMM

        GMM(混合高斯模型),其实就是多个高斯模型通过一定的权重后的融合,为了更为贴近拟合真实情况下的数据多样性。

        混合高斯模型概率密度分布如下:

        混合高斯模型由K个高斯模型组成,也就是K个类,其中 p(x|k)=N(x|\mu_k,\sum_k)表示第k个高斯模型概率密度函数,可以看成选定第k个模型后,产生x的概率。p(k)=\pi_k是第k个高斯模型权重,称作第k个模型的先验概率,满足\sum_{k=1}^K \pi_k=1

详细介绍请参考:详解EM算法与混合高斯模型(Gaussian mixture model, GMM)_林立民爱洗澡的博客-CSDN博客

4、VAE的引出

        首先利用自编码器训练满月和弦月两个图像类,那么如果介于满月和弦月的隐变量的向量传给Decoder输出,是否可以有可能产生介于满月和弦月之间的月相图呢,答案是否定的,只会输出一个乱码一般的图像,因为编码离散性,所以最后的输出图像只能是离散的图像。

        VAE做了哪些事呢,他在隐变量部分,加上了一部分噪声(而这个噪声就可以是混合高斯模型的) ,当训练满月和弦月模型时,也使用这各自(绿色箭头区域)的多个向量进行Decoder,这样训练出的Decoder就可以在中间失真点处生成3/4月相(红色箭头)。

         

5、VAE

        变分自编码器(VAE)是一种基于概率的生成模型,相比于AE的离散空间分布,VAE引入了一个潜在变量来生成新的样本。

        VAE的优点:

(1)相较于传统的自编码器通常将隐藏层的离散编码映射为离散图像pixel,所以图像离散化,而VAE引入了潜在变量,并假设变量服从高斯分布,也就是noise,经过noise处理的隐变量通过解码后就会得到连续的图像pixel,生成连续图像。

(2)VAE可以通过采样隐变量,生成多样性的样本,实现样本的多样性。

(3)VAE也可以对隐变量进行插值操作,获得合理的逐步过渡的图像。

       VAE分布映射中,VAE使用混合高斯模型P(x)拟合生成噪声,可以看做是N个高斯噪声的混合。P(x)对应的一维向量就是连续变化的z,而根据z我们经过神经网络就可以求出μ(z)和σ(z)。

        而如何估计 μ(z)和σ(z)的值呢就需要用到极大似然估计的知识。下面这一大段,博主已经迷糊了,下次再看吧。

 

        下面是一个VAE论文中的数据流形可视化。

参考视频:第八节 2021 - 自编码器 (Auto-encoder) (上) – 基本概念_哔哩哔哩_bilibili

更多推荐

一次ES检索的性能优化经验记录

优化功能:统一检索能力,为各服务所调用。该接口并发压力大,压测效果不理想。初步2k线程两台压测机预发环境压测结果两pod下为400qps左右,单pod平均qps200,响应时间在五分钟之后达到了峰值,平响达到几十秒开外。压测环境:内网环境,过网关压测,压测链路:网关→后台服务。一、优化初期出现这样的情况,是意想之外的,

STP生成树协议基本配置示例---STP逻辑树产生和修改

STP是用来避免数据链路层出现逻辑环路的协议,运行STP协议的设备通过交互信息发现环路,并通过阻塞特定端口,最终将网络结构修剪成无环路的树形结构。在网络出现故障的时候,STP能快速发现链路故障,并尽快找出另外一条路径进行数据传输。交换机上运行的STP通过BPDU信息的交互,选举根交换机,然后每台非根交换机选择用来与根交

新的 .NET Upgrade Assistant 版本包含功能更新和 .NET MAUI 改进!

作者:OliaGavrysh排版:AlanWang我们非常高兴的宣布,我们已经在VisualStudio中发布了新版本的.NETUpgradeAssistant,它在新版本中增加了在不更改目标框架的情况下更新项目功能的能力,并且对.NETMAUI的迁移功能有很多改进!.NETUpgradeAssistant是一种可帮助

利用Socks5代理IP加强跨界电商爬虫的网络安全

随着跨界电商的兴起,爬虫技术在这个领域变得越来越重要。然而,网络安全一直是一个值得关注的问题。在本文中,我们将讨论如何利用代理IP和Socks5代理来增强跨界电商爬虫的网络安全,确保稳定和可靠的数据采集,同时避免封禁和风险。背景跨界电商是一个竞争激烈的领域,市场上的商品信息和价格常常会变动。为了保持竞争力,电商企业需要

python写代码过程中的坑230915

1.解释代码IndentationError:expectedanindentedblock这个错误通常是由于代码缩进错误导致的。在Python中,代码块(如循环、条件语句、函数等)通常使用缩进来表示。因此,如果你在期望缩进的位置没有正确缩进代码,就会出现"IndentationError:expectedaninde

计算机竞赛 深度学习+opencv+python实现昆虫识别 -图像识别 昆虫识别

文章目录0前言1课题背景2具体实现3数据收集和处理3卷积神经网络2.1卷积层2.2池化层2.3激活函数:2.4全连接层2.5使用tensorflow中keras模块实现卷积神经网络4MobileNetV2网络5损失函数softmax交叉熵5.1softmax函数5.2交叉熵损失函数6优化器SGD7学习率衰减策略6最后0

lv5 嵌入式开发-2 exec函数族

目录1进程–exec函数族1.1exec函数族特点1.2进程–execl/execlp使用方法1.3进程–execv/execvp2进程–system3exec族要点演示掌握:exec函数族、system1进程–exec函数族执行程序,通孔ps-elf发现,父进程是bash。这意味着该进程是由一个bashshell中启

Stable Diffusion AI绘图使用记录

1、下载安装使用官方网站https://github.com/AUTOMATIC1111/stable-diffusion-webui跟着一步步安装就行(英文版的)2、真人转二次元下载控制插件ControlnetGitHub-Mikubill/sd-webui-controlnet:WebUIextensionforC

HTML5 游戏开发实战 | 五子棋

五子棋是一种家喻户晓的棋类游戏,它的多变吸引了无数的玩家。本章首先实现单机五子棋游戏(两人轮流下),而后改进为人机对战版。整个游戏棋盘格数为15×15,单击鼠标落子,黑子先落。在每次下棋子前,程序先判断该处有无棋子,有则不能落子,超出边界不能落子。任何一方有横向、竖向、斜向、反斜向连到5个棋子则胜利。五子棋游戏的运行界

python学习之【with语句】

前言上一篇文章​​python学习之【文件读写】​​​中我们学习了python当中的文件读写,这篇文章接着学习python中文件读写的with语句。了解with语句在很多场景中,通过使用with语句可以让我们可以更好地来管理资源和简化代码,它可以看做是对try…finally模式的简化。with语句的语法格式witho

Baichuan2大模型本地部署

作为今年九月份开源的一个中午大语言模型,Baichuan2已经在各个维度上取得了亮眼的结果,效果已经超过了当前火热的ChatGLM2-6B,可以通过自然语言交互的方式为你提供以下服务:提供知识:我可以回答各领域的问题,并提供准确的信息和知识,帮你解决问题或获取所需要的信息文本生成:我可以创作不同体裁的内容,激发你的灵感

热文推荐