zoukankan      html  css  js  c++  java
  • 编码-解码

    一.转换思想

    1.转换思想(化归、变换、转变...)思想:简单地说,是把一个事物变成另一个事物,比如将一个复杂问题变成等价一个简单问题、将一个商品变为等价的商品等。而在深度学习中的转换思想体现在模型上。

     2.神经网络

    (1)从感知机到复杂的模型,无论怎样变换,本质都是模型,是数学表达式,是数据的映射变换,也是特征的转换。

    (2)神经网络的训练学习是指学习变换的参数,也就是转换的规律

    3.神经网络模型上的转换思想体现地最明显的还是编码-解码思想 

    三.自编码器(Auto Encoder, AE)

    1.无监督学习,标签是样本自身或者自身的变换

    2.自编码器包含编码和解码两部分,对应输入层-隐藏层-输出层,但解码和编码本质上都是数据的映射变换,为什么要分编码和解码?目的和作用不同:编码一般是把复杂的数据用另一种高效的数据表示,一般是降维过程;解码一般是把编码后的数据反向映射为原复杂数据,一般用于生成数据。

    3.稀疏自编码器(Sparse Auto Encoder,SAE):在代价函数中添加一些约束使得隐藏层的神经元稀疏,使得在隐藏层,数据能被高维而稀疏地表示,常用于降维

    4.栈式自编码器(Stacked Auto Encoder, SAE):将多隐藏层的自编码器看作多个自编码器的级联,对于这n个AE,依次训练:一个AE训练完后,上个AE的输出作为下个AE的输入,训练下一个AE。常用于特征提取和分类任务

    5.降噪自编码器(denoising auto Encoder,DAE):在原始输入数据中加入噪声,再将其输入网络训练得到输出,将输出和原始输入数据作损失,常用以增强网络稳定性和泛化能力

    6.变分自编码器(Variational Auto-Encoder,VAE):计算样本数据的映射的显示分布,用于生成一类数据样本

    (1)训练:输入样本,经过编码器,一般是一个神经网络,输出一个语义向量,即:用若干个特征来表示样本,再将语义向量输入解码器中,一般也是个神经网络,期望输出样本,与原样本做损失,更新网络

    (2)训练完成后:计算所有语义向量的均值和方差,可以通过指数加权平均来计算,也就计算出语义向量的分布,也就是语义向量每个元素--各个特征的分布(一般假设高斯分布,所以计算均值和方差,各个特征假设相互独立),这样我们就得到了语义向量中各个特征的分布

    (3)预测:根据语义向量的分布,随机生成一个分布中的向量,将它通过解码器,就可以生成一个样本

    7.条件式变分自编码器(Conditional Variational Auto-Encoder,CVAE):在VAE基础上,添加标签:标签一是与样本一起传入编码器;二是与语义向量一起传入解码器中,输出仍和输入样本作损失。常用于指定标签,生成对应样本数据

    四.Transformer转换器

    1.框架:整体分为编码和解码两部分

    (1)首先将输入样本变为张量。一般一个样本对应一个矩阵,比如一句话,对应一个矩阵,句长为一个维度,每个词的表示长度为一个维度;图像可以通过提取特征变为一个特征图矩阵

    (2)其次对这个张量进行位置编码,在与原张量相加融合。张量的位置编码有利于提取样本中每个元素的位置信息,将提取到的整体的位置信息加入到张量中,变成新的张量,作为ENCODERS的输入

    (3)ENCODERS:由若干个相同的encoder串行组成,即本次encoder的输出作为下个encoder的输入,encoder的数量自定义;而最后一个输出的编码信息张量作为解码器部分的输入

    【1】每个encoder的第一步为多头自注意力机制,是将传入的张量先输入若干个自注意力中,得到若干个输出张量(三维),把这些张量concat合并为一个大的张量,再作linear线性变换变成一个小的、与原传入张量大小一样的输出张量

    【2】每个encoder的第二步为全连接前向传播,由两层全连接层组成,第一层激活为relu,第二层不使用激活函数

    【3】注意中间夹杂着add和norm操作:将输入张量和输出张量先相加,类似残差,再将相加后的结果作layernorm

    (4)训练时:

    【1】将样本标签也进行张量化和位置编码操作,得到标签张量

    【2】将标签张量输入到DECODERS,也是有多个decoders串行组成,其中也有add和norm,

    【【1】】使用了多头自注意力机制,还使用了mask,用于遮掩信息,因为每次的输出只能是根据前面信息来,所以要把后面的信息遮掩住

    【【2】】使用了多头注意力机制,其中根据ENCODERS的输出计算得到输入的K和V,根据上个多头自注意力的输出得到输入的Q

    【【3】】第三步也是一个全连接

    【3】将最终DECODERS的输出张量做linear全连接,再做softmax进行分类等处理,与原样本标签做损失

    (5)预测时:

    【1】无标签输入,但一般给一个开始值的占位符,

    【2】预测的DECODERS中无mask,它是对元素一个个顺序预测的:只能由上一次的输入作为本次的输入张量,传入DECODERS中,进行linear和softmax,输出下一个元素的预测,再把该元素的信息和之前的信息相结合,作为下一次预测的输入张量

    2.transformer训练可以并行,因为由mask,可以传入整个样本标签,而它的预测是一个个进行的

    3.transformer常用于序列翻译,效果更好

    4.transformer的变种和应用

    五.Attention注意力机制

    1.简介:模仿人类对事物的认知,对一件事物的关注有重点和非重点,提取其中自身想要的信息,去除无关的信息;而在深度学习中,是训练出能够自动提取数据中重点的模型

    2.注意力机制

    (1)注意力机制中有Q(Query ),K(Key),V(Value),这三个值实际中都可能是输入数据变换得到,需要训练

    【1】Q:查询、疑问,一般由输入数据映射变换为输入数据的信息张量,代表所有信息的集合,比如一句话解码或编码转换为输出张量,代表这句话所有信息的集合

    【2】K:关键、主要的,可以由输入数据映射变换为输入数据中的关键元素组成的张量,比如一句话,可以从中提取出一些关键的信息张量(时间信息,空间信息,动作信息...),这些关键信息张量组合而成一个大的关键信息张量,比如一句话“今天,我吃了汉堡”,这句话中我们关注的有”今天“、”我“、”汉堡“这三个关键信息,将这三个关键信息组合变成一个大的张量K

    【3】V:值,一个key对应一个value,有些时候key只是一个标记,不能真正代表关键点的信息,所以就有了映射变换,所谓的Key-Value不过是等价变换,很多研究中直接让K==V

    (2)步骤

    【1】从输入数据中通过变换得到一个输入的信息张量Q,得到可能的关键信息点张量K,比如输入一张图,使用线性变换,得到表示图整个信息的张量,同样使用变换,得到可能的关键因素的矩阵K,这个K是由各个关键因素张量组合而成,但我们不知道输入到信息的转换规律,不知道关键因素到底指哪些,所以我们通过更新变换的参数使得网络能够自动将输入数据转换成可行的信息张量和提取其中的关键信息张量

    【2】根据 Q 与 K 计算两者之间的相似性或相关性,其实就是要知道各个关键元素k与信息张量Q到底有多少关系,比如计算出一句话“今天,我很饿,然后吃了一个汉堡”,中“今天”、“吃”、“汉堡”等元素中哪些更能代表全局的信息,即哪些是我们需要加重关注的,哪些信息我们要忽略,这就是注意力的偏向性

    【3】使用softmax 来获得注意力权重值,就像人的注意力有限,设置总量为1,注意力有偏向

    【4】使用注意力权重值对 V 进行加权求和,其中V也可能是输入变换得到,K和V的差别在于:K更偏向代表关键信息,像变量名;V偏向为关键信息的全局表示,像值。其次,虽然人有注意力,但人的关注是对整个输入而言的,只是有大有小,所以最后变成的注意力输出要考虑所有关键因素,即加权求和

    (3)注意力机制的使用:区别于特征提取局部信息,注意力机制用于提取关注的重点信息,比如有许多文本样本,要提取其中的天气信息,就可以使用注意力机制将关注点放在天气这个信息(Key)上,怎么做?这是通过大量样本训练出来的,训练最后得到的加入注意力机制的模型就会专门用于提取天气信息的,而且这个信息的提取是无视距离的,不像RNN那样需要长期依赖什么的

    3.自注意力机制:Q==K==V:输入信息中每个元素信息都可能是关键信息Q==K,这些关键信息的组合就能代表输入信息K==V,

    4.多头注意力机制:

    (1)简介:随机性带来的问题:我们训练得到一个模型,但这个模型真的能代表真实规律吗?不能!我们训练得到的模型只是一个可行解。同样,我们将输入张量进行线性变换得到的信息张量一定能代表信息矩阵吗?不能!这只是我们学习到的在一个子空间中的表示,只是一个可行解。因此,类似集成的思想,学习输入数据在不同子空间的表示,得到多个可行解,再将他们进行处理,能够有效的降低误差率,提高精度,这就是多头注意力机制,而且这是可以并行的。

    (2)步骤

    【1】分多头,也就是分多个子空间,通过输入数据,得到多组(K,V、Q),因为使用了多头,为了计算不复杂,将K,V,Q的维度进行缩减,为原来的头分之一

    【2】计算多组注意力输出,将它们concat起来,再做线性层

    (3)多头注意力机制:计算注意力时,他们互相独立,可以并行计算,基于集成的思想,能够减弱过拟合,提高精度。

    5.N:M编码-解码RNN中的注意力机制:

    (1)将编码阶段所有cell输出组成的张量做全连接,作为K和Q的相似度矩阵(注意力概率矩阵):[steps1,units]---全连接:[steps1,steps2]

    (2)然后作softmax,对所有cell输出组成的张量作加权平均,得到解码器上各个cell的输入:[units,steps1] * [steps1,steps2]  == [units,steps2].T

    六.常用操作

    1.skip-connection

    2.attention

    3.

  • 相关阅读:
    常用数据分析方法及分析工具,比如:EXCEL、SAS、SPSS
    常用代码管理工具,如git、hg、svn
    Memcached分布式内存对象缓存系统
    10个出色的NoSQL数据库
    虚拟机
    使用自己的CSS框架(转)
    响应式设计,bootstrap框架的IE兼容问题
    区别ie8和ie9的方法
    焦点问题onfocus=”this.blur()”代替方法(转)
    php 引用其他action中的方法
  • 原文地址:https://www.cnblogs.com/yu-liang/p/13624000.html
Copyright © 2011-2022 走看看