【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

作者:CHEONG
公众号:AI机器学习与知识图谱
研究方向:自然语言处理与知识图谱

本文主要分享自编码器、变分自编码器和条件变分自编码器的相关知识以及在实际实践中的应用技巧,原创不易转载请注明出处,原稿获取请关注公众号【AI机器学习与知识图谱】回复: 自编码器,下面首先简单认识一下:自编码器、变分自编码器和条件变分自编码器之间的关系。

1.自编码器: 自编码器结构:Encoder将输入数据进行压缩,Decoder将其转化回输入的近似值,自编码器可以对输入进行重构,但是无法充当生成模型,变分自编码器可以用作生成模型;

2.变分自编码器: 变分自编码器通过Encoder将每个样本不是压缩到单个点,而是映射到标准正态分布上,变分自编码器为每个样本产生一个概率分布;

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

3.条件变分自编码器: 自编码器和变分自编码器都仅仅在Encoder阶段有输入,而条件变分自编码器在Encoder和Decoder阶段都有输入,使得Decoder可以按需生成特定结果。如下图所示:

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

生成模型的难度在于判断生成分布和真实分布的相似度,自编码器寻找的是单值映射关系,而变分自编码器寻找到的是两个概率分布之间的映射关系。

; 一、变分自编码器

首先从VAE思想的出发点,明白条件变分自编码器是一个生成模型,给定了真实样本X,生成这个真实样本X对应的后验概率分布P(Z|X),假设后验概率分布P(Z|X)是服从正太分布的,这目前都是Encoder部分工作,然后在Decoder部分,从分布P(Z|X)中采样变量Z,然后再通过采样样本Z还原生成X,这样就完成了从X生成X,如下图所示:

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

但在上述变分自编码器中存在以下两个问题:

问题1. 如果在重构X^过程中,模型使得最后的方差为0,那么就没有随机性了,模型就相当于简单的自编码模型了,不能体现生成模型的特点。

针对这个问题变分自编码器是通过让所有的P(Z|X)都向标准正态分布看齐,相当于给模型添加了高斯噪声,保证了模型具有一定的生成能力,实现方法是引入KL Loss,即为了让P(Z|X)都能逼近标准正态分布N(0,I),计算一般正态分布和标准正态分布的KL散度作为额外的Loss,根据KL散度性质,通过最小化这个Loss,便最小化了P(Z|X)和标准正态分布N(0,I)距离

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

问题2. 如果由真实数据X得到概率分布P(Z|X),VAE是通过神经网络拟合出来的,网络类似于传统的seq2seq模型,如VAE中采用的也是LSTM,下面便可以看一下VAE网络结构:

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

VAE模型结构如上图,和传统的seq2seq模型不同,VAE模型encoder的结果不再是一个明确的值,而是生成一个分布( u , σ ) (u, \sigma)(u ,σ),再从这个分布中采样最后encoder的结果,因此相同的输入可能对应不同的encoder结果,对应不同的输出

变分自编码器VAE中变分的理解: 变分体现在引入了KL散度及其性质,通过KL散度来最小化后验分布P(Z|X)与标准正态分布之间的距离。变分自编码和条件变分自编码器中由于存在一个随机变量,因此反向传播算法无法通过随机变量来回传递梯度损失信号以达到更新模型参数,为了解决这个问题,将随机变量的参数进行分解,并通过随机梯度变分贝叶斯训练模型参数

二、条件变分自编码器CVAE

变分自编码器可以无监督的对数据样本进行建模从而通过采样生成结果,条件变分自编码器在此基础上引入了监督信息条件,从而在不同的给定条件下生成不同的结果,CVAE模型图如下所示:

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

CVAE存在的问题: KL散度消失问题,在CVAE做生成模型时,其解码器通常是一个自回归模型实现,实际会导致训练过程出现一个问题即KL正则项会消失趋近0,在实践中这意味着学习到的特征将不再能够表达观测到的数据,针对KL消失问题很多论文提出了相关策略

; 三、关键词提取TextRank

TF-IDF算法可以用于关键词提取,但TF-IDF仅仅从词的统计信息出发,没有考虑词之间的语义信息,因此使用TextRank算法,TextRank是一种基于图排序的关键词提取算法,考虑到了相邻词的语义关系,TextRank算法和PageRank算法在思想上类似,PageRank的节点是网页用于对网页重要度排序,TextRank算法节点是单词,用于对词的重要程度排序。

TextRank将某一个词与其前面的N个词、以及后面的N个词均具有图相邻关系,类似于N-gram语法模型。具体实现是设置一个长度为N的滑动窗口,所有在这个窗口之内的词都视作词结点的相邻结点;则TextRank构建的词图为无向图。

TextRank算法提取关键词步骤:

Step1. 把给定的文本T按照完整句子进行分割

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

Step2. 对于每个句子,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词和形容词,其中t i , j t_{i,j}t i ,j ​是保留后的候选关键词

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

Step3. 构建候选关键词图G = (V,E),其中V为节点集,由(2)生成的候选关键词组成,然后采用共现关系构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为K的窗口中共现,K表示窗口大小,即最多共现K个单词

