前面我们介绍了在给出样本及其的标签的情况下,神经网络如何学习的算法,这类算 法需要学习的是在给定样本????下的条件概率????(????|????)。在社交网络蓬勃发展的今天,获取海量 的样本数据????,如照片、语音、文本等,是相对容易的,但困难的是获取这些数据所对应 的标签信息,例如机器翻译,除了收集源语言的对话文本外,还需要待翻译的目标语言文 本数据。数据的标注工作目前主要还是依赖人的先验知识(Prior Knowledge)来完成,如亚马 逊的 Mechanical Turk 系统专门负责数据标注业务,从全世界招纳兼职人员完成客户的数据 标注任务。深度学习所需要的数据规模一般非常大,这种强依赖人工完成数据标注的方式 代价较高,而且不可避免地引入标注人员的主观先验偏差。

面对海量的无标注数据,有没有办法能够从中学习到数据的分布????(????)的算法?这就是 我们这章要介绍的无监督学习(Unsupervised Learning)算法。特别地,如果算法把????作为监 督信号来学习,这类算法称为自监督学习(Self-supervised Learning),本章要介绍的自编码 器算法就是属于自监督学习范畴。

 

特征降维(Dimensionality Reduction)在 机器学习中有广泛的应用,比如文件压缩(Compression)、数据预处理(Preprocessing)等。最 常见的降维算法有主成分分析法(Principal components analysis,简称 PCA),通过对协方差 矩阵进行特征分解而得到数据的主要成分,但是 PCA 本质上是一种线性变换,提取特征的 能力极为有限。

 

那么能不能利用神经网络的强大非线性表达能力去学习到低维的数据表示呢?问题的 关键在于,训练神经网络一般需要一个显式的标签数据(或监督信号),但是无监督的数据 没有额外的标注信息,只有数据????本身。

希望神经网络 能够学习到映射???? : ???? → ????。即x->z->x。

我们把????????1 看成一个数据编码(Encode)的过程,把高维度的输入????编码成低维度的隐变量????(Latent Variable,或隐藏变量),称为 Encoder 网络(编码器);h????2看成数据解码(Decode)的过程,把 编码过后的输入????解码为高维度的????,称为 Decoder 网络(解码器)。

Tensorflow深度学习-自编码器

编码器和解码器共同完成了输入数据????的编码和解码过程,我们把整个网络模型???? 叫做自动???? 编码器(Auto-Encoder),简称自编码器。如果使用深层神经网络来参数化????????1 和h????2 函数,则称为深度自编码器(Deep Auto-encoder),如图所示:

Tensorflow深度学习-自编码器

自编码器能够将输入变换到隐藏向量????,并通过解码器重建(Reconstruct,或恢复)出????。 我们希望解码器的输出能够完美地或者近似恢复出原来的输入,即???? ≈ ????,那么,自编码器 的优化目标可以写成:

Tensorflow深度学习-自编码器

Tensorflow深度学习-自编码器

其中dist(????, ????)表示 ????和????的距离度量,称为重建误差函数。最常见的度量方法有欧氏距离 (Euclidean distance)的平方。

自编码器网络和普通的神经网络并没有本质的区别,只不 过训练的监督信号由标签????变成了自身????。借助于深层神经网络的非线性特征提取能力,自 编码器可以获得良好的数据表示,相对于 PCA 等线性方法,自编码器性能更加优秀,甚至 可以更加完美的恢复出输入????。

唉,暂时到这里,明天补上

 

 

 

相关文章:

  • 2021-05-09
  • 2021-10-09
  • 2021-04-24
  • 2021-08-22
  • 2022-01-11
  • 2021-08-12
  • 2021-04-02
猜你喜欢
  • 2021-12-18
  • 2021-07-09
  • 2021-06-04
  • 2021-11-25
  • 2022-12-23
  • 2021-05-22
  • 2021-04-09
相关资源
相似解决方案