WDK李宏毅学习笔记第十一周02_More about Auto-encoder

2024-02-18 07:32

本文主要是介绍WDK李宏毅学习笔记第十一周02_More about Auto-encoder,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

More about Auto-encoder

文章目录

  • More about Auto-encoder
  • 摘要
  • 1、More than minimizing reconstruction error
    • 1.1 回顾Auto-encoder
    • 1.2 What is good embedding?
    • 1.3 Typical auto-encoder is a special case
  • 2 Squential Data
    • 2.1 Skip thought
    • 2.2 Quick thought
    • 2.3 Contrastive Predictive Coding(CPC)
  • 3、Feature Disentangle
  • 4、Discrete Representation
    • 4.1 One-Hot and Binary
    • 4.2 Vector Quantized Variational Auto-Encoder(VQVAE)
    • 4.3 Seq2seq2seq auto-Embedding
  • 方法
  • 结论与展望


摘要

Auto-encoder是一个很重要的技术,在很多方面都有应用,本章说明了auto-encoder的一些简单变形以及最小化重建误差的一些方法,介绍了用Au-encoder处理有顺序的数据(Skip thought、Quick thought、CPC),最后阐述了将Embedding变得容易解释的几种方法(Feature Disentangle、One-Hot、Binary、VQVAE、Seq2seq2seq auto-Embedding)。

1、More than minimizing reconstruction error

1.1 回顾Auto-encoder

Auto-encoder就是有一个Encoder,向encoder输入一个input,就会得到一个vector(Embedding、Latent Representation、Latent code),通过Decoder又可以还原出input的信息,我们希望最后输出的和输入越接近越好,即最小化重建误差(Reconstruction error)。
在这里插入图片描述

1.2 What is good embedding?

让我们回到一开始的初衷,我们并不是每次都要求输入和输出一样,我们有时也希望得到一个关于input有代表性,解释性强的embedding,例如machine知道看到蓝色的耳机,它就会想到三九而不是其他人。
在这里插入图片描述
而我们如何知道Embedding能否很好的包含输入的特性呢?我们可以用Discriminator,用于判断图片与code是否匹配,Discriminator就是一个分类器,它可以分辨出不同的角色对应的特征。
在这里插入图片描述
我们还可以用Discriminator构建一个Loss Function,用该Loss Function就可以评估一个model的好坏。
在这里插入图片描述

1.3 Typical auto-encoder is a special case

实际上,Discriminator还是可以认为在最小化重建误差。如下图Discriminator接收一个图片和一个vector,vector通过Decoder解码生成一个图片然后和输入图片进行比较,看它们的接近程度计算分数。
在这里插入图片描述

2 Squential Data

2.1 Skip thought

在有序列的数据上,我们也是可以采用上述model的,如下图Skip thought的方法,model经过训练后,Encoder接收一个句子,然后输出句子的上一句和下一句。
在这里插入图片描述

2.2 Quick thought

Quick thought是 Skip thought延申的想法,它不使用Decoder,而是使用一个Classifier,它将当前的句子,下一个句子和一些随机采样的句子作为输入,然后输出当前句子的下一句。
在这里插入图片描述

2.3 Contrastive Predictive Coding(CPC)

CPC也是接收一段序列数据,然后输出下一段数据。如下图:
在这里插入图片描述

3、Feature Disentangle

如何让embedding更容易被解释?经过Encoder得到的Embedding其实包含了很多输入数据的信息,当输入是声音信号时,Embedding可能包含了内容信息、讲话者信息等,如果输入的是一段文字,Embedding就可能包含语法信息、语义信息等。以声音信号为例,假设encoder得到的Embedding是一个100维的向量,它只包含了内容和讲话者身份的两种信息,我们希望能通过训练使得它的前100维代表内容信息,后50维代表讲话者身份信息。
在这里插入图片描述
这个在语言处理方面其实有很大的用处,如下图,我们可以将代表男生身份信息的维度部分与代表女生说话内容信息结合在一起,最后合成代表男生说话的vector。
在这里插入图片描述
如何做呢?我们可以在一般的Encoder-Decoder架构中引入一个Speaker Classifier,它将Embedding的前50维作为输入,来区别说话者的身份信息,我们希望的是Embedding可以骗过Speaker Classifier,这样machine就会为了骗过Speaker Classifier而将说话者的信息存放在后50维。
在这里插入图片描述
另一种方式是用两个Encoder分别输出身份的信息和内容信息,再处理内容信息的Encoder上加一个IN,该IN可以清除身份信息,最后得到的Embedding再组合放入Decoder中。但是该方法还存在问题,就是第2个的Encoder处理得到的Embedding还包含内容信息。
在这里插入图片描述
改进的方法就是在Decoder中加入AdaIN,过滤掉代表身份信息的Embedding中保留的内容信息。
在这里插入图片描述