Step4. 根据上面公式,迭代传播各节点的权重,直至收敛

Step5. 对节点权重进行倒序排序,从而得到最重要的T个单词,作为候选关键词

Step6. 由上述5中得到最重要的T个单词,在原始文本中进行标记,若形成相邻词组,则组合成多词关键词

四、关键词增强的条件变分自编码器

1. 自编码器

2. 变分自编码器

3. 条件变分自编码器:cvae相对于vae来说,将无监督学习变成了有监督学习,有监督的方式是对输入句子的会编码得到一个分布N ( u 1 , σ 1 ) N(u_1, \sigma_1)N (u 1 ​,σ1 ​),然后对于生成结果也生成一个分布N ( u 2 , σ 2 ) N(u_2, \sigma_2)N (u 2 ​,σ2 ​),对这个两个分布引入一个KL LOSS,然后最小化loss这样实现了有监督学习

4. 基于关键词增强的条件变分自编码器

CVAE中对于输入的句子先会通过RNN得到Sentense Embeddding,每个句子都会得到一个Sentense Embedding,然后将每个Sentence Embedding拼接在一起

关键词增强方式: 在关键词增强过程中,关键词是从输出句子中提取出来的,关键词增强可以理解成利用关键词生成文章,然后利用关键词结合上文信息,这样提到预测下一句的准确度,效果提升明显

关键词和输入的句子如何结合: 将Sentense Embedding和Keyword Embedding拼接在一起传入网络中,关键词相当于提供了额外的强特征信息

五、评估指标

1.BLEU:Bilingual Evaluation Under Study,一种经典的自动生成效果评估指标,含惩罚因子的BLEU评估,如下公式所示:

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

使用的BLEU值就是覆盖率,生成句子对原句子的覆盖率大小,不考虑n-gram的顺序

BLEU-1:1-gram:指句子切分成一个字只看一个字的覆盖率

BLEU-2:2-gram:将句子一次切分成两个字,相当于看词的覆盖率,同样不考虑顺序n-gram的BLEU值

2.Distinctness:用于测评自动生成文本中用词多样性情况的指标

3.随机变量x的熵: 熵是随机变量x不确定性的度量,x取值越多越不确定熵越大

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

4.联合熵,从一维变量扩展到多维变量时,联合随机变量的熵

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

5.条件熵,条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性,条件熵 H(Y|X)相当于联合熵 H(X,Y)减去单独的熵 H(X),即H(Y|X) = H(X,Y) −H(X)

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

6.相对熵:也就是我们提到的KL散度,相对熵可以用来衡量两个概率分布之间的差异,当两个概率分布相同时,则相对熵为0。设p(x)和q(x)是离散随机变量x中取值的两种概率分布,则p对q的相对熵为

7.交叉熵:衡量非真实分布q(x)和真实分布p(x)相似度

【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

从这里可以看出,交叉熵和相对熵相差了H ( p ) H(p)H (p ),而当p p p已知的时候,H ( p ) H(p)H (p )是个常数,所以交叉熵和相对熵在这里是等价的,反映了分布p p p和q q q之间的相似程度。

; 六、往期精彩

【知识图谱系列】Over-Smoothing 2020综述

【知识图谱系列】基于生成式的知识图谱预训练模型

【知识图谱系列】基于2D卷积的知识图谱嵌入

【知识图谱系列】基于实数或复数空间的知识图谱嵌入

【知识图谱系列】自适应深度和广度图神经网络模型

【知识图谱系列】知识图谱多跳推理之强化学习

【知识图谱系列】知识图谱的神经符号逻辑推理

【知识图谱系列】动态时序知识图谱EvolveGCN

【知识图谱系列】多关系神经网络CompGCN

【知识图谱系列】探索DeepGNN中Over-Smoothing问题

【知识图谱系列】知识图谱表示学习综述 | 近30篇优秀论文串讲

【知识图谱系列】动态知识图谱表示学习综述 | 十篇优秀论文导读

【面经系列】八位硕博大佬的字节之旅

【机器学习系列】机器学习中的两大学派

各大AI研究院共35场NLP算法岗面经奉上

干货 | Attention注意力机制超全综述

干货 | NLP中的十个预训练模型

干货|一文弄懂机器学习中偏差和方差

FastText原理和文本分类实战,看这一篇就够了

Transformer模型细节理解及Tensorflow实现

GPT,GPT2,Bert,Transformer-XL,XLNet论文阅读速递

机器学习算法篇:最大似然估计证明最小二乘法合理性

Word2vec, Fasttext, Glove, Elmo, Bert, Flair训练词向量教程+数据+源码

Word2vec, Fasttext, Glove, Elmo, Bert, Flair训练词向量教程+数据+源码

原稿获取请关注公众号后回复: 自编码器,原创不易,有用就点个赞呀!

Original: https://blog.csdn.net/feilong_csdn/article/details/117161128
Author: CHEONG_KG
Title: 【自然语言处理系列】自编码器AE、变分自编码器VAE和条件变分自编码器CVAE

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/547935/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球