1.介绍
- 作为一种无监督或者自监督算法,自编码器本质上是一种数据压缩算法。
- 编码器: 输入图像(在这个例子中是一个28x28像素的数字“9”)首先被输入到编码器中。编码器的任务是将这个输入压缩成一个更小的、密集的表示形式,称为“code”。这个code通常具有比原始输入更少的维度。在这里,784个像素被编码成了一个维度小于784的code。
- 解码器: 解码器主要目的是接收编码器生成的code,然后尝试重构原始输入图像。输出的图像应该尽可能接近原始图像,虽然可能会有一些失真。
总结: 自编码器的编码器和解码器部分通常是同时训练的,目的是让解码器能够尽可能准确地重建编码器的输出。这种类型的网络通常用于特征学习、降维和在无监督学习环境中的数据压缩。
2.特点
- 数据相关性: 就是指自编码器只能压缩与自己此前训练数据类似的数据,比如说我们使用mnist训练出来的自编码器用来压缩人脸图片,效果肯定会很差。
- 数据有损性: 自编码器在解压时得到的输出与原始输入相比会有信息损失,所以自编码器是一种数据有损的压缩算法。
- 自动学习性: 自动编码器是从数据样本中自动学习的,这意味着很容易对指定类的输入训练出一种特定的编码器,而不需要完成任何新工作。
用数学的方式解释编码器和解码器:
- 编码器将输入压缩为潜在空间表征,编码器会创建一个隐藏层(或多个隐藏层)包含了输入数据含义的低维向量。可以用函数 f(x) 来表示。
- 解码器将潜在空间表征重构为输出,即通过隐藏层的低维向量重建输入数据。可以用函数 g(x) 来表示。
能否用作自然语言的降维:
自编码器
的主要目的是进行数据压缩
和特征学习
。通过一个编码器将数据压缩成一个低维的表示(code),然后通过一个解码器尝试重构原始数据。这种过程通常是有损的,目的是捕捉数据中最重要的特征。因此它不能用作自然语言的语句匹配和语义搜索。
学习数据的低维表示: 自动编码器设计的核心是学习输入数据的有效的低维表示。这种表示主要用于数据压缩、去噪、特征提取等,而不是为了理解或比较文本的语义内容。
缺乏语义理解能力: 自动编码器在其基本形式中,并不包括对数据的语义理解。它们通过最小化输入与输出之间的重建误差来学习,这主要关注于数据的表面特征,而非其语义意义。
句子匹配需要上下文理解: 句子匹配和语义搜索通常需要理解句子中的上下文和语义信息。自动编码器的结构并不适合捕获长距离的依赖关系和复杂的语言结构,这对于准确的句子匹配至关重要。
更合适的替代模型: 对于句子匹配任务,向量空间模型(如TF-IDF)、机器学习分类模型(如支持向量机),以及特别是基于变换器(Transformer)的深度学习模型(如BERT)等技术,能够更好地处理语义信息。这些模型通过学习词与词之间的关系和句子的结构,能够更有效地进行句子间的语义比较和匹配。
AutoEncoder(自编码器)与PCA(主成分分析)降维效果对比:
- AutoEncoder是一种神经网络,这种神经网络的目标输出就是其输入。自动编码器属于神经网络家族,但它们也和 PCA(主成分分析)紧密相关。【自编码器的目标是学习函数h(x)约等于x】
- AutoEncoder既能表征线性变换,也能表征非线性变换;而 PCA 只能执行线性变换。【因为自编码器的网络表示结构:非线性函数的叠加可以使其变成任意复杂的函数】