自动编码器,或 自动编码器 在英语中,将自己定位为机器学习和人工智能领域的强大工具。这些特殊的神经网络用于降维、异常检测、数据去噪等。本文介绍了这项令人着迷的技术,重点介绍了其工作原理、应用及其在研究和工业中日益增长的重要性。
什么是自动编码器?
A 自动编码器 是一种用于无监督学习的人工神经网络。自动编码器的主要目标是生成一组输入数据的紧凑表示(编码),然后根据该表示重建数据。这个想法是捕获数据最重要的方面,通常是为了降维。自动编码器的结构通常由两个主要部分组成:
- 编码器 (编码):网络的第一部分负责将输入数据压缩为简化形式。
- 解码器 (解码):第二部分接收压缩编码并尝试重建原始数据。
自动编码器如何工作?
自动编码器的操作可以分为几个步骤:
- 网络接收数据作为输入。
- 编码器将数据压缩成特征向量,称为代码或潜在空间。
- 解码器采用该向量并尝试重建初始数据。
- 重建的质量是使用损失函数来测量的,该函数评估原始输入和重建输出之间的差异。
- 网络通过反向传播算法调整其权重,以最小化该损失函数。
通过这个迭代过程,自动编码器学习数据的有效表示,重点是在重建过程中保留最重要的特征。
自动编码器的实际应用
自动编码器用途广泛,可应用于多个领域:
- 降维:类似于PCA(主成分分析),但具有非线性能力。
- 去噪:他们能够学会忽略数据中的“噪音”。
- 数据压缩:他们可以学习比传统压缩方法更有效的编码。
- 数据生成:通过导航潜在空间,它们允许创建类似于原始条目的新数据实例。
- 异常检测:自动编码器可以帮助发现不符合学习分布的数据。
简而言之,自动编码器发现和定义有意义的数据特征的能力使它们成为任何人工智能从业者工具包中的必备工具。
自动编码器:编码、瓶颈和解码
![](https://iatechnologie.com/wp-content/uploads/2024/01/Quest-ce-quun-auto-encodeur-Le-guide-complet.png)
编码
编码或编码阶段涉及将输入数据转换为压缩表示。初始数据可能很大,被输入到自动编码器网络中。网络的各层将逐渐降低数据的维度,将重要信息压缩到更小的表示空间中。网络的每一层都由应用非线性变换的神经元组成,例如使用 ReLU 或 Sigmoid 等激活函数,以获得保留基本信息的新数据表示。
瓶颈
瓶颈是自动编码器的中心部分,其中数据表示达到最低维度,也称为代码。正是这种压缩表示保留了输入数据最重要的特征。瓶颈充当过滤器,迫使自动编码器学习压缩信息的有效方法。这可以与数据压缩的一种形式进行比较,但压缩是从数据中自动学习的,而不是由标准算法定义的。
解码
解码阶段是与编码对称的步骤,其中压缩表示被重构为输出,其目标是尽可能忠实于原始输入。从瓶颈表示开始,神经网络会逐渐增加数据的维度。这是编码的逆过程:连续的层根据简化的表示重建初始特征。如果解码有效,则自动编码器的输出应该非常接近原始数据。
在无监督学习中,自动编码器对于理解数据的底层结构特别有用。这些网络的有效性不是通过其完美再现输入的能力来衡量的,而是通过其捕获代码中数据最显着和相关属性的能力来衡量的。然后,该代码可用于降维、可视化等任务,甚至可以用于更复杂架构中的其他神经网络的预处理。
自动编码器的实际应用和变体
![](https://iatechnologie.com/wp-content/uploads/2024/01/Quest-ce-quun-auto-encodeur-Le-guide-complet-1.png)
L’自动编码器是人工智能 (AI) 驱动的深度学习库中的关键组成部分,它是一种神经网络,旨在将数据编码为较低维的表示形式,并以可以进行相关重建的方式对其进行分解。让我们检查一下它们 实际应用 以及这个迷人领域中出现的变体。
自动编码器的实际应用
由于自动编码器能够在没有监督的情况下学习有效且有意义的数据表示,因此已经进入了多种应用程序。这里有些例子:
降维
与 PCA(主成分分析)一样,自动编码器经常用于 降维。该技术可以通过减少要考虑的变量数量来简化数据处理,同时保留原始数据集中包含的大部分信息。
噪音消除(去噪)
自动编码器具有学习从部分破坏的数据中重建输入的能力,因此对于 噪音消除。尽管有噪音的干扰,它们仍然能够识别并恢复有用的数据。
数据压缩
通过学习将数据编码为更紧凑的形式,自动编码器可用于 数据压缩。尽管它们在实践中尚未广泛用于此目的,但它们的潜力是巨大的,特别是对于压缩特定数据类型。
数据生成和估算
自动编码器能够生成与其训练数据相似的新数据实例。该能力还可以用于 归因,这涉及填充数据集中缺失的数据。
自动编码器变体
除了标准自动编码器之外,还开发了各种变体来适应数据的具体情况和所需的任务。以下是一些值得注意的变化:
变分自动编码器 (VAE)
这 变分自动编码器 (VAE)添加一个允许生成数据的随机层。 VAE 在图像或音乐等内容的生成中特别受欢迎,因为它们可以根据同一模型生成新的、多样化的元素。
稀疏自动编码器
这 稀疏自动编码器 纳入对隐藏节点施加有限活动的惩罚。它们可以有效地发现数据的独特特征,这使得它们对于 分类 和 异常检测。
去噪自动编码器
这 非规范化自动编码器 旨在抵抗将噪声引入输入数据。它们对于学习稳健的表示和 数据预处理 在执行其他机器学习任务之前。
顺序自动编码器
这 顺序自动编码器 处理按顺序组织的数据,例如文本或时间序列。他们经常使用 LSTM(长短期记忆)等循环网络来随着时间的推移对信息进行编码和解码。
如何训练自动编码器和代码示例
![](https://iatechnologie.com/wp-content/uploads/2024/01/Quest-ce-quun-auto-encodeur-Le-guide-complet-2.png)
的培训 自动编码器 是机器学习领域中用于降维和异常检测等应用的一项重要任务。在这里我们将看到如何使用 Python 和库来训练这样的模型 喀拉斯,以及您可以测试并适应您的项目的代码示例。
训练自动编码器的过程
为了训练自动编码器,通常使用一种损失度量,例如均方误差 (MSE),它测量原始输入与其重建之间的差异。训练的目标是最小化这种损失函数。
Keras 的示例代码
这是使用训练自动编码器的简单示例 喀拉斯:
从 keras.layers 导入输入,密集
从 keras.models 导入模型
# 入口尺寸
# 潜在空间的维度(特征表示)
编码_dim = 32
# 编码器的定义
input_img = 输入(形状=(input_dim,))
编码=密集(encoding_dim,激活='relu')(input_img)
# 解码器的定义
解码=密集(input_dim,激活='sigmoid')(编码)
# 自动编码器模型
自动编码器=模型(input_img,解码)
# 模型编译
autoencoder.compile(优化器='adam',损失='binary_crossentropy')
# 自动编码器训练
自动编码器.fit(X_train,
纪元=50,
批量大小=256,
随机播放=真,
验证数据=(X_测试,X_测试))
在此示例中,“X_train”和“X_test”代表训练和测试数据。请注意,自动编码器经过训练以将其自己的输入“X_train”预测为输出。
良好锻炼的秘诀
使用类似的技术 交叉验证, 那里 批量归一化 和 回调 Keras 还可以帮助提高自动编码器驱动的性能和稳定性。
自动编码器的应用
训练后,自动编码器可用于:
- 降维,
- 异常检测,
- 对其他机器学习任务有用的描述符的无监督学习。
总而言之,训练自动编码器是一项需要了解神经网络架构和微调超参数的经验的任务。然而,自动编码器的简单性和灵活性使其成为解决许多数据处理问题的宝贵工具。