4、Discrete Representation

4.1 One-Hot and Binary

如果model可以从连续性变量表示转化为离散表示,那会更容易理解,例如:用One-Hot表示,做法简单,只需将连续型变量中最大值的变成1,其他值的取0。还有一种方法就是设置Binary,例如当变量大于0.5取1,小于0.5取0。
在这里插入图片描述
这两个model,binary更好,所需要的内存更小,而且Binary可以处理在训练集中从未出现过的类别。

4.2 Vector Quantized Variational Auto-Encoder(VQVAE)

VQVAE是在Encoder-Decoder架构中引入一个Codebook,Codebook存放了很多经过处理过的Vector,当输入经过encoder处理得到embedding后,会先将embedding与Codebook中的vector比较,将相似性最高的Codebook中的vector丢给Decoder,这样最后得到的Embedding就是我们所期望的。
在这里插入图片描述

4.3 Seq2seq2seq auto-Embedding

Seq2seq2seq auto-Embedding就是说input一篇文章,输出不是向量而是代表一串文字的seq2seq,然后decoder将该串文章吃进去还原出原本的文章。那显然中间的文字就是文章摘要。但是这个model之间training是得不到好的结果的,因为machine并没有学到语法,它很可能会得到我们看不懂的一串文字。
在这里插入图片描述
为了解决该问题,我们可以在该model加入GAN让机器判断word sequence是否是人写的使得其掌握语法。
在这里插入图片描述

方法

  1. 最小化重建误差使用的是Discriminator,Discriminator就是一个分类器,当model输出不是我们期望的值时,Discriminator能够判别处理,用Discriminator就可构建一个Loss function用于给model打分。
  2. Skip thought使用的方法是用Encoder接收一个句子,然后Decoder输出该句子的前一句以及下一句,这样就可以很好的将文章中每一句联系起来。
  3. Quick thought是用Encoder接收多个句子(当前句子、随机采样句子、下一个句子),然后经过分类器处理输出当前句子的下一句。
  4. Feature Disentangle可用的方法有好几个,本质的思想就是让Embedding的对应的维度能有存放其独立对应的信息,比如在Encoder-Decoder中加入Speaker Classifier,逼迫model在学习的时候只能将某些信息放在特定的维度,也可使用多个Encoder再加入过滤器,将一些信息过滤掉,让特定的维度存放特定的信息。
  5. One-Hot使用的是One-Hot编码,该方法占用内存大,且会丢失输入之间联系的信息,Binary的方法是设置Binary,大于Binary的值取1,其他取0,该方法相比One-Hot所占内存更小,且可以正确认识不在训练集的数据。
  6. VQVAE使用的方法是Encoder-Decoder架构中引入Codebook,Codebook中有很多个处理得到的vector,Embedding需要和Codebook中的vector做对比,最后将Codebook中与Embedding相似度最高的vector丢入Decoder。
  7. Seq2seq2seq是专门对有顺序的数据进行处理的,例如在对文章自动写摘要的时候,使用的方法是在Seq2seq2seq架构中引入GAN让model知道正确的语义是怎样的,然后写出和人写的差不多的摘要。

结论与展望

可以将Auto-encoder理解为是一种思想,它可以嵌入到其他一些model中使用,也可以做一些变形以方便处理问题。Discriminator可以很好的处理最小化重建误差问题,且可以构建Loss Function给model打分。Feature Disentangle则可以让Embedding变得可解释的,在处理变声器问题上,该方法很适合。Discrete Representation主要的思想就是将连续型变量离散化,其中设置Binary的方法就明显优于One-Hot的方法,VQVAE可以使得到的Embedding都是我们所期望的,Seq2seq2seq则比较适合处理有顺序的数据。

这篇关于WDK李宏毅学习笔记第十一周02_More about Auto-encoder的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/720469

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个